nexus-prime 4.3.2 → 4.4.0
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/README.md +10 -0
- package/dist/agents/adapters/mcp.d.ts.map +1 -1
- package/dist/agents/adapters/mcp.js +19 -1
- package/dist/agents/adapters/mcp.js.map +1 -1
- package/dist/dashboard/index.html +22 -2
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +36 -3
- package/dist/dashboard/server.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 +36 -6
- package/dist/engines/client-bootstrap.js.map +1 -1
- package/dist/engines/context-assembler.d.ts +17 -0
- package/dist/engines/context-assembler.d.ts.map +1 -1
- package/dist/engines/context-assembler.js +72 -31
- package/dist/engines/context-assembler.js.map +1 -1
- package/dist/engines/embedder.d.ts +3 -1
- package/dist/engines/embedder.d.ts.map +1 -1
- package/dist/engines/embedder.js +20 -4
- package/dist/engines/embedder.js.map +1 -1
- package/dist/engines/event-bus.d.ts +9 -1
- package/dist/engines/event-bus.d.ts.map +1 -1
- package/dist/engines/event-bus.js +21 -0
- package/dist/engines/event-bus.js.map +1 -1
- package/dist/engines/index.d.ts +1 -1
- package/dist/engines/index.d.ts.map +1 -1
- package/dist/engines/index.js +1 -1
- package/dist/engines/index.js.map +1 -1
- package/dist/engines/instruction-gateway.d.ts.map +1 -1
- package/dist/engines/instruction-gateway.js +18 -7
- package/dist/engines/instruction-gateway.js.map +1 -1
- package/dist/engines/knowledge-fabric.d.ts +9 -0
- package/dist/engines/knowledge-fabric.d.ts.map +1 -1
- package/dist/engines/knowledge-fabric.js +56 -4
- package/dist/engines/knowledge-fabric.js.map +1 -1
- package/dist/engines/lifetime-tokens.d.ts +14 -0
- package/dist/engines/lifetime-tokens.d.ts.map +1 -0
- package/dist/engines/lifetime-tokens.js +37 -0
- package/dist/engines/lifetime-tokens.js.map +1 -0
- package/dist/engines/memory-bridge.d.ts +49 -19
- package/dist/engines/memory-bridge.d.ts.map +1 -1
- package/dist/engines/memory-bridge.js +141 -29
- package/dist/engines/memory-bridge.js.map +1 -1
- package/dist/engines/memory-control-plane.d.ts +27 -0
- package/dist/engines/memory-control-plane.d.ts.map +1 -1
- package/dist/engines/memory-control-plane.js +100 -0
- package/dist/engines/memory-control-plane.js.map +1 -1
- package/dist/engines/memory-extractor.d.ts +35 -0
- package/dist/engines/memory-extractor.d.ts.map +1 -0
- package/dist/engines/memory-extractor.js +164 -0
- package/dist/engines/memory-extractor.js.map +1 -0
- package/dist/engines/memory-fingerprint.d.ts +7 -0
- package/dist/engines/memory-fingerprint.d.ts.map +1 -0
- package/dist/engines/memory-fingerprint.js +22 -0
- package/dist/engines/memory-fingerprint.js.map +1 -0
- package/dist/engines/memory.d.ts +62 -8
- package/dist/engines/memory.d.ts.map +1 -1
- package/dist/engines/memory.js +445 -82
- package/dist/engines/memory.js.map +1 -1
- package/dist/engines/nexus-layer.d.ts +1 -6
- package/dist/engines/nexus-layer.d.ts.map +1 -1
- package/dist/engines/ngram-index.d.ts +2 -0
- package/dist/engines/ngram-index.d.ts.map +1 -1
- package/dist/engines/ngram-index.js +32 -0
- package/dist/engines/ngram-index.js.map +1 -1
- package/dist/engines/orchestrator.d.ts +3 -1
- package/dist/engines/orchestrator.d.ts.map +1 -1
- package/dist/engines/orchestrator.js +157 -31
- package/dist/engines/orchestrator.js.map +1 -1
- package/dist/engines/pattern-registry.d.ts.map +1 -1
- package/dist/engines/pattern-registry.js +9 -2
- package/dist/engines/pattern-registry.js.map +1 -1
- package/dist/engines/rag-collections.d.ts +8 -0
- package/dist/engines/rag-collections.d.ts.map +1 -1
- package/dist/engines/rag-collections.js +63 -14
- package/dist/engines/rag-collections.js.map +1 -1
- package/dist/engines/runtime-registry.d.ts +1 -0
- package/dist/engines/runtime-registry.d.ts.map +1 -1
- package/dist/engines/runtime-registry.js +9 -11
- package/dist/engines/runtime-registry.js.map +1 -1
- package/dist/engines/semantic-ranking.d.ts +27 -0
- package/dist/engines/semantic-ranking.d.ts.map +1 -0
- package/dist/engines/semantic-ranking.js +83 -0
- package/dist/engines/semantic-ranking.js.map +1 -0
- package/dist/engines/skill-runtime.d.ts +1 -0
- package/dist/engines/skill-runtime.d.ts.map +1 -1
- package/dist/engines/skill-runtime.js +58 -61
- package/dist/engines/skill-runtime.js.map +1 -1
- package/dist/engines/token-optimizer.d.ts +0 -16
- package/dist/engines/token-optimizer.d.ts.map +1 -1
- package/dist/engines/token-optimizer.js +0 -40
- package/dist/engines/token-optimizer.js.map +1 -1
- package/dist/engines/token-supremacy.d.ts +5 -1
- package/dist/engines/token-supremacy.d.ts.map +1 -1
- package/dist/engines/token-supremacy.js +8 -2
- package/dist/engines/token-supremacy.js.map +1 -1
- package/dist/engines/workflow-runtime.d.ts +2 -0
- package/dist/engines/workflow-runtime.d.ts.map +1 -1
- package/dist/engines/workflow-runtime.js +74 -38
- package/dist/engines/workflow-runtime.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -9
- package/dist/index.js.map +1 -1
- package/dist/nexus-prime.d.ts +1 -1
- package/dist/nexus-prime.d.ts.map +1 -1
- package/dist/nexus-prime.js +1 -1
- package/dist/nexus-prime.js.map +1 -1
- package/dist/phantom/index.d.ts +12 -2
- package/dist/phantom/index.d.ts.map +1 -1
- package/dist/phantom/index.js +29 -9
- package/dist/phantom/index.js.map +1 -1
- package/dist/phantom/runtime.d.ts +3 -2
- package/dist/phantom/runtime.d.ts.map +1 -1
- package/dist/phantom/runtime.js +80 -8
- package/dist/phantom/runtime.js.map +1 -1
- package/dist/postinstall-bootstrap.js +4 -1
- package/dist/postinstall-bootstrap.js.map +1 -1
- package/dist/synapse/bootstrap.d.ts.map +1 -1
- package/dist/synapse/bootstrap.js +9 -2
- package/dist/synapse/bootstrap.js.map +1 -1
- package/dist/synapse/mandate/asset-matcher.d.ts.map +1 -1
- package/dist/synapse/mandate/asset-matcher.js +26 -15
- package/dist/synapse/mandate/asset-matcher.js.map +1 -1
- package/package.json +2 -3
- package/dist/core/memory.d.ts +0 -96
- package/dist/core/memory.d.ts.map +0 -1
- package/dist/core/memory.js +0 -304
- package/dist/core/memory.js.map +0 -1
package/dist/phantom/runtime.js
CHANGED
|
@@ -702,10 +702,11 @@ export class SubAgentRuntime {
|
|
|
702
702
|
run.state = 'running';
|
|
703
703
|
const coderManifests = manifests.filter((manifest) => manifest.role === 'coder');
|
|
704
704
|
const coderResults = await Promise.all(coderManifests.map((manifest) => this.runCoderWorker(runId, recorder, manifest)));
|
|
705
|
+
const mergeableCoderResults = coderResults.filter((result) => !result.budgetExceeded);
|
|
705
706
|
// Phase 3E: Inter-pod sync point using Byzantine consensus
|
|
706
707
|
const activePods = new Set(coderManifests.map(m => m.podId).filter(Boolean));
|
|
707
708
|
if (activePods.size > 1) {
|
|
708
|
-
|
|
709
|
+
mergeableCoderResults.forEach((res) => {
|
|
709
710
|
if (res.outcome !== 'failed') {
|
|
710
711
|
// Submit candidate magnitude to inter-pod consensus
|
|
711
712
|
podNetwork.resolveConflict(res.workerId, 1, [res.tokensUsed, res.diff.length]);
|
|
@@ -745,12 +746,28 @@ export class SubAgentRuntime {
|
|
|
745
746
|
run.state = 'verifying';
|
|
746
747
|
const verifierManifests = manifests.filter((manifest) => manifest.role === 'verifier');
|
|
747
748
|
const verificationResults = await Promise.all(verifierManifests.map((manifest) => {
|
|
749
|
+
const target = coderResults.find((result) => result.workerId === manifest.targetWorkerId);
|
|
750
|
+
if (!target || target.budgetExceeded) {
|
|
751
|
+
return Promise.resolve({
|
|
752
|
+
workerId: manifest.targetWorkerId ?? manifest.workerId,
|
|
753
|
+
verifierId: manifest.workerId,
|
|
754
|
+
passed: false,
|
|
755
|
+
commands: [],
|
|
756
|
+
summary: target?.budgetExceeded
|
|
757
|
+
? 'Skipped verification for over-budget worker.'
|
|
758
|
+
: 'Skipped verification because no coder result was produced.',
|
|
759
|
+
artifactsPath: recorder.workerDir(manifest.workerId),
|
|
760
|
+
});
|
|
761
|
+
}
|
|
748
762
|
manifest.verifyCommands = beforeVerifyResolved.verifyCommands;
|
|
749
|
-
return this.runVerifierWorker(runId, recorder, manifest,
|
|
763
|
+
return this.runVerifierWorker(runId, recorder, manifest, target);
|
|
750
764
|
}));
|
|
751
765
|
run.verificationResults = verificationResults;
|
|
752
766
|
recorder.writeJson('verification-results.json', verificationResults);
|
|
753
767
|
for (const result of run.workerResults) {
|
|
768
|
+
if (result.budgetExceeded) {
|
|
769
|
+
continue;
|
|
770
|
+
}
|
|
754
771
|
const verification = verificationResults.find((entry) => entry.workerId === result.workerId);
|
|
755
772
|
if (verification) {
|
|
756
773
|
result.verification = verification;
|
|
@@ -759,7 +776,7 @@ export class SubAgentRuntime {
|
|
|
759
776
|
result.outcome = verification.passed ? 'success' : (result.diff.trim() ? 'partial' : 'failed');
|
|
760
777
|
}
|
|
761
778
|
}
|
|
762
|
-
const decision = await consensusPolicy.merge(
|
|
779
|
+
const decision = await consensusPolicy.merge(mergeableCoderResults);
|
|
763
780
|
run.finalDecision = decision;
|
|
764
781
|
run.backendEvidence.consensus = consensusPolicy.shadowStats();
|
|
765
782
|
recorder.writeJson('decision.json', decision);
|
|
@@ -1932,7 +1949,6 @@ export class SubAgentRuntime {
|
|
|
1932
1949
|
}
|
|
1933
1950
|
async runCoderWorker(runId, recorder, manifest) {
|
|
1934
1951
|
const session = new WorktreeSession(this.repoRoot, `${runId}-${manifest.workerId}`, 'coder', recorder, (snapshot) => this.recordWorktreeHealth(snapshot));
|
|
1935
|
-
const start = Date.now();
|
|
1936
1952
|
const learnings = [];
|
|
1937
1953
|
const workerDir = recorder.workerDir(manifest.workerId);
|
|
1938
1954
|
try {
|
|
@@ -1966,6 +1982,32 @@ export class SubAgentRuntime {
|
|
|
1966
1982
|
if (allowedActions.length > 0) {
|
|
1967
1983
|
learnings.push(`Applied ${allowedActions.length} runtime binding(s): ${allowedActions.map((binding) => binding.type).join(', ')}`);
|
|
1968
1984
|
}
|
|
1985
|
+
const instructionPacket = this.runs.get(runId)?.instructionPacket;
|
|
1986
|
+
const preflightTokens = this.estimateRuntimeWorkerTokens(manifest, allowedActions, learnings, '', instructionPacket);
|
|
1987
|
+
if (manifest.tokenBudget > 0 && preflightTokens > manifest.tokenBudget) {
|
|
1988
|
+
const budgetLearnings = [
|
|
1989
|
+
...learnings,
|
|
1990
|
+
`Token budget exceeded before mutation: used ${preflightTokens}, budget ${manifest.tokenBudget}`,
|
|
1991
|
+
];
|
|
1992
|
+
nexusEventBus.emit('phantom.worker.complete', { workerId: manifest.workerId, confidence: 0.05 });
|
|
1993
|
+
return {
|
|
1994
|
+
workerId: manifest.workerId,
|
|
1995
|
+
role: manifest.role,
|
|
1996
|
+
taskId: runId,
|
|
1997
|
+
approach: manifest.strategy,
|
|
1998
|
+
diff: '',
|
|
1999
|
+
outcome: 'budgetExceeded',
|
|
2000
|
+
confidence: 0.05,
|
|
2001
|
+
tokensUsed: preflightTokens,
|
|
2002
|
+
tokenEstimateSource: 'runtime-estimate',
|
|
2003
|
+
budgetExceeded: true,
|
|
2004
|
+
learnings: budgetLearnings,
|
|
2005
|
+
testsPassing: 0,
|
|
2006
|
+
verified: false,
|
|
2007
|
+
artifactsPath: workerDir,
|
|
2008
|
+
modifiedFiles: [],
|
|
2009
|
+
};
|
|
2010
|
+
}
|
|
1969
2011
|
const modifiedFiles = await session.applyBindings(allowedActions);
|
|
1970
2012
|
modifiedFiles.forEach(file => {
|
|
1971
2013
|
this.sessionDNA?.recordFileModified(file);
|
|
@@ -1974,16 +2016,23 @@ export class SubAgentRuntime {
|
|
|
1974
2016
|
const diff = await session.captureDiff();
|
|
1975
2017
|
recorder.writeText(path.join('workers', manifest.workerId, 'diff.patch'), diff);
|
|
1976
2018
|
podNetwork.publish(manifest.workerId, `Produced ${modifiedFiles.length} modified files`, 0.8, ['#runtime-worker']);
|
|
1977
|
-
|
|
2019
|
+
const estimatedTokens = this.estimateRuntimeWorkerTokens(manifest, allowedActions, learnings, diff, instructionPacket);
|
|
2020
|
+
const budgetExceeded = manifest.tokenBudget > 0 && estimatedTokens > manifest.tokenBudget;
|
|
2021
|
+
if (budgetExceeded) {
|
|
2022
|
+
learnings.push(`Token budget exceeded: used ${estimatedTokens}, budget ${manifest.tokenBudget}`);
|
|
2023
|
+
}
|
|
2024
|
+
nexusEventBus.emit('phantom.worker.complete', { workerId: manifest.workerId, confidence: budgetExceeded ? 0.1 : (diff.trim() ? 0.7 : 0.2) });
|
|
1978
2025
|
return {
|
|
1979
2026
|
workerId: manifest.workerId,
|
|
1980
2027
|
role: manifest.role,
|
|
1981
2028
|
taskId: runId,
|
|
1982
2029
|
approach: manifest.strategy,
|
|
1983
2030
|
diff,
|
|
1984
|
-
outcome: diff.trim() ? 'partial' : 'failed',
|
|
1985
|
-
confidence: diff.trim() ? 0.68 : 0.18,
|
|
1986
|
-
tokensUsed:
|
|
2031
|
+
outcome: budgetExceeded ? 'budgetExceeded' : (diff.trim() ? 'partial' : 'failed'),
|
|
2032
|
+
confidence: budgetExceeded ? 0.1 : (diff.trim() ? 0.68 : 0.18),
|
|
2033
|
+
tokensUsed: estimatedTokens,
|
|
2034
|
+
tokenEstimateSource: 'runtime-estimate',
|
|
2035
|
+
budgetExceeded,
|
|
1987
2036
|
learnings,
|
|
1988
2037
|
testsPassing: 0,
|
|
1989
2038
|
verified: false,
|
|
@@ -2005,6 +2054,8 @@ export class SubAgentRuntime {
|
|
|
2005
2054
|
outcome: 'failed',
|
|
2006
2055
|
confidence: 0,
|
|
2007
2056
|
tokensUsed: 0,
|
|
2057
|
+
tokenEstimateSource: 'none',
|
|
2058
|
+
budgetExceeded: false,
|
|
2008
2059
|
learnings,
|
|
2009
2060
|
verified: false,
|
|
2010
2061
|
artifactsPath: workerDir,
|
|
@@ -2015,6 +2066,27 @@ export class SubAgentRuntime {
|
|
|
2015
2066
|
await session.cleanup();
|
|
2016
2067
|
}
|
|
2017
2068
|
}
|
|
2069
|
+
estimateRuntimeWorkerTokens(manifest, allowedActions, learnings, diff, instructionPacket) {
|
|
2070
|
+
const actionPayloadTokens = allowedActions.reduce((sum, binding) => (sum + estimateTokenCount({
|
|
2071
|
+
type: binding.type,
|
|
2072
|
+
path: 'path' in binding ? binding.path : undefined,
|
|
2073
|
+
content: 'content' in binding ? binding.content : undefined,
|
|
2074
|
+
command: 'command' in binding ? binding.command : undefined,
|
|
2075
|
+
})), 0);
|
|
2076
|
+
return Math.max(1, estimateTokenCount({
|
|
2077
|
+
workerId: manifest.workerId,
|
|
2078
|
+
role: manifest.role,
|
|
2079
|
+
strategy: manifest.strategy,
|
|
2080
|
+
files: manifest.files.map((file) => path.basename(file.path)),
|
|
2081
|
+
allowedTools: manifest.allowedTools,
|
|
2082
|
+
verifyCommands: manifest.verifyCommands,
|
|
2083
|
+
instructionPacketHash: instructionPacket?.packetHash,
|
|
2084
|
+
actionCount: allowedActions.length,
|
|
2085
|
+
actionPayloadTokens,
|
|
2086
|
+
learningCount: learnings.length,
|
|
2087
|
+
diff,
|
|
2088
|
+
}));
|
|
2089
|
+
}
|
|
2018
2090
|
async runVerifierWorker(runId, recorder, manifest, target) {
|
|
2019
2091
|
const verifier = new WorktreeSession(this.repoRoot, `${runId}-${manifest.workerId}`, 'verifier', recorder, (snapshot) => this.recordWorktreeHealth(snapshot));
|
|
2020
2092
|
const records = [];
|