macro-agent 0.1.0 → 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 (337) 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 +15 -0
  6. package/dist/acp/macro-agent.d.ts.map +1 -1
  7. package/dist/acp/macro-agent.js +131 -35
  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 +17 -0
  53. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  54. package/dist/map/adapter/acp-over-map.js +384 -23
  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 +3 -0
  95. package/dist/map/adapter/map-adapter.d.ts.map +1 -1
  96. package/dist/map/adapter/map-adapter.js +258 -35
  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 +2 -1
  131. package/dist/store/event-store.d.ts.map +1 -1
  132. package/dist/store/event-store.js +69 -20
  133. package/dist/store/event-store.js.map +1 -1
  134. package/dist/store/types/agents.d.ts +18 -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__/integration.test.ts +56 -31
  197. package/src/acp/__tests__/macro-agent.test.ts +16 -7
  198. package/src/acp/macro-agent.ts +170 -36
  199. package/src/acp/types.ts +46 -1
  200. package/src/agent/__tests__/agent-manager.test.ts +228 -2
  201. package/src/agent/agent-manager.ts +714 -261
  202. package/src/agent/types.ts +3 -1
  203. package/src/api/server.ts +41 -7
  204. package/src/auth/__tests__/token.test.ts +100 -0
  205. package/src/auth/index.ts +1 -0
  206. package/src/auth/token.ts +82 -0
  207. package/src/cli/__tests__/acp.test.ts +1 -1
  208. package/src/cli/__tests__/stable-instance-id.test.ts +1 -1
  209. package/src/cli/acp.ts +130 -72
  210. package/src/cli/index.ts +120 -14
  211. package/src/cli/mcp.ts +311 -207
  212. package/src/cli/parse-args.ts +54 -0
  213. package/src/cli/stable-instance-id.ts +14 -0
  214. package/src/config/project-config.ts +190 -27
  215. package/src/lifecycle/__tests__/cascade-termination.test.ts +1 -1
  216. package/src/map/adapter/__tests__/acp-over-map-cancel.test.ts +22 -4
  217. package/src/map/adapter/__tests__/acp-over-map-getmodels.test.ts +355 -0
  218. package/src/map/adapter/__tests__/acp-over-map-history.test.ts +263 -0
  219. package/src/map/adapter/__tests__/acp-over-map-persistence.e2e.test.ts +1 -1
  220. package/src/map/adapter/__tests__/event-broadcast.test.ts +420 -0
  221. package/src/map/adapter/__tests__/event-log.test.ts +527 -0
  222. package/src/map/adapter/__tests__/event-translator.test.ts +3 -3
  223. package/src/map/adapter/__tests__/extensions.test.ts +408 -0
  224. package/src/map/adapter/__tests__/map-adapter.test.ts +99 -0
  225. package/src/map/adapter/__tests__/mcp-bridge.test.ts +1187 -0
  226. package/src/map/adapter/__tests__/multi-client-broadcast.test.ts +711 -0
  227. package/src/map/adapter/__tests__/websocket-integration.test.ts +218 -0
  228. package/src/map/adapter/acp-over-map.ts +678 -66
  229. package/src/map/adapter/connection-manager.ts +3 -0
  230. package/src/map/adapter/event-log.ts +208 -0
  231. package/src/map/adapter/event-translator.ts +6 -6
  232. package/src/map/adapter/extensions/agent-lifecycle.ts +267 -0
  233. package/src/map/adapter/extensions/index.ts +60 -0
  234. package/src/map/adapter/extensions/mcp-bridge.ts +995 -0
  235. package/src/map/adapter/extensions/task.ts +11 -0
  236. package/src/map/adapter/extensions/update-metadata.ts +126 -0
  237. package/src/map/adapter/index.ts +28 -0
  238. package/src/map/adapter/interface.ts +2 -0
  239. package/src/map/adapter/map-adapter.ts +312 -47
  240. package/src/map/adapter/subscription-manager.ts +5 -1
  241. package/src/map/adapter/types.ts +2 -0
  242. package/src/mcp/__tests__/map-client.test.ts +386 -0
  243. package/src/mcp/__tests__/mcp-server-thin-client.test.ts +368 -0
  244. package/src/mcp/__tests__/mcp-server.test.ts +100 -1
  245. package/src/mcp/map-client.ts +177 -0
  246. package/src/mcp/mcp-server.ts +191 -100
  247. package/src/mcp/types.ts +6 -1
  248. package/src/metrics/metrics.ts +1 -1
  249. package/src/monitor/__tests__/stale-agent-flow.integration.test.ts +1 -1
  250. package/src/roles/__tests__/config-loader.test.ts +7 -7
  251. package/src/roles/capabilities.ts +17 -7
  252. package/src/roles/config-loader.ts +6 -6
  253. package/src/roles/registry.ts +2 -2
  254. package/src/server/__tests__/combined-server.test.ts +94 -21
  255. package/src/server/combined-server.ts +189 -33
  256. package/src/steering/__tests__/steering-integration.test.ts +1 -1
  257. package/src/store/__tests__/event-store.test.ts +196 -1
  258. package/src/store/__tests__/instance.test.ts +3 -3
  259. package/src/store/event-store.ts +80 -21
  260. package/src/store/types/agents.ts +15 -0
  261. package/src/store/types/events.ts +1 -1
  262. package/src/task/backend/__tests__/create-task-backend.test.ts +225 -0
  263. package/src/task/backend/__tests__/e2e/unified-tool-provider-opentasks.e2e.test.ts +524 -0
  264. package/src/task/backend/__tests__/unified-tool-provider.test.ts +579 -0
  265. package/src/task/backend/index.ts +156 -106
  266. package/src/task/backend/memory.ts +4 -0
  267. package/src/task/backend/opentasks/__tests__/backend.test.ts +968 -0
  268. package/src/task/backend/opentasks/__tests__/daemon-manager.test.ts +406 -0
  269. package/src/task/backend/opentasks/__tests__/mapping.test.ts +84 -0
  270. package/src/task/backend/opentasks/__tests__/opentasks-backend.e2e.test.ts +1338 -0
  271. package/src/task/backend/opentasks/backend.ts +1323 -0
  272. package/src/task/backend/opentasks/client.ts +652 -0
  273. package/src/task/backend/opentasks/daemon-manager.ts +253 -0
  274. package/src/task/backend/opentasks/index.ts +69 -0
  275. package/src/task/backend/opentasks/mapping.ts +94 -0
  276. package/src/task/backend/types.ts +42 -66
  277. package/src/task/backend/unified-tool-provider.ts +779 -0
  278. package/src/teams/__tests__/cross-subsystem.integration.test.ts +1 -1
  279. package/src/teams/team-loader.ts +3 -3
  280. package/src/teams/team-runtime.ts +2 -0
  281. package/test_fixtures/README.md +2 -3
  282. package/test_fixtures/fixtures/index.ts +0 -3
  283. package/test_fixtures/fixtures/projects/project-with-specs.ts +7 -149
  284. package/test_fixtures/fixtures/repos/index.ts +1 -3
  285. package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -116
  286. package/test_fixtures/fixtures/repos/types.ts +0 -11
  287. package/test_fixtures/harness/__tests__/fixtures.test.ts +10 -102
  288. package/test_fixtures/harness/__tests__/temp-repo-and-simulator.test.ts +0 -33
  289. package/test_fixtures/harness/simulator/agent-simulator.ts +4 -4
  290. package/vitest.config.ts +1 -1
  291. package/vitest.e2e.config.ts +1 -1
  292. package/vitest.setup.ts +1 -30
  293. package/.macro-agent/teams/self-driving/prompts/grinder.md +0 -27
  294. package/.macro-agent/teams/self-driving/prompts/judge.md +0 -27
  295. package/.macro-agent/teams/self-driving/prompts/planner.md +0 -33
  296. package/.macro-agent/teams/self-driving/roles/grinder.yaml +0 -17
  297. package/.macro-agent/teams/self-driving/roles/judge.yaml +0 -24
  298. package/.macro-agent/teams/self-driving/roles/planner.yaml +0 -18
  299. package/.macro-agent/teams/self-driving/team.yaml +0 -103
  300. package/.macro-agent/teams/structured/prompts/developer.md +0 -26
  301. package/.macro-agent/teams/structured/prompts/lead.md +0 -25
  302. package/.macro-agent/teams/structured/prompts/reviewer.md +0 -24
  303. package/.macro-agent/teams/structured/roles/developer.yaml +0 -12
  304. package/.macro-agent/teams/structured/roles/lead.yaml +0 -11
  305. package/.macro-agent/teams/structured/roles/reviewer.yaml +0 -19
  306. package/.macro-agent/teams/structured/team.yaml +0 -89
  307. package/docs/sudocode-integration.md +0 -383
  308. package/src/task/backend/__tests__/backend-parity.test.ts +0 -451
  309. package/src/task/backend/__tests__/tool-provider-edge-cases.test.ts +0 -430
  310. package/src/task/backend/__tests__/tool-provider.test.ts +0 -983
  311. package/src/task/backend/sudocode/__tests__/backend-edge-cases.test.ts +0 -575
  312. package/src/task/backend/sudocode/__tests__/backend.test.ts +0 -1194
  313. package/src/task/backend/sudocode/__tests__/client-integration.test.ts +0 -418
  314. package/src/task/backend/sudocode/__tests__/client.test.ts +0 -345
  315. package/src/task/backend/sudocode/__tests__/e2e/backend.e2e.test.ts +0 -753
  316. package/src/task/backend/sudocode/__tests__/e2e/server-client.e2e.test.ts +0 -680
  317. package/src/task/backend/sudocode/__tests__/e2e-workflow.test.ts +0 -666
  318. package/src/task/backend/sudocode/__tests__/integration/standalone-client.integration.test.ts +0 -396
  319. package/src/task/backend/sudocode/__tests__/integration/sudocode-cli.integration.test.ts +0 -328
  320. package/src/task/backend/sudocode/__tests__/integration/test-utils.ts +0 -175
  321. package/src/task/backend/sudocode/__tests__/mapping-edge-cases.test.ts +0 -265
  322. package/src/task/backend/sudocode/__tests__/server-client.test.ts +0 -675
  323. package/src/task/backend/sudocode/__tests__/sync-policy-edge-cases.test.ts +0 -521
  324. package/src/task/backend/sudocode/__tests__/sync-policy.test.ts +0 -519
  325. package/src/task/backend/sudocode/__tests__/tools.test.ts +0 -471
  326. package/src/task/backend/sudocode/backend.ts +0 -1237
  327. package/src/task/backend/sudocode/client.ts +0 -515
  328. package/src/task/backend/sudocode/index.ts +0 -120
  329. package/src/task/backend/sudocode/mapping.ts +0 -93
  330. package/src/task/backend/sudocode/server-client.ts +0 -522
  331. package/src/task/backend/sudocode/standalone-client.ts +0 -623
  332. package/src/task/backend/sudocode/sync-policy.ts +0 -387
  333. package/src/task/backend/sudocode/tools.ts +0 -896
  334. package/src/task/backend/tool-provider.ts +0 -506
  335. package/test_fixtures/fixtures/sudocode/index.ts +0 -29
  336. package/test_fixtures/fixtures/sudocode/issues.ts +0 -185
  337. 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,17 @@ 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;
54
71
  /**
55
72
  * Abort all active streams targeting a specific agent.
56
73
  * Called when an agent is stopped via MAP protocol to interrupt
@@ -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;AAwB1D,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;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAS5C;;;;;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;YAiLZ,YAAY;YA2CZ,eAAe;IAoJ7B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA0DzB;;;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"}