swarm-engine 1.43.0 → 1.54.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/cli/commands/usage.d.ts +3 -0
- package/dist/cli/commands/usage.d.ts.map +1 -0
- package/dist/cli/commands/usage.js +85 -0
- package/dist/cli/commands/usage.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.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 +44 -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/hooks/cli.js +4 -1
- package/dist/hooks/cli.js.map +1 -1
- package/dist/hooks/index.d.ts +9 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +54 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/transcript-parser.d.ts +68 -0
- package/dist/hooks/transcript-parser.d.ts.map +1 -0
- package/dist/hooks/transcript-parser.js +163 -0
- package/dist/hooks/transcript-parser.js.map +1 -0
- package/dist/hooks/usage-logger.d.ts +30 -0
- package/dist/hooks/usage-logger.d.ts.map +1 -0
- package/dist/hooks/usage-logger.js +67 -0
- package/dist/hooks/usage-logger.js.map +1 -0
- package/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- 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 +9 -0
- package/dist/runtime/agent-runner.d.ts.map +1 -1
- package/dist/runtime/agent-runner.js +167 -11
- package/dist/runtime/agent-runner.js.map +1 -1
- package/dist/runtime/backends/claude.d.ts +30 -0
- package/dist/runtime/backends/claude.d.ts.map +1 -1
- package/dist/runtime/backends/claude.js +112 -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 +2 -0
- package/dist/runtime/engine.d.ts.map +1 -1
- package/dist/runtime/engine.js +162 -3
- 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/handoff.d.ts +8 -0
- package/dist/runtime/handoff.d.ts.map +1 -0
- package/dist/runtime/handoff.js +109 -0
- package/dist/runtime/handoff.js.map +1 -0
- package/dist/runtime/heuristics.d.ts +2 -1
- package/dist/runtime/heuristics.d.ts.map +1 -1
- package/dist/runtime/heuristics.js +15 -2
- package/dist/runtime/heuristics.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/model-router.d.ts +2 -1
- package/dist/runtime/model-router.d.ts.map +1 -1
- package/dist/runtime/model-router.js +8 -1
- package/dist/runtime/model-router.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/savings-manifest.d.ts +66 -0
- package/dist/runtime/savings-manifest.d.ts.map +1 -0
- package/dist/runtime/savings-manifest.js +103 -0
- package/dist/runtime/savings-manifest.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 +23 -3
- package/dist/runtime/stats.js.map +1 -1
- package/dist/runtime/violation-tracker.d.ts +31 -0
- package/dist/runtime/violation-tracker.d.ts.map +1 -0
- package/dist/runtime/violation-tracker.js +125 -0
- package/dist/runtime/violation-tracker.js.map +1 -0
- 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
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
const NODE_TYPES = ['orchestration', 'phase', 'agent', 'file', 'pattern', 'error', 'heuristic'];
|
|
2
|
+
const EDGE_TYPES = [
|
|
3
|
+
'contains',
|
|
4
|
+
'spawned',
|
|
5
|
+
'produced',
|
|
6
|
+
'consumed',
|
|
7
|
+
'used_pattern',
|
|
8
|
+
'touched_file',
|
|
9
|
+
'caused_by',
|
|
10
|
+
'learned_from',
|
|
11
|
+
'similar_to',
|
|
12
|
+
'co_modified',
|
|
13
|
+
];
|
|
14
|
+
const DEFAULT_NODE_LIMIT = 500;
|
|
15
|
+
export class GraphApi {
|
|
16
|
+
graph;
|
|
17
|
+
bus;
|
|
18
|
+
constructor(graph, bus) {
|
|
19
|
+
this.graph = graph;
|
|
20
|
+
this.bus = bus ?? null;
|
|
21
|
+
}
|
|
22
|
+
/** Handle an API request. Returns true if the route was handled. */
|
|
23
|
+
handleRequest(req, res) {
|
|
24
|
+
try {
|
|
25
|
+
const url = new URL(req.url ?? '/', `http://${req.headers.host}`);
|
|
26
|
+
const pathname = url.pathname;
|
|
27
|
+
const params = url.searchParams;
|
|
28
|
+
// ─── POST /api/events — ingest external events ──────────────
|
|
29
|
+
if (req.method === 'POST' && pathname === '/api/events') {
|
|
30
|
+
this.handleEventIngest(req, res);
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (req.method !== 'GET')
|
|
34
|
+
return false;
|
|
35
|
+
// GET /api/graph/nodes?type=agent&limit=100
|
|
36
|
+
if (pathname === '/api/graph/nodes') {
|
|
37
|
+
const typeFilter = params.get('type');
|
|
38
|
+
const limit = parseInt(params.get('limit') ?? String(DEFAULT_NODE_LIMIT), 10);
|
|
39
|
+
let nodes;
|
|
40
|
+
if (typeFilter && NODE_TYPES.includes(typeFilter)) {
|
|
41
|
+
nodes = this.graph.getNodesByType(typeFilter);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
nodes = NODE_TYPES.flatMap((type) => this.graph.getNodesByType(type));
|
|
45
|
+
}
|
|
46
|
+
nodes = nodes.slice(-limit);
|
|
47
|
+
this.json(res, 200, nodes);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
// GET /api/graph/edges?type=spawned&limit=100
|
|
51
|
+
if (pathname === '/api/graph/edges') {
|
|
52
|
+
const typeFilter = params.get('type');
|
|
53
|
+
const limit = parseInt(params.get('limit') ?? String(DEFAULT_NODE_LIMIT), 10);
|
|
54
|
+
let edges = typeFilter && EDGE_TYPES.includes(typeFilter)
|
|
55
|
+
? this.graph.getEdgesByType(typeFilter)
|
|
56
|
+
: EDGE_TYPES.flatMap((type) => this.graph.getEdgesByType(type));
|
|
57
|
+
edges = edges.slice(-limit);
|
|
58
|
+
this.json(res, 200, edges);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (pathname === '/api/graph/stats') {
|
|
62
|
+
this.json(res, 200, this.graph.stats());
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
// GET /api/graph/orchestrations — list all orchestration nodes (for picker)
|
|
66
|
+
if (pathname === '/api/graph/orchestrations') {
|
|
67
|
+
const orchestrations = this.graph.getNodesByType('orchestration');
|
|
68
|
+
orchestrations.sort((a, b) => (b.created_at ?? '').localeCompare(a.created_at ?? ''));
|
|
69
|
+
this.json(res, 200, orchestrations);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
// GET /api/graph/subgraph/:nodeId?depth=3 — BFS from a root node
|
|
73
|
+
const subgraphMatch = pathname.match(/^\/api\/graph\/subgraph\/(.+)$/);
|
|
74
|
+
if (subgraphMatch) {
|
|
75
|
+
const nodeId = decodeURIComponent(subgraphMatch[1]);
|
|
76
|
+
const depth = parseInt(params.get('depth') ?? '3', 10);
|
|
77
|
+
this.json(res, 200, this.graph.bfs(nodeId, Math.min(depth, 6)));
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
// GET /api/graph/latest?count=1&depth=3
|
|
81
|
+
if (pathname === '/api/graph/latest') {
|
|
82
|
+
const count = Math.min(parseInt(params.get('count') ?? '1', 10), 10);
|
|
83
|
+
const depth = Math.min(parseInt(params.get('depth') ?? '3', 10), 6);
|
|
84
|
+
const orchestrations = this.graph.getNodesByType('orchestration');
|
|
85
|
+
orchestrations.sort((a, b) => (b.created_at ?? '').localeCompare(a.created_at ?? ''));
|
|
86
|
+
const recent = orchestrations.slice(0, count);
|
|
87
|
+
const allNodes = new Map();
|
|
88
|
+
const allEdges = [];
|
|
89
|
+
const edgeKeys = new Set();
|
|
90
|
+
for (const orch of recent) {
|
|
91
|
+
const sub = this.graph.bfs(orch.id, depth);
|
|
92
|
+
for (const n of sub.nodes)
|
|
93
|
+
allNodes.set(n.id, n);
|
|
94
|
+
for (const e of sub.edges) {
|
|
95
|
+
const key = `${e.source}-${e.target}-${e.type}`;
|
|
96
|
+
if (!edgeKeys.has(key)) {
|
|
97
|
+
edgeKeys.add(key);
|
|
98
|
+
allEdges.push(e);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
this.json(res, 200, { nodes: [...allNodes.values()], edges: allEdges });
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
// Unknown /api/ route
|
|
106
|
+
if (pathname.startsWith('/api/')) {
|
|
107
|
+
this.json(res, 404, { error: 'Not found' });
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
114
|
+
res.end(JSON.stringify({ error: 'Internal server error' }));
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* POST /api/events — accept external events and inject into the EventBus.
|
|
120
|
+
* Body: single event { type, data, source? } or array of events.
|
|
121
|
+
* This allows Claude Code, Codex, and other external processes to push
|
|
122
|
+
* orchestration events into a running dashboard.
|
|
123
|
+
*/
|
|
124
|
+
handleEventIngest(req, res) {
|
|
125
|
+
if (!this.bus) {
|
|
126
|
+
this.json(res, 503, { error: 'No EventBus connected' });
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const chunks = [];
|
|
130
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
131
|
+
req.on('end', () => {
|
|
132
|
+
try {
|
|
133
|
+
const body = JSON.parse(Buffer.concat(chunks).toString());
|
|
134
|
+
const events = Array.isArray(body) ? body : [body];
|
|
135
|
+
let accepted = 0;
|
|
136
|
+
for (const evt of events) {
|
|
137
|
+
if (evt.type && evt.data) {
|
|
138
|
+
this.bus.emit(evt.type, evt.data, evt.source ?? 'external');
|
|
139
|
+
accepted++;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
this.json(res, 200, { accepted, total: events.length });
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
this.json(res, 400, { error: 'Invalid JSON' });
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
req.on('error', () => {
|
|
149
|
+
this.json(res, 400, { error: 'Request error' });
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
json(res, code, data) {
|
|
153
|
+
res.writeHead(code, { 'Content-Type': 'application/json' });
|
|
154
|
+
res.end(JSON.stringify(data));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=graph-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-api.js","sourceRoot":"","sources":["../../src/web/graph-api.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAoB,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACjH,MAAM,UAAU,GAAoB;IAClC,UAAU;IACV,SAAS;IACT,UAAU;IACV,UAAU;IACV,cAAc;IACd,cAAc;IACd,WAAW;IACX,cAAc;IACd,YAAY;IACZ,aAAa;CACd,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,OAAO,QAAQ;IACX,KAAK,CAAiB;IACtB,GAAG,CAAkB;IAE7B,YAAY,KAAqB,EAAE,GAAc;QAC/C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC;IACzB,CAAC;IAED,oEAAoE;IACpE,aAAa,CAAC,GAAoB,EAAE,GAAmB;QACrD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC;YAEhC,+DAA+D;YAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACxD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;YAEvC,4CAA4C;YAC5C,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAyB,CAAC;gBAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9E,IAAI,KAAkB,CAAC;gBACvB,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,8CAA8C;YAC9C,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAyB,CAAC;gBAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9E,IAAI,KAAK,GAAG,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACvD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC;oBACvC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,4EAA4E;YAC5E,IAAI,QAAQ,KAAK,2BAA2B,EAAE,CAAC;gBAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;gBAClE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,iEAAiE;YACjE,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACvE,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,CAAC;gBACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,wCAAwC;YACxC,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;gBAClE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtF,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAE9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;gBAC9C,MAAM,QAAQ,GAA2F,EAAE,CAAC;gBAC5G,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;gBAEnC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC3C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK;wBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACjD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;wBAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;wBAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BACvB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BAClB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACnB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,sBAAsB;YACtB,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,GAAoB,EAAE,GAAmB;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,QAAQ,GAAG,CAAC,CAAC;gBAEjB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBACzB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBACzB,IAAI,CAAC,GAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAiB,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;wBAC1E,QAAQ,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,IAAI,CAAC,GAAmB,EAAE,IAAY,EAAE,IAAa;QAC3D,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EventBus } from '../core/event-bus.js';
|
|
2
|
+
import type { ExecutionGraph } from '../runtime/execution-graph.js';
|
|
3
|
+
import { DashboardServer } from './server.js';
|
|
4
|
+
import { DashboardBridge } from './bridge.js';
|
|
5
|
+
export interface DashboardOptions {
|
|
6
|
+
bus: EventBus;
|
|
7
|
+
graph?: ExecutionGraph;
|
|
8
|
+
port?: number;
|
|
9
|
+
open?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function startDashboard(options: DashboardOptions): Promise<{
|
|
12
|
+
server: DashboardServer;
|
|
13
|
+
bridge: DashboardBridge;
|
|
14
|
+
stop: () => Promise<void>;
|
|
15
|
+
}>;
|
|
16
|
+
export { DashboardServer } from './server.js';
|
|
17
|
+
export { DashboardBridge } from './bridge.js';
|
|
18
|
+
export type { DashboardState, PhaseState, AgentState } from './bridge.js';
|
|
19
|
+
export { GraphApi } from './graph-api.js';
|
|
20
|
+
export { DashboardTray } from './tray.js';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACvE,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC,CAkCD;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { DashboardServer } from './server.js';
|
|
3
|
+
import { DashboardBridge } from './bridge.js';
|
|
4
|
+
import { GraphApi } from './graph-api.js';
|
|
5
|
+
export async function startDashboard(options) {
|
|
6
|
+
const port = options.port ?? 3101;
|
|
7
|
+
// Build the optional graph API handler
|
|
8
|
+
const graphApi = options.graph ? new GraphApi(options.graph, options.bus) : null;
|
|
9
|
+
const server = new DashboardServer({
|
|
10
|
+
port,
|
|
11
|
+
onRequest: graphApi ? (req, res) => graphApi.handleRequest(req, res) : undefined,
|
|
12
|
+
});
|
|
13
|
+
const bridge = new DashboardBridge(options.bus, server);
|
|
14
|
+
await server.start();
|
|
15
|
+
bridge.start();
|
|
16
|
+
// Open in default browser (unless disabled)
|
|
17
|
+
const url = `http://localhost:${port}`;
|
|
18
|
+
if (options.open !== false) {
|
|
19
|
+
const { platform } = process;
|
|
20
|
+
const cmd = platform === 'darwin' ? 'open' : platform === 'win32' ? 'start' : 'xdg-open';
|
|
21
|
+
const args = platform === 'win32' ? ['/c', 'start', '', url] : [url];
|
|
22
|
+
const shell = platform === 'win32';
|
|
23
|
+
spawn(cmd, args, { detached: true, stdio: 'ignore', ...(shell ? { shell: true } : {}) }).unref();
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
server,
|
|
27
|
+
bridge,
|
|
28
|
+
stop: async () => {
|
|
29
|
+
bridge.stop();
|
|
30
|
+
await server.stop();
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export { DashboardServer } from './server.js';
|
|
35
|
+
export { DashboardBridge } from './bridge.js';
|
|
36
|
+
export { GraphApi } from './graph-api.js';
|
|
37
|
+
export { DashboardTray } from './tray.js';
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS1C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAyB;IAK5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAElC,uCAAuC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,IAAI;QACJ,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KACjF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAExD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,4CAA4C;IAC5C,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,MAAM,GAAG,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QACzF,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC;QACnC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACnG,CAAC;IAED,OAAO;QACL,MAAM;QACN,MAAM;QACN,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|