macro-agent 0.0.17 → 0.1.1

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 (338) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/.sudocode/specs.jsonl +4 -0
  3. package/CLAUDE.md +16 -14
  4. package/README.md +11 -29
  5. package/dist/acp/macro-agent.d.ts +17 -0
  6. package/dist/acp/macro-agent.d.ts.map +1 -1
  7. package/dist/acp/macro-agent.js +183 -55
  8. package/dist/acp/macro-agent.js.map +1 -1
  9. package/dist/acp/types.d.ts +32 -1
  10. package/dist/acp/types.d.ts.map +1 -1
  11. package/dist/acp/types.js.map +1 -1
  12. package/dist/agent/agent-manager.d.ts +65 -1
  13. package/dist/agent/agent-manager.d.ts.map +1 -1
  14. package/dist/agent/agent-manager.js +464 -183
  15. package/dist/agent/agent-manager.js.map +1 -1
  16. package/dist/agent/types.d.ts +1 -1
  17. package/dist/agent/types.d.ts.map +1 -1
  18. package/dist/api/server.d.ts +3 -0
  19. package/dist/api/server.d.ts.map +1 -1
  20. package/dist/api/server.js +37 -6
  21. package/dist/api/server.js.map +1 -1
  22. package/dist/auth/index.d.ts +2 -0
  23. package/dist/auth/index.d.ts.map +1 -0
  24. package/dist/auth/index.js +2 -0
  25. package/dist/auth/index.js.map +1 -0
  26. package/dist/auth/token.d.ts +41 -0
  27. package/dist/auth/token.d.ts.map +1 -0
  28. package/dist/auth/token.js +73 -0
  29. package/dist/auth/token.js.map +1 -0
  30. package/dist/cli/acp.d.ts +2 -23
  31. package/dist/cli/acp.d.ts.map +1 -1
  32. package/dist/cli/acp.js +127 -61
  33. package/dist/cli/acp.js.map +1 -1
  34. package/dist/cli/index.js +147 -15
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/mcp.d.ts +6 -0
  37. package/dist/cli/mcp.d.ts.map +1 -1
  38. package/dist/cli/mcp.js +268 -181
  39. package/dist/cli/mcp.js.map +1 -1
  40. package/dist/cli/parse-args.d.ts +20 -0
  41. package/dist/cli/parse-args.d.ts.map +1 -0
  42. package/dist/cli/parse-args.js +43 -0
  43. package/dist/cli/parse-args.js.map +1 -0
  44. package/dist/cli/stable-instance-id.d.ts +8 -0
  45. package/dist/cli/stable-instance-id.d.ts.map +1 -0
  46. package/dist/cli/stable-instance-id.js +14 -0
  47. package/dist/cli/stable-instance-id.js.map +1 -0
  48. package/dist/config/project-config.d.ts +74 -7
  49. package/dist/config/project-config.d.ts.map +1 -1
  50. package/dist/config/project-config.js +123 -20
  51. package/dist/config/project-config.js.map +1 -1
  52. package/dist/map/adapter/acp-over-map.d.ts +23 -0
  53. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  54. package/dist/map/adapter/acp-over-map.js +482 -55
  55. package/dist/map/adapter/acp-over-map.js.map +1 -1
  56. package/dist/map/adapter/connection-manager.d.ts.map +1 -1
  57. package/dist/map/adapter/connection-manager.js +3 -0
  58. package/dist/map/adapter/connection-manager.js.map +1 -1
  59. package/dist/map/adapter/event-log.d.ts +87 -0
  60. package/dist/map/adapter/event-log.d.ts.map +1 -0
  61. package/dist/map/adapter/event-log.js +122 -0
  62. package/dist/map/adapter/event-log.js.map +1 -0
  63. package/dist/map/adapter/event-translator.js +6 -6
  64. package/dist/map/adapter/event-translator.js.map +1 -1
  65. package/dist/map/adapter/extensions/agent-lifecycle.d.ts +82 -0
  66. package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +1 -0
  67. package/dist/map/adapter/extensions/agent-lifecycle.js +164 -0
  68. package/dist/map/adapter/extensions/agent-lifecycle.js.map +1 -0
  69. package/dist/map/adapter/extensions/index.d.ts +10 -1
  70. package/dist/map/adapter/extensions/index.d.ts.map +1 -1
  71. package/dist/map/adapter/extensions/index.js +34 -0
  72. package/dist/map/adapter/extensions/index.js.map +1 -1
  73. package/dist/map/adapter/extensions/mcp-bridge.d.ts +57 -0
  74. package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +1 -0
  75. package/dist/map/adapter/extensions/mcp-bridge.js +745 -0
  76. package/dist/map/adapter/extensions/mcp-bridge.js.map +1 -0
  77. package/dist/map/adapter/extensions/rename.d.ts +29 -0
  78. package/dist/map/adapter/extensions/rename.d.ts.map +1 -0
  79. package/dist/map/adapter/extensions/rename.js +49 -0
  80. package/dist/map/adapter/extensions/rename.js.map +1 -0
  81. package/dist/map/adapter/extensions/task.d.ts.map +1 -1
  82. package/dist/map/adapter/extensions/task.js +10 -0
  83. package/dist/map/adapter/extensions/task.js.map +1 -1
  84. package/dist/map/adapter/extensions/update-metadata.d.ts +29 -0
  85. package/dist/map/adapter/extensions/update-metadata.d.ts.map +1 -0
  86. package/dist/map/adapter/extensions/update-metadata.js +67 -0
  87. package/dist/map/adapter/extensions/update-metadata.js.map +1 -0
  88. package/dist/map/adapter/index.d.ts +2 -1
  89. package/dist/map/adapter/index.d.ts.map +1 -1
  90. package/dist/map/adapter/index.js +8 -2
  91. package/dist/map/adapter/index.js.map +1 -1
  92. package/dist/map/adapter/interface.d.ts +2 -0
  93. package/dist/map/adapter/interface.d.ts.map +1 -1
  94. package/dist/map/adapter/map-adapter.d.ts +4 -0
  95. package/dist/map/adapter/map-adapter.d.ts.map +1 -1
  96. package/dist/map/adapter/map-adapter.js +302 -30
  97. package/dist/map/adapter/map-adapter.js.map +1 -1
  98. package/dist/map/adapter/subscription-manager.d.ts.map +1 -1
  99. package/dist/map/adapter/subscription-manager.js +5 -1
  100. package/dist/map/adapter/subscription-manager.js.map +1 -1
  101. package/dist/map/adapter/types.d.ts +2 -0
  102. package/dist/map/adapter/types.d.ts.map +1 -1
  103. package/dist/mcp/map-client.d.ts +39 -0
  104. package/dist/mcp/map-client.d.ts.map +1 -0
  105. package/dist/mcp/map-client.js +129 -0
  106. package/dist/mcp/map-client.js.map +1 -0
  107. package/dist/mcp/mcp-server.d.ts +14 -0
  108. package/dist/mcp/mcp-server.d.ts.map +1 -1
  109. package/dist/mcp/mcp-server.js +113 -85
  110. package/dist/mcp/mcp-server.js.map +1 -1
  111. package/dist/mcp/types.d.ts +9 -1
  112. package/dist/mcp/types.d.ts.map +1 -1
  113. package/dist/mcp/types.js.map +1 -1
  114. package/dist/metrics/metrics.js +1 -1
  115. package/dist/metrics/metrics.js.map +1 -1
  116. package/dist/roles/capabilities.d.ts +3 -1
  117. package/dist/roles/capabilities.d.ts.map +1 -1
  118. package/dist/roles/capabilities.js +17 -7
  119. package/dist/roles/capabilities.js.map +1 -1
  120. package/dist/roles/config-loader.d.ts +6 -6
  121. package/dist/roles/config-loader.d.ts.map +1 -1
  122. package/dist/roles/config-loader.js +6 -6
  123. package/dist/roles/config-loader.js.map +1 -1
  124. package/dist/roles/registry.d.ts +2 -2
  125. package/dist/roles/registry.js +2 -2
  126. package/dist/server/combined-server.d.ts +20 -0
  127. package/dist/server/combined-server.d.ts.map +1 -1
  128. package/dist/server/combined-server.js +107 -8
  129. package/dist/server/combined-server.js.map +1 -1
  130. package/dist/store/event-store.d.ts +7 -1
  131. package/dist/store/event-store.d.ts.map +1 -1
  132. package/dist/store/event-store.js +91 -8
  133. package/dist/store/event-store.js.map +1 -1
  134. package/dist/store/types/agents.d.ts +23 -0
  135. package/dist/store/types/agents.d.ts.map +1 -1
  136. package/dist/store/types/events.d.ts +1 -1
  137. package/dist/store/types/events.d.ts.map +1 -1
  138. package/dist/task/backend/index.d.ts +47 -29
  139. package/dist/task/backend/index.d.ts.map +1 -1
  140. package/dist/task/backend/index.js +109 -71
  141. package/dist/task/backend/index.js.map +1 -1
  142. package/dist/task/backend/memory.d.ts +1 -0
  143. package/dist/task/backend/memory.d.ts.map +1 -1
  144. package/dist/task/backend/memory.js +3 -0
  145. package/dist/task/backend/memory.js.map +1 -1
  146. package/dist/task/backend/opentasks/backend.d.ts +140 -0
  147. package/dist/task/backend/opentasks/backend.d.ts.map +1 -0
  148. package/dist/task/backend/opentasks/backend.js +1023 -0
  149. package/dist/task/backend/opentasks/backend.js.map +1 -0
  150. package/dist/task/backend/opentasks/client.d.ts +337 -0
  151. package/dist/task/backend/opentasks/client.d.ts.map +1 -0
  152. package/dist/task/backend/opentasks/client.js +225 -0
  153. package/dist/task/backend/opentasks/client.js.map +1 -0
  154. package/dist/task/backend/opentasks/daemon-manager.d.ts +89 -0
  155. package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -0
  156. package/dist/task/backend/opentasks/daemon-manager.js +195 -0
  157. package/dist/task/backend/opentasks/daemon-manager.js.map +1 -0
  158. package/dist/task/backend/opentasks/index.d.ts +21 -0
  159. package/dist/task/backend/opentasks/index.d.ts.map +1 -0
  160. package/dist/task/backend/opentasks/index.js +21 -0
  161. package/dist/task/backend/opentasks/index.js.map +1 -0
  162. package/dist/task/backend/opentasks/mapping.d.ts +48 -0
  163. package/dist/task/backend/opentasks/mapping.d.ts.map +1 -0
  164. package/dist/task/backend/opentasks/mapping.js +77 -0
  165. package/dist/task/backend/opentasks/mapping.js.map +1 -0
  166. package/dist/task/backend/types.d.ts +33 -53
  167. package/dist/task/backend/types.d.ts.map +1 -1
  168. package/dist/task/backend/types.js +7 -11
  169. package/dist/task/backend/types.js.map +1 -1
  170. package/dist/task/backend/unified-tool-provider.d.ts +57 -0
  171. package/dist/task/backend/unified-tool-provider.d.ts.map +1 -0
  172. package/dist/task/backend/unified-tool-provider.js +623 -0
  173. package/dist/task/backend/unified-tool-provider.js.map +1 -0
  174. package/dist/teams/team-loader.d.ts +2 -2
  175. package/dist/teams/team-loader.js +3 -3
  176. package/dist/teams/team-loader.js.map +1 -1
  177. package/dist/teams/team-runtime.d.ts.map +1 -1
  178. package/dist/teams/team-runtime.js +2 -0
  179. package/dist/teams/team-runtime.js.map +1 -1
  180. package/docs/architecture.md +7 -6
  181. package/docs/configuration.md +26 -62
  182. package/docs/implementation-details.md +5 -5
  183. package/docs/implementation-summary.md +17 -17
  184. package/docs/plan-self-driving-support.md +4 -4
  185. package/docs/spec-self-driving-support.md +10 -10
  186. package/docs/team-templates.md +2 -2
  187. package/docs/teams.md +3 -3
  188. package/docs/troubleshooting.md +10 -11
  189. package/package.json +6 -4
  190. package/src/__tests__/e2e/agent-spawn-visibility.e2e.test.ts +761 -0
  191. package/src/__tests__/e2e/full-agent-conflict-resolution.e2e.test.ts +2 -2
  192. package/src/__tests__/e2e/mcp-thin-client-bridge.e2e.test.ts +304 -0
  193. package/src/__tests__/e2e/mcp-tools-available.e2e.test.ts +324 -0
  194. package/src/__tests__/e2e/multi-agent.e2e.test.ts +5 -5
  195. package/src/__tests__/e2e/spawn-session-streaming.e2e.test.ts +563 -0
  196. package/src/acp/__tests__/history.test.ts +8 -4
  197. package/src/acp/__tests__/integration.test.ts +56 -31
  198. package/src/acp/__tests__/macro-agent.test.ts +16 -7
  199. package/src/acp/macro-agent.ts +230 -62
  200. package/src/acp/types.ts +46 -1
  201. package/src/agent/__tests__/agent-manager.test.ts +228 -2
  202. package/src/agent/agent-manager.ts +714 -261
  203. package/src/agent/types.ts +3 -1
  204. package/src/api/server.ts +41 -7
  205. package/src/auth/__tests__/token.test.ts +100 -0
  206. package/src/auth/index.ts +1 -0
  207. package/src/auth/token.ts +82 -0
  208. package/src/cli/__tests__/acp.test.ts +1 -1
  209. package/src/cli/__tests__/stable-instance-id.test.ts +1 -1
  210. package/src/cli/acp.ts +130 -72
  211. package/src/cli/index.ts +120 -14
  212. package/src/cli/mcp.ts +311 -207
  213. package/src/cli/parse-args.ts +54 -0
  214. package/src/cli/stable-instance-id.ts +14 -0
  215. package/src/config/project-config.ts +190 -27
  216. package/src/lifecycle/__tests__/cascade-termination.test.ts +1 -1
  217. package/src/map/adapter/__tests__/acp-over-map-cancel.test.ts +820 -0
  218. package/src/map/adapter/__tests__/acp-over-map-getmodels.test.ts +355 -0
  219. package/src/map/adapter/__tests__/acp-over-map-history.test.ts +724 -2
  220. package/src/map/adapter/__tests__/acp-over-map-persistence.e2e.test.ts +1 -1
  221. package/src/map/adapter/__tests__/event-broadcast.test.ts +420 -0
  222. package/src/map/adapter/__tests__/event-log.test.ts +527 -0
  223. package/src/map/adapter/__tests__/event-translator.test.ts +3 -3
  224. package/src/map/adapter/__tests__/extensions.test.ts +408 -0
  225. package/src/map/adapter/__tests__/map-adapter.test.ts +99 -0
  226. package/src/map/adapter/__tests__/mcp-bridge.test.ts +1187 -0
  227. package/src/map/adapter/__tests__/multi-client-broadcast.test.ts +711 -0
  228. package/src/map/adapter/__tests__/websocket-integration.test.ts +218 -0
  229. package/src/map/adapter/acp-over-map.ts +777 -92
  230. package/src/map/adapter/connection-manager.ts +3 -0
  231. package/src/map/adapter/event-log.ts +208 -0
  232. package/src/map/adapter/event-translator.ts +6 -6
  233. package/src/map/adapter/extensions/agent-lifecycle.ts +267 -0
  234. package/src/map/adapter/extensions/index.ts +60 -0
  235. package/src/map/adapter/extensions/mcp-bridge.ts +995 -0
  236. package/src/map/adapter/extensions/task.ts +11 -0
  237. package/src/map/adapter/extensions/update-metadata.ts +126 -0
  238. package/src/map/adapter/index.ts +28 -0
  239. package/src/map/adapter/interface.ts +2 -0
  240. package/src/map/adapter/map-adapter.ts +373 -38
  241. package/src/map/adapter/subscription-manager.ts +5 -1
  242. package/src/map/adapter/types.ts +2 -0
  243. package/src/mcp/__tests__/map-client.test.ts +386 -0
  244. package/src/mcp/__tests__/mcp-server-thin-client.test.ts +368 -0
  245. package/src/mcp/__tests__/mcp-server.test.ts +100 -1
  246. package/src/mcp/map-client.ts +177 -0
  247. package/src/mcp/mcp-server.ts +191 -100
  248. package/src/mcp/types.ts +6 -1
  249. package/src/metrics/metrics.ts +1 -1
  250. package/src/monitor/__tests__/stale-agent-flow.integration.test.ts +1 -1
  251. package/src/roles/__tests__/config-loader.test.ts +7 -7
  252. package/src/roles/capabilities.ts +17 -7
  253. package/src/roles/config-loader.ts +6 -6
  254. package/src/roles/registry.ts +2 -2
  255. package/src/server/__tests__/combined-server.test.ts +94 -21
  256. package/src/server/combined-server.ts +189 -33
  257. package/src/steering/__tests__/steering-integration.test.ts +1 -1
  258. package/src/store/__tests__/event-store.test.ts +236 -1
  259. package/src/store/__tests__/instance.test.ts +3 -3
  260. package/src/store/event-store.ts +109 -8
  261. package/src/store/types/agents.ts +16 -0
  262. package/src/store/types/events.ts +1 -1
  263. package/src/task/backend/__tests__/create-task-backend.test.ts +225 -0
  264. package/src/task/backend/__tests__/e2e/unified-tool-provider-opentasks.e2e.test.ts +524 -0
  265. package/src/task/backend/__tests__/unified-tool-provider.test.ts +579 -0
  266. package/src/task/backend/index.ts +156 -106
  267. package/src/task/backend/memory.ts +4 -0
  268. package/src/task/backend/opentasks/__tests__/backend.test.ts +968 -0
  269. package/src/task/backend/opentasks/__tests__/daemon-manager.test.ts +406 -0
  270. package/src/task/backend/opentasks/__tests__/mapping.test.ts +84 -0
  271. package/src/task/backend/opentasks/__tests__/opentasks-backend.e2e.test.ts +1338 -0
  272. package/src/task/backend/opentasks/backend.ts +1323 -0
  273. package/src/task/backend/opentasks/client.ts +652 -0
  274. package/src/task/backend/opentasks/daemon-manager.ts +253 -0
  275. package/src/task/backend/opentasks/index.ts +69 -0
  276. package/src/task/backend/opentasks/mapping.ts +94 -0
  277. package/src/task/backend/types.ts +42 -66
  278. package/src/task/backend/unified-tool-provider.ts +779 -0
  279. package/src/teams/__tests__/cross-subsystem.integration.test.ts +1 -1
  280. package/src/teams/team-loader.ts +3 -3
  281. package/src/teams/team-runtime.ts +2 -0
  282. package/test_fixtures/README.md +2 -3
  283. package/test_fixtures/fixtures/index.ts +0 -3
  284. package/test_fixtures/fixtures/projects/project-with-specs.ts +7 -149
  285. package/test_fixtures/fixtures/repos/index.ts +1 -3
  286. package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -116
  287. package/test_fixtures/fixtures/repos/types.ts +0 -11
  288. package/test_fixtures/harness/__tests__/fixtures.test.ts +10 -102
  289. package/test_fixtures/harness/__tests__/temp-repo-and-simulator.test.ts +0 -33
  290. package/test_fixtures/harness/simulator/agent-simulator.ts +4 -4
  291. package/vitest.config.ts +1 -1
  292. package/vitest.e2e.config.ts +1 -1
  293. package/vitest.setup.ts +1 -30
  294. package/.macro-agent/teams/self-driving/prompts/grinder.md +0 -27
  295. package/.macro-agent/teams/self-driving/prompts/judge.md +0 -27
  296. package/.macro-agent/teams/self-driving/prompts/planner.md +0 -33
  297. package/.macro-agent/teams/self-driving/roles/grinder.yaml +0 -17
  298. package/.macro-agent/teams/self-driving/roles/judge.yaml +0 -24
  299. package/.macro-agent/teams/self-driving/roles/planner.yaml +0 -18
  300. package/.macro-agent/teams/self-driving/team.yaml +0 -103
  301. package/.macro-agent/teams/structured/prompts/developer.md +0 -26
  302. package/.macro-agent/teams/structured/prompts/lead.md +0 -25
  303. package/.macro-agent/teams/structured/prompts/reviewer.md +0 -24
  304. package/.macro-agent/teams/structured/roles/developer.yaml +0 -12
  305. package/.macro-agent/teams/structured/roles/lead.yaml +0 -11
  306. package/.macro-agent/teams/structured/roles/reviewer.yaml +0 -19
  307. package/.macro-agent/teams/structured/team.yaml +0 -89
  308. package/docs/sudocode-integration.md +0 -383
  309. package/src/task/backend/__tests__/backend-parity.test.ts +0 -451
  310. package/src/task/backend/__tests__/tool-provider-edge-cases.test.ts +0 -430
  311. package/src/task/backend/__tests__/tool-provider.test.ts +0 -983
  312. package/src/task/backend/sudocode/__tests__/backend-edge-cases.test.ts +0 -575
  313. package/src/task/backend/sudocode/__tests__/backend.test.ts +0 -1194
  314. package/src/task/backend/sudocode/__tests__/client-integration.test.ts +0 -418
  315. package/src/task/backend/sudocode/__tests__/client.test.ts +0 -345
  316. package/src/task/backend/sudocode/__tests__/e2e/backend.e2e.test.ts +0 -753
  317. package/src/task/backend/sudocode/__tests__/e2e/server-client.e2e.test.ts +0 -680
  318. package/src/task/backend/sudocode/__tests__/e2e-workflow.test.ts +0 -666
  319. package/src/task/backend/sudocode/__tests__/integration/standalone-client.integration.test.ts +0 -396
  320. package/src/task/backend/sudocode/__tests__/integration/sudocode-cli.integration.test.ts +0 -328
  321. package/src/task/backend/sudocode/__tests__/integration/test-utils.ts +0 -175
  322. package/src/task/backend/sudocode/__tests__/mapping-edge-cases.test.ts +0 -265
  323. package/src/task/backend/sudocode/__tests__/server-client.test.ts +0 -675
  324. package/src/task/backend/sudocode/__tests__/sync-policy-edge-cases.test.ts +0 -521
  325. package/src/task/backend/sudocode/__tests__/sync-policy.test.ts +0 -519
  326. package/src/task/backend/sudocode/__tests__/tools.test.ts +0 -471
  327. package/src/task/backend/sudocode/backend.ts +0 -1237
  328. package/src/task/backend/sudocode/client.ts +0 -515
  329. package/src/task/backend/sudocode/index.ts +0 -120
  330. package/src/task/backend/sudocode/mapping.ts +0 -93
  331. package/src/task/backend/sudocode/server-client.ts +0 -522
  332. package/src/task/backend/sudocode/standalone-client.ts +0 -623
  333. package/src/task/backend/sudocode/sync-policy.ts +0 -387
  334. package/src/task/backend/sudocode/tools.ts +0 -896
  335. package/src/task/backend/tool-provider.ts +0 -506
  336. package/test_fixtures/fixtures/sudocode/index.ts +0 -29
  337. package/test_fixtures/fixtures/sudocode/issues.ts +0 -185
  338. package/test_fixtures/fixtures/sudocode/specs.ts +0 -159
@@ -0,0 +1,14 @@
1
+ import { createHash } from "node:crypto";
2
+ import { resolve } from "node:path";
3
+ /**
4
+ * Generate a stable, deterministic instance ID from a directory path.
5
+ *
6
+ * This ensures the same project always uses the same EventStore,
7
+ * so agents and sessions persist across server restarts.
8
+ */
9
+ export function getStableInstanceId(cwd) {
10
+ const normalizedPath = resolve(cwd);
11
+ const hash = createHash("sha256").update(normalizedPath).digest("hex").slice(0, 12);
12
+ return `inst_${hash}`;
13
+ }
14
+ //# sourceMappingURL=stable-instance-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-instance-id.js","sourceRoot":"","sources":["../../src/cli/stable-instance-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpF,OAAO,QAAQ,IAAI,EAAE,CAAC;AACxB,CAAC"}
@@ -1,14 +1,52 @@
1
1
  /**
2
- * Project Configuration Loader
2
+ * Configuration Loader
3
3
  *
4
- * Reads .macro-agent/config.json for project-level settings.
4
+ * Layered configuration system with priority (highest to lowest):
5
+ * 1. Environment variables (MACRO_*, OPENTASKS_*)
6
+ * 2. Project config: .multiagent/config.json
7
+ * 3. Global config: ~/.multiagent/config.json
5
8
  *
6
9
  * @module config/project-config
7
10
  */
8
11
  /**
9
- * Project-level configuration schema.
12
+ * Typed configuration schema for multiagent.
10
13
  *
11
- * Loaded from .macro-agent/config.json in the project root.
14
+ * Loaded from .multiagent/config.json (project or global).
15
+ * Environment variables override file-based config.
16
+ */
17
+ export interface MultiagentConfig {
18
+ /** Team template name to load on startup */
19
+ team?: string;
20
+ /** Server port (default: 3001) */
21
+ port?: number;
22
+ /** Server host (default: "localhost") */
23
+ host?: string;
24
+ /** Authentication config */
25
+ auth?: {
26
+ /** Disable auth entirely */
27
+ disabled?: boolean;
28
+ /** Server secret token */
29
+ secret?: string;
30
+ };
31
+ /** Task backend config */
32
+ task?: {
33
+ /** Backend type: "memory" | "opentasks" */
34
+ backend?: string;
35
+ /** OpenTasks-specific config */
36
+ opentasks?: {
37
+ /** Path to OpenTasks daemon socket */
38
+ socket_path?: string;
39
+ /** Auto-start central daemon (default: true) */
40
+ auto_start?: boolean;
41
+ /** Central daemon location (default: ~/.multiagent/opentasks) */
42
+ central_path?: string;
43
+ /** Auto-connect project .opentasks/ on agent spawn (default: true) */
44
+ connect_on_spawn?: boolean;
45
+ };
46
+ };
47
+ }
48
+ /**
49
+ * Legacy project config interface (backwards compatibility).
12
50
  */
13
51
  export interface ProjectConfig {
14
52
  /** Team template name to load on startup */
@@ -17,18 +55,24 @@ export interface ProjectConfig {
17
55
  [key: string]: unknown;
18
56
  }
19
57
  /** Config directory name */
20
- export declare const CONFIG_DIR = ".macro-agent";
58
+ export declare const CONFIG_DIR = ".multiagent";
21
59
  /** Config file name */
22
60
  export declare const CONFIG_FILE = "config.json";
23
61
  /**
24
62
  * Get the project config file path.
25
63
  *
26
64
  * @param projectPath - Project root directory (default: process.cwd())
27
- * @returns Absolute path to .macro-agent/config.json
65
+ * @returns Absolute path to .multiagent/config.json
28
66
  */
29
67
  export declare function getProjectConfigPath(projectPath?: string): string;
30
68
  /**
31
- * Load project configuration from .macro-agent/config.json.
69
+ * Get the global config file path.
70
+ *
71
+ * @returns Absolute path to ~/.multiagent/config.json
72
+ */
73
+ export declare function getGlobalConfigPath(): string;
74
+ /**
75
+ * Load project configuration from .multiagent/config.json.
32
76
  *
33
77
  * Returns empty config if the file doesn't exist.
34
78
  * Throws on invalid JSON.
@@ -37,6 +81,29 @@ export declare function getProjectConfigPath(projectPath?: string): string;
37
81
  * @returns Parsed ProjectConfig
38
82
  */
39
83
  export declare function loadProjectConfig(projectPath?: string): ProjectConfig;
84
+ /**
85
+ * Load global configuration from ~/.multiagent/config.json.
86
+ *
87
+ * Returns empty config if the file doesn't exist.
88
+ * Throws on invalid JSON.
89
+ *
90
+ * @returns Parsed config
91
+ */
92
+ export declare function loadGlobalConfig(): MultiagentConfig;
93
+ /**
94
+ * Load merged configuration with layered priority:
95
+ * 1. Environment variables (highest)
96
+ * 2. Project .multiagent/config.json
97
+ * 3. Global ~/.multiagent/config.json (lowest)
98
+ *
99
+ * Only server-level settings are merged. Agent-level env vars
100
+ * (MACRO_AGENT_ID, MACRO_SERVER_URL, etc.) are internal wiring
101
+ * and not part of this config.
102
+ *
103
+ * @param projectPath - Project root directory (default: process.cwd())
104
+ * @returns Fully merged MultiagentConfig
105
+ */
106
+ export declare function loadMergedConfig(projectPath?: string): MultiagentConfig;
40
107
  export type ProjectConfigErrorCode = "PARSE_ERROR" | "INVALID_FORMAT";
41
108
  export declare class ProjectConfigError extends Error {
42
109
  readonly code: ProjectConfigErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/config/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD,4BAA4B;AAC5B,eAAO,MAAM,UAAU,iBAAiB,CAAC;AAEzC,uBAAuB;AACvB,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAMzC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,CA2BrE;AAMD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEtE,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,IAAI,EAAE,sBAAsB;aAC5B,UAAU,EAAE,MAAM;gBAFlC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,sBAAsB,EAC5B,UAAU,EAAE,MAAM;CAKrC"}
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/config/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,IAAI,CAAC,EAAE;QACL,4BAA4B;QAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,0BAA0B;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,0BAA0B;IAC1B,IAAI,CAAC,EAAE;QACL,2CAA2C;QAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gCAAgC;QAChC,SAAS,CAAC,EAAE;YACV,sCAAsC;YACtC,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,gDAAgD;YAChD,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,iEAAiE;YACjE,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,sEAAsE;YACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC;SAC5B,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD,4BAA4B;AAC5B,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAExC,uBAAuB;AACvB,eAAO,MAAM,WAAW,gBAAgB,CAAC;AA0CzC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAEnD;AAsCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAgCvE;AAMD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEtE,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,IAAI,EAAE,sBAAsB;aAC5B,UAAU,EAAE,MAAM;gBAFlC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,sBAAsB,EAC5B,UAAU,EAAE,MAAM;CAKrC"}
@@ -1,34 +1,75 @@
1
1
  /**
2
- * Project Configuration Loader
2
+ * Configuration Loader
3
3
  *
4
- * Reads .macro-agent/config.json for project-level settings.
4
+ * Layered configuration system with priority (highest to lowest):
5
+ * 1. Environment variables (MACRO_*, OPENTASKS_*)
6
+ * 2. Project config: .multiagent/config.json
7
+ * 3. Global config: ~/.multiagent/config.json
5
8
  *
6
9
  * @module config/project-config
7
10
  */
8
11
  import * as fs from "fs";
12
+ import * as os from "os";
9
13
  import * as path from "path";
10
14
  // =============================================================================
11
15
  // Constants
12
16
  // =============================================================================
13
17
  /** Config directory name */
14
- export const CONFIG_DIR = ".macro-agent";
18
+ export const CONFIG_DIR = ".multiagent";
15
19
  /** Config file name */
16
20
  export const CONFIG_FILE = "config.json";
17
21
  // =============================================================================
18
- // Loader
22
+ // JSON Loader (shared)
23
+ // =============================================================================
24
+ /**
25
+ * Load and parse a JSON config file.
26
+ * Returns empty object if file doesn't exist.
27
+ * Throws on invalid JSON.
28
+ */
29
+ function loadJsonConfig(configPath) {
30
+ if (!fs.existsSync(configPath)) {
31
+ return {};
32
+ }
33
+ const raw = fs.readFileSync(configPath, "utf-8");
34
+ try {
35
+ const parsed = JSON.parse(raw);
36
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
37
+ throw new ProjectConfigError(`Config must be a JSON object, got ${Array.isArray(parsed) ? "array" : typeof parsed}`, "INVALID_FORMAT", configPath);
38
+ }
39
+ return parsed;
40
+ }
41
+ catch (error) {
42
+ if (error instanceof ProjectConfigError)
43
+ throw error;
44
+ throw new ProjectConfigError(`Failed to parse ${configPath}: ${error instanceof Error ? error.message : String(error)}`, "PARSE_ERROR", configPath);
45
+ }
46
+ }
47
+ // =============================================================================
48
+ // Path Resolution
19
49
  // =============================================================================
20
50
  /**
21
51
  * Get the project config file path.
22
52
  *
23
53
  * @param projectPath - Project root directory (default: process.cwd())
24
- * @returns Absolute path to .macro-agent/config.json
54
+ * @returns Absolute path to .multiagent/config.json
25
55
  */
26
56
  export function getProjectConfigPath(projectPath) {
27
57
  const root = projectPath ?? process.cwd();
28
58
  return path.join(root, CONFIG_DIR, CONFIG_FILE);
29
59
  }
30
60
  /**
31
- * Load project configuration from .macro-agent/config.json.
61
+ * Get the global config file path.
62
+ *
63
+ * @returns Absolute path to ~/.multiagent/config.json
64
+ */
65
+ export function getGlobalConfigPath() {
66
+ return path.join(os.homedir(), CONFIG_DIR, CONFIG_FILE);
67
+ }
68
+ // =============================================================================
69
+ // Individual Loaders
70
+ // =============================================================================
71
+ /**
72
+ * Load project configuration from .multiagent/config.json.
32
73
  *
33
74
  * Returns empty config if the file doesn't exist.
34
75
  * Throws on invalid JSON.
@@ -37,23 +78,85 @@ export function getProjectConfigPath(projectPath) {
37
78
  * @returns Parsed ProjectConfig
38
79
  */
39
80
  export function loadProjectConfig(projectPath) {
40
- const configPath = getProjectConfigPath(projectPath);
41
- if (!fs.existsSync(configPath)) {
42
- return {};
43
- }
44
- const raw = fs.readFileSync(configPath, "utf-8");
45
- try {
46
- const parsed = JSON.parse(raw);
47
- if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
48
- throw new ProjectConfigError(`Config must be a JSON object, got ${Array.isArray(parsed) ? "array" : typeof parsed}`, "INVALID_FORMAT", configPath);
81
+ return loadJsonConfig(getProjectConfigPath(projectPath));
82
+ }
83
+ /**
84
+ * Load global configuration from ~/.multiagent/config.json.
85
+ *
86
+ * Returns empty config if the file doesn't exist.
87
+ * Throws on invalid JSON.
88
+ *
89
+ * @returns Parsed config
90
+ */
91
+ export function loadGlobalConfig() {
92
+ return loadJsonConfig(getGlobalConfigPath());
93
+ }
94
+ // =============================================================================
95
+ // Merged Config (layered)
96
+ // =============================================================================
97
+ /**
98
+ * Deep merge two objects. Source values override target values.
99
+ * Only merges plain objects recursively; arrays and primitives are replaced.
100
+ */
101
+ function deepMerge(target, source) {
102
+ const result = { ...target };
103
+ for (const key of Object.keys(source)) {
104
+ const sourceVal = source[key];
105
+ const targetVal = result[key];
106
+ if (sourceVal !== undefined &&
107
+ sourceVal !== null &&
108
+ typeof sourceVal === "object" &&
109
+ !Array.isArray(sourceVal) &&
110
+ typeof targetVal === "object" &&
111
+ targetVal !== null &&
112
+ !Array.isArray(targetVal)) {
113
+ result[key] = deepMerge(targetVal, sourceVal);
114
+ }
115
+ else if (sourceVal !== undefined) {
116
+ result[key] = sourceVal;
49
117
  }
50
- return parsed;
51
118
  }
52
- catch (error) {
53
- if (error instanceof ProjectConfigError)
54
- throw error;
55
- throw new ProjectConfigError(`Failed to parse ${configPath}: ${error instanceof Error ? error.message : String(error)}`, "PARSE_ERROR", configPath);
119
+ return result;
120
+ }
121
+ /**
122
+ * Load merged configuration with layered priority:
123
+ * 1. Environment variables (highest)
124
+ * 2. Project .multiagent/config.json
125
+ * 3. Global ~/.multiagent/config.json (lowest)
126
+ *
127
+ * Only server-level settings are merged. Agent-level env vars
128
+ * (MACRO_AGENT_ID, MACRO_SERVER_URL, etc.) are internal wiring
129
+ * and not part of this config.
130
+ *
131
+ * @param projectPath - Project root directory (default: process.cwd())
132
+ * @returns Fully merged MultiagentConfig
133
+ */
134
+ export function loadMergedConfig(projectPath) {
135
+ const globalConfig = loadGlobalConfig();
136
+ const projectConfig = loadProjectConfig(projectPath);
137
+ // Layer 1: global (lowest priority)
138
+ // Layer 2: project overrides global
139
+ const merged = deepMerge(globalConfig, projectConfig);
140
+ // Layer 3: env vars override everything (server-level only)
141
+ if (process.env.MACRO_TASK_BACKEND) {
142
+ merged.task = { ...(merged.task ?? {}), backend: process.env.MACRO_TASK_BACKEND };
143
+ }
144
+ if (process.env.OPENTASKS_SOCKET_PATH) {
145
+ merged.task = {
146
+ ...(merged.task ?? {}),
147
+ opentasks: {
148
+ ...(merged.task?.opentasks ?? {}),
149
+ socket_path: process.env.OPENTASKS_SOCKET_PATH,
150
+ },
151
+ };
152
+ }
153
+ if (process.env.MACRO_SERVER_SECRET) {
154
+ merged.auth = { ...(merged.auth ?? {}), secret: process.env.MACRO_SERVER_SECRET };
155
+ }
156
+ if (process.env.MACRO_NO_AUTH === "true") {
157
+ merged.auth = { ...(merged.auth ?? {}), disabled: true };
56
158
  }
159
+ return merged;
57
160
  }
58
161
  export class ProjectConfigError extends Error {
59
162
  code;
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/config/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAmB7B,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AAEzC,uBAAuB;AACvB,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAoB;IACvD,MAAM,IAAI,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAoB;IACpD,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,kBAAkB,CAC1B,qCAAqC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,EACtF,gBAAgB,EAChB,UAAU,CACX,CAAC;QACJ,CAAC;QACD,OAAO,MAAuB,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,kBAAkB;YAAE,MAAM,KAAK,CAAC;QACrD,MAAM,IAAI,kBAAkB,CAC1B,mBAAmB,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC1F,aAAa,EACb,UAAU,CACX,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IACA;IAHlB,YACE,OAAe,EACC,IAA4B,EAC5B,UAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAwB;QAC5B,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/config/project-config.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,17 @@ export interface ACPOverMAPConfig {
35
35
  eventStore: EventStore;
36
36
  taskManager: TaskManager;
37
37
  defaultCwd?: string;
38
+ /**
39
+ * Callback when a new agent is created via session/new or session/loadSession.
40
+ * Used by MAPAdapter to emit agent.registered events to all subscribers.
41
+ */
42
+ onAgentRegistered?: (agent: {
43
+ id: string;
44
+ name?: string;
45
+ role?: string;
46
+ parent?: string;
47
+ metadata?: Record<string, unknown>;
48
+ }) => void;
38
49
  }
39
50
  /**
40
51
  * Callback for emitting ACP notifications during request processing.
@@ -46,11 +57,23 @@ export declare class ACPOverMAPHandler {
46
57
  private eventStore;
47
58
  private taskManager;
48
59
  private defaultCwd;
60
+ private onAgentRegistered?;
49
61
  /** Stream states by streamId */
50
62
  private streams;
51
63
  /** Session mapper for ACP session -> Agent mapping */
52
64
  private sessionMapper;
53
65
  constructor(config: ACPOverMAPConfig);
66
+ /**
67
+ * Notify subscribers that a new agent was registered.
68
+ * Looks up agent details from EventStore and calls the onAgentRegistered callback.
69
+ */
70
+ private notifyAgentRegistered;
71
+ /**
72
+ * Abort all active streams targeting a specific agent.
73
+ * Called when an agent is stopped via MAP protocol to interrupt
74
+ * any in-progress ACP prompt streaming.
75
+ */
76
+ abortStreamsForAgent(agentId: AgentId): void;
54
77
  /**
55
78
  * Process an ACP request and return the response.
56
79
  * @param targetAgentId - Target agent for the request
@@ -1 +1 @@
1
- {"version":3,"file":"acp-over-map.d.ts","sourceRoot":"","sources":["../../../src/map/adapter/acp-over-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAQ1D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC3D,CAAC;IACF,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;AAczE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAE3B,gCAAgC;IAChC,OAAO,CAAC,OAAO,CAAuC;IAEtD,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAsC;gBAE/C,MAAM,EAAE,gBAAgB;IAOpC;;;;;OAKG;IACG,cAAc,CAClB,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,WAAW,EACrB,gBAAgB,CAAC,EAAE,sBAAsB,GACxC,OAAO,CAAC,WAAW,CAAC;YAkFT,gBAAgB;YA2BhB,gBAAgB;YAiChB,iBAAiB;YA0EjB,kBAAkB;YAKlB,YAAY;YAwIZ,YAAY;YAuCZ,eAAe;IA6I7B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmEzB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQnC;;OAEG;IACH,QAAQ,IAAI,IAAI;CAMjB"}
1
+ {"version":3,"file":"acp-over-map.d.ts","sourceRoot":"","sources":["../../../src/map/adapter/acp-over-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,4BAA4B,CAAC;AA8BlE,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC3D,CAAC;IACF,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,KAAK,IAAI,CAAC;CACZ;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;AAgBzE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAwC;IAElE,gCAAgC;IAChC,OAAO,CAAC,OAAO,CAAuC;IAEtD,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,gBAAgB;IAiBpC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAW5C;;;;;OAKG;IACG,cAAc,CAClB,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,WAAW,EACrB,gBAAgB,CAAC,EAAE,sBAAsB,GACxC,OAAO,CAAC,WAAW,CAAC;YAqGT,gBAAgB;YA0ChB,gBAAgB;YAwChB,iBAAiB;YAqIjB,kBAAkB;YAKlB,YAAY;YA2PZ,YAAY;YAkDZ,eAAe;IA6gB7B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA+DzB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQnC;;OAEG;IACH,QAAQ,IAAI,IAAI;CAMjB"}