@biznetgio/neo-app 0.4.67 → 0.4.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/mcp/tools.js +29 -1
package/package.json
CHANGED
package/src/mcp/tools.js
CHANGED
|
@@ -270,6 +270,25 @@ export const TOOLS = [
|
|
|
270
270
|
return { environment: sessionEnv, ...acct };
|
|
271
271
|
},
|
|
272
272
|
},
|
|
273
|
+
{
|
|
274
|
+
name: 'neo_list_tokens',
|
|
275
|
+
description: 'List your API tokens — the agent/MCP & CLI SESSIONS that can act as you (JNG #109). Returns id, name, scope, createdAt, and lastUsed (so you can spot stale or unexpected sessions). Token secrets are never returned (write-only). Use with neo_revoke_token to terminate a session.',
|
|
276
|
+
mutating: false,
|
|
277
|
+
schema: { type: 'object', properties: {} },
|
|
278
|
+
async call(api) {
|
|
279
|
+
return (await api.get('/api/v1/tokens')).data;
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
name: 'neo_revoke_token',
|
|
284
|
+
description: 'Revoke (terminate) an API token / agent session by id — the token stops working immediately and cannot be restored (JNG #109). DESTRUCTIVE: confirm with the user which session to revoke first, and do NOT revoke the token this session is currently using unless the user explicitly wants to end it. Use neo_list_tokens to find the id.',
|
|
285
|
+
mutating: true,
|
|
286
|
+
destructive: true,
|
|
287
|
+
schema: { type: 'object', properties: { tokenId: str('Token/session id (from neo_list_tokens)') }, required: ['tokenId'] },
|
|
288
|
+
async call(api, args) {
|
|
289
|
+
return (await api.del(`/api/v1/tokens/${args.tokenId}`)).data;
|
|
290
|
+
},
|
|
291
|
+
},
|
|
273
292
|
{
|
|
274
293
|
name: 'neo_get_capabilities',
|
|
275
294
|
description:
|
|
@@ -313,7 +332,7 @@ export const TOOLS = [
|
|
|
313
332
|
controlPlane,
|
|
314
333
|
resourceTypes,
|
|
315
334
|
// Verbs this MCP build exposes today (no create-DB/queue/cron/bucket, no costed plan/apply yet).
|
|
316
|
-
lifecycleVerbs: ['plan', 'apply', 'plan_promotion', 'get_operation', 'wait_operation', 'delete_stack', 'reconcile_usage', 'service_usage', 'create', 'list', 'get', 'update', 'verify', 'enable_public_access', 'disable_public_access', 'deploy', 'scale', 'add_domain', 'remove_domain', 'domain_status', 'logs', 'get_variables', 'set_variable', 'estimate', 'scan_repo', 'bind', 'unbind', 'run_cron', 'cron_questionnaire', 'presign_object', 'backup', 'restore', 'delete', 'delete_project', 'list_approvals', 'get_approval', 'get_credit', 'list_templates'],
|
|
335
|
+
lifecycleVerbs: ['plan', 'apply', 'plan_promotion', 'get_operation', 'wait_operation', 'delete_stack', 'reconcile_usage', 'service_usage', 'create', 'list', 'get', 'update', 'verify', 'enable_public_access', 'disable_public_access', 'deploy', 'scale', 'add_domain', 'remove_domain', 'domain_status', 'logs', 'get_variables', 'set_variable', 'estimate', 'scan_repo', 'bind', 'unbind', 'run_cron', 'cron_questionnaire', 'presign_object', 'backup', 'restore', 'delete', 'delete_project', 'list_approvals', 'get_approval', 'get_credit', 'list_templates', 'list_tokens', 'revoke_token'],
|
|
317
336
|
promotion: { supported: true, byCopy: true, tool: 'neo_plan_promotion', note: 'staging→production promotion by copy (JNG #112 §8.7): an immutable costed prod stack plan; applied with neo_apply_stack; copies build/compute/env/bound foundations, never custom domains or secret values, never mutates the source.' },
|
|
318
337
|
bindings: { supported: true, targets: ['neo_db', 'neo_queue', 'neo_object_storage'], writeOnly: true, note: 'neo_bind_resource + neo_plan_stack bindings inject DATABASE_URL / NATS_URL (+ NATS_HOST/PORT/USER/PASSWORD) / S3_* server-side at deploy; secrets never returned (handoff 5)' },
|
|
319
338
|
sourceTypes: ['git', 'image', 'dockerfile', 'local', 'template'],
|
|
@@ -510,6 +529,15 @@ export const TOOLS = [
|
|
|
510
529
|
return result(status, data);
|
|
511
530
|
},
|
|
512
531
|
},
|
|
532
|
+
{
|
|
533
|
+
name: 'neo_get_webhook',
|
|
534
|
+
description: 'Push-to-deploy (auto-deploy) integration status for a service (JNG #142). "Auto-deploy enabled" is NOT the same as "webhook active": this returns `status` = active (a delivery has been received) or **pending_setup** (NEO has never heard from the git provider — the webhook was likely never installed), plus `lastDeliveryAt` and the `setupUrl` to add to the repo. If pending_setup, add `setupUrl` as a push webhook (content-type application/json) in the repo\'s Settings → Webhooks; manual neo_deploy always works meanwhile.',
|
|
535
|
+
mutating: false,
|
|
536
|
+
schema: { type: 'object', properties: { appId: str('Service/app id') }, required: ['appId'] },
|
|
537
|
+
async call(api, args) {
|
|
538
|
+
return (await api.get(`/api/v1/apps/${args.appId}/webhook`)).data;
|
|
539
|
+
},
|
|
540
|
+
},
|
|
513
541
|
{
|
|
514
542
|
name: 'neo_get_domain_status',
|
|
515
543
|
description: 'Check a custom domain\'s readiness to a TERMINAL state (JNG #112 §8.6): whether it is attached, whether DNS resolves to the expected CNAME target (with an expected-vs-observed diagnostic), whether managed TLS has been issued, and whether HTTPS actually serves a valid certificate for the host. Poll this after neo_add_service_domain + redeploy until ready:true — do NOT assume "attach accepted" means live. Returns {attached, expectedTarget, dns:{pointed,observed,diagnostic}, tls:{issued}, https:{ok,statusCode,certHostnameValid}, ready}.',
|