macro-agent 0.0.10 → 0.0.12

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 (518) hide show
  1. package/.macro-agent/teams/self-driving/prompts/grinder.md +27 -0
  2. package/.macro-agent/teams/self-driving/prompts/judge.md +27 -0
  3. package/.macro-agent/teams/self-driving/prompts/planner.md +33 -0
  4. package/.macro-agent/teams/self-driving/roles/grinder.yaml +17 -0
  5. package/.macro-agent/teams/self-driving/roles/judge.yaml +24 -0
  6. package/.macro-agent/teams/self-driving/roles/planner.yaml +18 -0
  7. package/.macro-agent/teams/self-driving/team.yaml +103 -0
  8. package/.macro-agent/teams/structured/prompts/developer.md +26 -0
  9. package/.macro-agent/teams/structured/prompts/lead.md +25 -0
  10. package/.macro-agent/teams/structured/prompts/reviewer.md +24 -0
  11. package/.macro-agent/teams/structured/roles/developer.yaml +12 -0
  12. package/.macro-agent/teams/structured/roles/lead.yaml +11 -0
  13. package/.macro-agent/teams/structured/roles/reviewer.yaml +19 -0
  14. package/.macro-agent/teams/structured/team.yaml +89 -0
  15. package/.sudocode/issues.jsonl +56 -51
  16. package/.sudocode/specs.jsonl +8 -1
  17. package/CLAUDE.md +121 -30
  18. package/README.md +60 -3
  19. package/dist/acp/macro-agent.d.ts +4 -0
  20. package/dist/acp/macro-agent.d.ts.map +1 -1
  21. package/dist/acp/macro-agent.js +50 -4
  22. package/dist/acp/macro-agent.js.map +1 -1
  23. package/dist/acp/session-mapper.d.ts +20 -1
  24. package/dist/acp/session-mapper.d.ts.map +1 -1
  25. package/dist/acp/session-mapper.js +90 -1
  26. package/dist/acp/session-mapper.js.map +1 -1
  27. package/dist/acp/types.d.ts +24 -1
  28. package/dist/acp/types.d.ts.map +1 -1
  29. package/dist/acp/types.js.map +1 -1
  30. package/dist/agent/agent-manager.d.ts +40 -1
  31. package/dist/agent/agent-manager.d.ts.map +1 -1
  32. package/dist/agent/agent-manager.js +172 -8
  33. package/dist/agent/agent-manager.js.map +1 -1
  34. package/dist/agent/types.d.ts +22 -0
  35. package/dist/agent/types.d.ts.map +1 -1
  36. package/dist/agent/types.js.map +1 -1
  37. package/dist/agent/wake.d.ts +15 -0
  38. package/dist/agent/wake.d.ts.map +1 -1
  39. package/dist/agent/wake.js +15 -0
  40. package/dist/agent/wake.js.map +1 -1
  41. package/dist/agent-detection/command-builder.d.ts +30 -0
  42. package/dist/agent-detection/command-builder.d.ts.map +1 -0
  43. package/dist/agent-detection/command-builder.js +71 -0
  44. package/dist/agent-detection/command-builder.js.map +1 -0
  45. package/dist/agent-detection/detector.d.ts +84 -0
  46. package/dist/agent-detection/detector.d.ts.map +1 -0
  47. package/dist/agent-detection/detector.js +240 -0
  48. package/dist/agent-detection/detector.js.map +1 -0
  49. package/dist/agent-detection/index.d.ts +12 -0
  50. package/dist/agent-detection/index.d.ts.map +1 -0
  51. package/dist/agent-detection/index.js +14 -0
  52. package/dist/agent-detection/index.js.map +1 -0
  53. package/dist/agent-detection/registry.d.ts +53 -0
  54. package/dist/agent-detection/registry.d.ts.map +1 -0
  55. package/dist/agent-detection/registry.js +177 -0
  56. package/dist/agent-detection/registry.js.map +1 -0
  57. package/dist/agent-detection/types.d.ts +121 -0
  58. package/dist/agent-detection/types.d.ts.map +1 -0
  59. package/dist/agent-detection/types.js +20 -0
  60. package/dist/agent-detection/types.js.map +1 -0
  61. package/dist/api/server.d.ts +5 -1
  62. package/dist/api/server.d.ts.map +1 -1
  63. package/dist/api/server.js +362 -0
  64. package/dist/api/server.js.map +1 -1
  65. package/dist/api/types.d.ts +50 -1
  66. package/dist/api/types.d.ts.map +1 -1
  67. package/dist/cli/acp.d.ts +2 -0
  68. package/dist/cli/acp.d.ts.map +1 -1
  69. package/dist/cli/acp.js +8 -1
  70. package/dist/cli/acp.js.map +1 -1
  71. package/dist/cli/index.js +29 -0
  72. package/dist/cli/index.js.map +1 -1
  73. package/dist/cli/mcp.js +38 -0
  74. package/dist/cli/mcp.js.map +1 -1
  75. package/dist/config/index.d.ts +2 -0
  76. package/dist/config/index.d.ts.map +1 -0
  77. package/dist/config/index.js +2 -0
  78. package/dist/config/index.js.map +1 -0
  79. package/dist/config/project-config.d.ts +46 -0
  80. package/dist/config/project-config.d.ts.map +1 -0
  81. package/dist/config/project-config.js +68 -0
  82. package/dist/config/project-config.js.map +1 -0
  83. package/dist/lifecycle/cascade.d.ts +1 -1
  84. package/dist/lifecycle/cascade.d.ts.map +1 -1
  85. package/dist/lifecycle/handlers/index.d.ts +4 -0
  86. package/dist/lifecycle/handlers/index.d.ts.map +1 -1
  87. package/dist/lifecycle/handlers/index.js +2 -0
  88. package/dist/lifecycle/handlers/index.js.map +1 -1
  89. package/dist/lifecycle/handlers/worker.d.ts +4 -0
  90. package/dist/lifecycle/handlers/worker.d.ts.map +1 -1
  91. package/dist/lifecycle/handlers/worker.js +35 -3
  92. package/dist/lifecycle/handlers/worker.js.map +1 -1
  93. package/dist/mail/conversation-map.d.ts +33 -0
  94. package/dist/mail/conversation-map.d.ts.map +1 -0
  95. package/dist/mail/conversation-map.js +61 -0
  96. package/dist/mail/conversation-map.js.map +1 -0
  97. package/dist/mail/index.d.ts +11 -0
  98. package/dist/mail/index.d.ts.map +1 -0
  99. package/dist/mail/index.js +11 -0
  100. package/dist/mail/index.js.map +1 -0
  101. package/dist/mail/mail-service.d.ts +85 -0
  102. package/dist/mail/mail-service.d.ts.map +1 -0
  103. package/dist/mail/mail-service.js +121 -0
  104. package/dist/mail/mail-service.js.map +1 -0
  105. package/dist/mail/stores/eventstore-conversation-store.d.ts +40 -0
  106. package/dist/mail/stores/eventstore-conversation-store.d.ts.map +1 -0
  107. package/dist/mail/stores/eventstore-conversation-store.js +131 -0
  108. package/dist/mail/stores/eventstore-conversation-store.js.map +1 -0
  109. package/dist/mail/stores/eventstore-participant-store.d.ts +43 -0
  110. package/dist/mail/stores/eventstore-participant-store.d.ts.map +1 -0
  111. package/dist/mail/stores/eventstore-participant-store.js +145 -0
  112. package/dist/mail/stores/eventstore-participant-store.js.map +1 -0
  113. package/dist/mail/stores/eventstore-thread-store.d.ts +46 -0
  114. package/dist/mail/stores/eventstore-thread-store.d.ts.map +1 -0
  115. package/dist/mail/stores/eventstore-thread-store.js +118 -0
  116. package/dist/mail/stores/eventstore-thread-store.js.map +1 -0
  117. package/dist/mail/stores/eventstore-turn-store.d.ts +47 -0
  118. package/dist/mail/stores/eventstore-turn-store.d.ts.map +1 -0
  119. package/dist/mail/stores/eventstore-turn-store.js +153 -0
  120. package/dist/mail/stores/eventstore-turn-store.js.map +1 -0
  121. package/dist/mail/stores/index.d.ts +12 -0
  122. package/dist/mail/stores/index.d.ts.map +1 -0
  123. package/dist/mail/stores/index.js +12 -0
  124. package/dist/mail/stores/index.js.map +1 -0
  125. package/dist/mail/stores/types.d.ts +146 -0
  126. package/dist/mail/stores/types.d.ts.map +1 -0
  127. package/dist/mail/stores/types.js +13 -0
  128. package/dist/mail/stores/types.js.map +1 -0
  129. package/dist/mail/turn-recorder.d.ts +30 -0
  130. package/dist/mail/turn-recorder.d.ts.map +1 -0
  131. package/dist/mail/turn-recorder.js +98 -0
  132. package/dist/mail/turn-recorder.js.map +1 -0
  133. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  134. package/dist/map/adapter/acp-over-map.js +32 -2
  135. package/dist/map/adapter/acp-over-map.js.map +1 -1
  136. package/dist/map/adapter/event-translator.d.ts.map +1 -1
  137. package/dist/map/adapter/event-translator.js +4 -0
  138. package/dist/map/adapter/event-translator.js.map +1 -1
  139. package/dist/map/adapter/extensions/agent-detection.d.ts +49 -0
  140. package/dist/map/adapter/extensions/agent-detection.d.ts.map +1 -0
  141. package/dist/map/adapter/extensions/agent-detection.js +91 -0
  142. package/dist/map/adapter/extensions/agent-detection.js.map +1 -0
  143. package/dist/map/adapter/extensions/index.d.ts +10 -1
  144. package/dist/map/adapter/extensions/index.d.ts.map +1 -1
  145. package/dist/map/adapter/extensions/index.js +39 -0
  146. package/dist/map/adapter/extensions/index.js.map +1 -1
  147. package/dist/map/adapter/extensions/resume.d.ts +47 -0
  148. package/dist/map/adapter/extensions/resume.d.ts.map +1 -0
  149. package/dist/map/adapter/extensions/resume.js +59 -0
  150. package/dist/map/adapter/extensions/resume.js.map +1 -0
  151. package/dist/map/adapter/extensions/workspace-files.d.ts +42 -0
  152. package/dist/map/adapter/extensions/workspace-files.d.ts.map +1 -0
  153. package/dist/map/adapter/extensions/workspace-files.js +338 -0
  154. package/dist/map/adapter/extensions/workspace-files.js.map +1 -0
  155. package/dist/map/adapter/mail-handler-adapter.d.ts +27 -0
  156. package/dist/map/adapter/mail-handler-adapter.d.ts.map +1 -0
  157. package/dist/map/adapter/mail-handler-adapter.js +292 -0
  158. package/dist/map/adapter/mail-handler-adapter.js.map +1 -0
  159. package/dist/map/adapter/map-adapter.d.ts +34 -10
  160. package/dist/map/adapter/map-adapter.d.ts.map +1 -1
  161. package/dist/map/adapter/map-adapter.js +110 -14
  162. package/dist/map/adapter/map-adapter.js.map +1 -1
  163. package/dist/map/adapter/rpc-handler.d.ts +4 -1
  164. package/dist/map/adapter/rpc-handler.d.ts.map +1 -1
  165. package/dist/map/adapter/rpc-handler.js +6 -0
  166. package/dist/map/adapter/rpc-handler.js.map +1 -1
  167. package/dist/map/index.d.ts +1 -0
  168. package/dist/map/index.d.ts.map +1 -1
  169. package/dist/map/index.js +2 -0
  170. package/dist/map/index.js.map +1 -1
  171. package/dist/map/types.d.ts +3 -1
  172. package/dist/map/types.d.ts.map +1 -1
  173. package/dist/map/types.js.map +1 -1
  174. package/dist/mcp/mcp-server.d.ts +6 -0
  175. package/dist/mcp/mcp-server.d.ts.map +1 -1
  176. package/dist/mcp/mcp-server.js +45 -0
  177. package/dist/mcp/mcp-server.js.map +1 -1
  178. package/dist/mcp/tools/claim_task.d.ts +35 -0
  179. package/dist/mcp/tools/claim_task.d.ts.map +1 -0
  180. package/dist/mcp/tools/claim_task.js +58 -0
  181. package/dist/mcp/tools/claim_task.js.map +1 -0
  182. package/dist/mcp/tools/done.d.ts +15 -2
  183. package/dist/mcp/tools/done.d.ts.map +1 -1
  184. package/dist/mcp/tools/done.js +45 -10
  185. package/dist/mcp/tools/done.js.map +1 -1
  186. package/dist/mcp/tools/list_claimable_tasks.d.ts +38 -0
  187. package/dist/mcp/tools/list_claimable_tasks.d.ts.map +1 -0
  188. package/dist/mcp/tools/list_claimable_tasks.js +63 -0
  189. package/dist/mcp/tools/list_claimable_tasks.js.map +1 -0
  190. package/dist/mcp/tools/unclaim_task.d.ts +31 -0
  191. package/dist/mcp/tools/unclaim_task.d.ts.map +1 -0
  192. package/dist/mcp/tools/unclaim_task.js +47 -0
  193. package/dist/mcp/tools/unclaim_task.js.map +1 -0
  194. package/dist/metrics/index.d.ts +2 -0
  195. package/dist/metrics/index.d.ts.map +1 -0
  196. package/dist/metrics/index.js +2 -0
  197. package/dist/metrics/index.js.map +1 -0
  198. package/dist/metrics/metrics.d.ts +79 -0
  199. package/dist/metrics/metrics.d.ts.map +1 -0
  200. package/dist/metrics/metrics.js +166 -0
  201. package/dist/metrics/metrics.js.map +1 -0
  202. package/dist/roles/capabilities.d.ts +1 -0
  203. package/dist/roles/capabilities.d.ts.map +1 -1
  204. package/dist/roles/capabilities.js +3 -0
  205. package/dist/roles/capabilities.js.map +1 -1
  206. package/dist/roles/types.d.ts +1 -1
  207. package/dist/roles/types.d.ts.map +1 -1
  208. package/dist/router/channels.d.ts +2 -4
  209. package/dist/router/channels.d.ts.map +1 -1
  210. package/dist/router/channels.js.map +1 -1
  211. package/dist/router/message-router.d.ts +85 -9
  212. package/dist/router/message-router.d.ts.map +1 -1
  213. package/dist/router/message-router.js +203 -14
  214. package/dist/router/message-router.js.map +1 -1
  215. package/dist/router/role-resolver.d.ts +10 -1
  216. package/dist/router/role-resolver.d.ts.map +1 -1
  217. package/dist/router/role-resolver.js +15 -1
  218. package/dist/router/role-resolver.js.map +1 -1
  219. package/dist/router/types.d.ts +30 -1
  220. package/dist/router/types.d.ts.map +1 -1
  221. package/dist/router/types.js.map +1 -1
  222. package/dist/server/combined-server.d.ts +6 -0
  223. package/dist/server/combined-server.d.ts.map +1 -1
  224. package/dist/server/combined-server.js +24 -2
  225. package/dist/server/combined-server.js.map +1 -1
  226. package/dist/store/event-store.d.ts +14 -1
  227. package/dist/store/event-store.d.ts.map +1 -1
  228. package/dist/store/event-store.js +456 -4
  229. package/dist/store/event-store.js.map +1 -1
  230. package/dist/store/types/agents.d.ts +1 -1
  231. package/dist/store/types/agents.d.ts.map +1 -1
  232. package/dist/store/types/conversations.d.ts +91 -0
  233. package/dist/store/types/conversations.d.ts.map +1 -0
  234. package/dist/store/types/conversations.js +8 -0
  235. package/dist/store/types/conversations.js.map +1 -0
  236. package/dist/store/types/events.d.ts +1 -1
  237. package/dist/store/types/events.d.ts.map +1 -1
  238. package/dist/store/types/events.js.map +1 -1
  239. package/dist/store/types/index.d.ts +2 -0
  240. package/dist/store/types/index.d.ts.map +1 -1
  241. package/dist/store/types/index.js +2 -0
  242. package/dist/store/types/index.js.map +1 -1
  243. package/dist/store/types/sessions.d.ts +44 -0
  244. package/dist/store/types/sessions.d.ts.map +1 -0
  245. package/dist/store/types/sessions.js +9 -0
  246. package/dist/store/types/sessions.js.map +1 -0
  247. package/dist/store/types/tasks.d.ts +2 -0
  248. package/dist/store/types/tasks.d.ts.map +1 -1
  249. package/dist/task/backend/memory.d.ts +4 -1
  250. package/dist/task/backend/memory.d.ts.map +1 -1
  251. package/dist/task/backend/memory.js +81 -0
  252. package/dist/task/backend/memory.js.map +1 -1
  253. package/dist/task/backend/types.d.ts +30 -0
  254. package/dist/task/backend/types.d.ts.map +1 -1
  255. package/dist/task/backend/types.js.map +1 -1
  256. package/dist/teams/index.d.ts +4 -0
  257. package/dist/teams/index.d.ts.map +1 -0
  258. package/dist/teams/index.js +4 -0
  259. package/dist/teams/index.js.map +1 -0
  260. package/dist/teams/team-loader.d.ts +20 -0
  261. package/dist/teams/team-loader.d.ts.map +1 -0
  262. package/dist/teams/team-loader.js +293 -0
  263. package/dist/teams/team-loader.js.map +1 -0
  264. package/dist/teams/team-runtime.d.ts +139 -0
  265. package/dist/teams/team-runtime.d.ts.map +1 -0
  266. package/dist/teams/team-runtime.js +613 -0
  267. package/dist/teams/team-runtime.js.map +1 -0
  268. package/dist/teams/types.d.ts +266 -0
  269. package/dist/teams/types.d.ts.map +1 -0
  270. package/dist/teams/types.js +20 -0
  271. package/dist/teams/types.js.map +1 -0
  272. package/dist/trigger/router/trigger-router.d.ts +30 -3
  273. package/dist/trigger/router/trigger-router.d.ts.map +1 -1
  274. package/dist/trigger/router/trigger-router.js +30 -3
  275. package/dist/trigger/router/trigger-router.js.map +1 -1
  276. package/dist/trigger/wake/types.d.ts +31 -5
  277. package/dist/trigger/wake/types.d.ts.map +1 -1
  278. package/dist/trigger/wake/types.js +19 -0
  279. package/dist/trigger/wake/types.js.map +1 -1
  280. package/dist/workspace/dataplane-adapter.d.ts +1 -1
  281. package/dist/workspace/dataplane-adapter.d.ts.map +1 -1
  282. package/dist/workspace/dataplane-adapter.js +1 -1
  283. package/dist/workspace/dataplane-adapter.js.map +1 -1
  284. package/dist/workspace/index.d.ts +1 -1
  285. package/dist/workspace/index.d.ts.map +1 -1
  286. package/dist/workspace/strategies/index.d.ts +6 -0
  287. package/dist/workspace/strategies/index.d.ts.map +1 -0
  288. package/dist/workspace/strategies/index.js +5 -0
  289. package/dist/workspace/strategies/index.js.map +1 -0
  290. package/dist/workspace/strategies/optimistic.d.ts +26 -0
  291. package/dist/workspace/strategies/optimistic.d.ts.map +1 -0
  292. package/dist/workspace/strategies/optimistic.js +121 -0
  293. package/dist/workspace/strategies/optimistic.js.map +1 -0
  294. package/dist/workspace/strategies/queue.d.ts +26 -0
  295. package/dist/workspace/strategies/queue.d.ts.map +1 -0
  296. package/dist/workspace/strategies/queue.js +67 -0
  297. package/dist/workspace/strategies/queue.js.map +1 -0
  298. package/dist/workspace/strategies/registry.d.ts +37 -0
  299. package/dist/workspace/strategies/registry.d.ts.map +1 -0
  300. package/dist/workspace/strategies/registry.js +63 -0
  301. package/dist/workspace/strategies/registry.js.map +1 -0
  302. package/dist/workspace/strategies/trunk.d.ts +20 -0
  303. package/dist/workspace/strategies/trunk.d.ts.map +1 -0
  304. package/dist/workspace/strategies/trunk.js +108 -0
  305. package/dist/workspace/strategies/trunk.js.map +1 -0
  306. package/dist/workspace/strategies/types.d.ts +104 -0
  307. package/dist/workspace/strategies/types.d.ts.map +1 -0
  308. package/dist/workspace/strategies/types.js +11 -0
  309. package/dist/workspace/strategies/types.js.map +1 -0
  310. package/dist/workspace/types.d.ts +1 -1
  311. package/dist/workspace/types.d.ts.map +1 -1
  312. package/dist/workspace/workspace-manager.d.ts +1 -1
  313. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  314. package/docs/implementation-details.md +1127 -0
  315. package/docs/implementation-summary.md +448 -0
  316. package/docs/mail-integration.md +608 -0
  317. package/docs/plan-self-driving-support.md +433 -0
  318. package/docs/spec-self-driving-support.md +462 -0
  319. package/docs/team-templates.md +860 -0
  320. package/docs/teams.md +233 -0
  321. package/package.json +5 -3
  322. package/src/acp/__tests__/integration.test.ts +161 -1
  323. package/src/acp/__tests__/macro-agent.test.ts +95 -0
  324. package/src/acp/__tests__/session-persistence.test.ts +276 -0
  325. package/src/acp/macro-agent.ts +79 -7
  326. package/src/acp/session-mapper.ts +108 -1
  327. package/src/acp/types.ts +33 -1
  328. package/src/agent/agent-manager.ts +278 -6
  329. package/src/agent/types.ts +27 -0
  330. package/src/agent/wake.ts +15 -0
  331. package/src/agent-detection/__tests__/command-builder.test.ts +336 -0
  332. package/src/agent-detection/__tests__/detector.test.ts +768 -0
  333. package/src/agent-detection/__tests__/registry.test.ts +254 -0
  334. package/src/agent-detection/command-builder.ts +90 -0
  335. package/src/agent-detection/detector.ts +307 -0
  336. package/src/agent-detection/index.ts +36 -0
  337. package/src/agent-detection/registry.ts +200 -0
  338. package/src/agent-detection/types.ts +184 -0
  339. package/src/api/__tests__/conversation-api.test.ts +468 -0
  340. package/src/api/server.ts +425 -1
  341. package/src/api/types.ts +64 -1
  342. package/src/cli/acp.ts +9 -1
  343. package/src/cli/index.ts +44 -0
  344. package/src/cli/mcp.ts +47 -0
  345. package/src/config/index.ts +9 -0
  346. package/src/config/project-config.ts +107 -0
  347. package/src/lifecycle/cascade.ts +1 -1
  348. package/src/lifecycle/handlers/index.ts +8 -0
  349. package/src/lifecycle/handlers/worker.ts +48 -3
  350. package/src/mail/__tests__/conversation-lifecycle.test.ts +409 -0
  351. package/src/mail/__tests__/eventstore-stores.test.ts +1073 -0
  352. package/src/mail/__tests__/mail-full-agent.e2e.test.ts +575 -0
  353. package/src/mail/__tests__/mail-integration.test.ts +759 -0
  354. package/src/mail/__tests__/mail-map-protocol.e2e.test.ts +1068 -0
  355. package/src/mail/__tests__/mail-service.test.ts +506 -0
  356. package/src/mail/__tests__/turn-recorder.test.ts +328 -0
  357. package/src/mail/conversation-map.ts +107 -0
  358. package/src/mail/index.ts +25 -0
  359. package/src/mail/mail-service.ts +257 -0
  360. package/src/mail/stores/eventstore-conversation-store.ts +146 -0
  361. package/src/mail/stores/eventstore-participant-store.ts +172 -0
  362. package/src/mail/stores/eventstore-thread-store.ts +129 -0
  363. package/src/mail/stores/eventstore-turn-store.ts +173 -0
  364. package/src/mail/stores/index.ts +12 -0
  365. package/src/mail/stores/types.ts +160 -0
  366. package/src/mail/turn-recorder.ts +124 -0
  367. package/src/map/README.md +79 -0
  368. package/src/map/adapter/__tests__/extensions.test.ts +359 -0
  369. package/src/map/adapter/__tests__/map-adapter.test.ts +90 -0
  370. package/src/map/adapter/__tests__/workspace-files.test.ts +673 -0
  371. package/src/map/adapter/acp-over-map.ts +45 -2
  372. package/src/map/adapter/event-translator.ts +4 -0
  373. package/src/map/adapter/extensions/agent-detection.ts +201 -0
  374. package/src/map/adapter/extensions/index.ts +63 -0
  375. package/src/map/adapter/extensions/resume.ts +114 -0
  376. package/src/map/adapter/extensions/workspace-files.ts +449 -0
  377. package/src/map/adapter/mail-handler-adapter.ts +429 -0
  378. package/src/map/adapter/map-adapter.ts +173 -27
  379. package/src/map/adapter/rpc-handler.ts +8 -1
  380. package/src/map/index.ts +3 -0
  381. package/src/map/types.ts +3 -1
  382. package/src/mcp/mcp-server.ts +67 -0
  383. package/src/mcp/tools/claim_task.ts +86 -0
  384. package/src/mcp/tools/done.ts +59 -10
  385. package/src/mcp/tools/list_claimable_tasks.ts +93 -0
  386. package/src/mcp/tools/unclaim_task.ts +71 -0
  387. package/src/metrics/index.ts +9 -0
  388. package/src/metrics/metrics.ts +280 -0
  389. package/src/roles/capabilities.ts +3 -0
  390. package/src/roles/types.ts +2 -1
  391. package/src/router/README.md +120 -0
  392. package/src/router/__tests__/message-router.test.ts +561 -0
  393. package/src/router/channels.ts +3 -4
  394. package/src/router/message-router.ts +308 -22
  395. package/src/router/role-resolver.ts +22 -1
  396. package/src/router/types.ts +36 -1
  397. package/src/server/combined-server.ts +36 -2
  398. package/src/store/README.md +134 -0
  399. package/src/store/event-store.ts +546 -3
  400. package/src/store/types/agents.ts +1 -1
  401. package/src/store/types/conversations.ts +129 -0
  402. package/src/store/types/events.ts +5 -1
  403. package/src/store/types/index.ts +2 -0
  404. package/src/store/types/sessions.ts +53 -0
  405. package/src/store/types/tasks.ts +3 -0
  406. package/src/task/backend/memory.ts +116 -0
  407. package/src/task/backend/types.ts +43 -0
  408. package/src/teams/__tests__/cross-subsystem.integration.test.ts +983 -0
  409. package/src/teams/__tests__/e2e/team-runtime.e2e.test.ts +553 -0
  410. package/src/teams/__tests__/team-system.test.ts +1280 -0
  411. package/src/teams/index.ts +13 -0
  412. package/src/teams/team-loader.ts +434 -0
  413. package/src/teams/team-runtime.ts +727 -0
  414. package/src/teams/types.ts +377 -0
  415. package/src/trigger/router/trigger-router.ts +30 -3
  416. package/src/trigger/wake/types.ts +32 -5
  417. package/src/trigger/wake/wake-manager.ts +2 -2
  418. package/src/workspace/dataplane-adapter.ts +1 -1
  419. package/src/workspace/index.ts +1 -1
  420. package/src/workspace/strategies/index.ts +18 -0
  421. package/src/workspace/strategies/optimistic.ts +136 -0
  422. package/src/workspace/strategies/queue.ts +81 -0
  423. package/src/workspace/strategies/registry.ts +89 -0
  424. package/src/workspace/strategies/trunk.ts +123 -0
  425. package/src/workspace/strategies/types.ts +145 -0
  426. package/src/workspace/types.ts +1 -1
  427. package/src/workspace/workspace-manager.ts +1 -1
  428. package/.claude/settings.local.json +0 -59
  429. package/dist/map/utils/address-translation.d.ts +0 -99
  430. package/dist/map/utils/address-translation.d.ts.map +0 -1
  431. package/dist/map/utils/address-translation.js +0 -285
  432. package/dist/map/utils/address-translation.js.map +0 -1
  433. package/dist/map/utils/index.d.ts +0 -7
  434. package/dist/map/utils/index.d.ts.map +0 -1
  435. package/dist/map/utils/index.js +0 -7
  436. package/dist/map/utils/index.js.map +0 -1
  437. package/openspec/AGENTS.md +0 -456
  438. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/design.md +0 -128
  439. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/proposal.md +0 -49
  440. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/agent-manager/spec.md +0 -150
  441. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/cli-api/spec.md +0 -258
  442. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/event-store/spec.md +0 -160
  443. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/mcp-tools/spec.md +0 -224
  444. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/message-router/spec.md +0 -153
  445. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/task-manager/spec.md +0 -136
  446. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/tasks.md +0 -147
  447. package/openspec/project.md +0 -31
  448. package/openspec/specs/agent-manager/spec.md +0 -154
  449. package/openspec/specs/cli-api/spec.md +0 -262
  450. package/openspec/specs/event-store/spec.md +0 -164
  451. package/openspec/specs/mcp-tools/spec.md +0 -228
  452. package/openspec/specs/message-router/spec.md +0 -157
  453. package/openspec/specs/task-manager/spec.md +0 -140
  454. package/references/acp-factory-ref/CHANGELOG.md +0 -33
  455. package/references/acp-factory-ref/LICENSE +0 -21
  456. package/references/acp-factory-ref/README.md +0 -341
  457. package/references/acp-factory-ref/package-lock.json +0 -3102
  458. package/references/acp-factory-ref/package.json +0 -96
  459. package/references/acp-factory-ref/python/CHANGELOG.md +0 -33
  460. package/references/acp-factory-ref/python/LICENSE +0 -21
  461. package/references/acp-factory-ref/python/Makefile +0 -57
  462. package/references/acp-factory-ref/python/README.md +0 -253
  463. package/references/acp-factory-ref/python/pyproject.toml +0 -73
  464. package/references/acp-factory-ref/python/tests/__init__.py +0 -0
  465. package/references/acp-factory-ref/python/tests/e2e/__init__.py +0 -1
  466. package/references/acp-factory-ref/python/tests/e2e/test_codex_e2e.py +0 -349
  467. package/references/acp-factory-ref/python/tests/e2e/test_gemini_e2e.py +0 -165
  468. package/references/acp-factory-ref/python/tests/e2e/test_opencode_e2e.py +0 -296
  469. package/references/acp-factory-ref/python/tests/test_client_handler.py +0 -543
  470. package/references/acp-factory-ref/python/tests/test_pushable.py +0 -199
  471. package/references/claude-code-acp/.github/workflows/ci.yml +0 -45
  472. package/references/claude-code-acp/.github/workflows/publish.yml +0 -34
  473. package/references/claude-code-acp/.prettierrc.json +0 -4
  474. package/references/claude-code-acp/CHANGELOG.md +0 -249
  475. package/references/claude-code-acp/LICENSE +0 -222
  476. package/references/claude-code-acp/README.md +0 -53
  477. package/references/claude-code-acp/docs/RELEASES.md +0 -24
  478. package/references/claude-code-acp/eslint.config.js +0 -48
  479. package/references/claude-code-acp/package-lock.json +0 -4570
  480. package/references/claude-code-acp/package.json +0 -88
  481. package/references/claude-code-acp/scripts/release.sh +0 -119
  482. package/references/claude-code-acp/src/acp-agent.ts +0 -2065
  483. package/references/claude-code-acp/src/index.ts +0 -26
  484. package/references/claude-code-acp/src/lib.ts +0 -38
  485. package/references/claude-code-acp/src/mcp-server.ts +0 -911
  486. package/references/claude-code-acp/src/settings.ts +0 -522
  487. package/references/claude-code-acp/src/tests/.claude/commands/quick-math.md +0 -5
  488. package/references/claude-code-acp/src/tests/.claude/commands/say-hello.md +0 -6
  489. package/references/claude-code-acp/src/tests/acp-agent-fork.test.ts +0 -479
  490. package/references/claude-code-acp/src/tests/acp-agent.test.ts +0 -1502
  491. package/references/claude-code-acp/src/tests/extract-lines.test.ts +0 -103
  492. package/references/claude-code-acp/src/tests/fork-session.test.ts +0 -335
  493. package/references/claude-code-acp/src/tests/replace-and-calculate-location.test.ts +0 -334
  494. package/references/claude-code-acp/src/tests/settings.test.ts +0 -617
  495. package/references/claude-code-acp/src/tests/skills-options.test.ts +0 -187
  496. package/references/claude-code-acp/src/tests/tools.test.ts +0 -318
  497. package/references/claude-code-acp/src/tests/typescript-declarations.test.ts +0 -558
  498. package/references/claude-code-acp/src/tools.ts +0 -819
  499. package/references/claude-code-acp/src/utils.ts +0 -171
  500. package/references/claude-code-acp/tsconfig.json +0 -18
  501. package/references/claude-code-acp/vitest.config.ts +0 -19
  502. package/references/multi-agent-protocol/.sudocode/issues.jsonl +0 -82
  503. package/references/multi-agent-protocol/.sudocode/specs.jsonl +0 -9
  504. package/references/multi-agent-protocol/LICENSE +0 -21
  505. package/references/multi-agent-protocol/README.md +0 -113
  506. package/references/multi-agent-protocol/docs/00-design-specification.md +0 -460
  507. package/references/multi-agent-protocol/docs/01-open-questions.md +0 -1050
  508. package/references/multi-agent-protocol/docs/02-wire-protocol.md +0 -296
  509. package/references/multi-agent-protocol/docs/03-streaming-semantics.md +0 -252
  510. package/references/multi-agent-protocol/docs/04-error-handling.md +0 -231
  511. package/references/multi-agent-protocol/docs/05-connection-model.md +0 -244
  512. package/references/multi-agent-protocol/docs/06-visibility-permissions.md +0 -243
  513. package/references/multi-agent-protocol/docs/07-federation.md +0 -259
  514. package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +0 -253
  515. package/references/multi-agent-protocol/package-lock.json +0 -3239
  516. package/references/multi-agent-protocol/package.json +0 -56
  517. package/references/multi-agent-protocol/schema/meta.json +0 -337
  518. package/references/multi-agent-protocol/schema/schema.json +0 -1828
@@ -1,558 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from "vitest";
2
- import * as fs from "node:fs";
3
- import * as path from "node:path";
4
- import * as os from "node:os";
5
- import { spawnSync } from "child_process";
6
-
7
- describe.skipIf(!process.env.RUN_INTEGRATION_TESTS)(
8
- "TypeScript declaration files integration",
9
- () => {
10
- let tempDir: string;
11
- let tarballPath: string;
12
- const projectRoot = path.resolve(__dirname, "../..");
13
-
14
- // Base configuration templates
15
- const basePackageJson = {
16
- name: "ts-declaration-test",
17
- version: "1.0.0",
18
- type: "module",
19
- dependencies: {},
20
- devDependencies: {
21
- typescript: "5.9.3",
22
- "@types/node": "25.0.3",
23
- },
24
- };
25
-
26
- const baseTsConfig = {
27
- compilerOptions: {
28
- target: "ES2020",
29
- module: "NodeNext",
30
- moduleResolution: "NodeNext",
31
- lib: ["ES2020"],
32
- strict: true,
33
- esModuleInterop: true,
34
- skipLibCheck: true, // Skip checking dependency internals, focus on our types
35
- noEmit: true,
36
- declaration: false,
37
- },
38
- include: ["*.ts"],
39
- };
40
-
41
- // Build and pack the package once for all tests
42
- beforeAll(async () => {
43
- // Step 1: Clean dist folder to ensure fresh build
44
- const distPath = path.join(projectRoot, "dist");
45
- await fs.promises.rm(distPath, { recursive: true, force: true });
46
- console.log("Cleaned dist folder");
47
-
48
- console.log("Building package...");
49
-
50
- // Step 2: Build the package
51
- const buildResult = spawnSync("npm", ["run", "build"], {
52
- cwd: projectRoot,
53
- stdio: "pipe",
54
- encoding: "utf-8",
55
- });
56
-
57
- if (buildResult.status !== 0) {
58
- throw new Error(`Build failed: ${buildResult.stderr || buildResult.stdout}`);
59
- }
60
-
61
- console.log("Packing package...");
62
-
63
- // Step 3: Pack to create tarball
64
- const packResult = spawnSync("npm", ["pack", "--pack-destination", os.tmpdir()], {
65
- cwd: projectRoot,
66
- stdio: "pipe",
67
- encoding: "utf-8",
68
- });
69
-
70
- if (packResult.status !== 0) {
71
- throw new Error(`Pack failed: ${packResult.stderr || packResult.stdout}`);
72
- }
73
-
74
- // Get the tarball filename from stdout (npm pack outputs the filename)
75
- const tarballName = packResult.stdout.trim().split("\n").pop();
76
- if (!tarballName) {
77
- throw new Error("Failed to get tarball name from npm pack output");
78
- }
79
- tarballPath = path.join(os.tmpdir(), tarballName);
80
-
81
- console.log(`Tarball created at: ${tarballPath}`);
82
- }, 60000); // 60 second timeout for build
83
-
84
- // Clean up the tarball after all tests
85
- afterAll(async () => {
86
- if (tarballPath && fs.existsSync(tarballPath)) {
87
- await fs.promises.unlink(tarballPath);
88
- console.log("Cleaned up tarball");
89
- }
90
- });
91
-
92
- // Create fresh temp directory for each test
93
- beforeEach(async () => {
94
- tempDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), "ts-declaration-test-"));
95
- });
96
-
97
- // Clean up temp directory after each test
98
- afterEach(async () => {
99
- if (tempDir) {
100
- await fs.promises.rm(tempDir, { recursive: true, force: true });
101
- }
102
- });
103
-
104
- // Helper function to set up a test TypeScript project
105
- async function setupTestProject(
106
- packageJson: object = basePackageJson,
107
- tsconfig: object = baseTsConfig,
108
- ): Promise<void> {
109
- // Write package.json
110
- await fs.promises.writeFile(
111
- path.join(tempDir, "package.json"),
112
- JSON.stringify(packageJson, null, 2),
113
- );
114
-
115
- // Write tsconfig.json
116
- await fs.promises.writeFile(
117
- path.join(tempDir, "tsconfig.json"),
118
- JSON.stringify(tsconfig, null, 2),
119
- );
120
-
121
- // Install all dependencies (TypeScript, @types/node, and the tarball)
122
- console.log(`Installing dependencies in ${tempDir}...`);
123
- const installResult = spawnSync("npm", ["install", tarballPath], {
124
- cwd: tempDir,
125
- stdio: "pipe",
126
- encoding: "utf-8",
127
- timeout: 60000, // 60 second timeout
128
- });
129
-
130
- if (installResult.status !== 0) {
131
- throw new Error(`npm install failed: ${installResult.stderr || installResult.stdout}`);
132
- }
133
- }
134
-
135
- // Helper function to run TypeScript type checking
136
- function runTypeCheck(srcDir: string = tempDir): {
137
- success: boolean;
138
- output: string;
139
- } {
140
- const result = spawnSync("npx", ["tsc", "--noEmit"], {
141
- cwd: srcDir,
142
- stdio: "pipe",
143
- encoding: "utf-8",
144
- timeout: 30000, // 30 second timeout
145
- });
146
-
147
- return {
148
- success: result.status === 0,
149
- output: result.stdout + result.stderr,
150
- };
151
- }
152
-
153
- // Helper function to write a test TypeScript file
154
- async function writeTestFile(filename: string, content: string): Promise<void> {
155
- await fs.promises.writeFile(path.join(tempDir, filename), content);
156
- }
157
-
158
- // Test 1: Main exports import verification
159
- it("should successfully type-check main exports", async () => {
160
- await setupTestProject();
161
-
162
- await writeTestFile(
163
- "test-main-exports.ts",
164
- `
165
- import {
166
- ClaudeAcpAgent,
167
- runAcp,
168
- toAcpNotifications,
169
- streamEventToAcpNotifications,
170
- SettingsManager,
171
- createMcpServer,
172
- loadManagedSettings,
173
- applyEnvironmentSettings,
174
- nodeToWebReadable,
175
- nodeToWebWritable,
176
- Pushable,
177
- unreachable,
178
- toolInfoFromToolUse,
179
- planEntries,
180
- toolUpdateFromToolResult,
181
- createPreToolUseHook,
182
- toolNames,
183
- } from "@sudocode-ai/claude-code-acp";
184
-
185
- // Type-only imports
186
- import type {
187
- ToolUpdateMeta,
188
- NewSessionMeta,
189
- ClaudeCodeSettings,
190
- PermissionSettings,
191
- PermissionDecision,
192
- PermissionCheckResult,
193
- SettingsManagerOptions,
194
- ClaudePlanEntry,
195
- } from "@sudocode-ai/claude-code-acp";
196
-
197
- // Verify exports exist and have expected types
198
- const _runAcp: typeof runAcp = runAcp;
199
- const _createMcpServer: typeof createMcpServer = createMcpServer;
200
- const _toolNames: typeof toolNames = toolNames;
201
- `,
202
- );
203
-
204
- const result = runTypeCheck();
205
- if (!result.success) {
206
- console.error("TypeScript errors:", result.output);
207
- }
208
- expect(result.success).toBe(true);
209
- }, 120000);
210
-
211
- // Test 2: Deep imports verification (backwards compatibility)
212
- it("should successfully type-check deep imports", async () => {
213
- await setupTestProject();
214
-
215
- await writeTestFile(
216
- "test-deep-imports.ts",
217
- `
218
- // Deep import from dist/tools.js
219
- import {
220
- acpToolNames,
221
- EDIT_TOOL_NAMES,
222
- ACP_TOOL_NAME_PREFIX,
223
- toolInfoFromToolUse,
224
- planEntries,
225
- } from "@sudocode-ai/claude-code-acp/dist/tools.js";
226
-
227
- // Deep import from dist/settings.js
228
- import {
229
- SettingsManager,
230
- getManagedSettingsPath,
231
- } from "@sudocode-ai/claude-code-acp/dist/settings.js";
232
-
233
- // Deep import from dist/utils.js
234
- import {
235
- Pushable,
236
- nodeToWebReadable,
237
- nodeToWebWritable,
238
- loadManagedSettings,
239
- } from "@sudocode-ai/claude-code-acp/dist/utils.js";
240
-
241
- // Verify types work
242
- const prefix: string = ACP_TOOL_NAME_PREFIX;
243
- const editTools: readonly string[] = EDIT_TOOL_NAMES;
244
- `,
245
- );
246
-
247
- const result = runTypeCheck();
248
- if (!result.success) {
249
- console.error("TypeScript errors:", result.output);
250
- }
251
- expect(result.success).toBe(true);
252
- }, 120000);
253
-
254
- // Test 3: SettingsManager type shape verification
255
- it("should verify SettingsManager has correct type shape", async () => {
256
- await setupTestProject();
257
-
258
- await writeTestFile(
259
- "test-settings-manager.ts",
260
- `
261
- import {
262
- SettingsManager,
263
- ClaudeCodeSettings,
264
- PermissionCheckResult,
265
- SettingsManagerOptions
266
- } from "@sudocode-ai/claude-code-acp";
267
-
268
- // Test constructor signature
269
- const options: SettingsManagerOptions = {
270
- onChange: () => {},
271
- logger: { log: console.log, error: console.error },
272
- };
273
- declare const cwd: string;
274
- const manager = new SettingsManager(cwd, options);
275
-
276
- // Test method signatures
277
- async function testMethods() {
278
- // initialize returns Promise<void>
279
- await manager.initialize();
280
-
281
- // checkPermission returns PermissionCheckResult
282
- const result: PermissionCheckResult = manager.checkPermission(
283
- "mcp__acp__Read",
284
- { file_path: "/some/path" }
285
- );
286
-
287
- // Verify decision type
288
- const decision: "allow" | "deny" | "ask" = result.decision;
289
- const rule: string | undefined = result.rule;
290
- const source: "allow" | "deny" | "ask" | undefined = result.source;
291
-
292
- // getSettings returns ClaudeCodeSettings
293
- const settings: ClaudeCodeSettings = manager.getSettings();
294
-
295
- // getCwd returns string
296
- const currentCwd: string = manager.getCwd();
297
-
298
- // setCwd returns Promise<void>
299
- await manager.setCwd("/new/path");
300
-
301
- // dispose returns void
302
- manager.dispose();
303
- }
304
- `,
305
- );
306
-
307
- const result = runTypeCheck();
308
- if (!result.success) {
309
- console.error("TypeScript errors:", result.output);
310
- }
311
- expect(result.success).toBe(true);
312
- }, 120000);
313
-
314
- // Test 4: ClaudeAcpAgent instantiation and type verification
315
- it("should verify ClaudeAcpAgent has correct type shape", async () => {
316
- await setupTestProject();
317
-
318
- await writeTestFile(
319
- "test-claude-acp-agent.ts",
320
- `
321
- import { ClaudeAcpAgent } from "@sudocode-ai/claude-code-acp";
322
- import type { AgentSideConnection } from "@agentclientprotocol/sdk";
323
-
324
- // ClaudeAcpAgent should be a class that can be instantiated
325
- declare const mockConnection: AgentSideConnection;
326
- declare const mockLogger: { log: (...args: any[]) => void; error: (...args: any[]) => void };
327
-
328
- // Test constructor - accepts AgentSideConnection and optional logger
329
- const agent = new ClaudeAcpAgent(mockConnection, mockLogger);
330
-
331
- // Verify it has sessions property
332
- const sessions: Record<string, any> = agent.sessions;
333
-
334
- // Verify it has client property
335
- const client: AgentSideConnection = agent.client;
336
-
337
- // Verify it has logger property
338
- const logger = agent.logger;
339
- `,
340
- );
341
-
342
- const result = runTypeCheck();
343
- if (!result.success) {
344
- console.error("TypeScript errors:", result.output);
345
- }
346
- expect(result.success).toBe(true);
347
- }, 120000);
348
-
349
- // Test 5: Type-only exports work correctly
350
- it("should verify type-only exports are usable", async () => {
351
- await setupTestProject();
352
-
353
- await writeTestFile(
354
- "test-type-exports.ts",
355
- `
356
- import type {
357
- ClaudeCodeSettings,
358
- PermissionSettings,
359
- PermissionDecision,
360
- PermissionCheckResult,
361
- SettingsManagerOptions,
362
- ClaudePlanEntry,
363
- ToolUpdateMeta,
364
- NewSessionMeta,
365
- } from "@sudocode-ai/claude-code-acp";
366
-
367
- // Test ClaudeCodeSettings shape
368
- const settings: ClaudeCodeSettings = {
369
- permissions: {
370
- allow: ["Read"],
371
- deny: ["Read(./.env)"],
372
- ask: ["Bash"],
373
- additionalDirectories: ["/extra"],
374
- defaultMode: "default",
375
- },
376
- env: {
377
- API_KEY: "secret",
378
- },
379
- };
380
-
381
- // Test PermissionSettings shape
382
- const perms: PermissionSettings = {
383
- allow: ["Read"],
384
- deny: ["Write"],
385
- };
386
-
387
- // Test PermissionDecision
388
- const decisions: PermissionDecision[] = ["allow", "deny", "ask"];
389
-
390
- // Test ClaudePlanEntry shape
391
- const planEntry: ClaudePlanEntry = {
392
- content: "Do something",
393
- status: "pending",
394
- activeForm: "Doing something",
395
- };
396
-
397
- // Test valid status values
398
- const validStatuses: ClaudePlanEntry["status"][] = [
399
- "pending",
400
- "in_progress",
401
- "completed",
402
- ];
403
-
404
- // Test ToolUpdateMeta shape
405
- const toolMeta: ToolUpdateMeta = {
406
- claudeCode: {
407
- toolName: "Read",
408
- toolResponse: { success: true },
409
- },
410
- };
411
-
412
- // Test NewSessionMeta shape
413
- const sessionMeta: NewSessionMeta = {
414
- claudeCode: {
415
- options: {},
416
- },
417
- };
418
- `,
419
- );
420
-
421
- const result = runTypeCheck();
422
- if (!result.success) {
423
- console.error("TypeScript errors:", result.output);
424
- }
425
- expect(result.success).toBe(true);
426
- }, 120000);
427
-
428
- // Test 6: Function signatures verification
429
- it("should verify function signatures are correct", async () => {
430
- await setupTestProject();
431
-
432
- await writeTestFile(
433
- "test-function-signatures.ts",
434
- `
435
- import {
436
- runAcp,
437
- createMcpServer,
438
- toolInfoFromToolUse,
439
- planEntries,
440
- createPreToolUseHook,
441
- loadManagedSettings,
442
- applyEnvironmentSettings,
443
- SettingsManager,
444
- } from "@sudocode-ai/claude-code-acp";
445
-
446
- import type { ClaudeCodeSettings } from "@sudocode-ai/claude-code-acp";
447
-
448
- // runAcp should be a function with no parameters that returns void
449
- const runAcpType: () => void = runAcp;
450
-
451
- // toolInfoFromToolUse should accept any and return object with title and kind
452
- const info = toolInfoFromToolUse({ name: "Read", input: {} });
453
- const title: string = info.title;
454
- const kind: string = info.kind;
455
-
456
- // planEntries should accept todos array and return array
457
- const entries = planEntries({
458
- todos: [
459
- { content: "test", status: "pending", activeForm: "testing" }
460
- ]
461
- });
462
- // entries should be an array
463
- const entriesArray: any[] = entries;
464
-
465
- // createPreToolUseHook should accept SettingsManager and optional logger
466
- declare const settingsManager: SettingsManager;
467
- const hook = createPreToolUseHook(settingsManager, console);
468
-
469
- // loadManagedSettings should return ClaudeCodeSettings | null
470
- const managedSettings: ClaudeCodeSettings | null = loadManagedSettings();
471
-
472
- // applyEnvironmentSettings should accept ClaudeCodeSettings and return void
473
- const applyResult: void = applyEnvironmentSettings({ permissions: {} });
474
- `,
475
- );
476
-
477
- const result = runTypeCheck();
478
- if (!result.success) {
479
- console.error("TypeScript errors:", result.output);
480
- }
481
- expect(result.success).toBe(true);
482
- }, 120000);
483
-
484
- // Test 7: Pushable generic class verification
485
- it("should verify Pushable class works correctly", async () => {
486
- await setupTestProject();
487
-
488
- await writeTestFile(
489
- "test-pushable.ts",
490
- `
491
- import { Pushable } from "@sudocode-ai/claude-code-acp";
492
-
493
- // Pushable should be a generic class
494
- const pushable = new Pushable<string>();
495
-
496
- // Should have push method
497
- pushable.push("test");
498
-
499
- // Should have end method
500
- pushable.end();
501
-
502
- // Should implement AsyncIterable
503
- async function consume() {
504
- for await (const item of pushable) {
505
- const str: string = item;
506
- }
507
- }
508
-
509
- // Generic type parameter should work
510
- const numPushable = new Pushable<number>();
511
- numPushable.push(42);
512
-
513
- interface MyType { id: number; name: string; }
514
- const customPushable = new Pushable<MyType>();
515
- customPushable.push({ id: 1, name: "test" });
516
- `,
517
- );
518
-
519
- const result = runTypeCheck();
520
- if (!result.success) {
521
- console.error("TypeScript errors:", result.output);
522
- }
523
- expect(result.success).toBe(true);
524
- }, 120000);
525
-
526
- // Test 8: Verify incorrect types fail
527
- it("should fail type-check with incorrect types", async () => {
528
- await setupTestProject();
529
-
530
- await writeTestFile(
531
- "test-invalid-types.ts",
532
- `
533
- import { SettingsManager, ClaudeCodeSettings } from "@sudocode-ai/claude-code-acp";
534
-
535
- // This should fail - SettingsManager constructor requires string cwd
536
- // @ts-expect-error - Testing that wrong argument type fails
537
- const badManager = new SettingsManager(123);
538
-
539
- // This should fail - ClaudeCodeSettings permissions must be an object
540
- const badSettings: ClaudeCodeSettings = {
541
- // @ts-expect-error - Testing that wrong type fails
542
- permissions: "not-an-object",
543
- };
544
- `,
545
- );
546
-
547
- // This test should PASS because we expect tsc to catch these errors
548
- // with @ts-expect-error directives
549
- const result = runTypeCheck();
550
- if (!result.success) {
551
- // If it fails, it means @ts-expect-error didn't catch the error
552
- // which could mean the types are too permissive
553
- console.error("TypeScript errors (expected @ts-expect-error to catch):", result.output);
554
- }
555
- expect(result.success).toBe(true);
556
- }, 120000);
557
- },
558
- );