@biznetgio/neo-app 0.4.64 → 0.4.65
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 +5 -3
package/package.json
CHANGED
package/src/mcp/tools.js
CHANGED
|
@@ -1443,7 +1443,7 @@ export const TOOLS = [
|
|
|
1443
1443
|
},
|
|
1444
1444
|
{
|
|
1445
1445
|
name: 'neo_list_cron_runs',
|
|
1446
|
-
description: 'List the recent runs of a scheduled job (cron)
|
|
1446
|
+
description: 'List the recent runs of a scheduled job (cron): status (running|succeeded|failed), startedAt/finishedAt, and for a FAILED run the terminal diagnostics — reason, message, and the container exitCode — so you can see WHY it failed, not just that it did (JNG #112, handoff 4.6).',
|
|
1447
1447
|
mutating: false,
|
|
1448
1448
|
schema: { type: 'object', properties: { cronId: str('Cron/scheduled-job id') }, required: ['cronId'] },
|
|
1449
1449
|
async call(api, args) {
|
|
@@ -1680,6 +1680,7 @@ export const TOOLS = [
|
|
|
1680
1680
|
image: str('app/cron: prebuilt image reference'),
|
|
1681
1681
|
repoUrl: str('app: git repository URL'),
|
|
1682
1682
|
branch: str('app: git branch'),
|
|
1683
|
+
deps: { type: 'array', items: { type: 'string', enum: ['database', 'queue', 'object_storage'] }, description: 'app: managed-resource dependencies this service needs (from neo_scan_repo `deps`). The plan flags any dep not satisfied by a binding as incompleteTopology and apply refuses it unless acknowledged — so a service needing NATS_URL/DATABASE_URL isn\'t deployed into a 503 (JNG #112 §7).' },
|
|
1683
1684
|
port: int('app: container port'),
|
|
1684
1685
|
computeTier: str('app/db/queue: micro | small | medium | large | xlarge'),
|
|
1685
1686
|
engine: str('database: postgres | mysql'),
|
|
@@ -1738,18 +1739,19 @@ export const TOOLS = [
|
|
|
1738
1739
|
{
|
|
1739
1740
|
name: 'neo_apply_stack',
|
|
1740
1741
|
description:
|
|
1741
|
-
'Apply a planned stack. REQUIRES the planId and the exact planHash from neo_plan_stack — the SERVER rejects a missing, changed, expired, or already-applied plan, so a billable stack can never be created without first creating + reviewing its costed plan (handoff 3.4/3.5, server-enforced approval). Creates resources in dependency order (foundations → services → bindings → deploy) and returns an operationId to poll with neo_get_operation.',
|
|
1742
|
+
'Apply a planned stack. REQUIRES the planId and the exact planHash from neo_plan_stack — the SERVER rejects a missing, changed, expired, or already-applied plan, so a billable stack can never be created without first creating + reviewing its costed plan (handoff 3.4/3.5, server-enforced approval). Creates resources in dependency order (foundations → services → bindings → deploy) and returns an operationId to poll with neo_get_operation. If the plan has an incompleteTopology (a service dependency not bound), apply returns error "incomplete_topology" — wire the missing resource + re-plan, or pass acknowledgeIncompleteTopology:true to deploy anyway.',
|
|
1742
1743
|
mutating: true,
|
|
1743
1744
|
schema: {
|
|
1744
1745
|
type: 'object',
|
|
1745
1746
|
properties: {
|
|
1746
1747
|
planId: str('Plan id from neo_plan_stack'),
|
|
1747
1748
|
planHash: str('Plan hash from neo_plan_stack — must match exactly (proves you reviewed this plan)'),
|
|
1749
|
+
acknowledgeIncompleteTopology: { type: 'boolean', description: 'Deploy past a detected unmet dependency (incompleteTopology) — e.g. a service that needs NATS_URL with no queue bound. Default false refuses it (JNG #112 §7).' },
|
|
1748
1750
|
},
|
|
1749
1751
|
required: ['planId', 'planHash'],
|
|
1750
1752
|
},
|
|
1751
1753
|
async call(api, args) {
|
|
1752
|
-
const { status, data } = await api.post(`/api/v1/plans/${args.planId}/apply`, { planHash: args.planHash });
|
|
1754
|
+
const { status, data } = await api.post(`/api/v1/plans/${args.planId}/apply`, { planHash: args.planHash, acknowledgeIncompleteTopology: !!args.acknowledgeIncompleteTopology });
|
|
1753
1755
|
return result(status, data);
|
|
1754
1756
|
},
|
|
1755
1757
|
},
|