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,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Goal DSL — Schema-driven goal definitions for swarm orchestration
|
|
4
|
+
*
|
|
5
|
+
* Provides a declarative way to define multi-agent goals with constraints,
|
|
6
|
+
* dependencies, and validation rules. Goals can be defined in TypeScript
|
|
7
|
+
* objects or parsed from YAML/JSON strings.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Typed GoalDefinition with tasks, constraints, and outputs
|
|
11
|
+
* - Dependency graph validation (cycle detection, missing refs)
|
|
12
|
+
* - Constraint checking (budget, timeout, required agents)
|
|
13
|
+
* - YAML/JSON parsing (YAML via simple built-in parser, no deps)
|
|
14
|
+
* - Goal compilation to executable task DAGs
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* const goal = parseGoal(`
|
|
18
|
+
* name: research-and-summarize
|
|
19
|
+
* tasks:
|
|
20
|
+
* - id: research
|
|
21
|
+
* agent: researcher
|
|
22
|
+
* action: search
|
|
23
|
+
* - id: summarize
|
|
24
|
+
* agent: writer
|
|
25
|
+
* action: summarize
|
|
26
|
+
* depends: [research]
|
|
27
|
+
* `);
|
|
28
|
+
* const plan = compileGoal(goal);
|
|
29
|
+
*
|
|
30
|
+
* @module GoalDSL
|
|
31
|
+
* @version 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.parseGoal = parseGoal;
|
|
35
|
+
exports.goalFromObject = goalFromObject;
|
|
36
|
+
exports.validateGoal = validateGoal;
|
|
37
|
+
exports.compileGoal = compileGoal;
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// PARSER
|
|
40
|
+
// ============================================================================
|
|
41
|
+
/**
|
|
42
|
+
* Parse a goal from a YAML-like or JSON string.
|
|
43
|
+
*
|
|
44
|
+
* Supports a simple YAML subset (no anchors, tags, or multi-doc):
|
|
45
|
+
* - Key: value pairs
|
|
46
|
+
* - Lists with `- item` syntax
|
|
47
|
+
* - Inline arrays `[a, b, c]`
|
|
48
|
+
* - Nested indentation
|
|
49
|
+
* - JSON input (auto-detected)
|
|
50
|
+
*/
|
|
51
|
+
function parseGoal(input) {
|
|
52
|
+
const trimmed = input.trim();
|
|
53
|
+
// Try JSON first
|
|
54
|
+
if (trimmed.startsWith('{')) {
|
|
55
|
+
const parsed = JSON.parse(trimmed);
|
|
56
|
+
return normalizeGoal(parsed);
|
|
57
|
+
}
|
|
58
|
+
// Simple YAML-like parser
|
|
59
|
+
return parseSimpleYaml(trimmed);
|
|
60
|
+
}
|
|
61
|
+
/** Parse from a plain object (e.g. loaded from file) */
|
|
62
|
+
function goalFromObject(obj) {
|
|
63
|
+
return normalizeGoal(obj);
|
|
64
|
+
}
|
|
65
|
+
// ============================================================================
|
|
66
|
+
// VALIDATOR
|
|
67
|
+
// ============================================================================
|
|
68
|
+
/**
|
|
69
|
+
* Validate a goal definition for correctness.
|
|
70
|
+
* Checks for cycles, missing dependencies, duplicate IDs, and required fields.
|
|
71
|
+
*/
|
|
72
|
+
function validateGoal(goal) {
|
|
73
|
+
const errors = [];
|
|
74
|
+
// Empty tasks
|
|
75
|
+
if (!goal.tasks || goal.tasks.length === 0) {
|
|
76
|
+
errors.push({ type: 'empty_tasks', message: 'Goal must have at least one task' });
|
|
77
|
+
return { valid: false, errors };
|
|
78
|
+
}
|
|
79
|
+
// Duplicate IDs
|
|
80
|
+
const idSet = new Set();
|
|
81
|
+
for (const task of goal.tasks) {
|
|
82
|
+
if (idSet.has(task.id)) {
|
|
83
|
+
errors.push({ type: 'duplicate_id', message: `Duplicate task ID: '${task.id}'`, taskId: task.id });
|
|
84
|
+
}
|
|
85
|
+
idSet.add(task.id);
|
|
86
|
+
}
|
|
87
|
+
// Required fields
|
|
88
|
+
for (const task of goal.tasks) {
|
|
89
|
+
if (!task.id || typeof task.id !== 'string') {
|
|
90
|
+
errors.push({ type: 'invalid_field', message: 'Task missing required field: id', taskId: task.id });
|
|
91
|
+
}
|
|
92
|
+
if (!task.agent || typeof task.agent !== 'string') {
|
|
93
|
+
errors.push({ type: 'missing_agent', message: `Task '${task.id}' missing required field: agent`, taskId: task.id });
|
|
94
|
+
}
|
|
95
|
+
if (!task.action || typeof task.action !== 'string') {
|
|
96
|
+
errors.push({ type: 'invalid_field', message: `Task '${task.id}' missing required field: action`, taskId: task.id });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Missing dependencies
|
|
100
|
+
for (const task of goal.tasks) {
|
|
101
|
+
if (task.depends) {
|
|
102
|
+
for (const dep of task.depends) {
|
|
103
|
+
if (!idSet.has(dep)) {
|
|
104
|
+
errors.push({
|
|
105
|
+
type: 'missing_dependency',
|
|
106
|
+
message: `Task '${task.id}' depends on unknown task '${dep}'`,
|
|
107
|
+
taskId: task.id,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Cycle detection (Kahn's algorithm)
|
|
114
|
+
if (errors.length === 0) {
|
|
115
|
+
const hasCycle = detectCycle(goal.tasks);
|
|
116
|
+
if (hasCycle) {
|
|
117
|
+
errors.push({ type: 'cycle', message: 'Goal task graph contains a cycle' });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return { valid: errors.length === 0, errors };
|
|
121
|
+
}
|
|
122
|
+
// ============================================================================
|
|
123
|
+
// COMPILER
|
|
124
|
+
// ============================================================================
|
|
125
|
+
/**
|
|
126
|
+
* Compile a validated goal into an executable plan with layered parallelism.
|
|
127
|
+
* Performs topological sort to determine execution layers.
|
|
128
|
+
*
|
|
129
|
+
* @throws If the goal is invalid.
|
|
130
|
+
*/
|
|
131
|
+
function compileGoal(goal) {
|
|
132
|
+
const validation = validateGoal(goal);
|
|
133
|
+
if (!validation.valid) {
|
|
134
|
+
throw new Error(`Invalid goal: ${validation.errors.map((e) => e.message).join('; ')}`);
|
|
135
|
+
}
|
|
136
|
+
const taskMap = new Map(goal.tasks.map((t) => [t.id, t]));
|
|
137
|
+
const adjacency = new Map();
|
|
138
|
+
// Build adjacency (task → dependents)
|
|
139
|
+
for (const task of goal.tasks) {
|
|
140
|
+
if (!adjacency.has(task.id))
|
|
141
|
+
adjacency.set(task.id, []);
|
|
142
|
+
if (task.depends) {
|
|
143
|
+
for (const dep of task.depends) {
|
|
144
|
+
const deps = adjacency.get(dep) ?? [];
|
|
145
|
+
deps.push(task.id);
|
|
146
|
+
adjacency.set(dep, deps);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Topological sort into layers
|
|
151
|
+
const inDegree = new Map();
|
|
152
|
+
for (const task of goal.tasks) {
|
|
153
|
+
inDegree.set(task.id, task.depends?.length ?? 0);
|
|
154
|
+
}
|
|
155
|
+
const layers = [];
|
|
156
|
+
const taskOrder = [];
|
|
157
|
+
const remaining = new Set(goal.tasks.map((t) => t.id));
|
|
158
|
+
let layerIndex = 0;
|
|
159
|
+
while (remaining.size > 0) {
|
|
160
|
+
const ready = [];
|
|
161
|
+
for (const id of remaining) {
|
|
162
|
+
if ((inDegree.get(id) ?? 0) <= 0) {
|
|
163
|
+
ready.push(id);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (ready.length === 0)
|
|
167
|
+
break; // Safety: shouldn't happen after validation
|
|
168
|
+
layers.push({ index: layerIndex++, taskIds: ready });
|
|
169
|
+
taskOrder.push(...ready);
|
|
170
|
+
for (const id of ready) {
|
|
171
|
+
remaining.delete(id);
|
|
172
|
+
const dependents = adjacency.get(id) ?? [];
|
|
173
|
+
for (const dep of dependents) {
|
|
174
|
+
inDegree.set(dep, (inDegree.get(dep) ?? 1) - 1);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const maxWidth = Math.max(...layers.map((l) => l.taskIds.length), 0);
|
|
179
|
+
return {
|
|
180
|
+
definition: goal,
|
|
181
|
+
layers,
|
|
182
|
+
depth: layers.length,
|
|
183
|
+
maxWidth,
|
|
184
|
+
taskOrder,
|
|
185
|
+
adjacency,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
// ============================================================================
|
|
189
|
+
// INTERNAL HELPERS
|
|
190
|
+
// ============================================================================
|
|
191
|
+
function detectCycle(tasks) {
|
|
192
|
+
const inDegree = new Map();
|
|
193
|
+
const adj = new Map();
|
|
194
|
+
for (const task of tasks) {
|
|
195
|
+
inDegree.set(task.id, 0);
|
|
196
|
+
adj.set(task.id, []);
|
|
197
|
+
}
|
|
198
|
+
for (const task of tasks) {
|
|
199
|
+
if (task.depends) {
|
|
200
|
+
for (const dep of task.depends) {
|
|
201
|
+
adj.get(dep)?.push(task.id);
|
|
202
|
+
inDegree.set(task.id, (inDegree.get(task.id) ?? 0) + 1);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
const queue = [];
|
|
207
|
+
for (const [id, deg] of inDegree) {
|
|
208
|
+
if (deg === 0)
|
|
209
|
+
queue.push(id);
|
|
210
|
+
}
|
|
211
|
+
let visited = 0;
|
|
212
|
+
while (queue.length > 0) {
|
|
213
|
+
const node = queue.shift();
|
|
214
|
+
visited++;
|
|
215
|
+
for (const next of adj.get(node) ?? []) {
|
|
216
|
+
const newDeg = (inDegree.get(next) ?? 1) - 1;
|
|
217
|
+
inDegree.set(next, newDeg);
|
|
218
|
+
if (newDeg === 0)
|
|
219
|
+
queue.push(next);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return visited !== tasks.length;
|
|
223
|
+
}
|
|
224
|
+
function normalizeGoal(raw) {
|
|
225
|
+
return {
|
|
226
|
+
name: raw.name ?? 'unnamed',
|
|
227
|
+
description: raw.description,
|
|
228
|
+
version: raw.version,
|
|
229
|
+
tasks: (raw.tasks ?? []).map((t) => ({
|
|
230
|
+
id: t.id,
|
|
231
|
+
agent: t.agent,
|
|
232
|
+
action: t.action,
|
|
233
|
+
depends: t.depends,
|
|
234
|
+
params: t.params,
|
|
235
|
+
timeoutMs: t.timeoutMs,
|
|
236
|
+
critical: t.critical ?? true,
|
|
237
|
+
retries: t.retries ?? 0,
|
|
238
|
+
outputKey: t.outputKey,
|
|
239
|
+
})),
|
|
240
|
+
constraints: raw.constraints,
|
|
241
|
+
outputs: raw.outputs,
|
|
242
|
+
metadata: raw.metadata,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
function parseSimpleYaml(input) {
|
|
246
|
+
const lines = input.split('\n');
|
|
247
|
+
const result = {};
|
|
248
|
+
let currentTasks = [];
|
|
249
|
+
let currentTask = null;
|
|
250
|
+
let currentOutputs = [];
|
|
251
|
+
let currentOutput = null;
|
|
252
|
+
let section = 'root';
|
|
253
|
+
let constraints = {};
|
|
254
|
+
for (const rawLine of lines) {
|
|
255
|
+
const line = rawLine.replace(/\r$/, '');
|
|
256
|
+
const trimmedLine = line.trimStart();
|
|
257
|
+
if (trimmedLine === '' || trimmedLine.startsWith('#'))
|
|
258
|
+
continue;
|
|
259
|
+
const indent = line.length - trimmedLine.length;
|
|
260
|
+
// Top-level keys
|
|
261
|
+
if (indent === 0 && trimmedLine.includes(':')) {
|
|
262
|
+
// Save previous state
|
|
263
|
+
if (currentTask) {
|
|
264
|
+
currentTasks.push(currentTask);
|
|
265
|
+
currentTask = null;
|
|
266
|
+
}
|
|
267
|
+
if (currentOutput) {
|
|
268
|
+
currentOutputs.push(currentOutput);
|
|
269
|
+
currentOutput = null;
|
|
270
|
+
}
|
|
271
|
+
const [key, ...valParts] = trimmedLine.split(':');
|
|
272
|
+
const val = valParts.join(':').trim();
|
|
273
|
+
if (key.trim() === 'tasks') {
|
|
274
|
+
section = 'tasks';
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
if (key.trim() === 'constraints') {
|
|
278
|
+
section = 'constraints';
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
if (key.trim() === 'outputs') {
|
|
282
|
+
section = 'outputs';
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
result[key.trim()] = parseYamlValue(val);
|
|
286
|
+
section = 'root';
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
// Task list items
|
|
290
|
+
if (section === 'tasks' || section === 'task') {
|
|
291
|
+
if (trimmedLine.startsWith('- ')) {
|
|
292
|
+
if (currentTask)
|
|
293
|
+
currentTasks.push(currentTask);
|
|
294
|
+
currentTask = {};
|
|
295
|
+
section = 'task';
|
|
296
|
+
// Parse inline key:value after -
|
|
297
|
+
const afterDash = trimmedLine.slice(2).trim();
|
|
298
|
+
if (afterDash.includes(':')) {
|
|
299
|
+
const [k, ...vParts] = afterDash.split(':');
|
|
300
|
+
currentTask[k.trim()] = parseYamlValue(vParts.join(':').trim());
|
|
301
|
+
}
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
if (currentTask && trimmedLine.includes(':')) {
|
|
305
|
+
const [k, ...vParts] = trimmedLine.split(':');
|
|
306
|
+
currentTask[k.trim()] = parseYamlValue(vParts.join(':').trim());
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Constraints
|
|
311
|
+
if (section === 'constraints' && trimmedLine.includes(':')) {
|
|
312
|
+
const [k, ...vParts] = trimmedLine.split(':');
|
|
313
|
+
constraints[k.trim()] = parseYamlValue(vParts.join(':').trim());
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
// Outputs
|
|
317
|
+
if (section === 'outputs' || section === 'output') {
|
|
318
|
+
if (trimmedLine.startsWith('- ')) {
|
|
319
|
+
if (currentOutput)
|
|
320
|
+
currentOutputs.push(currentOutput);
|
|
321
|
+
currentOutput = {};
|
|
322
|
+
section = 'output';
|
|
323
|
+
const afterDash = trimmedLine.slice(2).trim();
|
|
324
|
+
if (afterDash.includes(':')) {
|
|
325
|
+
const [k, ...vParts] = afterDash.split(':');
|
|
326
|
+
currentOutput[k.trim()] = parseYamlValue(vParts.join(':').trim());
|
|
327
|
+
}
|
|
328
|
+
continue;
|
|
329
|
+
}
|
|
330
|
+
if (currentOutput && trimmedLine.includes(':')) {
|
|
331
|
+
const [k, ...vParts] = trimmedLine.split(':');
|
|
332
|
+
currentOutput[k.trim()] = parseYamlValue(vParts.join(':').trim());
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// Flush remaining
|
|
338
|
+
if (currentTask)
|
|
339
|
+
currentTasks.push(currentTask);
|
|
340
|
+
if (currentOutput)
|
|
341
|
+
currentOutputs.push(currentOutput);
|
|
342
|
+
const goal = {
|
|
343
|
+
name: result['name'] ?? 'unnamed',
|
|
344
|
+
description: result['description'],
|
|
345
|
+
version: result['version'],
|
|
346
|
+
tasks: currentTasks.map((t) => ({
|
|
347
|
+
id: t['id'] ?? '',
|
|
348
|
+
agent: t['agent'] ?? '',
|
|
349
|
+
action: t['action'] ?? '',
|
|
350
|
+
depends: t['depends'],
|
|
351
|
+
params: t['params'],
|
|
352
|
+
timeoutMs: t['timeoutMs'],
|
|
353
|
+
critical: t['critical'],
|
|
354
|
+
retries: t['retries'],
|
|
355
|
+
outputKey: t['outputKey'],
|
|
356
|
+
})),
|
|
357
|
+
constraints: Object.keys(constraints).length > 0 ? constraints : undefined,
|
|
358
|
+
outputs: currentOutputs.length > 0 ? currentOutputs.map((o) => ({
|
|
359
|
+
key: o['key'] ?? '',
|
|
360
|
+
type: o['type'],
|
|
361
|
+
required: o['required'],
|
|
362
|
+
description: o['description'],
|
|
363
|
+
})) : undefined,
|
|
364
|
+
metadata: result['metadata'],
|
|
365
|
+
};
|
|
366
|
+
return normalizeGoal(goal);
|
|
367
|
+
}
|
|
368
|
+
function parseYamlValue(val) {
|
|
369
|
+
if (val === '' || val === undefined)
|
|
370
|
+
return undefined;
|
|
371
|
+
if (val === 'true')
|
|
372
|
+
return true;
|
|
373
|
+
if (val === 'false')
|
|
374
|
+
return false;
|
|
375
|
+
if (val === 'null')
|
|
376
|
+
return null;
|
|
377
|
+
// Inline array [a, b, c]
|
|
378
|
+
if (val.startsWith('[') && val.endsWith(']')) {
|
|
379
|
+
const inner = val.slice(1, -1);
|
|
380
|
+
return inner.split(',').map((s) => parseYamlValue(s.trim()));
|
|
381
|
+
}
|
|
382
|
+
// Number
|
|
383
|
+
const num = Number(val);
|
|
384
|
+
if (!isNaN(num) && val !== '')
|
|
385
|
+
return num;
|
|
386
|
+
// Strip quotes
|
|
387
|
+
if ((val.startsWith('"') && val.endsWith('"')) || (val.startsWith("'") && val.endsWith("'"))) {
|
|
388
|
+
return val.slice(1, -1);
|
|
389
|
+
}
|
|
390
|
+
return val;
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=goal-dsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-dsl.js","sourceRoot":"","sources":["../../lib/goal-dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Job Queue — Resumable task orchestration with durable storage
|
|
3
|
+
*
|
|
4
|
+
* Provides a job queue that persists jobs to disk (JSON files) with support
|
|
5
|
+
* for status tracking, retries, priority ordering, and crash recovery.
|
|
6
|
+
* Designed for long-running swarm orchestration tasks that must survive
|
|
7
|
+
* process restarts.
|
|
8
|
+
*
|
|
9
|
+
* Backends:
|
|
10
|
+
* - FileJobStore (built-in) — JSON files in a directory
|
|
11
|
+
* - IJobStore interface — implement for SQLite, Postgres, etc.
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Priority-based FIFO queue
|
|
15
|
+
* - Configurable retries with exponential backoff
|
|
16
|
+
* - Job timeout enforcement
|
|
17
|
+
* - Crash recovery: stale "running" jobs are re-queued on startup
|
|
18
|
+
* - Pluggable storage backends
|
|
19
|
+
*
|
|
20
|
+
* Usage:
|
|
21
|
+
* const queue = new JobQueue({ store: new FileJobStore('./data/jobs') });
|
|
22
|
+
* await queue.start();
|
|
23
|
+
* await queue.enqueue({ type: 'delegateTask', payload: { agentId: 'analyzer', ... } });
|
|
24
|
+
*
|
|
25
|
+
* @module JobQueue
|
|
26
|
+
* @version 1.0.0
|
|
27
|
+
*/
|
|
28
|
+
import { EventEmitter } from 'events';
|
|
29
|
+
/** Job status */
|
|
30
|
+
export type JobStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
31
|
+
/** Priority level (lower = higher priority) */
|
|
32
|
+
export type JobPriority = 0 | 1 | 2 | 3 | 4 | 5;
|
|
33
|
+
/** A persistent job record */
|
|
34
|
+
export interface JobRecord {
|
|
35
|
+
/** Unique job ID */
|
|
36
|
+
id: string;
|
|
37
|
+
/** Job type (e.g. 'delegateTask', 'batchProcess') */
|
|
38
|
+
type: string;
|
|
39
|
+
/** Job payload — any serializable data */
|
|
40
|
+
payload: Record<string, unknown>;
|
|
41
|
+
/** Current status */
|
|
42
|
+
status: JobStatus;
|
|
43
|
+
/** Priority (0 = highest, 5 = lowest; default: 2) */
|
|
44
|
+
priority: JobPriority;
|
|
45
|
+
/** Number of attempts so far */
|
|
46
|
+
attempts: number;
|
|
47
|
+
/** Maximum attempts (default: 3) */
|
|
48
|
+
maxAttempts: number;
|
|
49
|
+
/** When the job was created */
|
|
50
|
+
createdAt: number;
|
|
51
|
+
/** When the job was last updated */
|
|
52
|
+
updatedAt: number;
|
|
53
|
+
/** When the job started running */
|
|
54
|
+
startedAt?: number;
|
|
55
|
+
/** When the job completed or failed */
|
|
56
|
+
completedAt?: number;
|
|
57
|
+
/** Result data (on success) */
|
|
58
|
+
result?: unknown;
|
|
59
|
+
/** Error message (on failure) */
|
|
60
|
+
error?: string;
|
|
61
|
+
/** Job timeout in ms (default: 300000 = 5 min) */
|
|
62
|
+
timeoutMs: number;
|
|
63
|
+
/** Metadata for tracking */
|
|
64
|
+
metadata?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
/** Options for creating a new job */
|
|
67
|
+
export interface JobCreateOptions {
|
|
68
|
+
/** Job type */
|
|
69
|
+
type: string;
|
|
70
|
+
/** Job payload */
|
|
71
|
+
payload: Record<string, unknown>;
|
|
72
|
+
/** Priority (default: 2) */
|
|
73
|
+
priority?: JobPriority;
|
|
74
|
+
/** Max attempts (default: 3) */
|
|
75
|
+
maxAttempts?: number;
|
|
76
|
+
/** Timeout in ms (default: 300000) */
|
|
77
|
+
timeoutMs?: number;
|
|
78
|
+
/** Additional metadata */
|
|
79
|
+
metadata?: Record<string, unknown>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Job handler function — processes a single job.
|
|
83
|
+
* Return a result on success, or throw to fail.
|
|
84
|
+
*/
|
|
85
|
+
export type JobHandler = (job: JobRecord) => Promise<unknown>;
|
|
86
|
+
/** Job queue configuration */
|
|
87
|
+
export interface JobQueueConfig {
|
|
88
|
+
/** Storage backend */
|
|
89
|
+
store: IJobStore;
|
|
90
|
+
/** Polling interval in ms (default: 1000) */
|
|
91
|
+
pollIntervalMs?: number;
|
|
92
|
+
/** Maximum concurrent jobs (default: 5) */
|
|
93
|
+
concurrency?: number;
|
|
94
|
+
/** Base retry delay in ms (default: 1000) */
|
|
95
|
+
retryBaseDelayMs?: number;
|
|
96
|
+
/** Maximum retry delay in ms (default: 60000) */
|
|
97
|
+
retryMaxDelayMs?: number;
|
|
98
|
+
/** Stale job threshold in ms — re-queue "running" jobs older than this (default: 600000 = 10 min) */
|
|
99
|
+
staleThresholdMs?: number;
|
|
100
|
+
}
|
|
101
|
+
/** Stats snapshot */
|
|
102
|
+
export interface JobQueueStats {
|
|
103
|
+
pending: number;
|
|
104
|
+
running: number;
|
|
105
|
+
completed: number;
|
|
106
|
+
failed: number;
|
|
107
|
+
cancelled: number;
|
|
108
|
+
total: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Pluggable storage backend for the job queue.
|
|
112
|
+
* Implement this for SQLite, Postgres, Redis, etc.
|
|
113
|
+
*/
|
|
114
|
+
export interface IJobStore {
|
|
115
|
+
/** Initialize the store (create tables/dirs) */
|
|
116
|
+
init(): Promise<void>;
|
|
117
|
+
/** Save or update a job */
|
|
118
|
+
save(job: JobRecord): Promise<void>;
|
|
119
|
+
/** Get a job by ID */
|
|
120
|
+
get(id: string): Promise<JobRecord | null>;
|
|
121
|
+
/** Delete a job by ID */
|
|
122
|
+
delete(id: string): Promise<void>;
|
|
123
|
+
/** List jobs by status, ordered by priority ASC then createdAt ASC */
|
|
124
|
+
listByStatus(status: JobStatus, limit?: number): Promise<JobRecord[]>;
|
|
125
|
+
/** Count jobs by status */
|
|
126
|
+
countByStatus(status: JobStatus): Promise<number>;
|
|
127
|
+
/** Find stale running jobs (startedAt < threshold) */
|
|
128
|
+
findStale(thresholdMs: number): Promise<JobRecord[]>;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* File-system job store — persists jobs as individual JSON files.
|
|
132
|
+
* Simple and dependency-free. Suitable for single-node deployments.
|
|
133
|
+
*/
|
|
134
|
+
export declare class FileJobStore implements IJobStore {
|
|
135
|
+
private readonly dir;
|
|
136
|
+
constructor(dir: string);
|
|
137
|
+
init(): Promise<void>;
|
|
138
|
+
save(job: JobRecord): Promise<void>;
|
|
139
|
+
get(id: string): Promise<JobRecord | null>;
|
|
140
|
+
delete(id: string): Promise<void>;
|
|
141
|
+
listByStatus(status: JobStatus, limit?: number): Promise<JobRecord[]>;
|
|
142
|
+
countByStatus(status: JobStatus): Promise<number>;
|
|
143
|
+
findStale(thresholdMs: number): Promise<JobRecord[]>;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Persistent job queue with priority ordering, retries, and crash recovery.
|
|
147
|
+
*
|
|
148
|
+
* Register handlers for job types, then start the queue. Jobs are
|
|
149
|
+
* persisted to the configured store and survive process restarts.
|
|
150
|
+
*/
|
|
151
|
+
export declare class JobQueue extends EventEmitter {
|
|
152
|
+
private handlers;
|
|
153
|
+
private activeJobs;
|
|
154
|
+
private pollTimer;
|
|
155
|
+
private running;
|
|
156
|
+
private readonly store;
|
|
157
|
+
private readonly pollIntervalMs;
|
|
158
|
+
private readonly concurrency;
|
|
159
|
+
private readonly retryBaseDelayMs;
|
|
160
|
+
private readonly retryMaxDelayMs;
|
|
161
|
+
private readonly staleThresholdMs;
|
|
162
|
+
constructor(config: JobQueueConfig);
|
|
163
|
+
/** Register a handler for a job type */
|
|
164
|
+
handle(type: string, handler: JobHandler): void;
|
|
165
|
+
/** Start the queue: init store, recover stale jobs, begin polling */
|
|
166
|
+
start(): Promise<void>;
|
|
167
|
+
/** Stop the queue (active jobs continue but no new ones are dequeued) */
|
|
168
|
+
stop(): Promise<void>;
|
|
169
|
+
/** Enqueue a new job */
|
|
170
|
+
enqueue(options: JobCreateOptions): Promise<JobRecord>;
|
|
171
|
+
/** Cancel a pending or running job */
|
|
172
|
+
cancel(jobId: string): Promise<JobRecord | null>;
|
|
173
|
+
/** Get a job by ID */
|
|
174
|
+
getJob(jobId: string): Promise<JobRecord | null>;
|
|
175
|
+
/** Get queue stats */
|
|
176
|
+
stats(): Promise<JobQueueStats>;
|
|
177
|
+
/** Whether the queue is running */
|
|
178
|
+
get isRunning(): boolean;
|
|
179
|
+
private poll;
|
|
180
|
+
private processJob;
|
|
181
|
+
private recoverStaleJobs;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=job-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-queue.d.ts","sourceRoot":"","sources":["../../lib/job-queue.ts"],"names":[],"mappings":"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"}
|