@honeybee-ai/incubator 1.1.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.
Files changed (245) hide show
  1. package/README.md +586 -0
  2. package/dashboard/dist/assets/index-DFb8p7xI.js +9 -0
  3. package/dashboard/dist/assets/index-RKiEoHEo.css +1 -0
  4. package/dashboard/dist/index.html +13 -0
  5. package/dist/agent/acp/claim-manager.d.ts +24 -0
  6. package/dist/agent/acp/claim-manager.js +64 -0
  7. package/dist/agent/acp/claim-manager.js.map +1 -0
  8. package/dist/agent/acp/direct-runtime.d.ts +90 -0
  9. package/dist/agent/acp/direct-runtime.js +364 -0
  10. package/dist/agent/acp/direct-runtime.js.map +1 -0
  11. package/dist/agent/acp/event-client.d.ts +20 -0
  12. package/dist/agent/acp/event-client.js +60 -0
  13. package/dist/agent/acp/event-client.js.map +1 -0
  14. package/dist/agent/acp/event-matcher.d.ts +13 -0
  15. package/dist/agent/acp/event-matcher.js +31 -0
  16. package/dist/agent/acp/event-matcher.js.map +1 -0
  17. package/dist/agent/acp/progress.d.ts +23 -0
  18. package/dist/agent/acp/progress.js +54 -0
  19. package/dist/agent/acp/progress.js.map +1 -0
  20. package/dist/agent/acp/runtime.d.ts +156 -0
  21. package/dist/agent/acp/runtime.js +337 -0
  22. package/dist/agent/acp/runtime.js.map +1 -0
  23. package/dist/agent/acp/ws-event-client.d.ts +64 -0
  24. package/dist/agent/acp/ws-event-client.js +263 -0
  25. package/dist/agent/acp/ws-event-client.js.map +1 -0
  26. package/dist/agent/agent.d.ts +60 -0
  27. package/dist/agent/agent.js +121 -0
  28. package/dist/agent/agent.js.map +1 -0
  29. package/dist/agent/cli.d.ts +2 -0
  30. package/dist/agent/cli.js +311 -0
  31. package/dist/agent/cli.js.map +1 -0
  32. package/dist/agent/mcp-client.d.ts +37 -0
  33. package/dist/agent/mcp-client.js +92 -0
  34. package/dist/agent/mcp-client.js.map +1 -0
  35. package/dist/agent/mock-runner.d.ts +14 -0
  36. package/dist/agent/mock-runner.js +159 -0
  37. package/dist/agent/mock-runner.js.map +1 -0
  38. package/dist/agent/native-client.d.ts +18 -0
  39. package/dist/agent/native-client.js +42 -0
  40. package/dist/agent/native-client.js.map +1 -0
  41. package/dist/agent/prompt.d.ts +45 -0
  42. package/dist/agent/prompt.js +115 -0
  43. package/dist/agent/prompt.js.map +1 -0
  44. package/dist/agent/providers.d.ts +25 -0
  45. package/dist/agent/providers.js +696 -0
  46. package/dist/agent/providers.js.map +1 -0
  47. package/dist/agent/runner.d.ts +15 -0
  48. package/dist/agent/runner.js +625 -0
  49. package/dist/agent/runner.js.map +1 -0
  50. package/dist/agent/tool-client.d.ts +12 -0
  51. package/dist/agent/tool-client.js +2 -0
  52. package/dist/agent/tool-client.js.map +1 -0
  53. package/dist/agent/types.d.ts +116 -0
  54. package/dist/agent/types.js +2 -0
  55. package/dist/agent/types.js.map +1 -0
  56. package/dist/agent-pool.d.ts +44 -0
  57. package/dist/agent-pool.js +228 -0
  58. package/dist/agent-pool.js.map +1 -0
  59. package/dist/bin.d.ts +2 -0
  60. package/dist/bin.js +7 -0
  61. package/dist/bin.js.map +1 -0
  62. package/dist/bus.d.ts +24 -0
  63. package/dist/bus.js +79 -0
  64. package/dist/bus.js.map +1 -0
  65. package/dist/dances.d.ts +73 -0
  66. package/dist/dances.js +122 -0
  67. package/dist/dances.js.map +1 -0
  68. package/dist/guard.d.ts +52 -0
  69. package/dist/guard.js +210 -0
  70. package/dist/guard.js.map +1 -0
  71. package/dist/heartbeat.d.ts +41 -0
  72. package/dist/heartbeat.js +104 -0
  73. package/dist/heartbeat.js.map +1 -0
  74. package/dist/honeycomb.d.ts +63 -0
  75. package/dist/honeycomb.js +222 -0
  76. package/dist/honeycomb.js.map +1 -0
  77. package/dist/index.d.ts +2 -0
  78. package/dist/index.js +601 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/integrations/config.d.ts +15 -0
  81. package/dist/integrations/config.js +62 -0
  82. package/dist/integrations/config.js.map +1 -0
  83. package/dist/integrations/index.d.ts +4 -0
  84. package/dist/integrations/index.js +4 -0
  85. package/dist/integrations/index.js.map +1 -0
  86. package/dist/integrations/loader.d.ts +8 -0
  87. package/dist/integrations/loader.js +27 -0
  88. package/dist/integrations/loader.js.map +1 -0
  89. package/dist/integrations/manager.d.ts +29 -0
  90. package/dist/integrations/manager.js +108 -0
  91. package/dist/integrations/manager.js.map +1 -0
  92. package/dist/log.d.ts +25 -0
  93. package/dist/log.js +67 -0
  94. package/dist/log.js.map +1 -0
  95. package/dist/namespaces.d.ts +28 -0
  96. package/dist/namespaces.js +100 -0
  97. package/dist/namespaces.js.map +1 -0
  98. package/dist/orchestrator.d.ts +119 -0
  99. package/dist/orchestrator.js +463 -0
  100. package/dist/orchestrator.js.map +1 -0
  101. package/dist/persistence.d.ts +7 -0
  102. package/dist/persistence.js +62 -0
  103. package/dist/persistence.js.map +1 -0
  104. package/dist/plugins/index.d.ts +2 -0
  105. package/dist/plugins/index.js +3 -0
  106. package/dist/plugins/index.js.map +1 -0
  107. package/dist/plugins/loader.d.ts +12 -0
  108. package/dist/plugins/loader.js +122 -0
  109. package/dist/plugins/loader.js.map +1 -0
  110. package/dist/plugins/manager.d.ts +76 -0
  111. package/dist/plugins/manager.js +238 -0
  112. package/dist/plugins/manager.js.map +1 -0
  113. package/dist/propolis/guard.d.ts +23 -0
  114. package/dist/propolis/guard.js +49 -0
  115. package/dist/propolis/guard.js.map +1 -0
  116. package/dist/propolis/tools/types.d.ts +9 -0
  117. package/dist/propolis/tools/types.js +9 -0
  118. package/dist/propolis/tools/types.js.map +1 -0
  119. package/dist/rest.d.ts +4 -0
  120. package/dist/rest.js +962 -0
  121. package/dist/rest.js.map +1 -0
  122. package/dist/run-watcher.d.ts +20 -0
  123. package/dist/run-watcher.js +74 -0
  124. package/dist/run-watcher.js.map +1 -0
  125. package/dist/server.d.ts +17 -0
  126. package/dist/server.js +412 -0
  127. package/dist/server.js.map +1 -0
  128. package/dist/stores/backend.d.ts +15 -0
  129. package/dist/stores/backend.js +28 -0
  130. package/dist/stores/backend.js.map +1 -0
  131. package/dist/stores/claims.d.ts +14 -0
  132. package/dist/stores/claims.js +77 -0
  133. package/dist/stores/claims.js.map +1 -0
  134. package/dist/stores/conflicts.d.ts +10 -0
  135. package/dist/stores/conflicts.js +39 -0
  136. package/dist/stores/conflicts.js.map +1 -0
  137. package/dist/stores/control.d.ts +37 -0
  138. package/dist/stores/control.js +105 -0
  139. package/dist/stores/control.js.map +1 -0
  140. package/dist/stores/discoveries.d.ts +11 -0
  141. package/dist/stores/discoveries.js +45 -0
  142. package/dist/stores/discoveries.js.map +1 -0
  143. package/dist/stores/events.d.ts +14 -0
  144. package/dist/stores/events.js +42 -0
  145. package/dist/stores/events.js.map +1 -0
  146. package/dist/stores/help.d.ts +11 -0
  147. package/dist/stores/help.js +46 -0
  148. package/dist/stores/help.js.map +1 -0
  149. package/dist/stores/interfaces.d.ts +125 -0
  150. package/dist/stores/interfaces.js +2 -0
  151. package/dist/stores/interfaces.js.map +1 -0
  152. package/dist/stores/messages.d.ts +8 -0
  153. package/dist/stores/messages.js +29 -0
  154. package/dist/stores/messages.js.map +1 -0
  155. package/dist/stores/progress.d.ts +8 -0
  156. package/dist/stores/progress.js +21 -0
  157. package/dist/stores/progress.js.map +1 -0
  158. package/dist/stores/proposals.d.ts +11 -0
  159. package/dist/stores/proposals.js +46 -0
  160. package/dist/stores/proposals.js.map +1 -0
  161. package/dist/stores/redis/claims.d.ts +16 -0
  162. package/dist/stores/redis/claims.js +126 -0
  163. package/dist/stores/redis/claims.js.map +1 -0
  164. package/dist/stores/redis/db.d.ts +39 -0
  165. package/dist/stores/redis/db.js +34 -0
  166. package/dist/stores/redis/db.js.map +1 -0
  167. package/dist/stores/redis/discoveries.d.ts +13 -0
  168. package/dist/stores/redis/discoveries.js +54 -0
  169. package/dist/stores/redis/discoveries.js.map +1 -0
  170. package/dist/stores/redis/events.d.ts +17 -0
  171. package/dist/stores/redis/events.js +57 -0
  172. package/dist/stores/redis/events.js.map +1 -0
  173. package/dist/stores/redis/index.d.ts +3 -0
  174. package/dist/stores/redis/index.js +31 -0
  175. package/dist/stores/redis/index.js.map +1 -0
  176. package/dist/stores/redis/state.d.ts +14 -0
  177. package/dist/stores/redis/state.js +83 -0
  178. package/dist/stores/redis/state.js.map +1 -0
  179. package/dist/stores/reinforcements.d.ts +11 -0
  180. package/dist/stores/reinforcements.js +42 -0
  181. package/dist/stores/reinforcements.js.map +1 -0
  182. package/dist/stores/roles.d.ts +9 -0
  183. package/dist/stores/roles.js +22 -0
  184. package/dist/stores/roles.js.map +1 -0
  185. package/dist/stores/runs.d.ts +15 -0
  186. package/dist/stores/runs.js +50 -0
  187. package/dist/stores/runs.js.map +1 -0
  188. package/dist/stores/sqlite/claims.d.ts +17 -0
  189. package/dist/stores/sqlite/claims.js +121 -0
  190. package/dist/stores/sqlite/claims.js.map +1 -0
  191. package/dist/stores/sqlite/db.d.ts +16 -0
  192. package/dist/stores/sqlite/db.js +77 -0
  193. package/dist/stores/sqlite/db.js.map +1 -0
  194. package/dist/stores/sqlite/discoveries.d.ts +14 -0
  195. package/dist/stores/sqlite/discoveries.js +66 -0
  196. package/dist/stores/sqlite/discoveries.js.map +1 -0
  197. package/dist/stores/sqlite/events.d.ts +16 -0
  198. package/dist/stores/sqlite/events.js +75 -0
  199. package/dist/stores/sqlite/events.js.map +1 -0
  200. package/dist/stores/sqlite/index.d.ts +2 -0
  201. package/dist/stores/sqlite/index.js +33 -0
  202. package/dist/stores/sqlite/index.js.map +1 -0
  203. package/dist/stores/sqlite/state.d.ts +15 -0
  204. package/dist/stores/sqlite/state.js +99 -0
  205. package/dist/stores/sqlite/state.js.map +1 -0
  206. package/dist/stores/state.d.ts +11 -0
  207. package/dist/stores/state.js +67 -0
  208. package/dist/stores/state.js.map +1 -0
  209. package/dist/transports/broker.d.ts +20 -0
  210. package/dist/transports/broker.js +102 -0
  211. package/dist/transports/broker.js.map +1 -0
  212. package/dist/transports/index.d.ts +3 -0
  213. package/dist/transports/index.js +3 -0
  214. package/dist/transports/index.js.map +1 -0
  215. package/dist/transports/ipc.d.ts +26 -0
  216. package/dist/transports/ipc.js +93 -0
  217. package/dist/transports/ipc.js.map +1 -0
  218. package/dist/transports/types.d.ts +39 -0
  219. package/dist/transports/types.js +8 -0
  220. package/dist/transports/types.js.map +1 -0
  221. package/dist/types.d.ts +45 -0
  222. package/dist/types.js +2 -0
  223. package/dist/types.js.map +1 -0
  224. package/dist/utils.d.ts +3 -0
  225. package/dist/utils.js +36 -0
  226. package/dist/utils.js.map +1 -0
  227. package/dist/waggle/client.d.ts +16 -0
  228. package/dist/waggle/client.js +28 -0
  229. package/dist/waggle/client.js.map +1 -0
  230. package/dist/waggle/compound.d.ts +22 -0
  231. package/dist/waggle/compound.js +194 -0
  232. package/dist/waggle/compound.js.map +1 -0
  233. package/dist/waggle/index.d.ts +25 -0
  234. package/dist/waggle/index.js +77 -0
  235. package/dist/waggle/index.js.map +1 -0
  236. package/dist/waggle/types.d.ts +54 -0
  237. package/dist/waggle/types.js +2 -0
  238. package/dist/waggle/types.js.map +1 -0
  239. package/dist/webhooks.d.ts +26 -0
  240. package/dist/webhooks.js +79 -0
  241. package/dist/webhooks.js.map +1 -0
  242. package/dist/ws.d.ts +33 -0
  243. package/dist/ws.js +195 -0
  244. package/dist/ws.js.map +1 -0
  245. package/package.json +122 -0
@@ -0,0 +1,20 @@
1
+ import type { AcpClient } from '@agentcoordinationprotocol/sdk';
2
+ /**
3
+ * Polls incubator for events between agent iterations.
4
+ * Buffers events and formats them as context messages for the LLM.
5
+ */
6
+ export declare class EventClient {
7
+ private client;
8
+ private cursor;
9
+ private agentId;
10
+ constructor(client: AcpClient, agentId: string);
11
+ /**
12
+ * Poll for new events since last check.
13
+ * Returns formatted context messages for injection into the conversation.
14
+ */
15
+ drain(): Promise<string[]>;
16
+ /**
17
+ * Poll for messages addressed to this agent.
18
+ */
19
+ drainMessages(): Promise<string[]>;
20
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Polls incubator for events between agent iterations.
3
+ * Buffers events and formats them as context messages for the LLM.
4
+ */
5
+ export class EventClient {
6
+ client;
7
+ cursor = 0;
8
+ agentId;
9
+ constructor(client, agentId) {
10
+ this.client = client;
11
+ this.agentId = agentId;
12
+ }
13
+ /**
14
+ * Poll for new events since last check.
15
+ * Returns formatted context messages for injection into the conversation.
16
+ */
17
+ async drain() {
18
+ try {
19
+ const res = await this.client.getEvents(this.cursor);
20
+ if (!res.ok)
21
+ return [];
22
+ const data = res.data;
23
+ if (!data.events || data.events.length === 0)
24
+ return [];
25
+ this.cursor = data.cursor;
26
+ // Filter out our own events
27
+ const otherEvents = data.events.filter(e => e.agentId !== this.agentId);
28
+ if (otherEvents.length === 0)
29
+ return [];
30
+ // Format events as context messages
31
+ return otherEvents.map(e => {
32
+ const source = e.agentId;
33
+ const payload = typeof e.data === 'string' ? e.data : JSON.stringify(e.data);
34
+ return `Event from ${source}: [${e.type}] ${payload}`;
35
+ });
36
+ }
37
+ catch {
38
+ // Server unreachable — skip event polling
39
+ return [];
40
+ }
41
+ }
42
+ /**
43
+ * Poll for messages addressed to this agent.
44
+ */
45
+ async drainMessages() {
46
+ try {
47
+ const res = await this.client.getMessages();
48
+ if (!res.ok)
49
+ return [];
50
+ const messages = res.data;
51
+ if (!messages || messages.length === 0)
52
+ return [];
53
+ return messages.map(m => `Message from ${m.from}: ${m.content}`);
54
+ }
55
+ catch {
56
+ return [];
57
+ }
58
+ }
59
+ }
60
+ //# sourceMappingURL=event-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-client.js","sourceRoot":"","sources":["../../../src/agent/acp/event-client.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAY;IAClB,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,CAAS;IAExB,YAAY,MAAiB,EAAE,OAAe;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,CAAC;YAEvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAGhB,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAExD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAE1B,4BAA4B;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;YACxE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAExC,oCAAoC;YACpC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACzB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;gBACzB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7E,OAAO,cAAc,MAAM,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,CAAC;YAEvB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAInB,CAAC;YAEH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAElD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Event type matcher with glob pattern support.
3
+ * Returns a function that tests event types against a set of patterns.
4
+ *
5
+ * Supports:
6
+ * "turn" — exact match
7
+ * "turn.*" — matches "turn.player_2", "turn.seer", etc.
8
+ * "turn.player_*" — matches "turn.player_2", "turn.player_3"
9
+ * "*.player_2" — matches "turn.player_2", "speech.player_2"
10
+ *
11
+ * Globs use `*` to match within a dot-segment (any chars except `.`).
12
+ */
13
+ export declare function createTypeMatcher(types: string[]): (eventType: string) => boolean;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Event type matcher with glob pattern support.
3
+ * Returns a function that tests event types against a set of patterns.
4
+ *
5
+ * Supports:
6
+ * "turn" — exact match
7
+ * "turn.*" — matches "turn.player_2", "turn.seer", etc.
8
+ * "turn.player_*" — matches "turn.player_2", "turn.player_3"
9
+ * "*.player_2" — matches "turn.player_2", "speech.player_2"
10
+ *
11
+ * Globs use `*` to match within a dot-segment (any chars except `.`).
12
+ */
13
+ export function createTypeMatcher(types) {
14
+ const exact = new Set();
15
+ const patterns = [];
16
+ for (const t of types) {
17
+ if (t.includes('*')) {
18
+ // Escape regex-special chars (except *), replace * with [^.]* (match within segment)
19
+ const escaped = t.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^.]*');
20
+ patterns.push(new RegExp('^' + escaped + '$'));
21
+ }
22
+ else {
23
+ exact.add(t);
24
+ }
25
+ }
26
+ // Fast path: no globs, pure Set lookup
27
+ if (patterns.length === 0)
28
+ return (type) => exact.has(type);
29
+ return (type) => exact.has(type) || patterns.some(p => p.test(type));
30
+ }
31
+ //# sourceMappingURL=event-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-matcher.js","sourceRoot":"","sources":["../../../src/agent/acp/event-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,qFAAqF;YACrF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChF,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { AcpClient } from '@agentcoordinationprotocol/sdk';
2
+ /**
3
+ * Reports agent progress via ACP events.
4
+ */
5
+ export declare class ProgressReporter {
6
+ private client;
7
+ private agentId;
8
+ private startTime;
9
+ private iterationCount;
10
+ constructor(client: AcpClient, agentId: string);
11
+ /**
12
+ * Report iteration progress.
13
+ */
14
+ reportIteration(iteration: number, maxIterations: number): Promise<void>;
15
+ /**
16
+ * Report completion.
17
+ */
18
+ reportComplete(summary: string, usage?: {
19
+ promptTokens: number;
20
+ completionTokens: number;
21
+ totalTokens: number;
22
+ }): Promise<void>;
23
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Reports agent progress via ACP events.
3
+ */
4
+ export class ProgressReporter {
5
+ client;
6
+ agentId;
7
+ startTime;
8
+ iterationCount = 0;
9
+ constructor(client, agentId) {
10
+ this.client = client;
11
+ this.agentId = agentId;
12
+ this.startTime = Date.now();
13
+ }
14
+ /**
15
+ * Report iteration progress.
16
+ */
17
+ async reportIteration(iteration, maxIterations) {
18
+ this.iterationCount = iteration;
19
+ const progress = iteration / maxIterations;
20
+ // Only report every 5 iterations to avoid flooding
21
+ if (iteration % 5 !== 0 && iteration !== 1)
22
+ return;
23
+ try {
24
+ await this.client.publishEvent('agent.progress', {
25
+ agent: this.agentId,
26
+ iteration,
27
+ maxIterations,
28
+ progress: Math.round(progress * 100),
29
+ elapsed: Date.now() - this.startTime,
30
+ });
31
+ }
32
+ catch {
33
+ // Best-effort reporting
34
+ }
35
+ }
36
+ /**
37
+ * Report completion.
38
+ */
39
+ async reportComplete(summary, usage) {
40
+ try {
41
+ await this.client.publishEvent('agent.complete', {
42
+ agent: this.agentId,
43
+ summary,
44
+ iterations: this.iterationCount,
45
+ elapsed: Date.now() - this.startTime,
46
+ ...(usage ? { usage } : {}),
47
+ });
48
+ }
49
+ catch {
50
+ // Best-effort reporting
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/agent/acp/progress.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAY;IAClB,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,cAAc,GAAG,CAAC,CAAC;IAE3B,YAAY,MAAiB,EAAE,OAAe;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,aAAqB;QAC5D,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,MAAM,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;QAE3C,mDAAmD;QACnD,IAAI,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO;QAEnD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;gBAC/C,KAAK,EAAE,IAAI,CAAC,OAAO;gBACnB,SAAS;gBACT,aAAa;gBACb,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACpC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;aACrC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,KAA+E;QACnH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;gBAC/C,KAAK,EAAE,IAAI,CAAC,OAAO;gBACnB,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,cAAc;gBAC/B,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;gBACpC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,156 @@
1
+ import { type WakeCondition } from './ws-event-client.js';
2
+ interface ControlStatus {
3
+ halted: boolean;
4
+ paused: boolean;
5
+ reason?: string;
6
+ }
7
+ export interface ProtocolResponse {
8
+ protocol: {
9
+ name: string;
10
+ title: string;
11
+ };
12
+ role: {
13
+ name: string;
14
+ description: string;
15
+ };
16
+ current_phase: string;
17
+ instructions: string;
18
+ phases: Record<string, {
19
+ description: string;
20
+ terminal?: boolean;
21
+ }>;
22
+ governance?: Record<string, unknown>;
23
+ team?: Array<{
24
+ agent: string;
25
+ role: string;
26
+ }>;
27
+ rules?: Record<string, {
28
+ loop?: boolean;
29
+ steps: Array<{
30
+ action: string;
31
+ description?: string;
32
+ hint?: string;
33
+ params?: Record<string, unknown>;
34
+ }>;
35
+ }>;
36
+ resources?: Record<string, unknown>;
37
+ wait?: {
38
+ types?: string[];
39
+ max_timeout?: number;
40
+ };
41
+ /** Context retention: 0 = stateless (reset each iteration), N = keep last N exchanges. Omit for full history. */
42
+ context?: number;
43
+ /** LLM temperature override from spec. */
44
+ temperature?: number;
45
+ /** Disable LLM reasoning/thinking (e.g. gpt-oss). false = disable. */
46
+ reasoning?: boolean;
47
+ /** Reasoning effort level (e.g. 'low', 'medium', 'high'). */
48
+ reasoning_effort?: string;
49
+ }
50
+ export interface AcpRuntimeConfig {
51
+ serverUrl: string;
52
+ namespace: string;
53
+ agentId: string;
54
+ role: string;
55
+ maxIterations: number;
56
+ verbose?: boolean;
57
+ /** Use WebSocket for event delivery instead of polling. */
58
+ useWebSocket?: boolean;
59
+ }
60
+ /**
61
+ * Invisible ACP coordination layer.
62
+ * Wraps AcpClient and provides:
63
+ * - Lazy file-level claims on writes
64
+ * - Event polling between iterations
65
+ * - Progress reporting
66
+ * - Control status (halt/pause) checking
67
+ *
68
+ * The LLM never sees coordination tools — it only gets environment tools from Propolis.
69
+ */
70
+ export declare class AcpRuntime {
71
+ private client;
72
+ private claims;
73
+ private events;
74
+ private progress;
75
+ private config;
76
+ private iterationCount;
77
+ private wsClient;
78
+ constructor(config: AcpRuntimeConfig);
79
+ /**
80
+ * Connect to incubator and register role.
81
+ */
82
+ connect(): Promise<void>;
83
+ /**
84
+ * Disconnect — release claims, close WS, and report completion.
85
+ */
86
+ disconnect(): Promise<void>;
87
+ /**
88
+ * Wait for a wake event. Used by sleep/wake agents between iterations.
89
+ * Returns formatted event strings, or empty array on timeout.
90
+ */
91
+ waitForWake(condition: WakeCondition): Promise<string[]>;
92
+ /**
93
+ * Get the last inject string from a dance-enabled WS connection.
94
+ * Consumed on read.
95
+ */
96
+ getLastInject(): string | null;
97
+ /**
98
+ * Call a dance tool on the server via WebSocket.
99
+ */
100
+ callDanceTool(tool: string, args: Record<string, unknown>): Promise<unknown>;
101
+ /**
102
+ * Get dance tool definitions from the server (received via WS).
103
+ */
104
+ getDanceTools(): import('../types.js').ToolDef[] | null;
105
+ /**
106
+ * Called by runner before each iteration.
107
+ * Returns context messages to inject (events from other agents).
108
+ */
109
+ beforeIteration(): Promise<string[]>;
110
+ /**
111
+ * Called when Propolis executes a file write.
112
+ * Auto-acquires file claim. Returns error message if conflict, null if OK.
113
+ */
114
+ onFileWrite(path: string): Promise<string | null>;
115
+ /**
116
+ * Called on task completion — release claims and report.
117
+ */
118
+ onComplete(summary: string, usage?: {
119
+ promptTokens: number;
120
+ completionTokens: number;
121
+ totalTokens: number;
122
+ }): Promise<void>;
123
+ /**
124
+ * Fetch protocol from incubator for system prompt generation.
125
+ */
126
+ fetchProtocol(): Promise<ProtocolResponse | null>;
127
+ /**
128
+ * Publish a coordination event (exposed as synthetic tool in invisible mode).
129
+ */
130
+ publishEvent(type: string, data?: Record<string, unknown>): Promise<string>;
131
+ /**
132
+ * Set shared state (exposed as synthetic tool in invisible mode).
133
+ */
134
+ setState(key: string, value: unknown): Promise<string>;
135
+ /**
136
+ * Get shared state (exposed as synthetic tool in invisible mode).
137
+ */
138
+ getState(): Promise<string>;
139
+ /**
140
+ * Claim exclusive ownership of a resource (exposed as synthetic tool).
141
+ */
142
+ claimResource(resource: string, reason?: string): Promise<string>;
143
+ /**
144
+ * Release a previously claimed resource (exposed as synthetic tool).
145
+ */
146
+ releaseResource(resource: string): Promise<string>;
147
+ /**
148
+ * Check halt/pause status.
149
+ */
150
+ checkControl(): Promise<ControlStatus>;
151
+ /**
152
+ * Wait for resume after pause.
153
+ */
154
+ waitForResume(pollIntervalMs?: number): Promise<string>;
155
+ }
156
+ export {};