macro-agent 0.1.10 → 0.1.11

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 (104) hide show
  1. package/CLAUDE.md +97 -0
  2. package/dist/acp/macro-agent.d.ts.map +1 -1
  3. package/dist/acp/macro-agent.js +42 -6
  4. package/dist/acp/macro-agent.js.map +1 -1
  5. package/dist/adapters/tasks-adapter.d.ts.map +1 -1
  6. package/dist/adapters/tasks-adapter.js +3 -0
  7. package/dist/adapters/tasks-adapter.js.map +1 -1
  8. package/dist/adapters/types.d.ts +1 -0
  9. package/dist/adapters/types.d.ts.map +1 -1
  10. package/dist/agent/agent-manager-v2.d.ts.map +1 -1
  11. package/dist/agent/agent-manager-v2.js +74 -11
  12. package/dist/agent/agent-manager-v2.js.map +1 -1
  13. package/dist/agent/agent-store.d.ts +10 -0
  14. package/dist/agent/agent-store.d.ts.map +1 -1
  15. package/dist/agent/agent-store.js +22 -0
  16. package/dist/agent/agent-store.js.map +1 -1
  17. package/dist/boot-v2.d.ts +88 -1
  18. package/dist/boot-v2.d.ts.map +1 -1
  19. package/dist/boot-v2.js +343 -7
  20. package/dist/boot-v2.js.map +1 -1
  21. package/dist/cli/acp.js +4 -0
  22. package/dist/cli/acp.js.map +1 -1
  23. package/dist/lifecycle/cascade.d.ts +25 -2
  24. package/dist/lifecycle/cascade.d.ts.map +1 -1
  25. package/dist/lifecycle/cascade.js +70 -2
  26. package/dist/lifecycle/cascade.js.map +1 -1
  27. package/dist/map/cascade-action-handler.d.ts +24 -0
  28. package/dist/map/cascade-action-handler.d.ts.map +1 -0
  29. package/dist/map/cascade-action-handler.js +170 -0
  30. package/dist/map/cascade-action-handler.js.map +1 -0
  31. package/dist/map/cascade-bridge.d.ts.map +1 -1
  32. package/dist/map/cascade-bridge.js +42 -5
  33. package/dist/map/cascade-bridge.js.map +1 -1
  34. package/dist/map/coordination-handler.d.ts.map +1 -1
  35. package/dist/map/coordination-handler.js +12 -1
  36. package/dist/map/coordination-handler.js.map +1 -1
  37. package/dist/map/server.d.ts.map +1 -1
  38. package/dist/map/server.js +172 -1
  39. package/dist/map/server.js.map +1 -1
  40. package/dist/map/sidecar.d.ts.map +1 -1
  41. package/dist/map/sidecar.js +18 -2
  42. package/dist/map/sidecar.js.map +1 -1
  43. package/dist/map/types.d.ts +2 -0
  44. package/dist/map/types.d.ts.map +1 -1
  45. package/dist/workspace/git-cascade-adapter.d.ts +1 -1
  46. package/dist/workspace/git-cascade-adapter.d.ts.map +1 -1
  47. package/dist/workspace/git-cascade-adapter.js +26 -0
  48. package/dist/workspace/git-cascade-adapter.js.map +1 -1
  49. package/dist/workspace/landing/merge-to-parent.d.ts.map +1 -1
  50. package/dist/workspace/landing/merge-to-parent.js +1 -0
  51. package/dist/workspace/landing/merge-to-parent.js.map +1 -1
  52. package/dist/workspace/recovery/spawn-resolver.d.ts.map +1 -1
  53. package/dist/workspace/recovery/spawn-resolver.js +8 -1
  54. package/dist/workspace/recovery/spawn-resolver.js.map +1 -1
  55. package/dist/workspace/types-v3.d.ts +7 -0
  56. package/dist/workspace/types-v3.d.ts.map +1 -1
  57. package/dist/workspace/types-v3.js.map +1 -1
  58. package/dist/workspace/types.d.ts +17 -0
  59. package/dist/workspace/types.d.ts.map +1 -1
  60. package/dist/workspace/workspace-manager.d.ts +9 -0
  61. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  62. package/dist/workspace/workspace-manager.js +45 -2
  63. package/dist/workspace/workspace-manager.js.map +1 -1
  64. package/docs/design/task-dispatcher.md +880 -0
  65. package/package.json +3 -2
  66. package/src/__tests__/boot-v2.test.ts +435 -0
  67. package/src/__tests__/e2e/acp-over-map.e2e.test.ts +92 -0
  68. package/src/__tests__/e2e/bootstrap.e2e.test.ts +319 -0
  69. package/src/__tests__/e2e/dispatch-coordination.e2e.test.ts +495 -0
  70. package/src/__tests__/e2e/dispatch-live.e2e.test.ts +564 -0
  71. package/src/__tests__/e2e/dispatch-opentasks.e2e.test.ts +496 -0
  72. package/src/__tests__/e2e/dispatch-phase2-live.e2e.test.ts +456 -0
  73. package/src/__tests__/e2e/dispatch-phase2.e2e.test.ts +386 -0
  74. package/src/__tests__/e2e/dispatch.e2e.test.ts +376 -0
  75. package/src/acp/macro-agent.ts +41 -6
  76. package/src/adapters/__tests__/tasks-adapter.test.ts +1 -0
  77. package/src/adapters/tasks-adapter.ts +3 -0
  78. package/src/adapters/types.ts +1 -0
  79. package/src/agent/__tests__/agent-store.test.ts +52 -0
  80. package/src/agent/agent-manager-v2.ts +79 -11
  81. package/src/agent/agent-store.ts +24 -0
  82. package/src/boot-v2.ts +522 -35
  83. package/src/cli/acp.ts +4 -0
  84. package/src/lifecycle/__tests__/cascade-consolidation.test.ts +240 -0
  85. package/src/lifecycle/cascade.ts +77 -2
  86. package/src/map/__tests__/emit-event.test.ts +71 -0
  87. package/src/map/cascade-action-handler.ts +205 -0
  88. package/src/map/cascade-bridge.ts +43 -5
  89. package/src/map/coordination-handler.ts +13 -1
  90. package/src/map/server.ts +178 -1
  91. package/src/map/sidecar.ts +19 -2
  92. package/src/map/types.ts +3 -0
  93. package/src/workspace/__tests__/land-dispatch.test.ts +214 -0
  94. package/src/workspace/git-cascade-adapter.ts +30 -3
  95. package/src/workspace/landing/__tests__/strategies.test.ts +42 -0
  96. package/src/workspace/landing/merge-to-parent.ts +1 -0
  97. package/src/workspace/recovery/spawn-resolver.ts +8 -1
  98. package/src/workspace/types-v3.ts +7 -0
  99. package/src/workspace/types.ts +20 -0
  100. package/src/workspace/workspace-manager.ts +61 -2
  101. package/dist/workspace/dataplane-adapter.d.ts +0 -260
  102. package/dist/workspace/dataplane-adapter.d.ts.map +0 -1
  103. package/dist/workspace/dataplane-adapter.js +0 -416
  104. package/dist/workspace/dataplane-adapter.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../src/lifecycle/cascade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../src/lifecycle/cascade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Cascade Action Handler — receives hub→runtime commands.
3
+ *
4
+ * Listens for `x-cascade/request.*` notifications from the OpenHive hub
5
+ * and dispatches to the GitCascadeAdapter. This is the inbound counterpart
6
+ * to the CascadeBridge (which handles outbound events).
7
+ *
8
+ * Actions are fire-and-forget from the hub's perspective: the hub sends
9
+ * the notification and the UI updates reactively when the resulting
10
+ * `x-cascade/stream.*` event flows back through the bridge.
11
+ *
12
+ * @module map/cascade-action-handler
13
+ */
14
+ import type { GitCascadeAdapter } from '../workspace/git-cascade-adapter.js';
15
+ export interface CascadeActionConnection {
16
+ onNotification(method: string, handler: (params: unknown) => void | Promise<void>): void;
17
+ offNotification(method: string, handler: (params: unknown) => void | Promise<void>): void;
18
+ }
19
+ /**
20
+ * Register cascade action handlers on the MAP connection.
21
+ * Returns a cleanup function that removes all handlers.
22
+ */
23
+ export declare function setupCascadeActionHandlers(connection: CascadeActionConnection, adapter: GitCascadeAdapter): () => void;
24
+ //# sourceMappingURL=cascade-action-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade-action-handler.d.ts","sourceRoot":"","sources":["../../src/map/cascade-action-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACjD,IAAI,CAAC;IACR,eAAe,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACjD,IAAI,CAAC;CACT;AAYD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,uBAAuB,EACnC,OAAO,EAAE,iBAAiB,GACzB,MAAM,IAAI,CAgKZ"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Cascade Action Handler — receives hub→runtime commands.
3
+ *
4
+ * Listens for `x-cascade/request.*` notifications from the OpenHive hub
5
+ * and dispatches to the GitCascadeAdapter. This is the inbound counterpart
6
+ * to the CascadeBridge (which handles outbound events).
7
+ *
8
+ * Actions are fire-and-forget from the hub's perspective: the hub sends
9
+ * the notification and the UI updates reactively when the resulting
10
+ * `x-cascade/stream.*` event flows back through the bridge.
11
+ *
12
+ * @module map/cascade-action-handler
13
+ */
14
+ const REQUEST_METHODS = {
15
+ MERGE: 'x-cascade/request.merge',
16
+ ABANDON: 'x-cascade/request.abandon',
17
+ PAUSE: 'x-cascade/request.pause',
18
+ RESUME: 'x-cascade/request.resume',
19
+ RESOLVE: 'x-cascade/request.resolve',
20
+ PUSH: 'x-cascade/request.push',
21
+ COMMIT: 'x-cascade/request.commit',
22
+ };
23
+ /**
24
+ * Register cascade action handlers on the MAP connection.
25
+ * Returns a cleanup function that removes all handlers.
26
+ */
27
+ export function setupCascadeActionHandlers(connection, adapter) {
28
+ const handlers = [];
29
+ const register = (method, handler) => {
30
+ connection.onNotification(method, handler);
31
+ handlers.push({ method, handler });
32
+ };
33
+ /** Find the first worktree checked out on a given stream. */
34
+ function findWorktreeForStream(streamId) {
35
+ const wts = adapter.listWorktrees();
36
+ const match = wts.find((wt) => wt.currentStream === streamId);
37
+ return match?.path ?? null;
38
+ }
39
+ // ── Merge ─────────────────────────────────────────────────────────
40
+ register(REQUEST_METHODS.MERGE, (params) => {
41
+ const p = params;
42
+ if (!p?.stream_id)
43
+ return;
44
+ const stream = adapter.getStream(p.stream_id);
45
+ const targetStreamId = p.target_stream_id ?? stream?.parentStream;
46
+ if (!targetStreamId)
47
+ return;
48
+ const worktreePath = findWorktreeForStream(p.stream_id);
49
+ if (!worktreePath)
50
+ return;
51
+ try {
52
+ adapter.mergeStream({
53
+ sourceStream: p.stream_id,
54
+ targetStream: targetStreamId,
55
+ agentId: 'hub-request',
56
+ worktree: worktreePath,
57
+ });
58
+ }
59
+ catch {
60
+ // Non-fatal — the resulting event (or conflict) will surface via the bridge
61
+ }
62
+ });
63
+ // ── Abandon ───────────────────────────────────────────────────────
64
+ register(REQUEST_METHODS.ABANDON, (params) => {
65
+ const p = params;
66
+ if (!p?.stream_id)
67
+ return;
68
+ try {
69
+ adapter.abandonStream(p.stream_id, { reason: p.reason ?? 'hub-request' });
70
+ }
71
+ catch { /* non-fatal */ }
72
+ });
73
+ // ── Pause ─────────────────────────────────────────────────────────
74
+ register(REQUEST_METHODS.PAUSE, (params) => {
75
+ const p = params;
76
+ if (!p?.stream_id)
77
+ return;
78
+ try {
79
+ adapter.pauseStream(p.stream_id, p.reason);
80
+ }
81
+ catch { /* non-fatal */ }
82
+ });
83
+ // ── Resume ────────────────────────────────────────────────────────
84
+ register(REQUEST_METHODS.RESUME, (params) => {
85
+ const p = params;
86
+ if (!p?.stream_id)
87
+ return;
88
+ try {
89
+ adapter.resumeStream(p.stream_id);
90
+ }
91
+ catch { /* non-fatal */ }
92
+ });
93
+ // ── Resolve conflict ──────────────────────────────────────────────
94
+ register(REQUEST_METHODS.RESOLVE, (params) => {
95
+ const p = params;
96
+ if (!p?.stream_id || !p?.conflict_id)
97
+ return;
98
+ try {
99
+ adapter.resolveConflict({
100
+ conflictId: p.conflict_id,
101
+ resolution: {
102
+ method: p.strategy ?? 'ours',
103
+ resolvedBy: 'hub-request',
104
+ },
105
+ });
106
+ }
107
+ catch { /* non-fatal */ }
108
+ });
109
+ // ── Push ───────────────────────────────────────────────────────────
110
+ register(REQUEST_METHODS.PUSH, (params) => {
111
+ const p = params;
112
+ if (!p?.stream_id)
113
+ return;
114
+ const worktreePath = findWorktreeForStream(p.stream_id);
115
+ if (!worktreePath)
116
+ return;
117
+ const remote = p.remote ?? 'origin';
118
+ const streamBranch = `stream/${p.stream_id}`;
119
+ const targetRef = p.target_ref ?? streamBranch;
120
+ try {
121
+ const { execSync } = require('child_process');
122
+ execSync(`git push ${remote} ${streamBranch}:refs/heads/${targetRef}`, {
123
+ cwd: worktreePath,
124
+ stdio: 'pipe',
125
+ encoding: 'utf-8',
126
+ });
127
+ // Emit pushed event so the hub records it
128
+ adapter.notifyStreamPushed?.({
129
+ streamId: p.stream_id,
130
+ agentId: 'hub-request',
131
+ pushedCommit: execSync('git rev-parse HEAD', {
132
+ cwd: worktreePath,
133
+ encoding: 'utf-8',
134
+ }).trim(),
135
+ remote,
136
+ remoteRef: targetRef,
137
+ strategy: 'hub-push',
138
+ });
139
+ }
140
+ catch { /* non-fatal — push failure is reported via absence of pushed event */ }
141
+ });
142
+ // ── Commit ────────────────────────────────────────────────────────
143
+ register(REQUEST_METHODS.COMMIT, (params) => {
144
+ const p = params;
145
+ if (!p?.stream_id)
146
+ return;
147
+ const worktreePath = findWorktreeForStream(p.stream_id);
148
+ if (!worktreePath)
149
+ return;
150
+ const message = p.message ?? 'checkpoint (hub-requested)';
151
+ try {
152
+ adapter.commitChanges({
153
+ streamId: p.stream_id,
154
+ agentId: 'hub-request',
155
+ worktree: worktreePath,
156
+ message,
157
+ metadata: p.metadata,
158
+ });
159
+ }
160
+ catch { /* non-fatal — nothing to commit, or stream conflicted */ }
161
+ });
162
+ // ── Cleanup ───────────────────────────────────────────────────────
163
+ return () => {
164
+ for (const { method, handler } of handlers) {
165
+ connection.offNotification(method, handler);
166
+ }
167
+ handlers.length = 0;
168
+ };
169
+ }
170
+ //# sourceMappingURL=cascade-action-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade-action-handler.js","sourceRoot":"","sources":["../../src/map/cascade-action-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-bridge.d.ts","sourceRoot":"","sources":["../../src/map/cascade-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,qCAAqC,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,yBAAyB,EACrC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CA2BzB"}
1
+ {"version":3,"file":"cascade-bridge.d.ts","sourceRoot":"","sources":["../../src/map/cascade-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,qCAAqC,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,yBAAyB,EACrC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CA2BzB"}
@@ -20,6 +20,13 @@
20
20
  * @module map/cascade-bridge
21
21
  */
22
22
  import { CASCADE_METHODS } from 'git-cascade/events';
23
+ // Fallback method names for events not yet present in the installed
24
+ // git-cascade version (`STREAM_PAUSED`, `STREAM_RESUMED`,
25
+ // `STREAM_ROLLED_BACK` were added after 0.0.7). When the dep is upgraded,
26
+ // collapse these back into `CASCADE_METHODS.*` for a single source of truth.
27
+ const X_CASCADE_STREAM_PAUSED = 'x-cascade/stream.paused';
28
+ const X_CASCADE_STREAM_RESUMED = 'x-cascade/stream.resumed';
29
+ const X_CASCADE_STREAM_ROLLED_BACK = 'x-cascade/stream.rolled_back';
23
30
  /**
24
31
  * Create a cascade bridge.
25
32
  *
@@ -245,11 +252,41 @@ function translate(event) {
245
252
  outcome: d.outcome,
246
253
  },
247
254
  };
248
- // Local-only events with no MAP counterpart (Phase 1 scope).
249
- // 'stream:updated', 'stream:forked', 'stream:paused', 'stream:resumed',
250
- // 'worktree:*', 'task:*', 'change:*', 'conflict:*' (legacy local-only
251
- // variant — cascade-bridge handles the cascade-driven 'conflict:resolved'
252
- // separately above)
255
+ case 'stream:paused':
256
+ if (!d.streamId)
257
+ return null;
258
+ return {
259
+ method: X_CASCADE_STREAM_PAUSED,
260
+ params: {
261
+ stream_id: d.streamId,
262
+ reason: d.reason,
263
+ },
264
+ };
265
+ case 'stream:resumed':
266
+ if (!d.streamId)
267
+ return null;
268
+ return {
269
+ method: X_CASCADE_STREAM_RESUMED,
270
+ params: {
271
+ stream_id: d.streamId,
272
+ },
273
+ };
274
+ case 'stream:rolled_back':
275
+ if (!d.streamId)
276
+ return null;
277
+ return {
278
+ method: X_CASCADE_STREAM_ROLLED_BACK,
279
+ params: {
280
+ stream_id: d.streamId,
281
+ strategy: d.strategy,
282
+ target: d.target,
283
+ new_head: d.newHead,
284
+ },
285
+ };
286
+ // Local-only events with no MAP counterpart.
287
+ // 'stream:updated', 'stream:forked', 'worktree:*', 'task:*',
288
+ // 'change:*', 'conflict:*' (legacy local-only variant — cascade-bridge
289
+ // handles the cascade-driven 'conflict:resolved' separately above)
253
290
  default:
254
291
  return null;
255
292
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-bridge.js","sourceRoot":"","sources":["../../src/map/cascade-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cascade-bridge.js","sourceRoot":"","sources":["../../src/map/cascade-bridge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"coordination-handler.d.ts","sourceRoot":"","sources":["../../src/map/coordination-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAKV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACjD,IAAI,CAAC;IACR,eAAe,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACjD,IAAI,CAAC;IACR,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,sBAAsB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE;QACjB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,yBAAyB,CAAC,GAAG,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;KAC9D,CAAC;CACH;AAWD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,gBAAgB,GACrB,MAAM,IAAI,CAgKZ"}
1
+ {"version":3,"file":"coordination-handler.d.ts","sourceRoot":"","sources":["../../src/map/coordination-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAKV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACjD,IAAI,CAAC;IACR,eAAe,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACjD,IAAI,CAAC;IACR,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,sBAAsB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE;QACjB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,yBAAyB,CAAC,GAAG,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;KAC9D,CAAC;CACH;AAWD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,gBAAgB,GACrB,MAAM,IAAI,CA4KZ"}
@@ -31,12 +31,23 @@ export function setupCoordinationHandlers(deps) {
31
31
  if (!p?.title)
32
32
  return;
33
33
  try {
34
- // Create task in opentasks
34
+ // Extract tags and metadata from OpenHive context
35
+ const context = p.context ?? {};
36
+ const tags = Array.isArray(context.tags) ? context.tags : undefined;
37
+ const metadata = {
38
+ ...context,
39
+ ...(p.assigned_by ? { assigned_by: p.assigned_by } : {}),
40
+ ...(p.deadline ? { deadline: p.deadline } : {}),
41
+ };
42
+ // Remove tags from metadata (already a top-level field)
43
+ delete metadata.tags;
35
44
  const taskId = await tasksAdapter.createTask({
36
45
  title: p.title,
37
46
  content: p.description,
38
47
  assignee: p.assigned_to,
48
+ tags,
39
49
  priority: p.priority === "critical" ? 1 : p.priority === "high" ? 2 : p.priority === "low" ? 4 : 3,
50
+ metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
40
51
  });
41
52
  // Optionally spawn an agent to work on the task
42
53
  if (p.assigned_to) {
@@ -1 +1 @@
1
- {"version":3,"file":"coordination-handler.js","sourceRoot":"","sources":["../../src/map/coordination-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coordination-handler.js","sourceRoot":"","sources":["../../src/map/coordination-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/map/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAOxD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,eAAoB,GAC3B,iBAAiB,CA8gBnB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/map/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAOxD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,eAAoB,GAC3B,iBAAiB,CA+rBnB"}
@@ -46,6 +46,14 @@ export function createMAPServerInstance(deps, config = {}) {
46
46
  const clientWebSockets = new Map(); // participant/agent ID → WebSocket
47
47
  // Track subscription IDs by client agent ID for ACP response delivery
48
48
  const clientSubscriptions = new Map(); // agent ID → subscription IDs
49
+ /**
50
+ * Per-subscription monotonic event counter. The MAP SDK's Subscription
51
+ * checks `sequenceNumber !== lastSequenceNumber + 1` and warns on gaps —
52
+ * using `Date.now()` (millisecond timestamp) breaks that assumption since
53
+ * each event becomes a "gap". Track a per-subscription counter starting
54
+ * at 1 and increment per event.
55
+ */
56
+ const subscriptionSequence = new Map(); // subscription ID → next sequence number
49
57
  // Track original ws.send for each WebSocket (before interception)
50
58
  const originalSends = new Map();
51
59
  /**
@@ -57,11 +65,21 @@ export function createMAPServerInstance(deps, config = {}) {
57
65
  const handlers = {};
58
66
  // ── Agent extensions ──────────────────────────────────────────
59
67
  handlers["_macro/spawnAgent"] = async (params, ctx) => {
68
+ // Forward the full SpawnAgentOptions surface so callers can set
69
+ // permission mode, agent type, custom prompt, model config, etc.
70
+ // Previously this handler dropped everything except role/cwd/task,
71
+ // making _macro/spawnAgent useless for any non-default agent.
60
72
  const spawned = await agentManager.spawn({
61
73
  task: params.task ?? "Spawned via MAP",
62
74
  parent: params.parent ?? null,
63
75
  cwd: params.cwd,
64
76
  role: params.role ?? "worker",
77
+ permissionMode: params.permissionMode,
78
+ agentType: params.agentType,
79
+ customPrompt: params.customPrompt,
80
+ topics: params.topics,
81
+ config: params.config,
82
+ taskRef: params.taskRef,
65
83
  });
66
84
  // Ensure agent is registered in MAPServer's registry.
67
85
  // The lifecycle bridge may have already done this, but we also
@@ -104,6 +122,121 @@ export function createMAPServerInstance(deps, config = {}) {
104
122
  const spawned = await agentManager.resume(params.agentId);
105
123
  return { agent: { id: spawned.id } };
106
124
  };
125
+ /**
126
+ * Resume an agent session with full routing + session info returned.
127
+ *
128
+ * Session-first resolution: given a Claude Code `providerSessionId` (the
129
+ * session UUID persisted on the session record), reverse-look-up the
130
+ * owning agent. Falls back to `agentId` (either the MAP ULID or the
131
+ * local store id) when no providerSessionId is given or the reverse
132
+ * lookup misses.
133
+ *
134
+ * Behavior:
135
+ * 1. Resolve the local agent id.
136
+ * 2. Call `agentManager.resume(localId)` — idempotent; the manager
137
+ * re-spawns the coordinator/head-manager if its process isn't live,
138
+ * otherwise returns the existing handle.
139
+ * 3. Ensure the agent is registered in the MAPServer's registry so
140
+ * ACP streams can target it via the returned peerMapId.
141
+ * 4. Return `{ agent: { id: peerMapId, localId, name }, acpSessionId,
142
+ * providerSessionId }` — the caller needs peerMapId to open the
143
+ * ACP stream and providerSessionId to pass into `session/load` so
144
+ * Claude Code replays its on-disk transcript.
145
+ *
146
+ * Used by OpenHive's POST /sessions/:id/resume to revive a session whose
147
+ * swarm has been offline for longer than the hub's stale-grace window.
148
+ */
149
+ handlers["_macro/resumeAgent"] = async (params, ctx) => {
150
+ const providerSessionIdParam = params.providerSessionId;
151
+ const agentIdParam = params.agentId;
152
+ let localId;
153
+ let providerSessionId;
154
+ if (providerSessionIdParam) {
155
+ const session = agentStore.findSessionByProviderSessionId(providerSessionIdParam);
156
+ if (session) {
157
+ localId = session.agent_id;
158
+ providerSessionId = session.provider_session_id;
159
+ }
160
+ }
161
+ if (!localId && agentIdParam) {
162
+ localId = mapIdToLocalId.get(agentIdParam) ?? agentIdParam;
163
+ const session = agentStore.getSession(localId);
164
+ providerSessionId = session?.provider_session_id;
165
+ }
166
+ if (!localId) {
167
+ return {
168
+ success: false,
169
+ error: "providerSessionId or agentId required",
170
+ };
171
+ }
172
+ const agentRec = agentStore.getAgent(localId);
173
+ if (!agentRec) {
174
+ return { success: false, error: `Agent not found: ${localId}` };
175
+ }
176
+ // Already-running case: skip resume() (which rejects with ALREADY_RUNNING)
177
+ // and return the live agent's session info straight from the store.
178
+ // This makes the call idempotent — callers don't need to pre-check.
179
+ let resumedId;
180
+ let resumedSessionId;
181
+ let resumedName;
182
+ if (agentManager.hasActiveSession(localId)) {
183
+ resumedId = localId;
184
+ resumedName = agentRec.name;
185
+ const liveSession = agentStore.getSession(localId);
186
+ if (!liveSession) {
187
+ return {
188
+ success: false,
189
+ error: `Agent ${localId} is active but has no session record`,
190
+ };
191
+ }
192
+ resumedSessionId = liveSession.session_id;
193
+ }
194
+ else {
195
+ try {
196
+ const resumed = await agentManager.resume(localId);
197
+ resumedId = resumed.id;
198
+ resumedSessionId = resumed.session_id;
199
+ resumedName = resumed.name;
200
+ }
201
+ catch (err) {
202
+ return { success: false, error: err.message };
203
+ }
204
+ }
205
+ // Ensure agent is registered in MAPServer's registry. resume() fires
206
+ // the spawned lifecycle event, which the lifecycle bridge handles —
207
+ // but we also register here for subscription routing context on the
208
+ // current MAP session (mirrors _macro/spawnAgent).
209
+ if (mapServer && !localIdToMapId.has(resumedId)) {
210
+ try {
211
+ const registered = mapServer.agents.register({
212
+ name: resumedName ?? resumedId,
213
+ role: agentRec.role,
214
+ state: "idle",
215
+ sessionId: ctx?.session?.id,
216
+ metadata: { peerAgentId: resumedId },
217
+ });
218
+ if (registered?.id) {
219
+ mapIdToLocalId.set(registered.id, resumedId);
220
+ localIdToMapId.set(resumedId, registered.id);
221
+ }
222
+ }
223
+ catch {
224
+ // Best effort; lifecycle bridge will register on spawned event
225
+ }
226
+ }
227
+ const peerMapId = localIdToMapId.get(resumedId) ?? resumedId;
228
+ return {
229
+ success: true,
230
+ agent: {
231
+ id: peerMapId,
232
+ localId: resumedId,
233
+ name: resumedName,
234
+ role: agentRec.role,
235
+ },
236
+ acpSessionId: resumedSessionId,
237
+ providerSessionId,
238
+ };
239
+ };
107
240
  /**
108
241
  * Terminate a running agent. Accepts either the agent's local ID or the
109
242
  * MAP-assigned ULID (we resolve back to local via mapIdToLocalId).
@@ -236,15 +369,21 @@ export function createMAPServerInstance(deps, config = {}) {
236
369
  const subIds = clientSubscriptions.get(clientId) ?? [];
237
370
  // Send as subscription event notification (what ACPStreamConnection expects).
238
371
  // The _pushEvent method expects: { subscriptionId, sequenceNumber, eventId, timestamp, event }
372
+ //
373
+ // sequenceNumber must be a per-subscription monotonic counter that
374
+ // increments by exactly 1 — the SDK warns on any gap. Don't use
375
+ // Date.now() here (breaks the contract on every event).
239
376
  for (const subId of subIds) {
240
377
  const event = rawEvent.params?.event ?? rawEvent;
241
378
  const eventId = event.id ?? `acp-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
379
+ const nextSeq = (subscriptionSequence.get(subId) ?? 0) + 1;
380
+ subscriptionSequence.set(subId, nextSeq);
242
381
  const notification = JSON.stringify({
243
382
  jsonrpc: "2.0",
244
383
  method: "map/event",
245
384
  params: {
246
385
  subscriptionId: subId,
247
- sequenceNumber: Date.now(),
386
+ sequenceNumber: nextSeq,
248
387
  eventId,
249
388
  timestamp: Date.now(),
250
389
  event,
@@ -351,6 +490,33 @@ export function createMAPServerInstance(deps, config = {}) {
351
490
  }
352
491
  return originalSend(data, ...args);
353
492
  };
493
+ // Observe incoming messages so we drop subscription IDs from our
494
+ // routing array when the client unsubscribes. Without this, closed
495
+ // ACP streams keep receiving events ("MAP: Event for unknown
496
+ // subscription" warnings on the client). We don't intercept the
497
+ // SDK's processing — this listener runs alongside it.
498
+ ws.on("message", (data) => {
499
+ try {
500
+ const text = typeof data === "string"
501
+ ? data
502
+ : Buffer.isBuffer(data)
503
+ ? data.toString("utf-8")
504
+ : String(data);
505
+ const msg = JSON.parse(text);
506
+ if (msg?.method === "map/unsubscribe") {
507
+ const subId = msg?.params?.subscriptionId;
508
+ if (typeof subId === "string") {
509
+ const idx = subscriptionIds.indexOf(subId);
510
+ if (idx >= 0)
511
+ subscriptionIds.splice(idx, 1);
512
+ subscriptionSequence.delete(subId);
513
+ }
514
+ }
515
+ }
516
+ catch {
517
+ // Non-JSON or parse failure — ignore
518
+ }
519
+ });
354
520
  const stream = websocketStream(ws);
355
521
  const router = mapServer.accept(stream, {
356
522
  role: "client",
@@ -359,6 +525,11 @@ export function createMAPServerInstance(deps, config = {}) {
359
525
  router.start();
360
526
  ws.on("close", () => {
361
527
  connectionCount--;
528
+ // Clear sequence counters for any subscriptions belonging to this
529
+ // connection. Use a copy of subscriptionIds since we don't mutate it.
530
+ for (const subId of subscriptionIds) {
531
+ subscriptionSequence.delete(subId);
532
+ }
362
533
  if (clientAgentId) {
363
534
  clientWebSockets.delete(clientAgentId);
364
535
  clientSubscriptions.delete(clientAgentId);