@yuaone/core 0.9.7 → 0.9.9

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.
Files changed (193) hide show
  1. package/dist/__tests__/context-manager.test.js +5 -9
  2. package/dist/__tests__/context-manager.test.js.map +1 -1
  3. package/dist/agent-coordinator.d.ts +172 -0
  4. package/dist/agent-coordinator.d.ts.map +1 -0
  5. package/dist/agent-coordinator.js +390 -0
  6. package/dist/agent-coordinator.js.map +1 -0
  7. package/dist/agent-loop.d.ts +83 -29
  8. package/dist/agent-loop.d.ts.map +1 -1
  9. package/dist/agent-loop.js +697 -335
  10. package/dist/agent-loop.js.map +1 -1
  11. package/dist/agent-reputation.d.ts +72 -0
  12. package/dist/agent-reputation.d.ts.map +1 -0
  13. package/dist/agent-reputation.js +222 -0
  14. package/dist/agent-reputation.js.map +1 -0
  15. package/dist/arch-summarizer.d.ts +48 -0
  16. package/dist/arch-summarizer.d.ts.map +1 -0
  17. package/dist/arch-summarizer.js +239 -0
  18. package/dist/arch-summarizer.js.map +1 -0
  19. package/dist/autonomous/explicit-planner.d.ts +45 -0
  20. package/dist/autonomous/explicit-planner.d.ts.map +1 -0
  21. package/dist/autonomous/explicit-planner.js +99 -0
  22. package/dist/autonomous/explicit-planner.js.map +1 -0
  23. package/dist/autonomous/incident-debugger.d.ts +78 -0
  24. package/dist/autonomous/incident-debugger.d.ts.map +1 -0
  25. package/dist/autonomous/incident-debugger.js +324 -0
  26. package/dist/autonomous/incident-debugger.js.map +1 -0
  27. package/dist/autonomous/index.d.ts +15 -0
  28. package/dist/autonomous/index.d.ts.map +1 -0
  29. package/dist/autonomous/index.js +10 -0
  30. package/dist/autonomous/index.js.map +1 -0
  31. package/dist/autonomous/patch-tournament.d.ts +82 -0
  32. package/dist/autonomous/patch-tournament.d.ts.map +1 -0
  33. package/dist/autonomous/patch-tournament.js +150 -0
  34. package/dist/autonomous/patch-tournament.js.map +1 -0
  35. package/dist/autonomous/research-agent.d.ts +66 -0
  36. package/dist/autonomous/research-agent.d.ts.map +1 -0
  37. package/dist/autonomous/research-agent.js +210 -0
  38. package/dist/autonomous/research-agent.js.map +1 -0
  39. package/dist/autonomous/task-memory.d.ts +63 -0
  40. package/dist/autonomous/task-memory.d.ts.map +1 -0
  41. package/dist/autonomous/task-memory.js +143 -0
  42. package/dist/autonomous/task-memory.js.map +1 -0
  43. package/dist/budget-governor-v2.d.ts +93 -0
  44. package/dist/budget-governor-v2.d.ts.map +1 -0
  45. package/dist/budget-governor-v2.js +345 -0
  46. package/dist/budget-governor-v2.js.map +1 -0
  47. package/dist/capability-graph.d.ts +102 -0
  48. package/dist/capability-graph.d.ts.map +1 -0
  49. package/dist/capability-graph.js +397 -0
  50. package/dist/capability-graph.js.map +1 -0
  51. package/dist/capability-self-model.d.ts +144 -0
  52. package/dist/capability-self-model.d.ts.map +1 -0
  53. package/dist/capability-self-model.js +312 -0
  54. package/dist/capability-self-model.js.map +1 -0
  55. package/dist/checkpoint-manager.d.ts +94 -0
  56. package/dist/checkpoint-manager.d.ts.map +1 -0
  57. package/dist/checkpoint-manager.js +225 -0
  58. package/dist/checkpoint-manager.js.map +1 -0
  59. package/dist/continuation-engine.js +1 -1
  60. package/dist/continuation-engine.js.map +1 -1
  61. package/dist/dag-orchestrator.d.ts +0 -3
  62. package/dist/dag-orchestrator.d.ts.map +1 -1
  63. package/dist/dag-orchestrator.js +0 -1
  64. package/dist/dag-orchestrator.js.map +1 -1
  65. package/dist/evidence-chain.d.ts +99 -0
  66. package/dist/evidence-chain.d.ts.map +1 -0
  67. package/dist/evidence-chain.js +200 -0
  68. package/dist/evidence-chain.js.map +1 -0
  69. package/dist/execution-engine.d.ts.map +1 -1
  70. package/dist/execution-engine.js +0 -1
  71. package/dist/execution-engine.js.map +1 -1
  72. package/dist/failure-signature-memory.d.ts +61 -0
  73. package/dist/failure-signature-memory.d.ts.map +1 -0
  74. package/dist/failure-signature-memory.js +278 -0
  75. package/dist/failure-signature-memory.js.map +1 -0
  76. package/dist/index.d.ts +52 -5
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +48 -7
  79. package/dist/index.js.map +1 -1
  80. package/dist/language-detector.d.ts.map +1 -1
  81. package/dist/language-detector.js +122 -43
  82. package/dist/language-detector.js.map +1 -1
  83. package/dist/llm-client.d.ts +0 -7
  84. package/dist/llm-client.d.ts.map +1 -1
  85. package/dist/llm-client.js +15 -122
  86. package/dist/llm-client.js.map +1 -1
  87. package/dist/mcp-client.js +1 -1
  88. package/dist/mcp-client.js.map +1 -1
  89. package/dist/memory.d.ts.map +1 -1
  90. package/dist/memory.js +0 -15
  91. package/dist/memory.js.map +1 -1
  92. package/dist/meta-learning-collector.d.ts +64 -0
  93. package/dist/meta-learning-collector.d.ts.map +1 -0
  94. package/dist/meta-learning-collector.js +169 -0
  95. package/dist/meta-learning-collector.js.map +1 -0
  96. package/dist/meta-learning-engine.d.ts +61 -0
  97. package/dist/meta-learning-engine.d.ts.map +1 -0
  98. package/dist/meta-learning-engine.js +250 -0
  99. package/dist/meta-learning-engine.js.map +1 -0
  100. package/dist/overhead-governor.d.ts +105 -0
  101. package/dist/overhead-governor.d.ts.map +1 -0
  102. package/dist/overhead-governor.js +239 -0
  103. package/dist/overhead-governor.js.map +1 -0
  104. package/dist/playbook-library.d.ts +75 -0
  105. package/dist/playbook-library.d.ts.map +1 -0
  106. package/dist/playbook-library.js +241 -0
  107. package/dist/playbook-library.js.map +1 -0
  108. package/dist/project-executive.d.ts +97 -0
  109. package/dist/project-executive.d.ts.map +1 -0
  110. package/dist/project-executive.js +223 -0
  111. package/dist/project-executive.js.map +1 -0
  112. package/dist/research-loop.d.ts +79 -0
  113. package/dist/research-loop.d.ts.map +1 -0
  114. package/dist/research-loop.js +363 -0
  115. package/dist/research-loop.js.map +1 -0
  116. package/dist/resolve-memory-path.d.ts +32 -0
  117. package/dist/resolve-memory-path.d.ts.map +1 -0
  118. package/dist/resolve-memory-path.js +97 -0
  119. package/dist/resolve-memory-path.js.map +1 -0
  120. package/dist/safe-bounds.d.ts +101 -0
  121. package/dist/safe-bounds.d.ts.map +1 -0
  122. package/dist/safe-bounds.js +140 -0
  123. package/dist/safe-bounds.js.map +1 -0
  124. package/dist/sandbox-tiers.d.ts +5 -0
  125. package/dist/sandbox-tiers.d.ts.map +1 -1
  126. package/dist/sandbox-tiers.js +14 -6
  127. package/dist/sandbox-tiers.js.map +1 -1
  128. package/dist/security.d.ts.map +1 -1
  129. package/dist/security.js +3 -0
  130. package/dist/security.js.map +1 -1
  131. package/dist/self-improvement-loop.d.ts +64 -0
  132. package/dist/self-improvement-loop.d.ts.map +1 -0
  133. package/dist/self-improvement-loop.js +156 -0
  134. package/dist/self-improvement-loop.js.map +1 -0
  135. package/dist/session-persistence.d.ts +5 -0
  136. package/dist/session-persistence.d.ts.map +1 -1
  137. package/dist/session-persistence.js +19 -3
  138. package/dist/session-persistence.js.map +1 -1
  139. package/dist/skill-loader.d.ts +16 -9
  140. package/dist/skill-loader.d.ts.map +1 -1
  141. package/dist/skill-loader.js +52 -116
  142. package/dist/skill-loader.js.map +1 -1
  143. package/dist/skill-registry.d.ts +60 -0
  144. package/dist/skill-registry.d.ts.map +1 -0
  145. package/dist/skill-registry.js +162 -0
  146. package/dist/skill-registry.js.map +1 -0
  147. package/dist/stall-detector.d.ts +56 -0
  148. package/dist/stall-detector.d.ts.map +1 -0
  149. package/dist/stall-detector.js +142 -0
  150. package/dist/stall-detector.js.map +1 -0
  151. package/dist/strategy-learner.d.ts +57 -0
  152. package/dist/strategy-learner.d.ts.map +1 -0
  153. package/dist/strategy-learner.js +160 -0
  154. package/dist/strategy-learner.js.map +1 -0
  155. package/dist/strategy-market.d.ts +73 -0
  156. package/dist/strategy-market.d.ts.map +1 -0
  157. package/dist/strategy-market.js +200 -0
  158. package/dist/strategy-market.js.map +1 -0
  159. package/dist/sub-agent.d.ts +0 -3
  160. package/dist/sub-agent.d.ts.map +1 -1
  161. package/dist/sub-agent.js +0 -10
  162. package/dist/sub-agent.js.map +1 -1
  163. package/dist/system-prompt.d.ts +0 -2
  164. package/dist/system-prompt.d.ts.map +1 -1
  165. package/dist/system-prompt.js +97 -490
  166. package/dist/system-prompt.js.map +1 -1
  167. package/dist/task-classifier.d.ts.map +1 -1
  168. package/dist/task-classifier.js +2 -54
  169. package/dist/task-classifier.js.map +1 -1
  170. package/dist/tool-synthesizer.d.ts +149 -0
  171. package/dist/tool-synthesizer.d.ts.map +1 -0
  172. package/dist/tool-synthesizer.js +455 -0
  173. package/dist/tool-synthesizer.js.map +1 -0
  174. package/dist/trace-pattern-extractor.d.ts +76 -0
  175. package/dist/trace-pattern-extractor.d.ts.map +1 -0
  176. package/dist/trace-pattern-extractor.js +321 -0
  177. package/dist/trace-pattern-extractor.js.map +1 -0
  178. package/dist/trace-recorder.d.ts +38 -0
  179. package/dist/trace-recorder.d.ts.map +1 -0
  180. package/dist/trace-recorder.js +94 -0
  181. package/dist/trace-recorder.js.map +1 -0
  182. package/dist/trust-economics.d.ts +50 -0
  183. package/dist/trust-economics.d.ts.map +1 -0
  184. package/dist/trust-economics.js +148 -0
  185. package/dist/trust-economics.js.map +1 -0
  186. package/dist/types.d.ts +272 -3
  187. package/dist/types.d.ts.map +1 -1
  188. package/dist/types.js.map +1 -1
  189. package/dist/yuan-md-loader.d.ts +22 -0
  190. package/dist/yuan-md-loader.d.ts.map +1 -0
  191. package/dist/yuan-md-loader.js +75 -0
  192. package/dist/yuan-md-loader.js.map +1 -0
  193. package/package.json +1 -1
@@ -5,7 +5,6 @@
5
5
  import { describe, it } from "node:test";
6
6
  import assert from "node:assert/strict";
7
7
  import { ContextManager } from "../context-manager.js";
8
- import { ContextOverflowError } from "../errors.js";
9
8
  // ─── Helpers ───
10
9
  function makeManager(overrides = {}) {
11
10
  return new ContextManager({
@@ -190,8 +189,8 @@ describe("ContextManager", () => {
190
189
  const tokensWith = cm.estimateTokens(withTools);
191
190
  assert.ok(tokensWith > tokensWithout, "Messages with tool calls should have higher token count");
192
191
  });
193
- // === 13. ContextOverflowError when compaction is insufficient ===
194
- it("throws ContextOverflowError when even compaction cannot fit", () => {
192
+ // === 13. Emergency trim when compaction is insufficient ===
193
+ it("returns trimmed messages when even compaction cannot fit", () => {
195
194
  // Extremely small limit
196
195
  const cm = makeManager({
197
196
  maxContextTokens: 20,
@@ -201,12 +200,9 @@ describe("ContextManager", () => {
201
200
  // Add a system message and a very long user message
202
201
  cm.addMessage(makeSystemMessage("System prompt that is fairly long to exceed the tiny limit we set."));
203
202
  cm.addMessage(makeUserMessage("x".repeat(500)));
204
- assert.throws(() => cm.prepareForLLM(), (err) => {
205
- assert.ok(err instanceof ContextOverflowError);
206
- assert.ok(err.currentTokens > 0);
207
- assert.ok(err.maxTokens > 0);
208
- return true;
209
- });
203
+ // prepareForLLM no longer throws it emergency-trims instead
204
+ const result = cm.prepareForLLM();
205
+ assert.ok(Array.isArray(result), "should return an array");
210
206
  });
211
207
  // === 14. Compression preserves head and tail ===
212
208
  it("compression keeps head and tail of long tool results", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"context-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/context-manager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/context-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * @module agent-coordinator
3
+ * @description Role-aware multi-agent coordinator.
4
+ *
5
+ * Sits above individual agent loops. Routes tasks to appropriate role agents,
6
+ * prevents resource conflicts, collects/merges results, enforces budget and
7
+ * approval constraints.
8
+ *
9
+ * Relationship to DAGOrchestrator:
10
+ * - DAGOrchestrator: raw DAG execution, parallel task scheduling, retry logic
11
+ * - AgentCoordinator: role routing, resource conflict prevention, budget
12
+ * enforcement, task history persistence — the orchestration layer
13
+ */
14
+ import { EventEmitter } from "node:events";
15
+ import type { RoleAgentType } from "./agent-reputation.js";
16
+ export type { RoleAgentType } from "./agent-reputation.js";
17
+ export interface CoordinatorTask {
18
+ /** Unique task ID */
19
+ id: string;
20
+ /** Human-readable goal for the agent */
21
+ goal: string;
22
+ /** Classifier-style task type (e.g. "feature", "security", "test") */
23
+ taskType: string;
24
+ /** Optional execution environment hint */
25
+ environment?: string;
26
+ /** Which role agent should handle this task */
27
+ requiredRole: RoleAgentType;
28
+ /** Execution priority */
29
+ priority: "high" | "normal" | "low";
30
+ /** Per-task wall-time limit in ms (default: no limit) */
31
+ timeoutMs?: number;
32
+ /** Max tokens this task is allowed to consume */
33
+ budgetTokens?: number;
34
+ /** Task IDs that must complete successfully before this task can run */
35
+ dependencies?: string[];
36
+ }
37
+ export interface CoordinatorResult {
38
+ taskId: string;
39
+ role: RoleAgentType;
40
+ outcome: "success" | "failure" | "skipped" | "timeout";
41
+ output: string;
42
+ tokenUsed: number;
43
+ latencyMs: number;
44
+ /** Resource IDs that were in conflict when this task started */
45
+ conflicts: string[];
46
+ }
47
+ export interface CoordinatorConfig {
48
+ /** Max concurrent tasks. Default: 1 (sequential — prevents conflicts) */
49
+ maxConcurrent?: number;
50
+ /** How long a resource lock stays active in ms. Default: 30000 */
51
+ conflictWindowMs?: number;
52
+ /** Directory for task history storage. Default: ~/.yuan/coordinator */
53
+ storageDir?: string;
54
+ }
55
+ /**
56
+ * Routes tasks to specialized role agents, prevents resource conflicts,
57
+ * and persists task history for audit and analysis.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const coordinator = new AgentCoordinator();
62
+ *
63
+ * const result = await coordinator.dispatch(
64
+ * {
65
+ * id: "task-1",
66
+ * goal: "Implement user authentication",
67
+ * taskType: "feature",
68
+ * requiredRole: "coder",
69
+ * priority: "high",
70
+ * timeoutMs: 120_000,
71
+ * },
72
+ * async (goal, role) => {
73
+ * // Call your actual agent loop here
74
+ * return agentLoop.run(goal, role);
75
+ * }
76
+ * );
77
+ * ```
78
+ */
79
+ export declare class AgentCoordinator extends EventEmitter {
80
+ private readonly maxConcurrent;
81
+ private readonly conflictWindowMs;
82
+ private readonly storageFile;
83
+ /** resource ID → lock info */
84
+ private readonly locks;
85
+ /** Currently executing task IDs */
86
+ private readonly activeTasks;
87
+ /** Completed task IDs in this session (used for dependency checks) */
88
+ private readonly completedIds;
89
+ /** Failed task IDs in this session (used to skip dependents) */
90
+ private readonly failedIds;
91
+ constructor(config?: CoordinatorConfig);
92
+ /**
93
+ * Dispatch a single task to the appropriate role agent.
94
+ *
95
+ * Steps:
96
+ * 1. Verify dependencies are complete
97
+ * 2. Check for resource conflicts (goal keywords as resource IDs)
98
+ * 3. Lock resources
99
+ * 4. Execute runAgent with optional timeout
100
+ * 5. Release locks
101
+ * 6. Persist to history
102
+ * 7. Emit events and return result
103
+ *
104
+ * @param task - Task to execute
105
+ * @param runAgent - Caller-provided execution function
106
+ */
107
+ dispatch(task: CoordinatorTask, runAgent: (goal: string, role: RoleAgentType) => Promise<string>): Promise<CoordinatorResult>;
108
+ /**
109
+ * Dispatch multiple tasks in dependency order (topological sort).
110
+ *
111
+ * Respects maxConcurrent (default 1 = sequential). Skips tasks whose
112
+ * dependencies have failed.
113
+ *
114
+ * @param tasks - List of tasks; may include cross-task dependencies
115
+ * @param runAgent - Caller-provided execution function
116
+ */
117
+ dispatchBatch(tasks: CoordinatorTask[], runAgent: (goal: string, role: RoleAgentType) => Promise<string>): Promise<CoordinatorResult[]>;
118
+ /**
119
+ * Check whether a resource is currently locked by another task.
120
+ *
121
+ * A lock is considered active if it exists and has not expired.
122
+ *
123
+ * @param resourceId - Resource identifier to check
124
+ */
125
+ isConflict(resourceId: string): boolean;
126
+ /**
127
+ * Acquire an exclusive lock on a resource for the given task.
128
+ * Overwrites any existing (possibly expired) lock.
129
+ *
130
+ * @param resourceId - Resource to lock
131
+ * @param taskId - Task acquiring the lock
132
+ */
133
+ lockResource(resourceId: string, taskId: string): void;
134
+ /**
135
+ * Release a resource lock.
136
+ *
137
+ * @param resourceId - Resource to unlock
138
+ */
139
+ releaseResource(resourceId: string): void;
140
+ /**
141
+ * Get all currently executing tasks.
142
+ */
143
+ getActiveTasks(): CoordinatorTask[];
144
+ /**
145
+ * Return dependency task IDs that have not yet completed.
146
+ */
147
+ private getUnmetDependencies;
148
+ /**
149
+ * Extract resource IDs from a goal string.
150
+ * Uses significant words (>3 chars, non-common) as resource keys.
151
+ * This is a lightweight heuristic — callers can pre-lock specific resources
152
+ * with lockResource() for precise control.
153
+ */
154
+ private extractResourceIds;
155
+ /**
156
+ * Topological sort of tasks by their dependency graph.
157
+ * Tasks with no dependencies come first; tasks with satisfied dependencies
158
+ * come after their prerequisites.
159
+ * Ties broken by priority (high > normal > low) then by original order.
160
+ */
161
+ private topoSort;
162
+ /**
163
+ * Append a result to the persistent task history file (last HISTORY_MAX entries).
164
+ * Uses atomic rename to prevent partial writes.
165
+ */
166
+ private appendHistory;
167
+ /**
168
+ * Ensure the storage directory exists.
169
+ */
170
+ private ensureStorageDir;
171
+ }
172
+ //# sourceMappingURL=agent-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-coordinator.d.ts","sourceRoot":"","sources":["../src/agent-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,390 @@
1
+ /**
2
+ * @module agent-coordinator
3
+ * @description Role-aware multi-agent coordinator.
4
+ *
5
+ * Sits above individual agent loops. Routes tasks to appropriate role agents,
6
+ * prevents resource conflicts, collects/merges results, enforces budget and
7
+ * approval constraints.
8
+ *
9
+ * Relationship to DAGOrchestrator:
10
+ * - DAGOrchestrator: raw DAG execution, parallel task scheduling, retry logic
11
+ * - AgentCoordinator: role routing, resource conflict prevention, budget
12
+ * enforcement, task history persistence — the orchestration layer
13
+ */
14
+ import { EventEmitter } from "node:events";
15
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
16
+ import { homedir } from "node:os";
17
+ import { join } from "node:path";
18
+ // ─── Constants ───
19
+ const HISTORY_MAX = 500;
20
+ const DEFAULT_MAX_CONCURRENT = 1;
21
+ const DEFAULT_CONFLICT_WINDOW_MS = 30_000;
22
+ // ─── AgentCoordinator ───
23
+ /**
24
+ * Routes tasks to specialized role agents, prevents resource conflicts,
25
+ * and persists task history for audit and analysis.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const coordinator = new AgentCoordinator();
30
+ *
31
+ * const result = await coordinator.dispatch(
32
+ * {
33
+ * id: "task-1",
34
+ * goal: "Implement user authentication",
35
+ * taskType: "feature",
36
+ * requiredRole: "coder",
37
+ * priority: "high",
38
+ * timeoutMs: 120_000,
39
+ * },
40
+ * async (goal, role) => {
41
+ * // Call your actual agent loop here
42
+ * return agentLoop.run(goal, role);
43
+ * }
44
+ * );
45
+ * ```
46
+ */
47
+ export class AgentCoordinator extends EventEmitter {
48
+ maxConcurrent;
49
+ conflictWindowMs;
50
+ storageFile;
51
+ /** resource ID → lock info */
52
+ locks = new Map();
53
+ /** Currently executing task IDs */
54
+ activeTasks = new Map();
55
+ /** Completed task IDs in this session (used for dependency checks) */
56
+ completedIds = new Set();
57
+ /** Failed task IDs in this session (used to skip dependents) */
58
+ failedIds = new Set();
59
+ constructor(config) {
60
+ super();
61
+ this.maxConcurrent = config?.maxConcurrent ?? DEFAULT_MAX_CONCURRENT;
62
+ this.conflictWindowMs = config?.conflictWindowMs ?? DEFAULT_CONFLICT_WINDOW_MS;
63
+ const storageDir = config?.storageDir ?? join(homedir(), ".yuan", "coordinator");
64
+ this.storageFile = join(storageDir, "task-history.json");
65
+ this.ensureStorageDir(storageDir);
66
+ }
67
+ // ─── Public API ───
68
+ /**
69
+ * Dispatch a single task to the appropriate role agent.
70
+ *
71
+ * Steps:
72
+ * 1. Verify dependencies are complete
73
+ * 2. Check for resource conflicts (goal keywords as resource IDs)
74
+ * 3. Lock resources
75
+ * 4. Execute runAgent with optional timeout
76
+ * 5. Release locks
77
+ * 6. Persist to history
78
+ * 7. Emit events and return result
79
+ *
80
+ * @param task - Task to execute
81
+ * @param runAgent - Caller-provided execution function
82
+ */
83
+ async dispatch(task, runAgent) {
84
+ // 1. Dependency check
85
+ const unmet = this.getUnmetDependencies(task);
86
+ if (unmet.length > 0) {
87
+ const result = {
88
+ taskId: task.id,
89
+ role: task.requiredRole,
90
+ outcome: "skipped",
91
+ output: `Skipped: unmet dependencies [${unmet.join(", ")}]`,
92
+ tokenUsed: 0,
93
+ latencyMs: 0,
94
+ conflicts: [],
95
+ };
96
+ this.appendHistory(task, result);
97
+ return result;
98
+ }
99
+ // 2. Check for resource conflicts
100
+ const resourceIds = this.extractResourceIds(task.goal);
101
+ const conflicts = resourceIds.filter((r) => this.isConflict(r));
102
+ if (conflicts.length > 0) {
103
+ this.emit("agent:coordinator_conflict", {
104
+ kind: "agent:coordinator_conflict",
105
+ taskId: task.id,
106
+ conflictedWith: conflicts,
107
+ resourceId: conflicts[0],
108
+ timestamp: new Date().toISOString(),
109
+ });
110
+ }
111
+ // 3. Lock resources and mark as active
112
+ for (const resourceId of resourceIds) {
113
+ this.lockResource(resourceId, task.id);
114
+ }
115
+ this.activeTasks.set(task.id, task);
116
+ this.emit("agent:coordinator_task_started", {
117
+ kind: "agent:coordinator_task_started",
118
+ taskId: task.id,
119
+ role: task.requiredRole,
120
+ goal: task.goal,
121
+ timestamp: new Date().toISOString(),
122
+ });
123
+ // 4. Execute with optional timeout
124
+ const startTime = Date.now();
125
+ let outcome = "success";
126
+ let output = "";
127
+ let tokenUsed = 0;
128
+ try {
129
+ const agentPromise = runAgent(task.goal, task.requiredRole);
130
+ if (task.timeoutMs != null) {
131
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Task timed out after ${task.timeoutMs}ms`)), task.timeoutMs));
132
+ output = await Promise.race([agentPromise, timeoutPromise]);
133
+ }
134
+ else {
135
+ output = await agentPromise;
136
+ }
137
+ this.completedIds.add(task.id);
138
+ }
139
+ catch (err) {
140
+ const errMsg = err instanceof Error ? err.message : String(err);
141
+ outcome = errMsg.includes("timed out") ? "timeout" : "failure";
142
+ output = errMsg;
143
+ this.failedIds.add(task.id);
144
+ }
145
+ finally {
146
+ // 5. Release locks
147
+ for (const resourceId of resourceIds) {
148
+ this.releaseResource(resourceId);
149
+ }
150
+ this.activeTasks.delete(task.id);
151
+ }
152
+ const latencyMs = Date.now() - startTime;
153
+ const result = {
154
+ taskId: task.id,
155
+ role: task.requiredRole,
156
+ outcome,
157
+ output,
158
+ tokenUsed,
159
+ latencyMs,
160
+ conflicts,
161
+ };
162
+ // 6. Persist history
163
+ this.appendHistory(task, result);
164
+ // 7. Emit completion event
165
+ this.emit("agent:coordinator_task_complete", {
166
+ kind: "agent:coordinator_task_complete",
167
+ taskId: task.id,
168
+ role: task.requiredRole,
169
+ outcome,
170
+ tokenUsed,
171
+ latencyMs,
172
+ timestamp: new Date().toISOString(),
173
+ });
174
+ return result;
175
+ }
176
+ /**
177
+ * Dispatch multiple tasks in dependency order (topological sort).
178
+ *
179
+ * Respects maxConcurrent (default 1 = sequential). Skips tasks whose
180
+ * dependencies have failed.
181
+ *
182
+ * @param tasks - List of tasks; may include cross-task dependencies
183
+ * @param runAgent - Caller-provided execution function
184
+ */
185
+ async dispatchBatch(tasks, runAgent) {
186
+ const sorted = this.topoSort(tasks);
187
+ const results = [];
188
+ // Sequential execution (maxConcurrent=1 is default and the safe path)
189
+ // Future: implement concurrent slot tracking when maxConcurrent > 1
190
+ for (const task of sorted) {
191
+ // Skip if a dependency failed
192
+ const hasFailed = (task.dependencies ?? []).some((dep) => this.failedIds.has(dep));
193
+ if (hasFailed) {
194
+ const skipped = {
195
+ taskId: task.id,
196
+ role: task.requiredRole,
197
+ outcome: "skipped",
198
+ output: `Skipped: dependency failed`,
199
+ tokenUsed: 0,
200
+ latencyMs: 0,
201
+ conflicts: [],
202
+ };
203
+ this.failedIds.add(task.id); // propagate skip as failure for downstream
204
+ this.appendHistory(task, skipped);
205
+ results.push(skipped);
206
+ continue;
207
+ }
208
+ const result = await this.dispatch(task, runAgent);
209
+ results.push(result);
210
+ }
211
+ return results;
212
+ }
213
+ /**
214
+ * Check whether a resource is currently locked by another task.
215
+ *
216
+ * A lock is considered active if it exists and has not expired.
217
+ *
218
+ * @param resourceId - Resource identifier to check
219
+ */
220
+ isConflict(resourceId) {
221
+ const lock = this.locks.get(resourceId);
222
+ if (!lock)
223
+ return false;
224
+ if (Date.now() > lock.expiresAt) {
225
+ this.locks.delete(resourceId);
226
+ return false;
227
+ }
228
+ return true;
229
+ }
230
+ /**
231
+ * Acquire an exclusive lock on a resource for the given task.
232
+ * Overwrites any existing (possibly expired) lock.
233
+ *
234
+ * @param resourceId - Resource to lock
235
+ * @param taskId - Task acquiring the lock
236
+ */
237
+ lockResource(resourceId, taskId) {
238
+ this.locks.set(resourceId, {
239
+ taskId,
240
+ expiresAt: Date.now() + this.conflictWindowMs,
241
+ });
242
+ }
243
+ /**
244
+ * Release a resource lock.
245
+ *
246
+ * @param resourceId - Resource to unlock
247
+ */
248
+ releaseResource(resourceId) {
249
+ this.locks.delete(resourceId);
250
+ }
251
+ /**
252
+ * Get all currently executing tasks.
253
+ */
254
+ getActiveTasks() {
255
+ return Array.from(this.activeTasks.values());
256
+ }
257
+ // ─── Private helpers ───
258
+ /**
259
+ * Return dependency task IDs that have not yet completed.
260
+ */
261
+ getUnmetDependencies(task) {
262
+ if (!task.dependencies || task.dependencies.length === 0)
263
+ return [];
264
+ return task.dependencies.filter((dep) => !this.completedIds.has(dep));
265
+ }
266
+ /**
267
+ * Extract resource IDs from a goal string.
268
+ * Uses significant words (>3 chars, non-common) as resource keys.
269
+ * This is a lightweight heuristic — callers can pre-lock specific resources
270
+ * with lockResource() for precise control.
271
+ */
272
+ extractResourceIds(goal) {
273
+ const stopWords = new Set([
274
+ "the", "and", "for", "with", "that", "this", "from", "into",
275
+ "have", "will", "should", "must", "also", "only", "then",
276
+ ]);
277
+ return goal
278
+ .toLowerCase()
279
+ .replace(/[^a-z0-9\s_/-]/g, " ")
280
+ .split(/\s+/)
281
+ .filter((w) => w.length > 3 && !stopWords.has(w))
282
+ .slice(0, 5); // cap to 5 resource IDs per task
283
+ }
284
+ /**
285
+ * Topological sort of tasks by their dependency graph.
286
+ * Tasks with no dependencies come first; tasks with satisfied dependencies
287
+ * come after their prerequisites.
288
+ * Ties broken by priority (high > normal > low) then by original order.
289
+ */
290
+ topoSort(tasks) {
291
+ const PRIORITY_WEIGHT = {
292
+ high: 3,
293
+ normal: 2,
294
+ low: 1,
295
+ };
296
+ const taskMap = new Map(tasks.map((t) => [t.id, t]));
297
+ const inDegree = new Map(tasks.map((t) => [t.id, 0]));
298
+ const reverseDeps = new Map(tasks.map((t) => [t.id, []]));
299
+ for (const task of tasks) {
300
+ for (const dep of task.dependencies ?? []) {
301
+ inDegree.set(task.id, (inDegree.get(task.id) ?? 0) + 1);
302
+ if (taskMap.has(dep)) {
303
+ reverseDeps.get(dep).push(task.id);
304
+ }
305
+ else {
306
+ // External dependency — treat as already satisfied
307
+ inDegree.set(task.id, Math.max(0, (inDegree.get(task.id) ?? 0) - 1));
308
+ }
309
+ }
310
+ }
311
+ const queue = tasks
312
+ .filter((t) => (inDegree.get(t.id) ?? 0) === 0)
313
+ .sort((a, b) => PRIORITY_WEIGHT[b.priority] - PRIORITY_WEIGHT[a.priority]);
314
+ const sorted = [];
315
+ while (queue.length > 0) {
316
+ const task = queue.shift();
317
+ sorted.push(task);
318
+ const dependents = reverseDeps.get(task.id) ?? [];
319
+ const unblocked = [];
320
+ for (const depId of dependents) {
321
+ const newDeg = (inDegree.get(depId) ?? 0) - 1;
322
+ inDegree.set(depId, newDeg);
323
+ if (newDeg === 0) {
324
+ const depTask = taskMap.get(depId);
325
+ if (depTask)
326
+ unblocked.push(depTask);
327
+ }
328
+ }
329
+ // Insert unblocked tasks in priority order
330
+ unblocked.sort((a, b) => PRIORITY_WEIGHT[b.priority] - PRIORITY_WEIGHT[a.priority]);
331
+ queue.push(...unblocked);
332
+ }
333
+ // Any tasks not in sorted (circular deps) go at the end in original order
334
+ const sortedIds = new Set(sorted.map((t) => t.id));
335
+ for (const task of tasks) {
336
+ if (!sortedIds.has(task.id))
337
+ sorted.push(task);
338
+ }
339
+ return sorted;
340
+ }
341
+ /**
342
+ * Append a result to the persistent task history file (last HISTORY_MAX entries).
343
+ * Uses atomic rename to prevent partial writes.
344
+ */
345
+ appendHistory(task, result) {
346
+ try {
347
+ let history = [];
348
+ if (existsSync(this.storageFile)) {
349
+ const raw = readFileSync(this.storageFile, "utf-8");
350
+ const parsed = JSON.parse(raw);
351
+ if (Array.isArray(parsed))
352
+ history = parsed;
353
+ }
354
+ history.push({
355
+ taskId: task.id,
356
+ role: task.requiredRole,
357
+ goal: task.goal,
358
+ taskType: task.taskType,
359
+ outcome: result.outcome,
360
+ tokenUsed: result.tokenUsed,
361
+ latencyMs: result.latencyMs,
362
+ timestamp: new Date().toISOString(),
363
+ });
364
+ // Keep only the last HISTORY_MAX entries
365
+ if (history.length > HISTORY_MAX) {
366
+ history = history.slice(history.length - HISTORY_MAX);
367
+ }
368
+ const tmpFile = `${this.storageFile}.tmp`;
369
+ writeFileSync(tmpFile, JSON.stringify(history, null, 2), "utf-8");
370
+ renameSync(tmpFile, this.storageFile);
371
+ }
372
+ catch {
373
+ // Non-fatal: storage failures must not crash the agent loop
374
+ }
375
+ }
376
+ /**
377
+ * Ensure the storage directory exists.
378
+ */
379
+ ensureStorageDir(dir) {
380
+ try {
381
+ if (!existsSync(dir)) {
382
+ mkdirSync(dir, { recursive: true });
383
+ }
384
+ }
385
+ catch {
386
+ // Non-fatal
387
+ }
388
+ }
389
+ }
390
+ //# sourceMappingURL=agent-coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-coordinator.js","sourceRoot":"","sources":["../src/agent-coordinator.ts"],"names":[],"mappings":"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"}