nexus-prime 5.0.1 → 5.0.3
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/dist/agents/adapters/mcp.d.ts.map +1 -1
- package/dist/agents/adapters/mcp.js +40 -2
- package/dist/agents/adapters/mcp.js.map +1 -1
- package/dist/cli.js +12 -17
- package/dist/cli.js.map +1 -1
- package/dist/engines/client-bootstrap.d.ts +1 -0
- package/dist/engines/client-bootstrap.d.ts.map +1 -1
- package/dist/engines/client-bootstrap.js +9 -18
- package/dist/engines/client-bootstrap.js.map +1 -1
- package/dist/engines/client-registry.d.ts.map +1 -1
- package/dist/engines/client-registry.js +3 -2
- package/dist/engines/client-registry.js.map +1 -1
- package/dist/engines/darwin-loop.d.ts.map +1 -1
- package/dist/engines/darwin-loop.js +5 -1
- package/dist/engines/darwin-loop.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/mcp.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAmG5C,KAAK,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAK5C,KAAK,iBAAiB,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/mcp.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAmG5C,KAAK,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAK5C,KAAK,iBAAiB,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAAC;AAsaF,qBAAa,UAAW,YAAW,OAAO;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAG,KAAK,CAAU;IACtB,SAAS,UAAS;IAClB,MAAM,EAAE,MAAM,EAAE,CAAM;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,OAAO,CAAC,CAAkB;IAClC,OAAO,CAAC,uBAAuB,CAAC,CAAS;IACzC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,oBAAoB,CAAgG;IAC5H,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,eAAe;IAqEvB,OAAO,CAAC,GAAG;;IAqBX,OAAO,CAAC,gBAAgB;IA4BxB,WAAW,CAAC,KAAK,EAAE,UAAU;IAI7B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,4BAA4B;IAepC,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,yBAAyB;IAqFjC,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,yBAAyB;IA2CjC,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,YAAY;YAON,mBAAmB;IA0DjC,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,2BAA2B;IAqBnC,OAAO,CAAC,uBAAuB;IAkC/B,cAAc,CAAC,OAAO,GAAE,cAAsC,GAAG,iBAAiB,EAAE;IAIpF,OAAO,CAAC,oBAAoB;IAg/B5B,OAAO,CAAC,iBAAiB;YAkHX,cAAc;IA2iF5B,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAItC,OAAO,CAAC,IAAI;IAmBN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;CAOzC"}
|
|
@@ -174,6 +174,13 @@ const PRE_BOOTSTRAP_ALLOWED_TOOLS = new Set([
|
|
|
174
174
|
'nexus_describe_tool',
|
|
175
175
|
'nexus_federation_status',
|
|
176
176
|
'nexus_status',
|
|
177
|
+
// Specific list tools allowed pre-bootstrap for catalog discovery only:
|
|
178
|
+
'nexus_list_skills',
|
|
179
|
+
'nexus_list_workflows',
|
|
180
|
+
'nexus_list_hooks',
|
|
181
|
+
'nexus_list_automations',
|
|
182
|
+
'nexus_list_specialists',
|
|
183
|
+
'nexus_list_crews',
|
|
177
184
|
]);
|
|
178
185
|
/** Session-level telemetry tracker */
|
|
179
186
|
class SessionTelemetry {
|
|
@@ -193,6 +200,7 @@ class SessionTelemetry {
|
|
|
193
200
|
tokenAutoApplied = false;
|
|
194
201
|
stickyTokenOptimization = false;
|
|
195
202
|
bootstrapped = false;
|
|
203
|
+
bootstrapCallCount = 0;
|
|
196
204
|
recordCall() {
|
|
197
205
|
this.callCount++;
|
|
198
206
|
if (this.isPostOrchestratePhase()) {
|
|
@@ -2104,8 +2112,7 @@ export class MCPAdapter {
|
|
|
2104
2112
|
this.telemetry.bootstrapped = true;
|
|
2105
2113
|
}
|
|
2106
2114
|
if (!this.telemetry.bootstrapped &&
|
|
2107
|
-
!PRE_BOOTSTRAP_ALLOWED_TOOLS.has(toolName)
|
|
2108
|
-
!toolName.startsWith('nexus_list_')) {
|
|
2115
|
+
!PRE_BOOTSTRAP_ALLOWED_TOOLS.has(toolName)) {
|
|
2109
2116
|
return {
|
|
2110
2117
|
content: [{
|
|
2111
2118
|
type: 'text',
|
|
@@ -2229,6 +2236,37 @@ export class MCPAdapter {
|
|
|
2229
2236
|
case 'nexus_session_bootstrap': {
|
|
2230
2237
|
const callStartedAt = Date.now();
|
|
2231
2238
|
const bootstrapGoal = String(request.params.arguments?.goal ?? request.params.arguments?.prompt ?? '');
|
|
2239
|
+
// Fast-path: if already bootstrapped in this MCP session and receipt is still fresh,
|
|
2240
|
+
// return a lightweight ack instead of re-running the full expensive bootstrap.
|
|
2241
|
+
// This makes bootstrap idempotent for loop-based callers (e.g. /loop skill, Antigravity).
|
|
2242
|
+
if (this.telemetry.bootstrapCallCount > 0) {
|
|
2243
|
+
const hasFreshReceipt = (() => {
|
|
2244
|
+
try {
|
|
2245
|
+
const ws = resolveWorkspaceContext();
|
|
2246
|
+
const stateRoot = resolveWorkspaceStateRoot(ws.workspaceRoot);
|
|
2247
|
+
return hasValidBootstrapReceipt(stateRoot);
|
|
2248
|
+
}
|
|
2249
|
+
catch {
|
|
2250
|
+
return false;
|
|
2251
|
+
}
|
|
2252
|
+
})();
|
|
2253
|
+
if (hasFreshReceipt) {
|
|
2254
|
+
this.telemetry.bootstrapCallCount++;
|
|
2255
|
+
return {
|
|
2256
|
+
content: [{
|
|
2257
|
+
type: 'text',
|
|
2258
|
+
text: [
|
|
2259
|
+
'Session already bootstrapped (fast-path — receipt is fresh).',
|
|
2260
|
+
'Skipping full re-bootstrap to avoid loop overhead.',
|
|
2261
|
+
`Goal: ${bootstrapGoal || '(same as prior call)'}`,
|
|
2262
|
+
'Recommended next step: nexus_orchestrate',
|
|
2263
|
+
this.formatProtocolChecklist(),
|
|
2264
|
+
].join('\n\n'),
|
|
2265
|
+
}],
|
|
2266
|
+
};
|
|
2267
|
+
}
|
|
2268
|
+
}
|
|
2269
|
+
this.telemetry.bootstrapCallCount++;
|
|
2232
2270
|
this.currentTask = bootstrapGoal;
|
|
2233
2271
|
const files = Array.isArray(request.params.arguments?.files)
|
|
2234
2272
|
? request.params.arguments.files.map(String)
|