swarm-engine 1.43.0 → 1.51.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 +145 -42
- package/agents/implementer.md +1 -14
- package/agents/orchestrator.md +127 -246
- package/agents/reviewer.md +3 -18
- package/dist/cli/commands/agents.js +13 -1
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/dashboard.d.ts +3 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +43 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/orchestrate.d.ts.map +1 -1
- package/dist/cli/commands/orchestrate.js +17 -0
- package/dist/cli/commands/orchestrate.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +20 -1
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +5 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +4 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/types.d.ts +24 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +4 -0
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/index.js +2 -2
- package/dist/memory/index.js.map +1 -1
- package/dist/runtime/agent-runner.d.ts +8 -0
- package/dist/runtime/agent-runner.d.ts.map +1 -1
- package/dist/runtime/agent-runner.js +93 -4
- package/dist/runtime/agent-runner.js.map +1 -1
- package/dist/runtime/backends/claude.d.ts +1 -0
- package/dist/runtime/backends/claude.d.ts.map +1 -1
- package/dist/runtime/backends/claude.js +50 -2
- package/dist/runtime/backends/claude.js.map +1 -1
- package/dist/runtime/backends/codex.d.ts.map +1 -1
- package/dist/runtime/backends/codex.js +4 -0
- package/dist/runtime/backends/codex.js.map +1 -1
- package/dist/runtime/backends/gemini.d.ts.map +1 -1
- package/dist/runtime/backends/gemini.js +4 -0
- package/dist/runtime/backends/gemini.js.map +1 -1
- package/dist/runtime/benefits.d.ts +81 -1
- package/dist/runtime/benefits.d.ts.map +1 -1
- package/dist/runtime/benefits.js +199 -12
- package/dist/runtime/benefits.js.map +1 -1
- package/dist/runtime/cache-optimizer.d.ts +7 -3
- package/dist/runtime/cache-optimizer.d.ts.map +1 -1
- package/dist/runtime/cache-optimizer.js +11 -7
- package/dist/runtime/cache-optimizer.js.map +1 -1
- package/dist/runtime/compaction.d.ts +6 -1
- package/dist/runtime/compaction.d.ts.map +1 -1
- package/dist/runtime/compaction.js +39 -2
- package/dist/runtime/compaction.js.map +1 -1
- package/dist/runtime/cost-model.d.ts.map +1 -1
- package/dist/runtime/cost-model.js +20 -17
- package/dist/runtime/cost-model.js.map +1 -1
- package/dist/runtime/engine.d.ts +1 -0
- package/dist/runtime/engine.d.ts.map +1 -1
- package/dist/runtime/engine.js +62 -2
- package/dist/runtime/engine.js.map +1 -1
- package/dist/runtime/graph-discovery.js +2 -2
- package/dist/runtime/graph-discovery.js.map +1 -1
- package/dist/runtime/graph-trajectory.js +3 -3
- package/dist/runtime/graph-trajectory.js.map +1 -1
- package/dist/runtime/lsp.d.ts.map +1 -1
- package/dist/runtime/lsp.js +4 -0
- package/dist/runtime/lsp.js.map +1 -1
- package/dist/runtime/mcp.d.ts +1 -0
- package/dist/runtime/mcp.d.ts.map +1 -1
- package/dist/runtime/mcp.js +38 -0
- package/dist/runtime/mcp.js.map +1 -1
- package/dist/runtime/output-summarizer.d.ts +45 -0
- package/dist/runtime/output-summarizer.d.ts.map +1 -0
- package/dist/runtime/output-summarizer.js +171 -0
- package/dist/runtime/output-summarizer.js.map +1 -0
- package/dist/runtime/plugins.d.ts +5 -1
- package/dist/runtime/plugins.d.ts.map +1 -1
- package/dist/runtime/plugins.js +14 -2
- package/dist/runtime/plugins.js.map +1 -1
- package/dist/runtime/prompt-tier.d.ts +33 -0
- package/dist/runtime/prompt-tier.d.ts.map +1 -0
- package/dist/runtime/prompt-tier.js +105 -0
- package/dist/runtime/prompt-tier.js.map +1 -0
- package/dist/runtime/sharing.js +2 -1
- package/dist/runtime/sharing.js.map +1 -1
- package/dist/runtime/stats.d.ts +2 -0
- package/dist/runtime/stats.d.ts.map +1 -1
- package/dist/runtime/stats.js +17 -3
- package/dist/runtime/stats.js.map +1 -1
- package/dist/utils/project-config.d.ts +20 -0
- package/dist/utils/project-config.d.ts.map +1 -1
- package/dist/utils/project-config.js +46 -1
- package/dist/utils/project-config.js.map +1 -1
- package/dist/utils/redact.d.ts.map +1 -1
- package/dist/utils/redact.js +5 -1
- package/dist/utils/redact.js.map +1 -1
- package/dist/web/bridge.d.ts +47 -0
- package/dist/web/bridge.d.ts.map +1 -0
- package/dist/web/bridge.js +267 -0
- package/dist/web/bridge.js.map +1 -0
- package/dist/web/graph-api.d.ts +19 -0
- package/dist/web/graph-api.d.ts.map +1 -0
- package/dist/web/graph-api.js +157 -0
- package/dist/web/graph-api.js.map +1 -0
- package/dist/web/index.d.ts +21 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +38 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/public/index.html +1304 -0
- package/dist/web/public/public/index.html +1307 -0
- package/dist/web/server.d.ts +24 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +113 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/tray.d.ts +23 -0
- package/dist/web/tray.d.ts.map +1 -0
- package/dist/web/tray.js +205 -0
- package/dist/web/tray.js.map +1 -0
- package/package.json +1 -1
|
@@ -11,16 +11,20 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* Structure a prompt for optimal cache utilization.
|
|
13
13
|
*
|
|
14
|
-
* Order: Orchestration context →
|
|
14
|
+
* Order: Orchestration context → Agent definition → Phase context → Task
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
16
|
+
* Security (CWE-74): the agent's own definition is placed BEFORE the
|
|
17
|
+
* (potentially untrusted) phase context so the model reads its instructions
|
|
18
|
+
* first. This is a structural defense — position in prompt matters for LLM
|
|
19
|
+
* attention. Trade-off: sharedPrefix now varies per agent (includes
|
|
20
|
+
* agent-specific definition), weakening cross-agent cache sharing.
|
|
21
|
+
* Security wins over caching in this trade-off.
|
|
18
22
|
*/
|
|
19
23
|
export function optimizeForCache(orchestrationContext, sharedPhaseContext, agentDefinition, task) {
|
|
20
|
-
// Shared prefix:
|
|
21
|
-
const sharedPrefix = [orchestrationContext,
|
|
22
|
-
// Agent
|
|
23
|
-
const agentSuffix = [
|
|
24
|
+
// Shared prefix: orchestration context + agent's own instructions first
|
|
25
|
+
const sharedPrefix = [orchestrationContext, agentDefinition].filter(Boolean).join('\n\n');
|
|
26
|
+
// Agent suffix: untrusted phase context + task-specific content
|
|
27
|
+
const agentSuffix = [sharedPhaseContext, task].filter(Boolean).join('\n\n');
|
|
24
28
|
return {
|
|
25
29
|
sharedPrefix,
|
|
26
30
|
agentSuffix,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-optimizer.js","sourceRoot":"","sources":["../../src/runtime/cache-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH
|
|
1
|
+
{"version":3,"file":"cache-optimizer.js","sourceRoot":"","sources":["../../src/runtime/cache-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,oBAA4B,EAC5B,kBAA0B,EAC1B,eAAuB,EACvB,IAAY;IAEZ,wEAAwE;IACxE,MAAM,YAAY,GAAG,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1F,gEAAgE;IAChE,MAAM,WAAW,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5E,OAAO;QACL,YAAY;QACZ,WAAW;QACX,IAAI,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,kBAA0B,EAC1B,UAAkB,EAClB,oBAA4B;IAE5B,IAAI,kBAAkB,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,MAAM,YAAY,GAAG,kBAAkB,GAAG,UAAU,GAAG,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;IAC1F,8EAA8E;IAC9E,MAAM,SAAS,GACb,kBAAkB,GAAG,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACvD,kBAAkB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,oBAAoB,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IACrF,OAAO;QACL,YAAY;QACZ,SAAS;QACT,OAAO,EAAE,YAAY,GAAG,SAAS;QACjC,cAAc,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACtF,CAAC;AACJ,CAAC"}
|
|
@@ -20,9 +20,14 @@ export interface CompactionResult {
|
|
|
20
20
|
}
|
|
21
21
|
export declare class CompactionManager {
|
|
22
22
|
private config;
|
|
23
|
+
/** Accumulated tokens saved by file-scope filtering across buildContextPrefix calls.
|
|
24
|
+
* Drained via {@link popContextFilteringSaved}. */
|
|
25
|
+
private _contextFilteringSaved;
|
|
23
26
|
constructor(config?: Partial<CompactionConfig>);
|
|
27
|
+
/** Read and reset the accumulated context filtering savings (tokens). */
|
|
28
|
+
popContextFilteringSaved(): number;
|
|
24
29
|
needsCompaction(tokens: number): boolean;
|
|
25
30
|
generateCompactionInstruction(): string;
|
|
26
|
-
buildContextPrefix(phaseOutputs: Map<string, string[]>, maxTokens?: number, complexity?: TaskComplexity): string;
|
|
31
|
+
buildContextPrefix(phaseOutputs: Map<string, string[]>, maxTokens?: number, complexity?: TaskComplexity, agentFileScope?: string[]): string;
|
|
27
32
|
}
|
|
28
33
|
//# sourceMappingURL=compaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/runtime/compaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/runtime/compaction.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,aAAa,CAS1E;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,WAAW,GAAG,OAAO,GAAG,gBAAgB,CAAC;CACpD;AAED,eAAO,MAAM,kBAAkB,EAAE,gBAMhC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IAEjC;wDACoD;IACpD,OAAO,CAAC,sBAAsB,CAAK;gBAEvB,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAI9C,yEAAyE;IACzE,wBAAwB,IAAI,MAAM;IAMlC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIxC,6BAA6B,IAAI,MAAM;IAIvC,kBAAkB,CAChB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACnC,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,cAAc,EAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,MAAM;CAgDV"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { estimateTokens } from '../utils/tokens.js';
|
|
2
|
+
import { basename } from 'path';
|
|
2
3
|
export function getContextBudget(complexity) {
|
|
3
4
|
switch (complexity) {
|
|
4
5
|
case 'simple':
|
|
@@ -18,20 +19,56 @@ export const DEFAULT_COMPACTION = {
|
|
|
18
19
|
};
|
|
19
20
|
export class CompactionManager {
|
|
20
21
|
config;
|
|
22
|
+
/** Accumulated tokens saved by file-scope filtering across buildContextPrefix calls.
|
|
23
|
+
* Drained via {@link popContextFilteringSaved}. */
|
|
24
|
+
_contextFilteringSaved = 0;
|
|
21
25
|
constructor(config) {
|
|
22
26
|
this.config = { ...DEFAULT_COMPACTION, ...config };
|
|
23
27
|
}
|
|
28
|
+
/** Read and reset the accumulated context filtering savings (tokens). */
|
|
29
|
+
popContextFilteringSaved() {
|
|
30
|
+
const saved = this._contextFilteringSaved;
|
|
31
|
+
this._contextFilteringSaved = 0;
|
|
32
|
+
return saved;
|
|
33
|
+
}
|
|
24
34
|
needsCompaction(tokens) {
|
|
25
35
|
return this.config.enabled && tokens >= this.config.maxContextTokens;
|
|
26
36
|
}
|
|
27
37
|
generateCompactionInstruction() {
|
|
28
38
|
return `## Context Management\nYour context limit is ~${this.config.maxContextTokens} tokens. Summarize earlier findings when conversation gets long.`;
|
|
29
39
|
}
|
|
30
|
-
buildContextPrefix(phaseOutputs, maxTokens, complexity) {
|
|
40
|
+
buildContextPrefix(phaseOutputs, maxTokens, complexity, agentFileScope) {
|
|
31
41
|
const max = maxTokens ?? (complexity ? getContextBudget(complexity).target : this.config.targetTokens);
|
|
32
42
|
const sections = [];
|
|
43
|
+
let unfilteredTokens = 0;
|
|
44
|
+
let filteredTokens = 0;
|
|
33
45
|
for (const [phase, outputs] of phaseOutputs) {
|
|
34
|
-
|
|
46
|
+
if (agentFileScope && agentFileScope.length > 0) {
|
|
47
|
+
const allOutputText = outputs.join('\n\n');
|
|
48
|
+
unfilteredTokens += estimateTokens(allOutputText);
|
|
49
|
+
// Relevance filter: only include outputs that mention at least one file in scope
|
|
50
|
+
const relevant = outputs.filter((output) => agentFileScope.some((file) => output.includes(file) || output.includes(basename(file))));
|
|
51
|
+
if (relevant.length > 0) {
|
|
52
|
+
const relevantText = relevant.join('\n\n');
|
|
53
|
+
filteredTokens += estimateTokens(relevantText);
|
|
54
|
+
sections.push(`## Context from ${phase}:\n${relevantText}`);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// No file overlap — include a brief summary instead of full content
|
|
58
|
+
const summaryLines = outputs.map((o) => o.split('\n').slice(0, 3).join('\n'));
|
|
59
|
+
const summaryText = summaryLines.join('\n\n');
|
|
60
|
+
filteredTokens += estimateTokens(summaryText);
|
|
61
|
+
sections.push(`## Context from ${phase} (summary — no file overlap):\n${summaryText}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// No file scope info — include everything (backward compatible)
|
|
66
|
+
sections.push(`## Context from ${phase}:\n${outputs.join('\n\n')}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Track filtering savings
|
|
70
|
+
if (agentFileScope && agentFileScope.length > 0 && unfilteredTokens > filteredTokens) {
|
|
71
|
+
this._contextFilteringSaved += unfilteredTokens - filteredTokens;
|
|
35
72
|
}
|
|
36
73
|
let combined = sections.join('\n\n');
|
|
37
74
|
if (estimateTokens(combined) > max) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/runtime/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/runtime/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAShC,MAAM,UAAU,gBAAgB,CAAC,UAA0B;IACzD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACzC,KAAK,SAAS;YACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAUD,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD,OAAO,EAAE,IAAI;IACb,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,MAAM;IACpB,mBAAmB,EAAE,EAAE;IACvB,QAAQ,EAAE,WAAW;CACtB,CAAC;AASF,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAmB;IAEjC;wDACoD;IAC5C,sBAAsB,GAAG,CAAC,CAAC;IAEnC,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAAC;IACrD,CAAC;IAED,yEAAyE;IACzE,wBAAwB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC1C,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACvE,CAAC;IAED,6BAA6B;QAC3B,OAAO,iDAAiD,IAAI,CAAC,MAAM,CAAC,gBAAgB,kEAAkE,CAAC;IACzJ,CAAC;IAED,kBAAkB,CAChB,YAAmC,EACnC,SAAkB,EAClB,UAA2B,EAC3B,cAAyB;QAEzB,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvG,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;YAC5C,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3C,gBAAgB,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;gBAElD,iFAAiF;gBACjF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CACzC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CACxF,CAAC;gBACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3C,cAAc,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;oBAC/C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,KAAK,MAAM,YAAY,EAAE,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC9E,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9C,cAAc,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;oBAC9C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,KAAK,kCAAkC,WAAW,EAAE,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,KAAK,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,GAAG,cAAc,EAAE,CAAC;YACrF,IAAI,CAAC,sBAAsB,IAAI,gBAAgB,GAAG,cAAc,CAAC;QACnE,CAAC;QAED,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC;YAC5B,IAAI,QAAQ,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBAClC,QAAQ,GAAG,qCAAqC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;YAClG,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-model.d.ts","sourceRoot":"","sources":["../../src/runtime/cost-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"cost-model.d.ts","sourceRoot":"","sources":["../../src/runtime/cost-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAuCD,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAwB;gBAEzB,KAAK,CAAC,EAAE,cAAc;IAIlC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ;IAyCvC,kEAAkE;IAClE,KAAK,CACH,IAAI,EAAE,aAAa,EACnB,WAAW,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GACjF,MAAM;IAmBT,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,qBAAqB;CAa9B"}
|
|
@@ -11,24 +11,27 @@ const TIER_QUALITY = {
|
|
|
11
11
|
mid: 0.85,
|
|
12
12
|
cheap: 0.65,
|
|
13
13
|
};
|
|
14
|
-
// Default token estimates when no stats available (per agent type)
|
|
14
|
+
// Default token estimates when no stats available (per agent type).
|
|
15
|
+
// Calibrated from real orchestration data (April 2026 audit of multi-agent sessions).
|
|
16
|
+
// These are CONSERVATIVE (high-side) estimates — prefer overestimate to surprise.
|
|
17
|
+
// Historical stats from StatsCollector override these when sampleCount >= 3.
|
|
15
18
|
const DEFAULT_TOKENS = {
|
|
16
|
-
researcher:
|
|
17
|
-
implementer:
|
|
18
|
-
reviewer:
|
|
19
|
-
tester:
|
|
20
|
-
debugger:
|
|
21
|
-
planner:
|
|
22
|
-
judge:
|
|
23
|
-
refactorer:
|
|
24
|
-
integrator:
|
|
25
|
-
'devils-advocate':
|
|
26
|
-
grounding:
|
|
27
|
-
sentinel:
|
|
28
|
-
guardian:
|
|
29
|
-
librarian:
|
|
30
|
-
documenter:
|
|
31
|
-
orchestrator:
|
|
19
|
+
researcher: 40000,
|
|
20
|
+
implementer: 100000,
|
|
21
|
+
reviewer: 60000,
|
|
22
|
+
tester: 60000,
|
|
23
|
+
debugger: 80000,
|
|
24
|
+
planner: 40000,
|
|
25
|
+
judge: 30000,
|
|
26
|
+
refactorer: 80000,
|
|
27
|
+
integrator: 60000,
|
|
28
|
+
'devils-advocate': 40000,
|
|
29
|
+
grounding: 30000,
|
|
30
|
+
sentinel: 15000,
|
|
31
|
+
guardian: 20000,
|
|
32
|
+
librarian: 15000,
|
|
33
|
+
documenter: 40000,
|
|
34
|
+
orchestrator: 50000,
|
|
32
35
|
};
|
|
33
36
|
export class CostModel {
|
|
34
37
|
stats;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-model.js","sourceRoot":"","sources":["../../src/runtime/cost-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAU5C,0DAA0D;AAC1D,MAAM,YAAY,GAAsD;IACtE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACjC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACrC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,YAAY,GAA2B;IAC3C,SAAS,EAAE,GAAG;IACd,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"cost-model.js","sourceRoot":"","sources":["../../src/runtime/cost-model.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/engine.d.ts
CHANGED
|
@@ -117,6 +117,7 @@ export declare class SwarmEngine {
|
|
|
117
117
|
model?: string;
|
|
118
118
|
costBudget?: number;
|
|
119
119
|
params?: Record<string, unknown>;
|
|
120
|
+
promptDiet?: import('../core/types.js').PromptDietConfig;
|
|
120
121
|
}): Promise<OrchestrationInstance>;
|
|
121
122
|
/**
|
|
122
123
|
* Generate a serializable execution plan WITHOUT executing anything.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/runtime/engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/runtime/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/engine.js
CHANGED
|
@@ -104,7 +104,7 @@ export class SwarmEngine {
|
|
|
104
104
|
_orchestrationEmbedder;
|
|
105
105
|
swarmMcpServer = null;
|
|
106
106
|
decisions = new Map();
|
|
107
|
-
benefitsCollector
|
|
107
|
+
benefitsCollector;
|
|
108
108
|
get reviewFeedback() {
|
|
109
109
|
if (this._reviewFeedback === undefined) {
|
|
110
110
|
this._reviewFeedback = this.executionGraph
|
|
@@ -221,6 +221,10 @@ export class SwarmEngine {
|
|
|
221
221
|
this.options = options;
|
|
222
222
|
this.registry = options.registry;
|
|
223
223
|
this.bus = options.bus;
|
|
224
|
+
this.benefitsCollector = new BenefitsCollector(this.bus);
|
|
225
|
+
// Wire cold-wake events from AgentRunner into the benefits counter so the
|
|
226
|
+
// Cold wakes row in the summary table reflects what actually happened.
|
|
227
|
+
this.bus.on('cache:cold-wake', () => this.benefitsCollector.recordColdWake());
|
|
224
228
|
this.executor = new AgentExecutor({
|
|
225
229
|
bus: this.bus,
|
|
226
230
|
logger: options.logger,
|
|
@@ -702,11 +706,15 @@ export class SwarmEngine {
|
|
|
702
706
|
}
|
|
703
707
|
}
|
|
704
708
|
const durationMs = orchestration.completedAt.getTime() - (orchestration.startedAt?.getTime() ?? 0);
|
|
709
|
+
const allAgents = orchestration.phases.flatMap((p) => p.agents);
|
|
710
|
+
const agentsExecuted = allAgents.length;
|
|
711
|
+
const totalAgentTurns = allAgents.reduce((sum, a) => sum + (a.usage?.turns || 1), 0);
|
|
705
712
|
const benefitsSummary = this.benefitsCollector.build({
|
|
706
713
|
actualTotalTokens: orchestration.usage.totalTokens,
|
|
707
714
|
actualCostUsd: orchestration.usage.costUsd,
|
|
708
715
|
durationMs,
|
|
709
|
-
agentsExecuted
|
|
716
|
+
agentsExecuted,
|
|
717
|
+
totalAgentTurns,
|
|
710
718
|
phasesExecuted: orchestration.phases.filter((p) => p.status === 'completed').length,
|
|
711
719
|
historicalAvgCostUsd: patternStats?.avgCostUsd ?? null,
|
|
712
720
|
patternRunsRecorded: patternStats?.totalRuns ?? 0,
|
|
@@ -754,6 +762,7 @@ export class SwarmEngine {
|
|
|
754
762
|
})),
|
|
755
763
|
})),
|
|
756
764
|
costBudget: options?.costBudget,
|
|
765
|
+
promptDiet: options?.promptDiet,
|
|
757
766
|
};
|
|
758
767
|
// Substitute pattern parameters into agent prompts
|
|
759
768
|
if (options?.params && pattern.parameters) {
|
|
@@ -1016,6 +1025,40 @@ export class SwarmEngine {
|
|
|
1016
1025
|
filteredOutputs = testFiltered;
|
|
1017
1026
|
}
|
|
1018
1027
|
}
|
|
1028
|
+
if (phase.config.kind === 'implement') {
|
|
1029
|
+
// Implementers need research/plan/design outputs, not other implement phases (noise)
|
|
1030
|
+
const implFiltered = new Map();
|
|
1031
|
+
for (const [phaseName, outputs] of this.phaseOutputs) {
|
|
1032
|
+
if (phaseName.includes('research') || phaseName.includes('plan') || phaseName.includes('design')) {
|
|
1033
|
+
implFiltered.set(phaseName, outputs);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
if (implFiltered.size > 0) {
|
|
1037
|
+
const filteredTokens = [...implFiltered.values()].flat().reduce((s, o) => s + estimateTokens(o), 0);
|
|
1038
|
+
const totalTokens = [...this.phaseOutputs.values()].flat().reduce((s, o) => s + estimateTokens(o), 0);
|
|
1039
|
+
this.benefitsCollector.addSmartRoutingSaved(Math.max(0, totalTokens - filteredTokens));
|
|
1040
|
+
filteredOutputs = implFiltered;
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
// Default recency cap: for unhandled phase kinds with >3 phases of history,
|
|
1044
|
+
// keep only the most recent 3 (immediately-preceding phase always included)
|
|
1045
|
+
if (!['review', 'test', 'implement'].includes(phase.config.kind ?? '')) {
|
|
1046
|
+
const phaseNames = [...filteredOutputs.keys()];
|
|
1047
|
+
if (phaseNames.length > 3) {
|
|
1048
|
+
const recencyCapped = new Map();
|
|
1049
|
+
const recent3 = phaseNames.slice(-3);
|
|
1050
|
+
// preceding phase is always in slice(-3) — no separate guard needed
|
|
1051
|
+
for (const name of recent3) {
|
|
1052
|
+
const outputs = filteredOutputs.get(name);
|
|
1053
|
+
if (outputs)
|
|
1054
|
+
recencyCapped.set(name, outputs);
|
|
1055
|
+
}
|
|
1056
|
+
const filteredTokens = [...recencyCapped.values()].flat().reduce((s, o) => s + estimateTokens(o), 0);
|
|
1057
|
+
const totalTokens = [...filteredOutputs.values()].flat().reduce((s, o) => s + estimateTokens(o), 0);
|
|
1058
|
+
this.benefitsCollector.addSmartRoutingSaved(Math.max(0, totalTokens - filteredTokens));
|
|
1059
|
+
filteredOutputs = recencyCapped;
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1019
1062
|
const runContext = {
|
|
1020
1063
|
phaseOutputs: filteredOutputs,
|
|
1021
1064
|
livingSpec: this.livingSpec,
|
|
@@ -1096,6 +1139,23 @@ export class SwarmEngine {
|
|
|
1096
1139
|
}
|
|
1097
1140
|
phase.completedAt = new Date();
|
|
1098
1141
|
phase.usage = phase.agents.reduce((total, agent) => mergeUsageStats(total, agent.usage), emptyUsageStats());
|
|
1142
|
+
// Drain per-agent file-scope filtering savings accumulated during this phase
|
|
1143
|
+
const contextFilteringSaved = this.compaction.popContextFilteringSaved();
|
|
1144
|
+
if (contextFilteringSaved > 0) {
|
|
1145
|
+
this.benefitsCollector.addContextFilteringSaved(contextFilteringSaved);
|
|
1146
|
+
}
|
|
1147
|
+
// Credit real cache savings from API-reported cache_read tokens (supersedes caller estimates).
|
|
1148
|
+
// Also drives per-agentType cache-cliff detection — must call even when cacheRead is 0,
|
|
1149
|
+
// because that's exactly the cliff signal we want to capture. The "agentType" is the
|
|
1150
|
+
// registry name (e.g., "researcher") taken from the matching AgentAssignment, since
|
|
1151
|
+
// AgentInstance only carries the per-instance display name.
|
|
1152
|
+
const assignmentByName = new Map(phase.config.agents.map((a) => [a.name, a.type]));
|
|
1153
|
+
for (const agent of phase.agents) {
|
|
1154
|
+
if (agent.usage) {
|
|
1155
|
+
const agentType = assignmentByName.get(agent.config.name);
|
|
1156
|
+
this.benefitsCollector.recordApiUsage(agent.usage, agentType);
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1099
1159
|
// Record review feedback into the knowledge graph (Feature 7)
|
|
1100
1160
|
if (phase.config.kind === 'review' && this.reviewFeedback) {
|
|
1101
1161
|
for (const agent of phase.agents) {
|