network-ai 4.15.3 → 5.0.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/INTEGRATION_GUIDE.md +11 -4
- package/QUICKSTART.md +31 -4
- package/README.md +37 -15
- package/bin/dashboard.ts +146 -0
- package/bin/mcp-server.ts +3 -2
- package/dist/adapters/adapter-registry.d.ts +33 -1
- package/dist/adapters/adapter-registry.d.ts.map +1 -1
- package/dist/adapters/adapter-registry.js +49 -0
- package/dist/adapters/adapter-registry.js.map +1 -1
- package/dist/adapters/anthropic-computer-use-adapter.d.ts +132 -0
- package/dist/adapters/anthropic-computer-use-adapter.d.ts.map +1 -0
- package/dist/adapters/anthropic-computer-use-adapter.js +180 -0
- package/dist/adapters/anthropic-computer-use-adapter.js.map +1 -0
- package/dist/adapters/browser-agent-adapter.d.ts +121 -0
- package/dist/adapters/browser-agent-adapter.d.ts.map +1 -0
- package/dist/adapters/browser-agent-adapter.js +219 -0
- package/dist/adapters/browser-agent-adapter.js.map +1 -0
- package/dist/adapters/copilot-adapter.d.ts +59 -0
- package/dist/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/adapters/copilot-adapter.js +132 -0
- package/dist/adapters/copilot-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +15 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +22 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/langgraph-adapter.d.ts +70 -0
- package/dist/adapters/langgraph-adapter.d.ts.map +1 -0
- package/dist/adapters/langgraph-adapter.js +119 -0
- package/dist/adapters/langgraph-adapter.js.map +1 -0
- package/dist/adapters/openai-agents-adapter.d.ts +100 -0
- package/dist/adapters/openai-agents-adapter.d.ts.map +1 -0
- package/dist/adapters/openai-agents-adapter.js +118 -0
- package/dist/adapters/openai-agents-adapter.js.map +1 -0
- package/dist/adapters/pydantic-ai-adapter.d.ts +104 -0
- package/dist/adapters/pydantic-ai-adapter.d.ts.map +1 -0
- package/dist/adapters/pydantic-ai-adapter.js +163 -0
- package/dist/adapters/pydantic-ai-adapter.js.map +1 -0
- package/dist/adapters/vertex-ai-adapter.d.ts +122 -0
- package/dist/adapters/vertex-ai-adapter.d.ts.map +1 -0
- package/dist/adapters/vertex-ai-adapter.js +166 -0
- package/dist/adapters/vertex-ai-adapter.js.map +1 -0
- package/dist/bin/dashboard.d.ts +11 -0
- package/dist/bin/dashboard.d.ts.map +1 -0
- package/dist/bin/dashboard.js +135 -0
- package/dist/bin/dashboard.js.map +1 -0
- package/dist/bin/mcp-server.js +3 -2
- package/dist/bin/mcp-server.js.map +1 -1
- package/dist/index.d.ts +103 -559
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +295 -1074
- package/dist/index.js.map +1 -1
- package/dist/lib/adapter-test-harness.d.ts +88 -0
- package/dist/lib/adapter-test-harness.d.ts.map +1 -0
- package/dist/lib/adapter-test-harness.js +118 -0
- package/dist/lib/adapter-test-harness.js.map +1 -0
- package/dist/lib/agent-conversation.d.ts +115 -0
- package/dist/lib/agent-conversation.d.ts.map +1 -0
- package/dist/lib/agent-conversation.js +155 -0
- package/dist/lib/agent-conversation.js.map +1 -0
- package/dist/lib/agent-debate.d.ts +115 -0
- package/dist/lib/agent-debate.d.ts.map +1 -0
- package/dist/lib/agent-debate.js +146 -0
- package/dist/lib/agent-debate.js.map +1 -0
- package/dist/lib/agent-memory.d.ts +157 -0
- package/dist/lib/agent-memory.d.ts.map +1 -0
- package/dist/lib/agent-memory.js +336 -0
- package/dist/lib/agent-memory.js.map +1 -0
- package/dist/lib/agent-vcr.d.ts +133 -0
- package/dist/lib/agent-vcr.d.ts.map +1 -0
- package/dist/lib/agent-vcr.js +218 -0
- package/dist/lib/agent-vcr.js.map +1 -0
- package/dist/lib/anomaly-detector.d.ts +112 -0
- package/dist/lib/anomaly-detector.d.ts.map +1 -0
- package/dist/lib/anomaly-detector.js +178 -0
- package/dist/lib/anomaly-detector.js.map +1 -0
- package/dist/lib/approval-inbox.d.ts +147 -0
- package/dist/lib/approval-inbox.d.ts.map +1 -0
- package/dist/lib/approval-inbox.js +385 -0
- package/dist/lib/approval-inbox.js.map +1 -0
- package/dist/lib/auth-guardian.d.ts +170 -0
- package/dist/lib/auth-guardian.d.ts.map +1 -0
- package/dist/lib/auth-guardian.js +604 -0
- package/dist/lib/auth-guardian.js.map +1 -0
- package/dist/lib/auth-validator.d.ts +70 -0
- package/dist/lib/auth-validator.d.ts.map +1 -0
- package/dist/lib/auth-validator.js +32 -0
- package/dist/lib/auth-validator.js.map +1 -0
- package/dist/lib/blackboard-validator.d.ts +56 -0
- package/dist/lib/blackboard-validator.d.ts.map +1 -1
- package/dist/lib/blackboard-validator.js +181 -4
- package/dist/lib/blackboard-validator.js.map +1 -1
- package/dist/lib/comparison-runner.d.ts +99 -0
- package/dist/lib/comparison-runner.d.ts.map +1 -0
- package/dist/lib/comparison-runner.js +138 -0
- package/dist/lib/comparison-runner.js.map +1 -0
- package/dist/lib/config-watcher.d.ts +109 -0
- package/dist/lib/config-watcher.d.ts.map +1 -0
- package/dist/lib/config-watcher.js +215 -0
- package/dist/lib/config-watcher.js.map +1 -0
- package/dist/lib/cost-governor.d.ts +105 -0
- package/dist/lib/cost-governor.d.ts.map +1 -0
- package/dist/lib/cost-governor.js +128 -0
- package/dist/lib/cost-governor.js.map +1 -0
- package/dist/lib/cost-heatmap.d.ts +104 -0
- package/dist/lib/cost-heatmap.d.ts.map +1 -0
- package/dist/lib/cost-heatmap.js +161 -0
- package/dist/lib/cost-heatmap.js.map +1 -0
- package/dist/lib/coverage-reporter.d.ts +92 -0
- package/dist/lib/coverage-reporter.d.ts.map +1 -0
- package/dist/lib/coverage-reporter.js +177 -0
- package/dist/lib/coverage-reporter.js.map +1 -0
- package/dist/lib/dashboard-server.d.ts +71 -0
- package/dist/lib/dashboard-server.d.ts.map +1 -0
- package/dist/lib/dashboard-server.js +403 -0
- package/dist/lib/dashboard-server.js.map +1 -0
- package/dist/lib/dry-run.d.ts +73 -0
- package/dist/lib/dry-run.d.ts.map +1 -0
- package/dist/lib/dry-run.js +130 -0
- package/dist/lib/dry-run.js.map +1 -0
- package/dist/lib/errors.d.ts +15 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +38 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/event-bus.d.ts +167 -0
- package/dist/lib/event-bus.d.ts.map +1 -0
- package/dist/lib/event-bus.js +229 -0
- package/dist/lib/event-bus.js.map +1 -0
- package/dist/lib/explainability.d.ts +85 -0
- package/dist/lib/explainability.d.ts.map +1 -0
- package/dist/lib/explainability.js +102 -0
- package/dist/lib/explainability.js.map +1 -0
- package/dist/lib/goal-dsl.d.ts +157 -0
- package/dist/lib/goal-dsl.d.ts.map +1 -0
- package/dist/lib/goal-dsl.js +392 -0
- package/dist/lib/goal-dsl.js.map +1 -0
- package/dist/lib/job-queue.d.ts +183 -0
- package/dist/lib/job-queue.d.ts.map +1 -0
- package/dist/lib/job-queue.js +310 -0
- package/dist/lib/job-queue.js.map +1 -0
- package/dist/lib/learning-loop.d.ts +113 -0
- package/dist/lib/learning-loop.d.ts.map +1 -0
- package/dist/lib/learning-loop.js +181 -0
- package/dist/lib/learning-loop.js.map +1 -0
- package/dist/lib/lifecycle-hooks.d.ts +116 -0
- package/dist/lib/lifecycle-hooks.d.ts.map +1 -0
- package/dist/lib/lifecycle-hooks.js +148 -0
- package/dist/lib/lifecycle-hooks.js.map +1 -0
- package/dist/lib/locked-blackboard.d.ts.map +1 -1
- package/dist/lib/locked-blackboard.js +9 -5
- package/dist/lib/locked-blackboard.js.map +1 -1
- package/dist/lib/mcp-tool-consumer.d.ts +153 -0
- package/dist/lib/mcp-tool-consumer.d.ts.map +1 -0
- package/dist/lib/mcp-tool-consumer.js +320 -0
- package/dist/lib/mcp-tool-consumer.js.map +1 -0
- package/dist/lib/metrics.d.ts +119 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +284 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/orchestrator-types.d.ts +309 -0
- package/dist/lib/orchestrator-types.d.ts.map +1 -0
- package/dist/lib/orchestrator-types.js +61 -0
- package/dist/lib/orchestrator-types.js.map +1 -0
- package/dist/lib/otel-bridge.d.ts +74 -0
- package/dist/lib/otel-bridge.d.ts.map +1 -0
- package/dist/lib/otel-bridge.js +167 -0
- package/dist/lib/otel-bridge.js.map +1 -0
- package/dist/lib/playground.d.ts +76 -0
- package/dist/lib/playground.d.ts.map +1 -0
- package/dist/lib/playground.js +224 -0
- package/dist/lib/playground.js.map +1 -0
- package/dist/lib/quadtree.d.ts +114 -0
- package/dist/lib/quadtree.d.ts.map +1 -0
- package/dist/lib/quadtree.js +259 -0
- package/dist/lib/quadtree.js.map +1 -0
- package/dist/lib/shared-blackboard.d.ts +101 -0
- package/dist/lib/shared-blackboard.d.ts.map +1 -0
- package/dist/lib/shared-blackboard.js +249 -0
- package/dist/lib/shared-blackboard.js.map +1 -0
- package/dist/lib/speculative-executor.d.ts +89 -0
- package/dist/lib/speculative-executor.d.ts.map +1 -0
- package/dist/lib/speculative-executor.js +107 -0
- package/dist/lib/speculative-executor.js.map +1 -0
- package/dist/lib/swarm-transport.d.ts +150 -0
- package/dist/lib/swarm-transport.d.ts.map +1 -0
- package/dist/lib/swarm-transport.js +307 -0
- package/dist/lib/swarm-transport.js.map +1 -0
- package/dist/lib/task-decomposer.d.ts +41 -0
- package/dist/lib/task-decomposer.d.ts.map +1 -0
- package/dist/lib/task-decomposer.js +272 -0
- package/dist/lib/task-decomposer.js.map +1 -0
- package/dist/lib/timeline-scrubber.d.ts +84 -0
- package/dist/lib/timeline-scrubber.d.ts.map +1 -0
- package/dist/lib/timeline-scrubber.js +173 -0
- package/dist/lib/timeline-scrubber.js.map +1 -0
- package/dist/lib/topology.d.ts +361 -0
- package/dist/lib/topology.d.ts.map +1 -0
- package/dist/lib/topology.js +591 -0
- package/dist/lib/topology.js.map +1 -0
- package/dist/security.d.ts +95 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +266 -4
- package/dist/security.js.map +1 -1
- package/package.json +7 -5
- package/types/agent-adapter.d.ts +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-server.js","sourceRoot":"","sources":["../../lib/dashboard-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DryRunSimulator — Simulate a task DAG execution with zero side effects.
|
|
3
|
+
*
|
|
4
|
+
* Walks a TaskDAG using topological layers, produces per-node estimated
|
|
5
|
+
* costs, permission requirements, and a synthetic TeamResult — without
|
|
6
|
+
* touching adapters, the blackboard, or spending any budget.
|
|
7
|
+
*
|
|
8
|
+
* @module DryRunSimulator
|
|
9
|
+
*/
|
|
10
|
+
import type { DAGCostPrediction, CostModel, CostDAGNode } from './cost-governor';
|
|
11
|
+
/** Per-node simulation result */
|
|
12
|
+
export interface SimulatedNode {
|
|
13
|
+
taskId: string;
|
|
14
|
+
agent: string;
|
|
15
|
+
action: string;
|
|
16
|
+
estimatedTokens: number;
|
|
17
|
+
confidence: number;
|
|
18
|
+
dependencies: string[];
|
|
19
|
+
layer: number;
|
|
20
|
+
}
|
|
21
|
+
/** Full dry-run report */
|
|
22
|
+
export interface DryRunReport {
|
|
23
|
+
/** Whether the plan could execute within budget constraints */
|
|
24
|
+
feasible: boolean;
|
|
25
|
+
/** Human-readable summary */
|
|
26
|
+
summary: string;
|
|
27
|
+
/** Per-node simulation */
|
|
28
|
+
nodes: SimulatedNode[];
|
|
29
|
+
/** Topological layers — tasks within a layer run in parallel */
|
|
30
|
+
layers: string[][];
|
|
31
|
+
/** Cost prediction from CostGovernor */
|
|
32
|
+
costPrediction: DAGCostPrediction;
|
|
33
|
+
/** Total estimated wall-clock layers (sequential depth) */
|
|
34
|
+
parallelDepth: number;
|
|
35
|
+
/** Maximum parallel width (largest layer size) */
|
|
36
|
+
maxParallelWidth: number;
|
|
37
|
+
}
|
|
38
|
+
/** Minimal DAG node with dependencies for topological ordering */
|
|
39
|
+
export interface DryRunNode extends CostDAGNode {
|
|
40
|
+
dependencies: string[];
|
|
41
|
+
}
|
|
42
|
+
/** Minimal budget interface (same as CostBudget) */
|
|
43
|
+
export interface DryRunBudget {
|
|
44
|
+
remaining(): number;
|
|
45
|
+
getCeiling(): number;
|
|
46
|
+
getAgentSpent(agentId: string): number;
|
|
47
|
+
getPerAgentCeiling(): number | undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Simulate a DAG execution plan without side effects.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* const sim = new DryRunSimulator(budget);
|
|
55
|
+
* const report = sim.simulate(dag.nodes.map(n => ({
|
|
56
|
+
* id: n.id, agent: n.agent, action: n.action,
|
|
57
|
+
* params: n.params, dependencies: n.dependencies,
|
|
58
|
+
* })));
|
|
59
|
+
* console.log(report.summary);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare class DryRunSimulator {
|
|
63
|
+
private governor;
|
|
64
|
+
constructor(budget: DryRunBudget, model?: CostModel);
|
|
65
|
+
/** Replace the underlying cost model */
|
|
66
|
+
setCostModel(model: CostModel): void;
|
|
67
|
+
/**
|
|
68
|
+
* Simulate execution of a DAG. Returns a full report with cost predictions,
|
|
69
|
+
* layer structure, and feasibility assessment.
|
|
70
|
+
*/
|
|
71
|
+
simulate(nodes: DryRunNode[]): DryRunReport;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=dry-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../lib/dry-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOjF,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,0BAA0B;AAC1B,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,wCAAwC;IACxC,cAAc,EAAE,iBAAiB,CAAC;IAClC,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,kEAAkE;AAClE,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,SAAS,IAAI,MAAM,CAAC;IACpB,UAAU,IAAI,MAAM,CAAC;IACrB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAAC;CAC1C;AAgDD;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAe;gBAEnB,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,SAAS;IAInD,wCAAwC;IACxC,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,YAAY;CAmD5C"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DryRunSimulator — Simulate a task DAG execution with zero side effects.
|
|
4
|
+
*
|
|
5
|
+
* Walks a TaskDAG using topological layers, produces per-node estimated
|
|
6
|
+
* costs, permission requirements, and a synthetic TeamResult — without
|
|
7
|
+
* touching adapters, the blackboard, or spending any budget.
|
|
8
|
+
*
|
|
9
|
+
* @module DryRunSimulator
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DryRunSimulator = void 0;
|
|
13
|
+
const cost_governor_1 = require("./cost-governor");
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// TOPOLOGICAL LAYER COMPUTATION
|
|
16
|
+
// ============================================================================
|
|
17
|
+
function computeLayers(nodes) {
|
|
18
|
+
const nodeMap = new Map();
|
|
19
|
+
const inDegree = new Map();
|
|
20
|
+
const downstream = new Map();
|
|
21
|
+
for (const n of nodes) {
|
|
22
|
+
nodeMap.set(n.id, n);
|
|
23
|
+
inDegree.set(n.id, 0);
|
|
24
|
+
downstream.set(n.id, []);
|
|
25
|
+
}
|
|
26
|
+
for (const n of nodes) {
|
|
27
|
+
for (const dep of n.dependencies) {
|
|
28
|
+
if (downstream.has(dep)) {
|
|
29
|
+
downstream.get(dep).push(n.id);
|
|
30
|
+
}
|
|
31
|
+
inDegree.set(n.id, (inDegree.get(n.id) ?? 0) + 1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const layers = [];
|
|
35
|
+
let queue = nodes.filter(n => (inDegree.get(n.id) ?? 0) === 0).map(n => n.id);
|
|
36
|
+
while (queue.length > 0) {
|
|
37
|
+
layers.push([...queue]);
|
|
38
|
+
const next = [];
|
|
39
|
+
for (const id of queue) {
|
|
40
|
+
for (const child of (downstream.get(id) ?? [])) {
|
|
41
|
+
const newDeg = (inDegree.get(child) ?? 1) - 1;
|
|
42
|
+
inDegree.set(child, newDeg);
|
|
43
|
+
if (newDeg === 0)
|
|
44
|
+
next.push(child);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
queue = next;
|
|
48
|
+
}
|
|
49
|
+
return layers;
|
|
50
|
+
}
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// DRY-RUN SIMULATOR
|
|
53
|
+
// ============================================================================
|
|
54
|
+
/**
|
|
55
|
+
* Simulate a DAG execution plan without side effects.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const sim = new DryRunSimulator(budget);
|
|
60
|
+
* const report = sim.simulate(dag.nodes.map(n => ({
|
|
61
|
+
* id: n.id, agent: n.agent, action: n.action,
|
|
62
|
+
* params: n.params, dependencies: n.dependencies,
|
|
63
|
+
* })));
|
|
64
|
+
* console.log(report.summary);
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
class DryRunSimulator {
|
|
68
|
+
governor;
|
|
69
|
+
constructor(budget, model) {
|
|
70
|
+
this.governor = new cost_governor_1.CostGovernor(budget, model ?? new cost_governor_1.LookupCostModel());
|
|
71
|
+
}
|
|
72
|
+
/** Replace the underlying cost model */
|
|
73
|
+
setCostModel(model) {
|
|
74
|
+
this.governor.setCostModel(model);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Simulate execution of a DAG. Returns a full report with cost predictions,
|
|
78
|
+
* layer structure, and feasibility assessment.
|
|
79
|
+
*/
|
|
80
|
+
simulate(nodes) {
|
|
81
|
+
const layers = computeLayers(nodes);
|
|
82
|
+
const costPrediction = this.governor.predict(nodes);
|
|
83
|
+
const nodeMap = new Map();
|
|
84
|
+
for (const n of nodes)
|
|
85
|
+
nodeMap.set(n.id, n);
|
|
86
|
+
// Assign layer number to each node
|
|
87
|
+
const layerOf = new Map();
|
|
88
|
+
for (let i = 0; i < layers.length; i++) {
|
|
89
|
+
for (const id of layers[i])
|
|
90
|
+
layerOf.set(id, i);
|
|
91
|
+
}
|
|
92
|
+
const simNodes = costPrediction.nodes.map(est => {
|
|
93
|
+
const orig = nodeMap.get(est.taskId);
|
|
94
|
+
return {
|
|
95
|
+
taskId: est.taskId,
|
|
96
|
+
agent: est.agent,
|
|
97
|
+
action: est.action,
|
|
98
|
+
estimatedTokens: est.estimatedTokens,
|
|
99
|
+
confidence: est.confidence,
|
|
100
|
+
dependencies: orig?.dependencies ?? [],
|
|
101
|
+
layer: layerOf.get(est.taskId) ?? 0,
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
const maxParallelWidth = layers.reduce((m, l) => Math.max(m, l.length), 0);
|
|
105
|
+
const feasible = costPrediction.withinBudget;
|
|
106
|
+
const overBudget = costPrediction.overBudgetAgents;
|
|
107
|
+
let summary = `Plan: ${nodes.length} task(s) in ${layers.length} layer(s), max parallelism ${maxParallelWidth}. `;
|
|
108
|
+
summary += `Estimated tokens: ${costPrediction.totalTokens} / ${costPrediction.budgetCeiling} budget. `;
|
|
109
|
+
if (feasible) {
|
|
110
|
+
summary += `Budget OK — ${costPrediction.budgetRemaining} tokens remaining after execution.`;
|
|
111
|
+
}
|
|
112
|
+
else if (overBudget.length > 0) {
|
|
113
|
+
summary += `OVER BUDGET — agents exceeding per-agent ceiling: ${overBudget.join(', ')}.`;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
summary += `OVER BUDGET — would exceed global ceiling by ${-costPrediction.budgetRemaining} tokens.`;
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
feasible,
|
|
120
|
+
summary,
|
|
121
|
+
nodes: simNodes,
|
|
122
|
+
layers,
|
|
123
|
+
costPrediction,
|
|
124
|
+
parallelDepth: layers.length,
|
|
125
|
+
maxParallelWidth,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.DryRunSimulator = DryRunSimulator;
|
|
130
|
+
//# sourceMappingURL=dry-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../lib/dry-run.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/errors.d.ts
CHANGED
|
@@ -94,4 +94,19 @@ export declare class ParallelLimitError extends NetworkAIError {
|
|
|
94
94
|
export declare class TimeoutError extends NetworkAIError {
|
|
95
95
|
constructor(timeoutMs: number);
|
|
96
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Convert any error to a standardised SkillResult with `success: false`.
|
|
99
|
+
*
|
|
100
|
+
* For {@link NetworkAIError} subclasses the machine-readable `code` and
|
|
101
|
+
* `details` are preserved. Unknown errors are wrapped as `INTERNAL_ERROR`.
|
|
102
|
+
*/
|
|
103
|
+
export declare function mapErrorToSkillResult(error: unknown): {
|
|
104
|
+
success: false;
|
|
105
|
+
error: {
|
|
106
|
+
code: string;
|
|
107
|
+
message: string;
|
|
108
|
+
recoverable: boolean;
|
|
109
|
+
trace?: Record<string, unknown>;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
97
112
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/lib/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQ7E;AAMD;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,cAAc;gBAC/C,OAAO,EAAE,MAAM;CAQ5B;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,cAAc;gBAC7C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAQzC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,MAAM,EAAE,MAAM;CAQ3B;AAMD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;gBAC1C,SAAS,EAAE,MAAM;CAQ9B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,cAAc;gBACnC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAQhF;AAMD;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,cAAc;gBACnD,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;gBAC1C,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,cAAc;gBAChD,WAAW,EAAE,MAAM;CAQhC;AAMD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;gBACxC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAQ/C;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,cAAc;gBAClC,SAAS,EAAE,MAAM;CAQ9B"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQ7E;AAMD;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,cAAc;gBAC/C,OAAO,EAAE,MAAM;CAQ5B;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,cAAc;gBAC7C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAQzC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,MAAM,EAAE,MAAM;CAQ3B;AAMD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;gBAC1C,SAAS,EAAE,MAAM;CAQ9B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,cAAc;gBACnC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAQhF;AAMD;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,cAAc;gBACnD,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;gBAC1C,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,cAAc;gBAChD,WAAW,EAAE,MAAM;CAQhC;AAMD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;gBACxC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAQ/C;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,cAAc;gBAClC,SAAS,EAAE,MAAM;CAQ9B;AAaD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,CAsBrH"}
|
package/dist/lib/errors.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.TimeoutError = exports.ParallelLimitError = exports.AdapterNotInitializedError = exports.AdapterNotFoundError = exports.AdapterAlreadyRegisteredError = exports.ConflictError = exports.LockAcquisitionError = exports.ValidationError = exports.NamespaceViolationError = exports.IdentityVerificationError = exports.NetworkAIError = void 0;
|
|
17
|
+
exports.mapErrorToSkillResult = mapErrorToSkillResult;
|
|
17
18
|
// ============================================================================
|
|
18
19
|
// BASE ERROR
|
|
19
20
|
// ============================================================================
|
|
@@ -160,4 +161,41 @@ class TimeoutError extends NetworkAIError {
|
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
exports.TimeoutError = TimeoutError;
|
|
164
|
+
// ============================================================================
|
|
165
|
+
// ERROR MAPPING UTILITY
|
|
166
|
+
// ============================================================================
|
|
167
|
+
/** Error codes that are considered recoverable (caller can retry). */
|
|
168
|
+
const RECOVERABLE_CODES = new Set([
|
|
169
|
+
'LOCK_ACQUISITION_FAILED',
|
|
170
|
+
'TIMEOUT',
|
|
171
|
+
'CONFLICT_DETECTED',
|
|
172
|
+
]);
|
|
173
|
+
/**
|
|
174
|
+
* Convert any error to a standardised SkillResult with `success: false`.
|
|
175
|
+
*
|
|
176
|
+
* For {@link NetworkAIError} subclasses the machine-readable `code` and
|
|
177
|
+
* `details` are preserved. Unknown errors are wrapped as `INTERNAL_ERROR`.
|
|
178
|
+
*/
|
|
179
|
+
function mapErrorToSkillResult(error) {
|
|
180
|
+
if (error instanceof NetworkAIError) {
|
|
181
|
+
return {
|
|
182
|
+
success: false,
|
|
183
|
+
error: {
|
|
184
|
+
code: error.code,
|
|
185
|
+
message: error.message,
|
|
186
|
+
recoverable: RECOVERABLE_CODES.has(error.code),
|
|
187
|
+
trace: error.details,
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
192
|
+
return {
|
|
193
|
+
success: false,
|
|
194
|
+
error: {
|
|
195
|
+
code: 'INTERNAL_ERROR',
|
|
196
|
+
message: msg,
|
|
197
|
+
recoverable: false,
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
163
201
|
//# sourceMappingURL=errors.js.map
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OrchestratorEventBus — Central event stream for replay & time-travel debugging.
|
|
3
|
+
*
|
|
4
|
+
* Collects events from all orchestrator subsystems (blackboard, auth, adapters,
|
|
5
|
+
* topology, decisions) into a single monotonically-sequenced stream with periodic
|
|
6
|
+
* state snapshots for efficient point-in-time reconstruction.
|
|
7
|
+
*
|
|
8
|
+
* @module EventBus
|
|
9
|
+
*/
|
|
10
|
+
import { EventEmitter } from 'events';
|
|
11
|
+
/** Sources that can publish events */
|
|
12
|
+
export type EventSource = 'blackboard' | 'auth' | 'adapter' | 'topology' | 'decision' | 'budget' | 'quality' | 'injection' | 'orchestrator' | 'runtime' | 'custom';
|
|
13
|
+
/** Severity / importance of the event */
|
|
14
|
+
export type EventSeverity = 'trace' | 'info' | 'warn' | 'error';
|
|
15
|
+
/** A single event in the unified stream */
|
|
16
|
+
export interface BusEvent {
|
|
17
|
+
/** Monotonic sequence number (global across all sources) */
|
|
18
|
+
seq: number;
|
|
19
|
+
/** ISO 8601 timestamp */
|
|
20
|
+
timestamp: string;
|
|
21
|
+
/** Which subsystem produced this event */
|
|
22
|
+
source: EventSource;
|
|
23
|
+
/** Event type within the source (e.g. 'write', 'commit', 'permission_check') */
|
|
24
|
+
type: string;
|
|
25
|
+
/** Severity level */
|
|
26
|
+
severity: EventSeverity;
|
|
27
|
+
/** Agent involved, if any */
|
|
28
|
+
agentId?: string;
|
|
29
|
+
/** Correlation id to group related events across subsystems */
|
|
30
|
+
correlationId?: string;
|
|
31
|
+
/** Event-specific payload */
|
|
32
|
+
data: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
/** A point-in-time snapshot of orchestrator state for efficient replay */
|
|
35
|
+
export interface StateSnapshot {
|
|
36
|
+
/** Sequence number at the time the snapshot was taken */
|
|
37
|
+
atSeq: number;
|
|
38
|
+
/** ISO 8601 timestamp */
|
|
39
|
+
timestamp: string;
|
|
40
|
+
/** Blackboard key→value dump */
|
|
41
|
+
blackboard: Record<string, unknown>;
|
|
42
|
+
/** Active agents and their status */
|
|
43
|
+
agents: Record<string, {
|
|
44
|
+
status: string;
|
|
45
|
+
tokensUsed: number;
|
|
46
|
+
}>;
|
|
47
|
+
/** Budget state */
|
|
48
|
+
budget?: Record<string, unknown>;
|
|
49
|
+
/** Arbitrary metadata */
|
|
50
|
+
metadata?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
/** Options for replaying events */
|
|
53
|
+
export interface ReplayOptions {
|
|
54
|
+
/** Start sequence (inclusive). Defaults to 0 */
|
|
55
|
+
fromSeq?: number;
|
|
56
|
+
/** End sequence (inclusive). Defaults to latest */
|
|
57
|
+
toSeq?: number;
|
|
58
|
+
/** Filter by source(s) */
|
|
59
|
+
sources?: EventSource[];
|
|
60
|
+
/** Filter by agent */
|
|
61
|
+
agentId?: string;
|
|
62
|
+
/** Filter by correlation id */
|
|
63
|
+
correlationId?: string;
|
|
64
|
+
/** Filter by severity */
|
|
65
|
+
minSeverity?: EventSeverity;
|
|
66
|
+
}
|
|
67
|
+
/** Result of a replay query */
|
|
68
|
+
export interface ReplayResult {
|
|
69
|
+
/** The nearest snapshot at or before fromSeq */
|
|
70
|
+
baseSnapshot: StateSnapshot | null;
|
|
71
|
+
/** Events in the requested range */
|
|
72
|
+
events: BusEvent[];
|
|
73
|
+
/** Total events in the stream */
|
|
74
|
+
totalEvents: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Central event bus for the orchestrator.
|
|
78
|
+
*
|
|
79
|
+
* Provides:
|
|
80
|
+
* - Unified monotonic event stream from all subsystems
|
|
81
|
+
* - Periodic state snapshots for O(1) point-in-time reconstruction
|
|
82
|
+
* - Replay with filtering (source, agent, severity, correlation)
|
|
83
|
+
* - Configurable retention (max events, max snapshots)
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* const bus = new OrchestratorEventBus();
|
|
88
|
+
* bus.publish('blackboard', 'write', 'info', { key: 'x', value: 42 }, 'agent-1');
|
|
89
|
+
* bus.snapshot({ blackboard: bb.getSnapshot(), agents: {} });
|
|
90
|
+
* const replay = bus.replay({ fromSeq: 0, toSeq: 100 });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare class OrchestratorEventBus extends EventEmitter {
|
|
94
|
+
private events;
|
|
95
|
+
private snapshots;
|
|
96
|
+
private seq;
|
|
97
|
+
private maxEvents;
|
|
98
|
+
private maxSnapshots;
|
|
99
|
+
private snapshotInterval;
|
|
100
|
+
private eventsSinceSnapshot;
|
|
101
|
+
constructor(options?: {
|
|
102
|
+
/** Max events to retain in memory. Default 50_000 */
|
|
103
|
+
maxEvents?: number;
|
|
104
|
+
/** Max snapshots to retain. Default 100 */
|
|
105
|
+
maxSnapshots?: number;
|
|
106
|
+
/** Take a snapshot every N events (0 = manual only). Default 0 */
|
|
107
|
+
snapshotInterval?: number;
|
|
108
|
+
});
|
|
109
|
+
/**
|
|
110
|
+
* Publish an event to the bus.
|
|
111
|
+
* Returns the assigned sequence number.
|
|
112
|
+
*/
|
|
113
|
+
publish(source: EventSource, type: string, severity: EventSeverity, data: Record<string, unknown>, agentId?: string, correlationId?: string): number;
|
|
114
|
+
/**
|
|
115
|
+
* Take a state snapshot at the current sequence position.
|
|
116
|
+
*/
|
|
117
|
+
snapshot(state: Omit<StateSnapshot, 'atSeq' | 'timestamp'>): StateSnapshot;
|
|
118
|
+
/**
|
|
119
|
+
* Check if an automatic snapshot should be taken (called internally after publish).
|
|
120
|
+
* Returns true if a snapshot is due. Callers must provide state via `snapshot()`.
|
|
121
|
+
*/
|
|
122
|
+
isSnapshotDue(): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Replay events with optional filtering.
|
|
125
|
+
* Returns the nearest base snapshot + matching events.
|
|
126
|
+
*/
|
|
127
|
+
replay(options?: ReplayOptions): ReplayResult;
|
|
128
|
+
/**
|
|
129
|
+
* Get the event at a specific sequence number.
|
|
130
|
+
*/
|
|
131
|
+
getEvent(seq: number): BusEvent | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* Get the most recent N events.
|
|
134
|
+
*/
|
|
135
|
+
recent(count: number): BusEvent[];
|
|
136
|
+
/**
|
|
137
|
+
* Get all snapshots.
|
|
138
|
+
*/
|
|
139
|
+
getSnapshots(): StateSnapshot[];
|
|
140
|
+
/**
|
|
141
|
+
* Find the nearest snapshot at or before a given sequence.
|
|
142
|
+
*/
|
|
143
|
+
snapshotAt(seq: number): StateSnapshot | null;
|
|
144
|
+
/** Current sequence counter value (next event will get this seq). */
|
|
145
|
+
get currentSeq(): number;
|
|
146
|
+
/** Total stored events. */
|
|
147
|
+
get size(): number;
|
|
148
|
+
/** Total stored snapshots. */
|
|
149
|
+
get snapshotCount(): number;
|
|
150
|
+
/** Clear all events and snapshots, reset sequence. */
|
|
151
|
+
clear(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Export the full stream (events + snapshots) as a serializable object.
|
|
154
|
+
*/
|
|
155
|
+
export(): {
|
|
156
|
+
events: BusEvent[];
|
|
157
|
+
snapshots: StateSnapshot[];
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Import a previously exported stream, merging into current state.
|
|
161
|
+
*/
|
|
162
|
+
import(data: {
|
|
163
|
+
events: BusEvent[];
|
|
164
|
+
snapshots: StateSnapshot[];
|
|
165
|
+
}): void;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../lib/event-bus.ts"],"names":[],"mappings":"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"}
|