@weave_protocol/domere 1.0.18 → 1.2.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/dist/index.d.ts CHANGED
@@ -13,4 +13,5 @@ export * from './storage/index.js';
13
13
  export * from "./audit/index.js";
14
14
  export * from "./handoff/index.js";
15
15
  export * from "./compliance/index.js";
16
+ export * from "./orchestration/index.js";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAMH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA2BnE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAMH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA2BnE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -38,4 +38,5 @@ export * from './storage/index.js';
38
38
  export * from "./audit/index.js";
39
39
  export * from "./handoff/index.js";
40
40
  export * from "./compliance/index.js";
41
+ export * from "./orchestration/index.js";
41
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjG,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAEnD,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,IAA+B,CAAC,CAAC;QACnF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC7C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AAEnC,qBAAqB;AACrB,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjG,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAEnD,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,IAA+B,CAAC,CAAC;QACnF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC7C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AAEnC,qBAAqB;AACrB,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Dōmere - Orchestration Module
3
+ *
4
+ * Multi-agent coordination infrastructure for AI systems.
5
+ * Provides task scheduling, agent registry, and shared state management.
6
+ */
7
+ export * from './scheduler.js';
8
+ export * from './registry.js';
9
+ export * from './state.js';
10
+ import { TaskScheduler, Task } from './scheduler.js';
11
+ import { AgentRegistry, Agent } from './registry.js';
12
+ import { StateManager } from './state.js';
13
+ export interface OrchestratorConfig {
14
+ max_agents?: number;
15
+ default_task_timeout_ms?: number;
16
+ heartbeat_interval_ms?: number;
17
+ state_conflict_resolution?: 'last-write-wins' | 'first-write-wins' | 'merge' | 'manual';
18
+ auto_reassign_on_failure?: boolean;
19
+ }
20
+ export interface OrchestratorStats {
21
+ agents: {
22
+ total: number;
23
+ ready: number;
24
+ busy: number;
25
+ offline: number;
26
+ };
27
+ tasks: {
28
+ total: number;
29
+ queued: number;
30
+ running: number;
31
+ completed: number;
32
+ failed: number;
33
+ };
34
+ state: {
35
+ keys: number;
36
+ branches: number;
37
+ locks: number;
38
+ };
39
+ }
40
+ /**
41
+ * Unified orchestrator combining scheduler, registry, and state
42
+ */
43
+ export declare class Orchestrator {
44
+ readonly scheduler: TaskScheduler;
45
+ readonly registry: AgentRegistry;
46
+ readonly state: StateManager;
47
+ private config;
48
+ private running;
49
+ constructor(config?: OrchestratorConfig);
50
+ /**
51
+ * Start the orchestrator
52
+ */
53
+ start(): Promise<void>;
54
+ /**
55
+ * Stop the orchestrator
56
+ */
57
+ stop(): Promise<void>;
58
+ /**
59
+ * Register an agent
60
+ */
61
+ registerAgent(params: {
62
+ id?: string;
63
+ name?: string;
64
+ capabilities: string[];
65
+ max_concurrent_tasks?: number;
66
+ }): Promise<Agent>;
67
+ /**
68
+ * Submit a task
69
+ */
70
+ submitTask(params: {
71
+ intent: string;
72
+ priority?: 'critical' | 'high' | 'normal' | 'low' | 'background';
73
+ dependencies?: string[];
74
+ required_capabilities?: string[];
75
+ timeout_ms?: number;
76
+ }): Promise<Task>;
77
+ /**
78
+ * Get orchestrator statistics
79
+ */
80
+ getStats(): OrchestratorStats;
81
+ /**
82
+ * Agent heartbeat (call from agent)
83
+ */
84
+ heartbeat(agentId: string, currentTasks: string[]): Promise<{
85
+ ok: boolean;
86
+ tasks_to_run?: Task[];
87
+ }>;
88
+ /**
89
+ * Report task started (call from agent)
90
+ */
91
+ taskStarted(agentId: string, taskId: string): Promise<void>;
92
+ /**
93
+ * Report task progress (call from agent)
94
+ */
95
+ taskProgress(agentId: string, taskId: string, percent: number, message?: string): Promise<void>;
96
+ /**
97
+ * Report task completed (call from agent)
98
+ */
99
+ taskCompleted(agentId: string, taskId: string, result?: any): Promise<void>;
100
+ /**
101
+ * Report task failed (call from agent)
102
+ */
103
+ taskFailed(agentId: string, taskId: string, error: string): Promise<void>;
104
+ private setupEventHandlers;
105
+ /**
106
+ * Get shared state value
107
+ */
108
+ getState(key: string): Promise<any>;
109
+ /**
110
+ * Set shared state value (with optional lock)
111
+ */
112
+ setState(key: string, value: any, agentId: string, options?: {
113
+ lock?: boolean;
114
+ }): Promise<void>;
115
+ /**
116
+ * Lock state key
117
+ */
118
+ lockState(key: string, agentId: string, durationMs?: number): Promise<boolean>;
119
+ /**
120
+ * Unlock state key
121
+ */
122
+ unlockState(key: string, agentId: string): Promise<boolean>;
123
+ }
124
+ export default Orchestrator;
125
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestration/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Dōmere - Orchestration Module
3
+ *
4
+ * Multi-agent coordination infrastructure for AI systems.
5
+ * Provides task scheduling, agent registry, and shared state management.
6
+ */
7
+ export * from './scheduler.js';
8
+ export * from './registry.js';
9
+ export * from './state.js';
10
+ import { TaskScheduler } from './scheduler.js';
11
+ import { AgentRegistry } from './registry.js';
12
+ import { StateManager } from './state.js';
13
+ /**
14
+ * Unified orchestrator combining scheduler, registry, and state
15
+ */
16
+ export class Orchestrator {
17
+ scheduler;
18
+ registry;
19
+ state;
20
+ config;
21
+ running = false;
22
+ constructor(config) {
23
+ this.config = {
24
+ max_agents: 16,
25
+ default_task_timeout_ms: 300000,
26
+ heartbeat_interval_ms: 5000,
27
+ state_conflict_resolution: 'last-write-wins',
28
+ auto_reassign_on_failure: true,
29
+ ...config,
30
+ };
31
+ // Initialize components
32
+ this.registry = new AgentRegistry({
33
+ heartbeat_interval_ms: this.config.heartbeat_interval_ms,
34
+ heartbeat_timeout_ms: this.config.heartbeat_interval_ms * 3,
35
+ });
36
+ this.scheduler = new TaskScheduler({
37
+ agentGetter: async () => {
38
+ const agents = this.registry.getAllAgents();
39
+ return agents.map(a => ({
40
+ id: a.id,
41
+ available: a.status === 'ready' || a.status === 'busy',
42
+ capabilities: a.capabilities,
43
+ current_load: a.metrics.current_load,
44
+ }));
45
+ },
46
+ });
47
+ this.state = new StateManager({
48
+ conflict_resolution: this.config.state_conflict_resolution,
49
+ });
50
+ // Wire up event handlers
51
+ this.setupEventHandlers();
52
+ }
53
+ /**
54
+ * Start the orchestrator
55
+ */
56
+ async start() {
57
+ this.running = true;
58
+ console.log('[Orchestrator] Started');
59
+ }
60
+ /**
61
+ * Stop the orchestrator
62
+ */
63
+ async stop() {
64
+ this.running = false;
65
+ // Drain all agents
66
+ const agents = this.registry.getAllAgents();
67
+ for (const agent of agents) {
68
+ await this.registry.drain(agent.id);
69
+ }
70
+ console.log('[Orchestrator] Stopped');
71
+ }
72
+ /**
73
+ * Register an agent
74
+ */
75
+ async registerAgent(params) {
76
+ const agents = this.registry.getAllAgents();
77
+ if (agents.length >= this.config.max_agents) {
78
+ throw new Error(`Maximum agents (${this.config.max_agents}) reached`);
79
+ }
80
+ const agent = await this.registry.register({
81
+ agent_id: params.id,
82
+ name: params.name,
83
+ capabilities: params.capabilities,
84
+ max_concurrent_tasks: params.max_concurrent_tasks,
85
+ heartbeat_interval_ms: this.config.heartbeat_interval_ms,
86
+ });
87
+ return agent;
88
+ }
89
+ /**
90
+ * Submit a task
91
+ */
92
+ async submitTask(params) {
93
+ const task = await this.scheduler.createTask({
94
+ intent: params.intent,
95
+ priority: params.priority,
96
+ dependencies: params.dependencies,
97
+ constraints: {
98
+ required_capabilities: params.required_capabilities,
99
+ max_duration_ms: params.timeout_ms || this.config.default_task_timeout_ms,
100
+ },
101
+ });
102
+ // Try to assign immediately if agents available
103
+ try {
104
+ const queued = this.scheduler.getTasksByStatus('queued');
105
+ if (queued.find(t => t.id === task.id)) {
106
+ await this.scheduler.assignTask(task.id);
107
+ }
108
+ }
109
+ catch (e) {
110
+ // No available agent, will be assigned later
111
+ }
112
+ return task;
113
+ }
114
+ /**
115
+ * Get orchestrator statistics
116
+ */
117
+ getStats() {
118
+ const agentStats = this.registry.getStats();
119
+ const taskStats = this.scheduler.getStats();
120
+ const stateStats = this.state.getStats();
121
+ return {
122
+ agents: {
123
+ total: agentStats.total_agents,
124
+ ready: agentStats.by_status.ready,
125
+ busy: agentStats.by_status.busy,
126
+ offline: agentStats.by_status.offline + agentStats.by_status.failed,
127
+ },
128
+ tasks: {
129
+ total: taskStats.total_tasks,
130
+ queued: taskStats.by_status.queued,
131
+ running: taskStats.by_status.running,
132
+ completed: taskStats.by_status.completed,
133
+ failed: taskStats.by_status.failed,
134
+ },
135
+ state: {
136
+ keys: stateStats.total_keys,
137
+ branches: stateStats.branches,
138
+ locks: stateStats.active_locks,
139
+ },
140
+ };
141
+ }
142
+ /**
143
+ * Agent heartbeat (call from agent)
144
+ */
145
+ async heartbeat(agentId, currentTasks) {
146
+ const result = await this.registry.heartbeat({
147
+ agent_id: agentId,
148
+ current_tasks: currentTasks,
149
+ });
150
+ if (!result.acknowledged) {
151
+ return { ok: false };
152
+ }
153
+ // Check for new tasks to assign
154
+ const agent = this.registry.getAgent(agentId);
155
+ if (!agent)
156
+ return { ok: false };
157
+ const availableSlots = agent.max_concurrent_tasks - agent.current_tasks.length;
158
+ const tasksToRun = [];
159
+ for (let i = 0; i < availableSlots; i++) {
160
+ const task = await this.scheduler.getNextTask(agentId, agent.capabilities);
161
+ if (task) {
162
+ await this.scheduler.assignTask(task.id, agentId);
163
+ await this.registry.assignTask(agentId, task.id);
164
+ tasksToRun.push(task);
165
+ }
166
+ else {
167
+ break;
168
+ }
169
+ }
170
+ return { ok: true, tasks_to_run: tasksToRun.length > 0 ? tasksToRun : undefined };
171
+ }
172
+ /**
173
+ * Report task started (call from agent)
174
+ */
175
+ async taskStarted(agentId, taskId) {
176
+ await this.scheduler.startTask(taskId, agentId);
177
+ }
178
+ /**
179
+ * Report task progress (call from agent)
180
+ */
181
+ async taskProgress(agentId, taskId, percent, message) {
182
+ await this.scheduler.reportProgress(taskId, agentId, percent, undefined, message);
183
+ }
184
+ /**
185
+ * Report task completed (call from agent)
186
+ */
187
+ async taskCompleted(agentId, taskId, result) {
188
+ const taskResult = await this.scheduler.completeTask(taskId, agentId, result);
189
+ await this.registry.completeTask(agentId, taskId, true, taskResult.duration_ms);
190
+ }
191
+ /**
192
+ * Report task failed (call from agent)
193
+ */
194
+ async taskFailed(agentId, taskId, error) {
195
+ const taskResult = await this.scheduler.failTask(taskId, agentId, error);
196
+ await this.registry.completeTask(agentId, taskId, false, taskResult.duration_ms);
197
+ }
198
+ // ===========================================================================
199
+ // Event Handlers
200
+ // ===========================================================================
201
+ setupEventHandlers() {
202
+ // Handle agent going offline
203
+ this.registry.onAgentDown(async (agent, activeTasks) => {
204
+ console.log(`[Orchestrator] Agent ${agent.id} went down with ${activeTasks.length} active tasks`);
205
+ if (this.config.auto_reassign_on_failure) {
206
+ // Release all locks held by agent
207
+ await this.state.releaseAllLocks(agent.id);
208
+ // Reassign tasks
209
+ const reassignments = await this.scheduler.reassignFromAgent(agent.id);
210
+ console.log(`[Orchestrator] Reassigned ${reassignments.length} tasks from failed agent`);
211
+ }
212
+ });
213
+ // Log task completions
214
+ this.scheduler.onAnyTaskComplete((result) => {
215
+ console.log(`[Orchestrator] Task ${result.task_id} ${result.status} in ${result.duration_ms}ms`);
216
+ });
217
+ }
218
+ // ===========================================================================
219
+ // Convenience Methods for State
220
+ // ===========================================================================
221
+ /**
222
+ * Get shared state value
223
+ */
224
+ async getState(key) {
225
+ return this.state.get(key);
226
+ }
227
+ /**
228
+ * Set shared state value (with optional lock)
229
+ */
230
+ async setState(key, value, agentId, options) {
231
+ if (options?.lock) {
232
+ const lockResult = await this.state.acquireLock({ key, holder: agentId });
233
+ if (!lockResult.acquired) {
234
+ throw new Error(`Could not acquire lock on ${key}: ${lockResult.reason}`);
235
+ }
236
+ }
237
+ await this.state.set(key, value, { agent_id: agentId });
238
+ }
239
+ /**
240
+ * Lock state key
241
+ */
242
+ async lockState(key, agentId, durationMs) {
243
+ const result = await this.state.acquireLock({
244
+ key,
245
+ holder: agentId,
246
+ duration_ms: durationMs,
247
+ });
248
+ return result.acquired;
249
+ }
250
+ /**
251
+ * Unlock state key
252
+ */
253
+ async unlockState(key, agentId) {
254
+ return this.state.releaseLock(key, agentId);
255
+ }
256
+ }
257
+ export default Orchestrator;
258
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestration/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Dōmere - Agent Registry
3
+ *
4
+ * Agent lifecycle management, health monitoring, and capability tracking
5
+ * for multi-agent AI orchestration systems.
6
+ */
7
+ export type AgentStatus = 'initializing' | 'ready' | 'busy' | 'overloaded' | 'draining' | 'offline' | 'failed';
8
+ export interface Agent {
9
+ id: string;
10
+ name?: string;
11
+ status: AgentStatus;
12
+ registered_at: Date;
13
+ last_heartbeat: Date;
14
+ capabilities: string[];
15
+ max_concurrent_tasks: number;
16
+ current_tasks: string[];
17
+ metrics: AgentMetrics;
18
+ config: AgentConfig;
19
+ metadata: Record<string, any>;
20
+ }
21
+ export interface AgentConfig {
22
+ heartbeat_interval_ms: number;
23
+ heartbeat_timeout_ms: number;
24
+ drain_timeout_ms: number;
25
+ auto_recover: boolean;
26
+ }
27
+ export interface AgentMetrics {
28
+ tasks_completed: number;
29
+ tasks_failed: number;
30
+ total_duration_ms: number;
31
+ avg_duration_ms: number;
32
+ success_rate: number;
33
+ current_load: number;
34
+ uptime_ms: number;
35
+ last_task_completed_at?: Date;
36
+ }
37
+ export interface AgentRegistration {
38
+ agent_id?: string;
39
+ name?: string;
40
+ capabilities: string[];
41
+ max_concurrent_tasks?: number;
42
+ heartbeat_interval_ms?: number;
43
+ metadata?: Record<string, any>;
44
+ }
45
+ export interface HeartbeatPayload {
46
+ agent_id: string;
47
+ status?: AgentStatus;
48
+ current_tasks?: string[];
49
+ metrics_update?: Partial<AgentMetrics>;
50
+ metadata_update?: Record<string, any>;
51
+ }
52
+ export interface AgentQuery {
53
+ capabilities?: string[];
54
+ status?: AgentStatus[];
55
+ min_available_slots?: number;
56
+ max_load?: number;
57
+ exclude?: string[];
58
+ }
59
+ export interface AgentEvent {
60
+ type: 'registered' | 'ready' | 'busy' | 'overloaded' | 'draining' | 'offline' | 'failed' | 'recovered' | 'deregistered';
61
+ agent_id: string;
62
+ timestamp: Date;
63
+ details?: Record<string, any>;
64
+ }
65
+ export declare class AgentRegistry {
66
+ private agents;
67
+ private heartbeatTimers;
68
+ private eventCallbacks;
69
+ private globalEventCallbacks;
70
+ private defaultConfig;
71
+ constructor(defaultConfig?: Partial<AgentConfig>);
72
+ /**
73
+ * Register a new agent
74
+ */
75
+ register(params: AgentRegistration): Promise<Agent>;
76
+ /**
77
+ * Mark agent as ready
78
+ */
79
+ setReady(agentId: string): Promise<void>;
80
+ /**
81
+ * Process heartbeat from agent
82
+ */
83
+ heartbeat(payload: HeartbeatPayload): Promise<{
84
+ acknowledged: boolean;
85
+ instructions?: string[];
86
+ }>;
87
+ /**
88
+ * Get agent by ID
89
+ */
90
+ getAgent(agentId: string): Agent | undefined;
91
+ /**
92
+ * Get all agents
93
+ */
94
+ getAllAgents(): Agent[];
95
+ /**
96
+ * Find agents matching criteria
97
+ */
98
+ findAgents(query: AgentQuery): Agent[];
99
+ /**
100
+ * Get best agent for a task
101
+ */
102
+ getBestAgent(query: AgentQuery & {
103
+ prefer_lowest_load?: boolean;
104
+ prefer_highest_success?: boolean;
105
+ }): Agent | null;
106
+ /**
107
+ * Assign task to agent
108
+ */
109
+ assignTask(agentId: string, taskId: string): Promise<boolean>;
110
+ /**
111
+ * Complete task for agent
112
+ */
113
+ completeTask(agentId: string, taskId: string, success: boolean, durationMs: number): Promise<void>;
114
+ /**
115
+ * Start draining agent (stop accepting new tasks)
116
+ */
117
+ drain(agentId: string): Promise<{
118
+ drained: boolean;
119
+ remaining_tasks: number;
120
+ }>;
121
+ /**
122
+ * Deregister agent
123
+ */
124
+ deregister(agentId: string, force?: boolean): Promise<{
125
+ success: boolean;
126
+ orphaned_tasks: string[];
127
+ }>;
128
+ /**
129
+ * Get agent statistics
130
+ */
131
+ getStats(): {
132
+ total_agents: number;
133
+ by_status: Record<AgentStatus, number>;
134
+ total_capacity: number;
135
+ total_load: number;
136
+ avg_success_rate: number;
137
+ };
138
+ /**
139
+ * Subscribe to agent events
140
+ */
141
+ onAgentEvent(agentId: string, callback: (event: AgentEvent) => void): () => void;
142
+ /**
143
+ * Subscribe to all agent events
144
+ */
145
+ onAnyAgentEvent(callback: (event: AgentEvent) => void): () => void;
146
+ /**
147
+ * Subscribe to agent going offline/failed
148
+ */
149
+ onAgentDown(callback: (agent: Agent, activeTasks: string[]) => void): () => void;
150
+ private startHeartbeatMonitor;
151
+ private resetHeartbeatTimer;
152
+ private handleHeartbeatTimeout;
153
+ private emitEvent;
154
+ }
155
+ export default AgentRegistry;
156
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/orchestration/registry.ts"],"names":[],"mappings":"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"}