52 lines
1.3 KiB
Markdown
52 lines
1.3 KiB
Markdown
|
|
# Task ID: 62
|
||
|
|
|
||
|
|
**Title:** Update CLI edit project command for gated field
|
||
|
|
|
||
|
|
**Status:** done
|
||
|
|
|
||
|
|
**Dependencies:** 39 ✓
|
||
|
|
|
||
|
|
**Priority:** medium
|
||
|
|
|
||
|
|
**Description:** Extend mcpctl edit project to allow editing the gated boolean field.
|
||
|
|
|
||
|
|
**Details:**
|
||
|
|
|
||
|
|
1. Update `/src/cli/src/commands/edit.ts` for project:
|
||
|
|
```typescript
|
||
|
|
async function editProject(name: string) {
|
||
|
|
const project = await api.get(`/api/v1/projects/${name}`);
|
||
|
|
|
||
|
|
// Add gated to editable fields
|
||
|
|
const yaml = `
|
||
|
|
name: ${project.name}
|
||
|
|
description: ${project.description}
|
||
|
|
gated: ${project.gated}
|
||
|
|
llmProvider: ${project.llmProvider || ''}
|
||
|
|
...`;
|
||
|
|
|
||
|
|
const edited = await openEditor(yaml);
|
||
|
|
const parsed = YAML.parse(edited);
|
||
|
|
|
||
|
|
// Validate gated is boolean
|
||
|
|
if (typeof parsed.gated !== 'boolean') {
|
||
|
|
console.error('gated must be true or false');
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
await api.put(`/api/v1/projects/${name}`, parsed);
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Update project validation schema to accept gated
|
||
|
|
|
||
|
|
3. Handle conversion from string 'true'/'false' to boolean
|
||
|
|
|
||
|
|
**Test Strategy:**
|
||
|
|
|
||
|
|
- Unit test: Gated field appears in editor YAML
|
||
|
|
- Unit test: Gated field saved on edit
|
||
|
|
- Unit test: Boolean validation (true/false only)
|
||
|
|
- Unit test: String 'true'/'false' converted to boolean
|
||
|
|
- Integration test: End-to-end edit project gated
|