refactor(cli): use spaces in custom operation keys

Operation keys like 'config get' read naturally and crud.ts normalizes
spaces to dashes for the registry name.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gavrielc
2026-05-09 12:06:40 +03:00
parent 1efe28ccdc
commit 37b54968ce
3 changed files with 9 additions and 9 deletions

View File

@@ -279,7 +279,7 @@ export function registerResource(def: ResourceDef): void {
if (def.customOperations) { if (def.customOperations) {
for (const [verb, op] of Object.entries(def.customOperations)) { for (const [verb, op] of Object.entries(def.customOperations)) {
register({ register({
name: `${def.plural}-${verb}`, name: `${def.plural}-${verb.replace(/ /g, '-')}`,
description: op.description, description: op.description,
access: op.access, access: op.access,
resource: def.plural, resource: def.plural,

View File

@@ -54,7 +54,7 @@ registerResource({
{ {
name: 'agent_provider', name: 'agent_provider',
type: 'string', type: 'string',
description: 'Deprecated — use `ncl groups config-update --provider`. Kept for backwards compat.', description: 'Deprecated — use `ncl groups config update --provider`. Kept for backwards compat.',
updatable: false, updatable: false,
default: null, default: null,
}, },
@@ -62,7 +62,7 @@ registerResource({
], ],
operations: { list: 'open', get: 'open', create: 'approval', update: 'approval', delete: 'approval' }, operations: { list: 'open', get: 'open', create: 'approval', update: 'approval', delete: 'approval' },
customOperations: { customOperations: {
'config-get': { 'config get': {
access: 'open', access: 'open',
description: 'Show the container config for a group. Use --id <group-id>.', description: 'Show the container config for a group. Use --id <group-id>.',
handler: async (args) => { handler: async (args) => {
@@ -73,7 +73,7 @@ registerResource({
return presentConfig(row); return presentConfig(row);
}, },
}, },
'config-update': { 'config update': {
access: 'approval', access: 'approval',
description: description:
'Update container config scalar fields. Use --id <group-id> and any of: --provider, --model, --effort, --image-tag, --assistant-name, --max-messages-per-prompt.', 'Update container config scalar fields. Use --id <group-id> and any of: --provider, --model, --effort, --image-tag, --assistant-name, --max-messages-per-prompt.',
@@ -110,7 +110,7 @@ registerResource({
return presentConfig(updated); return presentConfig(updated);
}, },
}, },
'config-add-mcp-server': { 'config add-mcp-server': {
access: 'approval', access: 'approval',
description: description:
'Add an MCP server to a group. Use --id <group-id> --name <server-name> --command <cmd> [--args <json-array>] [--env <json-object>].', 'Add an MCP server to a group. Use --id <group-id> --name <server-name> --command <cmd> [--args <json-array>] [--env <json-object>].',
@@ -137,7 +137,7 @@ registerResource({
return { added: name, servers }; return { added: name, servers };
}, },
}, },
'config-remove-mcp-server': { 'config remove-mcp-server': {
access: 'approval', access: 'approval',
description: 'Remove an MCP server from a group. Use --id <group-id> --name <server-name>.', description: 'Remove an MCP server from a group. Use --id <group-id> --name <server-name>.',
handler: async (args) => { handler: async (args) => {
@@ -158,7 +158,7 @@ registerResource({
return { removed: name }; return { removed: name };
}, },
}, },
'config-add-package': { 'config add-package': {
access: 'approval', access: 'approval',
description: 'Add a package to a group. Use --id <group-id> and --apt <pkg> or --npm <pkg>.', description: 'Add a package to a group. Use --id <group-id> and --apt <pkg> or --npm <pkg>.',
handler: async (args) => { handler: async (args) => {
@@ -193,7 +193,7 @@ registerResource({
return { added: { apt: apt || null, npm: npm || null } }; return { added: { apt: apt || null, npm: npm || null } };
}, },
}, },
'config-remove-package': { 'config remove-package': {
access: 'approval', access: 'approval',
description: 'Remove a package from a group. Use --id <group-id> and --apt <pkg> or --npm <pkg>.', description: 'Remove a package from a group. Use --id <group-id> and --apt <pkg> or --npm <pkg>.',
handler: async (args) => { handler: async (args) => {

View File

@@ -3,7 +3,7 @@
* *
* Used by: * Used by:
* - self-mod approval handlers (after config change) * - self-mod approval handlers (after config change)
* - ncl config-update (after CLI config change) * - ncl groups config update (after CLI config change)
*/ */
import { killContainer } from './container-runner.js'; import { killContainer } from './container-runner.js';
import { getSessionsByAgentGroup } from './db/sessions.js'; import { getSessionsByAgentGroup } from './db/sessions.js';