lorenz 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +13 -0
  3. package/README.md +774 -0
  4. package/RELEASE-MANIFEST.json +211 -0
  5. package/apps/cli/bin/lorenz.js +25 -0
  6. package/apps/cli/dist/bin/cli.d.ts +3 -0
  7. package/apps/cli/dist/bin/cli.d.ts.map +1 -0
  8. package/apps/cli/dist/bin/cli.js +4 -0
  9. package/apps/cli/dist/bin/cli.js.map +1 -0
  10. package/apps/cli/dist/daemon.d.ts +76 -0
  11. package/apps/cli/dist/daemon.d.ts.map +1 -0
  12. package/apps/cli/dist/daemon.js +189 -0
  13. package/apps/cli/dist/daemon.js.map +1 -0
  14. package/apps/cli/dist/doctor.d.ts +40 -0
  15. package/apps/cli/dist/doctor.d.ts.map +1 -0
  16. package/apps/cli/dist/doctor.js +590 -0
  17. package/apps/cli/dist/doctor.js.map +1 -0
  18. package/apps/cli/dist/index.d.ts +32 -0
  19. package/apps/cli/dist/index.d.ts.map +1 -0
  20. package/apps/cli/dist/index.js +26 -0
  21. package/apps/cli/dist/index.js.map +1 -0
  22. package/apps/cli/dist/main.d.ts +40 -0
  23. package/apps/cli/dist/main.d.ts.map +1 -0
  24. package/apps/cli/dist/main.js +259 -0
  25. package/apps/cli/dist/main.js.map +1 -0
  26. package/apps/cli/dist/runs.d.ts +31 -0
  27. package/apps/cli/dist/runs.d.ts.map +1 -0
  28. package/apps/cli/dist/runs.js +281 -0
  29. package/apps/cli/dist/runs.js.map +1 -0
  30. package/apps/cli/dist/workerDriverLoader.d.ts +64 -0
  31. package/apps/cli/dist/workerDriverLoader.d.ts.map +1 -0
  32. package/apps/cli/dist/workerDriverLoader.js +211 -0
  33. package/apps/cli/dist/workerDriverLoader.js.map +1 -0
  34. package/apps/cli/package.json +57 -0
  35. package/apps/symphony-dashboard/dist/assets/index-B3owF3jd.css +1 -0
  36. package/apps/symphony-dashboard/dist/assets/index-DQ6XlL0d.js +227 -0
  37. package/apps/symphony-dashboard/dist/index.html +18 -0
  38. package/bin/lorenz +16 -0
  39. package/extensions/docker-worker/dist/index.d.ts +92 -0
  40. package/extensions/docker-worker/dist/index.d.ts.map +1 -0
  41. package/extensions/docker-worker/dist/index.js +283 -0
  42. package/extensions/docker-worker/dist/index.js.map +1 -0
  43. package/extensions/docker-worker/package.json +14 -0
  44. package/extensions/jira-tracker/dist/client.d.ts +50 -0
  45. package/extensions/jira-tracker/dist/client.d.ts.map +1 -0
  46. package/extensions/jira-tracker/dist/client.js +619 -0
  47. package/extensions/jira-tracker/dist/client.js.map +1 -0
  48. package/extensions/jira-tracker/dist/index.d.ts +5 -0
  49. package/extensions/jira-tracker/dist/index.d.ts.map +1 -0
  50. package/extensions/jira-tracker/dist/index.js +5 -0
  51. package/extensions/jira-tracker/dist/index.js.map +1 -0
  52. package/extensions/jira-tracker/dist/options.d.ts +38 -0
  53. package/extensions/jira-tracker/dist/options.d.ts.map +1 -0
  54. package/extensions/jira-tracker/dist/options.js +61 -0
  55. package/extensions/jira-tracker/dist/options.js.map +1 -0
  56. package/extensions/jira-tracker/dist/provider.d.ts +6 -0
  57. package/extensions/jira-tracker/dist/provider.d.ts.map +1 -0
  58. package/extensions/jira-tracker/dist/provider.js +178 -0
  59. package/extensions/jira-tracker/dist/provider.js.map +1 -0
  60. package/extensions/jira-tracker/dist/register.d.ts +10 -0
  61. package/extensions/jira-tracker/dist/register.d.ts.map +1 -0
  62. package/extensions/jira-tracker/dist/register.js +15 -0
  63. package/extensions/jira-tracker/dist/register.js.map +1 -0
  64. package/extensions/jira-tracker/package.json +16 -0
  65. package/extensions/linear-tracker/dist/client.d.ts +82 -0
  66. package/extensions/linear-tracker/dist/client.d.ts.map +1 -0
  67. package/extensions/linear-tracker/dist/client.js +622 -0
  68. package/extensions/linear-tracker/dist/client.js.map +1 -0
  69. package/extensions/linear-tracker/dist/index.d.ts +8 -0
  70. package/extensions/linear-tracker/dist/index.d.ts.map +1 -0
  71. package/extensions/linear-tracker/dist/index.js +7 -0
  72. package/extensions/linear-tracker/dist/index.js.map +1 -0
  73. package/extensions/linear-tracker/dist/options.d.ts +32 -0
  74. package/extensions/linear-tracker/dist/options.d.ts.map +1 -0
  75. package/extensions/linear-tracker/dist/options.js +59 -0
  76. package/extensions/linear-tracker/dist/options.js.map +1 -0
  77. package/extensions/linear-tracker/dist/provider.d.ts +4 -0
  78. package/extensions/linear-tracker/dist/provider.d.ts.map +1 -0
  79. package/extensions/linear-tracker/dist/provider.js +58 -0
  80. package/extensions/linear-tracker/dist/provider.js.map +1 -0
  81. package/extensions/linear-tracker/dist/register.d.ts +11 -0
  82. package/extensions/linear-tracker/dist/register.d.ts.map +1 -0
  83. package/extensions/linear-tracker/dist/register.js +19 -0
  84. package/extensions/linear-tracker/dist/register.js.map +1 -0
  85. package/extensions/linear-tracker/dist/toolOps.d.ts +8 -0
  86. package/extensions/linear-tracker/dist/toolOps.d.ts.map +1 -0
  87. package/extensions/linear-tracker/dist/toolOps.js +160 -0
  88. package/extensions/linear-tracker/dist/toolOps.js.map +1 -0
  89. package/extensions/linear-tracker/dist/tools.d.ts +7 -0
  90. package/extensions/linear-tracker/dist/tools.d.ts.map +1 -0
  91. package/extensions/linear-tracker/dist/tools.js +210 -0
  92. package/extensions/linear-tracker/dist/tools.js.map +1 -0
  93. package/extensions/linear-tracker/package.json +18 -0
  94. package/extensions/local-tracker/dist/boardStore.d.ts +116 -0
  95. package/extensions/local-tracker/dist/boardStore.d.ts.map +1 -0
  96. package/extensions/local-tracker/dist/boardStore.js +475 -0
  97. package/extensions/local-tracker/dist/boardStore.js.map +1 -0
  98. package/extensions/local-tracker/dist/client.d.ts +14 -0
  99. package/extensions/local-tracker/dist/client.d.ts.map +1 -0
  100. package/extensions/local-tracker/dist/client.js +27 -0
  101. package/extensions/local-tracker/dist/client.js.map +1 -0
  102. package/extensions/local-tracker/dist/index.d.ts +7 -0
  103. package/extensions/local-tracker/dist/index.d.ts.map +1 -0
  104. package/extensions/local-tracker/dist/index.js +7 -0
  105. package/extensions/local-tracker/dist/index.js.map +1 -0
  106. package/extensions/local-tracker/dist/options.d.ts +31 -0
  107. package/extensions/local-tracker/dist/options.d.ts.map +1 -0
  108. package/extensions/local-tracker/dist/options.js +69 -0
  109. package/extensions/local-tracker/dist/options.js.map +1 -0
  110. package/extensions/local-tracker/dist/provider.d.ts +9 -0
  111. package/extensions/local-tracker/dist/provider.d.ts.map +1 -0
  112. package/extensions/local-tracker/dist/provider.js +35 -0
  113. package/extensions/local-tracker/dist/provider.js.map +1 -0
  114. package/extensions/local-tracker/dist/register.d.ts +11 -0
  115. package/extensions/local-tracker/dist/register.d.ts.map +1 -0
  116. package/extensions/local-tracker/dist/register.js +19 -0
  117. package/extensions/local-tracker/dist/register.js.map +1 -0
  118. package/extensions/local-tracker/dist/resolveBoardDir.d.ts +24 -0
  119. package/extensions/local-tracker/dist/resolveBoardDir.d.ts.map +1 -0
  120. package/extensions/local-tracker/dist/resolveBoardDir.js +39 -0
  121. package/extensions/local-tracker/dist/resolveBoardDir.js.map +1 -0
  122. package/extensions/local-tracker/dist/toolOps.d.ts +9 -0
  123. package/extensions/local-tracker/dist/toolOps.d.ts.map +1 -0
  124. package/extensions/local-tracker/dist/toolOps.js +86 -0
  125. package/extensions/local-tracker/dist/toolOps.js.map +1 -0
  126. package/extensions/local-tracker/dist/tools.d.ts +7 -0
  127. package/extensions/local-tracker/dist/tools.d.ts.map +1 -0
  128. package/extensions/local-tracker/dist/tools.js +170 -0
  129. package/extensions/local-tracker/dist/tools.js.map +1 -0
  130. package/extensions/local-tracker/package.json +18 -0
  131. package/extensions/memory-tracker/dist/index.d.ts +24 -0
  132. package/extensions/memory-tracker/dist/index.d.ts.map +1 -0
  133. package/extensions/memory-tracker/dist/index.js +110 -0
  134. package/extensions/memory-tracker/dist/index.js.map +1 -0
  135. package/extensions/memory-tracker/package.json +16 -0
  136. package/extensions/slack-tracker/dist/client.d.ts +88 -0
  137. package/extensions/slack-tracker/dist/client.d.ts.map +1 -0
  138. package/extensions/slack-tracker/dist/client.js +246 -0
  139. package/extensions/slack-tracker/dist/client.js.map +1 -0
  140. package/extensions/slack-tracker/dist/inMemoryTransport.d.ts +42 -0
  141. package/extensions/slack-tracker/dist/inMemoryTransport.d.ts.map +1 -0
  142. package/extensions/slack-tracker/dist/inMemoryTransport.js +104 -0
  143. package/extensions/slack-tracker/dist/inMemoryTransport.js.map +1 -0
  144. package/extensions/slack-tracker/dist/index.d.ts +15 -0
  145. package/extensions/slack-tracker/dist/index.d.ts.map +1 -0
  146. package/extensions/slack-tracker/dist/index.js +11 -0
  147. package/extensions/slack-tracker/dist/index.js.map +1 -0
  148. package/extensions/slack-tracker/dist/mapping.d.ts +27 -0
  149. package/extensions/slack-tracker/dist/mapping.d.ts.map +1 -0
  150. package/extensions/slack-tracker/dist/mapping.js +109 -0
  151. package/extensions/slack-tracker/dist/mapping.js.map +1 -0
  152. package/extensions/slack-tracker/dist/operations.d.ts +41 -0
  153. package/extensions/slack-tracker/dist/operations.d.ts.map +1 -0
  154. package/extensions/slack-tracker/dist/operations.js +97 -0
  155. package/extensions/slack-tracker/dist/operations.js.map +1 -0
  156. package/extensions/slack-tracker/dist/options.d.ts +30 -0
  157. package/extensions/slack-tracker/dist/options.d.ts.map +1 -0
  158. package/extensions/slack-tracker/dist/options.js +49 -0
  159. package/extensions/slack-tracker/dist/options.js.map +1 -0
  160. package/extensions/slack-tracker/dist/provider.d.ts +9 -0
  161. package/extensions/slack-tracker/dist/provider.d.ts.map +1 -0
  162. package/extensions/slack-tracker/dist/provider.js +74 -0
  163. package/extensions/slack-tracker/dist/provider.js.map +1 -0
  164. package/extensions/slack-tracker/dist/register.d.ts +11 -0
  165. package/extensions/slack-tracker/dist/register.d.ts.map +1 -0
  166. package/extensions/slack-tracker/dist/register.js +19 -0
  167. package/extensions/slack-tracker/dist/register.js.map +1 -0
  168. package/extensions/slack-tracker/dist/threadState.d.ts +52 -0
  169. package/extensions/slack-tracker/dist/threadState.d.ts.map +1 -0
  170. package/extensions/slack-tracker/dist/threadState.js +192 -0
  171. package/extensions/slack-tracker/dist/threadState.js.map +1 -0
  172. package/extensions/slack-tracker/dist/toolOps.d.ts +13 -0
  173. package/extensions/slack-tracker/dist/toolOps.d.ts.map +1 -0
  174. package/extensions/slack-tracker/dist/toolOps.js +76 -0
  175. package/extensions/slack-tracker/dist/toolOps.js.map +1 -0
  176. package/extensions/slack-tracker/dist/tools.d.ts +8 -0
  177. package/extensions/slack-tracker/dist/tools.d.ts.map +1 -0
  178. package/extensions/slack-tracker/dist/tools.js +266 -0
  179. package/extensions/slack-tracker/dist/tools.js.map +1 -0
  180. package/extensions/slack-tracker/dist/transport.d.ts +63 -0
  181. package/extensions/slack-tracker/dist/transport.d.ts.map +1 -0
  182. package/extensions/slack-tracker/dist/transport.js +2 -0
  183. package/extensions/slack-tracker/dist/transport.js.map +1 -0
  184. package/extensions/slack-tracker/dist/webTransport.d.ts +44 -0
  185. package/extensions/slack-tracker/dist/webTransport.d.ts.map +1 -0
  186. package/extensions/slack-tracker/dist/webTransport.js +402 -0
  187. package/extensions/slack-tracker/dist/webTransport.js.map +1 -0
  188. package/extensions/slack-tracker/package.json +17 -0
  189. package/package.json +89 -0
  190. package/packages/acp/dist/childProcess.d.ts +4 -0
  191. package/packages/acp/dist/childProcess.d.ts.map +1 -0
  192. package/packages/acp/dist/childProcess.js +33 -0
  193. package/packages/acp/dist/childProcess.js.map +1 -0
  194. package/packages/acp/dist/index.d.ts +70 -0
  195. package/packages/acp/dist/index.d.ts.map +1 -0
  196. package/packages/acp/dist/index.js +701 -0
  197. package/packages/acp/dist/index.js.map +1 -0
  198. package/packages/acp/dist/options.d.ts +24 -0
  199. package/packages/acp/dist/options.d.ts.map +1 -0
  200. package/packages/acp/dist/options.js +92 -0
  201. package/packages/acp/dist/options.js.map +1 -0
  202. package/packages/acp/dist/toml.d.ts +2 -0
  203. package/packages/acp/dist/toml.d.ts.map +1 -0
  204. package/packages/acp/dist/toml.js +51 -0
  205. package/packages/acp/dist/toml.js.map +1 -0
  206. package/packages/acp/package.json +24 -0
  207. package/packages/agent-runner/dist/index.d.ts +58 -0
  208. package/packages/agent-runner/dist/index.d.ts.map +1 -0
  209. package/packages/agent-runner/dist/index.js +288 -0
  210. package/packages/agent-runner/dist/index.js.map +1 -0
  211. package/packages/agent-runner/package.json +19 -0
  212. package/packages/agent-sdk/dist/index.d.ts +2 -0
  213. package/packages/agent-sdk/dist/index.d.ts.map +1 -0
  214. package/packages/agent-sdk/dist/index.js +2 -0
  215. package/packages/agent-sdk/dist/index.js.map +1 -0
  216. package/packages/agent-sdk/dist/provider.d.ts +66 -0
  217. package/packages/agent-sdk/dist/provider.d.ts.map +1 -0
  218. package/packages/agent-sdk/dist/provider.js +38 -0
  219. package/packages/agent-sdk/dist/provider.js.map +1 -0
  220. package/packages/agent-sdk/package.json +14 -0
  221. package/packages/cli-kit/dist/index.d.ts +20 -0
  222. package/packages/cli-kit/dist/index.d.ts.map +1 -0
  223. package/packages/cli-kit/dist/index.js +72 -0
  224. package/packages/cli-kit/dist/index.js.map +1 -0
  225. package/packages/cli-kit/package.json +14 -0
  226. package/packages/config/dist/aliases.d.ts +10 -0
  227. package/packages/config/dist/aliases.d.ts.map +1 -0
  228. package/packages/config/dist/aliases.js +153 -0
  229. package/packages/config/dist/aliases.js.map +1 -0
  230. package/packages/config/dist/defaults.d.ts +12 -0
  231. package/packages/config/dist/defaults.d.ts.map +1 -0
  232. package/packages/config/dist/defaults.js +78 -0
  233. package/packages/config/dist/defaults.js.map +1 -0
  234. package/packages/config/dist/errors.d.ts +3 -0
  235. package/packages/config/dist/errors.d.ts.map +1 -0
  236. package/packages/config/dist/errors.js +56 -0
  237. package/packages/config/dist/errors.js.map +1 -0
  238. package/packages/config/dist/index.d.ts +5 -0
  239. package/packages/config/dist/index.d.ts.map +1 -0
  240. package/packages/config/dist/index.js +4 -0
  241. package/packages/config/dist/index.js.map +1 -0
  242. package/packages/config/dist/leaf-utils.d.ts +3 -0
  243. package/packages/config/dist/leaf-utils.d.ts.map +1 -0
  244. package/packages/config/dist/leaf-utils.js +9 -0
  245. package/packages/config/dist/leaf-utils.js.map +1 -0
  246. package/packages/config/dist/parse.d.ts +11 -0
  247. package/packages/config/dist/parse.d.ts.map +1 -0
  248. package/packages/config/dist/parse.js +821 -0
  249. package/packages/config/dist/parse.js.map +1 -0
  250. package/packages/config/dist/schemas.d.ts +214 -0
  251. package/packages/config/dist/schemas.d.ts.map +1 -0
  252. package/packages/config/dist/schemas.js +248 -0
  253. package/packages/config/dist/schemas.js.map +1 -0
  254. package/packages/config/package.json +19 -0
  255. package/packages/dispatch/dist/index.d.ts +22 -0
  256. package/packages/dispatch/dist/index.d.ts.map +1 -0
  257. package/packages/dispatch/dist/index.js +117 -0
  258. package/packages/dispatch/dist/index.js.map +1 -0
  259. package/packages/dispatch/package.json +16 -0
  260. package/packages/dispatch-coordinator/dist/coordinator.d.ts +158 -0
  261. package/packages/dispatch-coordinator/dist/coordinator.d.ts.map +1 -0
  262. package/packages/dispatch-coordinator/dist/coordinator.js +529 -0
  263. package/packages/dispatch-coordinator/dist/coordinator.js.map +1 -0
  264. package/packages/dispatch-coordinator/dist/gate.d.ts +24 -0
  265. package/packages/dispatch-coordinator/dist/gate.d.ts.map +1 -0
  266. package/packages/dispatch-coordinator/dist/gate.js +47 -0
  267. package/packages/dispatch-coordinator/dist/gate.js.map +1 -0
  268. package/packages/dispatch-coordinator/dist/index.d.ts +6 -0
  269. package/packages/dispatch-coordinator/dist/index.d.ts.map +1 -0
  270. package/packages/dispatch-coordinator/dist/index.js +16 -0
  271. package/packages/dispatch-coordinator/dist/index.js.map +1 -0
  272. package/packages/dispatch-coordinator/dist/mcpEndpointManager.d.ts +28 -0
  273. package/packages/dispatch-coordinator/dist/mcpEndpointManager.d.ts.map +1 -0
  274. package/packages/dispatch-coordinator/dist/mcpEndpointManager.js +54 -0
  275. package/packages/dispatch-coordinator/dist/mcpEndpointManager.js.map +1 -0
  276. package/packages/dispatch-coordinator/dist/nullEndpointManager.d.ts +18 -0
  277. package/packages/dispatch-coordinator/dist/nullEndpointManager.d.ts.map +1 -0
  278. package/packages/dispatch-coordinator/dist/nullEndpointManager.js +40 -0
  279. package/packages/dispatch-coordinator/dist/nullEndpointManager.js.map +1 -0
  280. package/packages/dispatch-coordinator/dist/types.d.ts +119 -0
  281. package/packages/dispatch-coordinator/dist/types.d.ts.map +1 -0
  282. package/packages/dispatch-coordinator/dist/types.js +17 -0
  283. package/packages/dispatch-coordinator/dist/types.js.map +1 -0
  284. package/packages/dispatch-coordinator/package.json +16 -0
  285. package/packages/domain/dist/index.d.ts +775 -0
  286. package/packages/domain/dist/index.d.ts.map +1 -0
  287. package/packages/domain/dist/index.js +124 -0
  288. package/packages/domain/dist/index.js.map +1 -0
  289. package/packages/domain/package.json +14 -0
  290. package/packages/humanize/dist/index.d.ts +4 -0
  291. package/packages/humanize/dist/index.d.ts.map +1 -0
  292. package/packages/humanize/dist/index.js +347 -0
  293. package/packages/humanize/dist/index.js.map +1 -0
  294. package/packages/humanize/package.json +11 -0
  295. package/packages/issue/dist/index.d.ts +7 -0
  296. package/packages/issue/dist/index.d.ts.map +1 -0
  297. package/packages/issue/dist/index.js +147 -0
  298. package/packages/issue/dist/index.js.map +1 -0
  299. package/packages/issue/package.json +14 -0
  300. package/packages/log-file/dist/index.d.ts +10 -0
  301. package/packages/log-file/dist/index.d.ts.map +1 -0
  302. package/packages/log-file/dist/index.js +200 -0
  303. package/packages/log-file/dist/index.js.map +1 -0
  304. package/packages/log-file/package.json +15 -0
  305. package/packages/mcp/dist/agentEndpoint.d.ts +31 -0
  306. package/packages/mcp/dist/agentEndpoint.d.ts.map +1 -0
  307. package/packages/mcp/dist/agentEndpoint.js +270 -0
  308. package/packages/mcp/dist/agentEndpoint.js.map +1 -0
  309. package/packages/mcp/dist/auth.d.ts +7 -0
  310. package/packages/mcp/dist/auth.d.ts.map +1 -0
  311. package/packages/mcp/dist/auth.js +48 -0
  312. package/packages/mcp/dist/auth.js.map +1 -0
  313. package/packages/mcp/dist/filter.d.ts +70 -0
  314. package/packages/mcp/dist/filter.d.ts.map +1 -0
  315. package/packages/mcp/dist/filter.js +231 -0
  316. package/packages/mcp/dist/filter.js.map +1 -0
  317. package/packages/mcp/dist/index.d.ts +7 -0
  318. package/packages/mcp/dist/index.d.ts.map +1 -0
  319. package/packages/mcp/dist/index.js +5 -0
  320. package/packages/mcp/dist/index.js.map +1 -0
  321. package/packages/mcp/dist/server.d.ts +31 -0
  322. package/packages/mcp/dist/server.d.ts.map +1 -0
  323. package/packages/mcp/dist/server.js +176 -0
  324. package/packages/mcp/dist/server.js.map +1 -0
  325. package/packages/mcp/dist/tools/linear.d.ts +5 -0
  326. package/packages/mcp/dist/tools/linear.d.ts.map +1 -0
  327. package/packages/mcp/dist/tools/linear.js +192 -0
  328. package/packages/mcp/dist/tools/linear.js.map +1 -0
  329. package/packages/mcp/dist/tools/local.d.ts +5 -0
  330. package/packages/mcp/dist/tools/local.d.ts.map +1 -0
  331. package/packages/mcp/dist/tools/local.js +161 -0
  332. package/packages/mcp/dist/tools/local.js.map +1 -0
  333. package/packages/mcp/dist/tools/result.d.ts +5 -0
  334. package/packages/mcp/dist/tools/result.d.ts.map +1 -0
  335. package/packages/mcp/dist/tools/result.js +15 -0
  336. package/packages/mcp/dist/tools/result.js.map +1 -0
  337. package/packages/mcp/dist/tools.d.ts +14 -0
  338. package/packages/mcp/dist/tools.d.ts.map +1 -0
  339. package/packages/mcp/dist/tools.js +58 -0
  340. package/packages/mcp/dist/tools.js.map +1 -0
  341. package/packages/mcp/package.json +20 -0
  342. package/packages/orchestrator/dist/index.d.ts +171 -0
  343. package/packages/orchestrator/dist/index.d.ts.map +1 -0
  344. package/packages/orchestrator/dist/index.js +524 -0
  345. package/packages/orchestrator/dist/index.js.map +1 -0
  346. package/packages/orchestrator/package.json +18 -0
  347. package/packages/policies/dist/index.d.ts +11 -0
  348. package/packages/policies/dist/index.d.ts.map +1 -0
  349. package/packages/policies/dist/index.js +6 -0
  350. package/packages/policies/dist/index.js.map +1 -0
  351. package/packages/policies/dist/reconciliation.d.ts +5 -0
  352. package/packages/policies/dist/reconciliation.d.ts.map +1 -0
  353. package/packages/policies/dist/reconciliation.js +17 -0
  354. package/packages/policies/dist/reconciliation.js.map +1 -0
  355. package/packages/policies/dist/resume.d.ts +14 -0
  356. package/packages/policies/dist/resume.d.ts.map +1 -0
  357. package/packages/policies/dist/resume.js +7 -0
  358. package/packages/policies/dist/resume.js.map +1 -0
  359. package/packages/policies/dist/retry.d.ts +4 -0
  360. package/packages/policies/dist/retry.d.ts.map +1 -0
  361. package/packages/policies/dist/retry.js +7 -0
  362. package/packages/policies/dist/retry.js.map +1 -0
  363. package/packages/policies/dist/stopReason.d.ts +4 -0
  364. package/packages/policies/dist/stopReason.d.ts.map +1 -0
  365. package/packages/policies/dist/stopReason.js +11 -0
  366. package/packages/policies/dist/stopReason.js.map +1 -0
  367. package/packages/policies/dist/usage.d.ts +14 -0
  368. package/packages/policies/dist/usage.d.ts.map +1 -0
  369. package/packages/policies/dist/usage.js +38 -0
  370. package/packages/policies/dist/usage.js.map +1 -0
  371. package/packages/policies/dist/workerHost.d.ts +8 -0
  372. package/packages/policies/dist/workerHost.d.ts.map +1 -0
  373. package/packages/policies/dist/workerHost.js +20 -0
  374. package/packages/policies/dist/workerHost.js.map +1 -0
  375. package/packages/policies/package.json +21 -0
  376. package/packages/presenter/dist/index.d.ts +81 -0
  377. package/packages/presenter/dist/index.d.ts.map +1 -0
  378. package/packages/presenter/dist/index.js +421 -0
  379. package/packages/presenter/dist/index.js.map +1 -0
  380. package/packages/presenter/package.json +16 -0
  381. package/packages/projections/dist/index.d.ts +10 -0
  382. package/packages/projections/dist/index.d.ts.map +1 -0
  383. package/packages/projections/dist/index.js +30 -0
  384. package/packages/projections/dist/index.js.map +1 -0
  385. package/packages/projections/package.json +15 -0
  386. package/packages/prompt/dist/index.d.ts +9 -0
  387. package/packages/prompt/dist/index.d.ts.map +1 -0
  388. package/packages/prompt/dist/index.js +71 -0
  389. package/packages/prompt/dist/index.js.map +1 -0
  390. package/packages/prompt/package.json +16 -0
  391. package/packages/retry-scheduler/dist/index.d.ts +12 -0
  392. package/packages/retry-scheduler/dist/index.d.ts.map +1 -0
  393. package/packages/retry-scheduler/dist/index.js +39 -0
  394. package/packages/retry-scheduler/dist/index.js.map +1 -0
  395. package/packages/retry-scheduler/package.json +15 -0
  396. package/packages/runtime/dist/index.d.ts +157 -0
  397. package/packages/runtime/dist/index.d.ts.map +1 -0
  398. package/packages/runtime/dist/index.js +1074 -0
  399. package/packages/runtime/dist/index.js.map +1 -0
  400. package/packages/runtime/package.json +26 -0
  401. package/packages/runtime-events/dist/index.d.ts +110 -0
  402. package/packages/runtime-events/dist/index.d.ts.map +1 -0
  403. package/packages/runtime-events/dist/index.js +25 -0
  404. package/packages/runtime-events/dist/index.js.map +1 -0
  405. package/packages/runtime-events/package.json +14 -0
  406. package/packages/server/dist/index.d.ts +25 -0
  407. package/packages/server/dist/index.d.ts.map +1 -0
  408. package/packages/server/dist/index.js +213 -0
  409. package/packages/server/dist/index.js.map +1 -0
  410. package/packages/server/dist/issue-store.d.ts +26 -0
  411. package/packages/server/dist/issue-store.d.ts.map +1 -0
  412. package/packages/server/dist/issue-store.js +88 -0
  413. package/packages/server/dist/issue-store.js.map +1 -0
  414. package/packages/server/dist/path-params.d.ts +6 -0
  415. package/packages/server/dist/path-params.d.ts.map +1 -0
  416. package/packages/server/dist/path-params.js +15 -0
  417. package/packages/server/dist/path-params.js.map +1 -0
  418. package/packages/server/dist/source.d.ts +12 -0
  419. package/packages/server/dist/source.d.ts.map +1 -0
  420. package/packages/server/dist/source.js +2 -0
  421. package/packages/server/dist/source.js.map +1 -0
  422. package/packages/server/dist/trace-routes.d.ts +21 -0
  423. package/packages/server/dist/trace-routes.d.ts.map +1 -0
  424. package/packages/server/dist/trace-routes.js +66 -0
  425. package/packages/server/dist/trace-routes.js.map +1 -0
  426. package/packages/server/dist/ws.d.ts +18 -0
  427. package/packages/server/dist/ws.d.ts.map +1 -0
  428. package/packages/server/dist/ws.js +168 -0
  429. package/packages/server/dist/ws.js.map +1 -0
  430. package/packages/server/package.json +22 -0
  431. package/packages/ssh/dist/index.d.ts +33 -0
  432. package/packages/ssh/dist/index.d.ts.map +1 -0
  433. package/packages/ssh/dist/index.js +281 -0
  434. package/packages/ssh/dist/index.js.map +1 -0
  435. package/packages/ssh/package.json +15 -0
  436. package/packages/static-worker/dist/index.d.ts +73 -0
  437. package/packages/static-worker/dist/index.d.ts.map +1 -0
  438. package/packages/static-worker/dist/index.js +150 -0
  439. package/packages/static-worker/dist/index.js.map +1 -0
  440. package/packages/static-worker/package.json +14 -0
  441. package/packages/tool-sdk/dist/filter.d.ts +70 -0
  442. package/packages/tool-sdk/dist/filter.d.ts.map +1 -0
  443. package/packages/tool-sdk/dist/filter.js +231 -0
  444. package/packages/tool-sdk/dist/filter.js.map +1 -0
  445. package/packages/tool-sdk/dist/index.d.ts +6 -0
  446. package/packages/tool-sdk/dist/index.d.ts.map +1 -0
  447. package/packages/tool-sdk/dist/index.js +4 -0
  448. package/packages/tool-sdk/dist/index.js.map +1 -0
  449. package/packages/tool-sdk/dist/provider.d.ts +51 -0
  450. package/packages/tool-sdk/dist/provider.d.ts.map +1 -0
  451. package/packages/tool-sdk/dist/provider.js +2 -0
  452. package/packages/tool-sdk/dist/provider.js.map +1 -0
  453. package/packages/tool-sdk/dist/registry.d.ts +35 -0
  454. package/packages/tool-sdk/dist/registry.d.ts.map +1 -0
  455. package/packages/tool-sdk/dist/registry.js +85 -0
  456. package/packages/tool-sdk/dist/registry.js.map +1 -0
  457. package/packages/tool-sdk/dist/result.d.ts +5 -0
  458. package/packages/tool-sdk/dist/result.d.ts.map +1 -0
  459. package/packages/tool-sdk/dist/result.js +15 -0
  460. package/packages/tool-sdk/dist/result.js.map +1 -0
  461. package/packages/tool-sdk/package.json +14 -0
  462. package/packages/traceviz-emitter/dist/index.d.ts +19 -0
  463. package/packages/traceviz-emitter/dist/index.d.ts.map +1 -0
  464. package/packages/traceviz-emitter/dist/index.js +97 -0
  465. package/packages/traceviz-emitter/dist/index.js.map +1 -0
  466. package/packages/traceviz-emitter/package.json +17 -0
  467. package/packages/traceviz-server/dist/index.d.ts +14 -0
  468. package/packages/traceviz-server/dist/index.d.ts.map +1 -0
  469. package/packages/traceviz-server/dist/index.js +10 -0
  470. package/packages/traceviz-server/dist/index.js.map +1 -0
  471. package/packages/traceviz-server/dist/models/api.d.ts +51 -0
  472. package/packages/traceviz-server/dist/models/api.d.ts.map +1 -0
  473. package/packages/traceviz-server/dist/models/api.js +5 -0
  474. package/packages/traceviz-server/dist/models/api.js.map +1 -0
  475. package/packages/traceviz-server/dist/models/display-events.d.ts +58 -0
  476. package/packages/traceviz-server/dist/models/display-events.d.ts.map +1 -0
  477. package/packages/traceviz-server/dist/models/display-events.js +6 -0
  478. package/packages/traceviz-server/dist/models/display-events.js.map +1 -0
  479. package/packages/traceviz-server/dist/parser.d.ts +14 -0
  480. package/packages/traceviz-server/dist/parser.d.ts.map +1 -0
  481. package/packages/traceviz-server/dist/parser.js +363 -0
  482. package/packages/traceviz-server/dist/parser.js.map +1 -0
  483. package/packages/traceviz-server/dist/stats.d.ts +7 -0
  484. package/packages/traceviz-server/dist/stats.d.ts.map +1 -0
  485. package/packages/traceviz-server/dist/stats.js +81 -0
  486. package/packages/traceviz-server/dist/stats.js.map +1 -0
  487. package/packages/traceviz-server/dist/watcher.d.ts +54 -0
  488. package/packages/traceviz-server/dist/watcher.d.ts.map +1 -0
  489. package/packages/traceviz-server/dist/watcher.js +368 -0
  490. package/packages/traceviz-server/dist/watcher.js.map +1 -0
  491. package/packages/traceviz-server/package.json +16 -0
  492. package/packages/tracker-sdk/dist/index.d.ts +5 -0
  493. package/packages/tracker-sdk/dist/index.d.ts.map +1 -0
  494. package/packages/tracker-sdk/dist/index.js +4 -0
  495. package/packages/tracker-sdk/dist/index.js.map +1 -0
  496. package/packages/tracker-sdk/dist/options.d.ts +20 -0
  497. package/packages/tracker-sdk/dist/options.d.ts.map +1 -0
  498. package/packages/tracker-sdk/dist/options.js +46 -0
  499. package/packages/tracker-sdk/dist/options.js.map +1 -0
  500. package/packages/tracker-sdk/dist/provider.d.ts +104 -0
  501. package/packages/tracker-sdk/dist/provider.d.ts.map +1 -0
  502. package/packages/tracker-sdk/dist/provider.js +2 -0
  503. package/packages/tracker-sdk/dist/provider.js.map +1 -0
  504. package/packages/tracker-sdk/dist/registry.d.ts +26 -0
  505. package/packages/tracker-sdk/dist/registry.d.ts.map +1 -0
  506. package/packages/tracker-sdk/dist/registry.js +52 -0
  507. package/packages/tracker-sdk/dist/registry.js.map +1 -0
  508. package/packages/tracker-sdk/dist/toolPack.d.ts +10 -0
  509. package/packages/tracker-sdk/dist/toolPack.d.ts.map +1 -0
  510. package/packages/tracker-sdk/dist/toolPack.js +185 -0
  511. package/packages/tracker-sdk/dist/toolPack.js.map +1 -0
  512. package/packages/tracker-sdk/package.json +15 -0
  513. package/packages/tui/dist/index.d.ts +35 -0
  514. package/packages/tui/dist/index.d.ts.map +1 -0
  515. package/packages/tui/dist/index.js +354 -0
  516. package/packages/tui/dist/index.js.map +1 -0
  517. package/packages/tui/package.json +18 -0
  518. package/packages/worker-host-pool/dist/index.d.ts +33 -0
  519. package/packages/worker-host-pool/dist/index.d.ts.map +1 -0
  520. package/packages/worker-host-pool/dist/index.js +311 -0
  521. package/packages/worker-host-pool/dist/index.js.map +1 -0
  522. package/packages/worker-host-pool/package.json +14 -0
  523. package/packages/worker-pool/dist/index.d.ts +6 -0
  524. package/packages/worker-pool/dist/index.d.ts.map +1 -0
  525. package/packages/worker-pool/dist/index.js +15 -0
  526. package/packages/worker-pool/dist/index.js.map +1 -0
  527. package/packages/worker-pool/dist/lease.d.ts +36 -0
  528. package/packages/worker-pool/dist/lease.d.ts.map +1 -0
  529. package/packages/worker-pool/dist/lease.js +53 -0
  530. package/packages/worker-pool/dist/lease.js.map +1 -0
  531. package/packages/worker-pool/dist/ledger.d.ts +51 -0
  532. package/packages/worker-pool/dist/ledger.d.ts.map +1 -0
  533. package/packages/worker-pool/dist/ledger.js +165 -0
  534. package/packages/worker-pool/dist/ledger.js.map +1 -0
  535. package/packages/worker-pool/dist/mutex.d.ts +10 -0
  536. package/packages/worker-pool/dist/mutex.d.ts.map +1 -0
  537. package/packages/worker-pool/dist/mutex.js +22 -0
  538. package/packages/worker-pool/dist/mutex.js.map +1 -0
  539. package/packages/worker-pool/dist/pool.d.ts +33 -0
  540. package/packages/worker-pool/dist/pool.d.ts.map +1 -0
  541. package/packages/worker-pool/dist/pool.js +1727 -0
  542. package/packages/worker-pool/dist/pool.js.map +1 -0
  543. package/packages/worker-pool/dist/reaper.d.ts +94 -0
  544. package/packages/worker-pool/dist/reaper.d.ts.map +1 -0
  545. package/packages/worker-pool/dist/reaper.js +295 -0
  546. package/packages/worker-pool/dist/reaper.js.map +1 -0
  547. package/packages/worker-pool/dist/types.d.ts +249 -0
  548. package/packages/worker-pool/dist/types.d.ts.map +1 -0
  549. package/packages/worker-pool/dist/types.js +2 -0
  550. package/packages/worker-pool/dist/types.js.map +1 -0
  551. package/packages/worker-pool/package.json +16 -0
  552. package/packages/worker-sdk/dist/conformance.d.ts +64 -0
  553. package/packages/worker-sdk/dist/conformance.d.ts.map +1 -0
  554. package/packages/worker-sdk/dist/conformance.js +109 -0
  555. package/packages/worker-sdk/dist/conformance.js.map +1 -0
  556. package/packages/worker-sdk/dist/fake.d.ts +76 -0
  557. package/packages/worker-sdk/dist/fake.d.ts.map +1 -0
  558. package/packages/worker-sdk/dist/fake.js +142 -0
  559. package/packages/worker-sdk/dist/fake.js.map +1 -0
  560. package/packages/worker-sdk/dist/index.d.ts +5 -0
  561. package/packages/worker-sdk/dist/index.d.ts.map +1 -0
  562. package/packages/worker-sdk/dist/index.js +10 -0
  563. package/packages/worker-sdk/dist/index.js.map +1 -0
  564. package/packages/worker-sdk/dist/module.d.ts +46 -0
  565. package/packages/worker-sdk/dist/module.d.ts.map +1 -0
  566. package/packages/worker-sdk/dist/module.js +59 -0
  567. package/packages/worker-sdk/dist/module.js.map +1 -0
  568. package/packages/worker-sdk/dist/registry.d.ts +24 -0
  569. package/packages/worker-sdk/dist/registry.d.ts.map +1 -0
  570. package/packages/worker-sdk/dist/registry.js +49 -0
  571. package/packages/worker-sdk/dist/registry.js.map +1 -0
  572. package/packages/worker-sdk/dist/types.d.ts +138 -0
  573. package/packages/worker-sdk/dist/types.d.ts.map +1 -0
  574. package/packages/worker-sdk/dist/types.js +21 -0
  575. package/packages/worker-sdk/dist/types.js.map +1 -0
  576. package/packages/worker-sdk/package.json +15 -0
  577. package/packages/workflow/dist/index.d.ts +33 -0
  578. package/packages/workflow/dist/index.d.ts.map +1 -0
  579. package/packages/workflow/dist/index.js +125 -0
  580. package/packages/workflow/dist/index.js.map +1 -0
  581. package/packages/workflow/package.json +19 -0
  582. package/packages/workspace/dist/index.d.ts +70 -0
  583. package/packages/workspace/dist/index.d.ts.map +1 -0
  584. package/packages/workspace/dist/index.js +1016 -0
  585. package/packages/workspace/dist/index.js.map +1 -0
  586. package/packages/workspace/package.json +17 -0
  587. package/runtime-deps/anthropic-claude-agent-sdk/LICENSE.md +1 -0
  588. package/runtime-deps/anthropic-claude-agent-sdk/README.md +65 -0
  589. package/runtime-deps/anthropic-claude-agent-sdk/agentSdkTypes.d.ts +1 -0
  590. package/runtime-deps/anthropic-claude-agent-sdk/assistant.d.ts +135 -0
  591. package/runtime-deps/anthropic-claude-agent-sdk/assistant.mjs +190 -0
  592. package/runtime-deps/anthropic-claude-agent-sdk/bridge.d.ts +231 -0
  593. package/runtime-deps/anthropic-claude-agent-sdk/bridge.mjs +168 -0
  594. package/runtime-deps/anthropic-claude-agent-sdk/browser-sdk.d.ts +53 -0
  595. package/runtime-deps/anthropic-claude-agent-sdk/browser-sdk.js +93 -0
  596. package/runtime-deps/anthropic-claude-agent-sdk/extractFromBunfs.d.ts +1 -0
  597. package/runtime-deps/anthropic-claude-agent-sdk/extractFromBunfs.js +156 -0
  598. package/runtime-deps/anthropic-claude-agent-sdk/manifest.json +47 -0
  599. package/runtime-deps/anthropic-claude-agent-sdk/manifest.zst.json +55 -0
  600. package/runtime-deps/anthropic-claude-agent-sdk/node_modules/.bin/anthropic-ai-sdk +21 -0
  601. package/runtime-deps/anthropic-claude-agent-sdk/package.json +81 -0
  602. package/runtime-deps/anthropic-claude-agent-sdk/sdk-tools.d.ts +3170 -0
  603. package/runtime-deps/anthropic-claude-agent-sdk/sdk.d.ts +6000 -0
  604. package/runtime-deps/anthropic-claude-agent-sdk/sdk.mjs +119 -0
  605. package/runtime-deps/openai-codex/README.md +60 -0
  606. package/runtime-deps/openai-codex/bin/codex.js +229 -0
  607. package/runtime-deps/openai-codex/bin/rg +79 -0
  608. package/runtime-deps/openai-codex/package.json +22 -0
  609. package/vendor/claude-agent-acp/dist/acp-agent.d.ts +239 -0
  610. package/vendor/claude-agent-acp/dist/acp-agent.d.ts.map +1 -0
  611. package/vendor/claude-agent-acp/dist/acp-agent.js +2693 -0
  612. package/vendor/claude-agent-acp/dist/bundle.js +41230 -0
  613. package/vendor/claude-agent-acp/dist/index.d.ts +3 -0
  614. package/vendor/claude-agent-acp/dist/index.d.ts.map +1 -0
  615. package/vendor/claude-agent-acp/dist/index.js +67 -0
  616. package/vendor/claude-agent-acp/dist/lib.d.ts +6 -0
  617. package/vendor/claude-agent-acp/dist/lib.d.ts.map +1 -0
  618. package/vendor/claude-agent-acp/dist/lib.js +5 -0
  619. package/vendor/claude-agent-acp/dist/settings.d.ts +68 -0
  620. package/vendor/claude-agent-acp/dist/settings.d.ts.map +1 -0
  621. package/vendor/claude-agent-acp/dist/settings.js +182 -0
  622. package/vendor/claude-agent-acp/dist/tools.d.ts +103 -0
  623. package/vendor/claude-agent-acp/dist/tools.d.ts.map +1 -0
  624. package/vendor/claude-agent-acp/dist/tools.js +713 -0
  625. package/vendor/claude-agent-acp/dist/utils.d.ts +16 -0
  626. package/vendor/claude-agent-acp/dist/utils.d.ts.map +1 -0
  627. package/vendor/claude-agent-acp/dist/utils.js +83 -0
  628. package/vendor/claude-agent-acp/package.json +23 -0
  629. package/vendor/codex-acp/dist/index.js +21280 -0
  630. package/vendor/codex-acp/package.json +17 -0
@@ -0,0 +1,281 @@
1
+ import { Command } from "commander";
2
+ import { commanderErrorMessage, configureCommandForParse, hasHelpFlag, parseNonNegativeInteger, parsePositiveInteger, parseRequiredValue, } from "@lorenz/cli-kit";
3
+ import { loadWorkflow } from "@lorenz/workflow";
4
+ export function createRunsCommand(name = "lorenz runs") {
5
+ return new Command(name)
6
+ .description("Query Symphony run history from the observability API.")
7
+ .allowExcessArguments(false)
8
+ .option("--issue <id>", "Filter by issue identifier.", parseRequiredValue("--issue"))
9
+ .option("--failed", "Show failed runs.")
10
+ .option("--cost", "Show token and cost summary.")
11
+ .option("--retries", "Show retry summary by issue.")
12
+ .option("--id <runId>", "Show one run and related attempts.", parseRequiredValue("--id"))
13
+ .option("--limit <limit>", "Limit returned runs.", parsePositiveInteger("--limit"))
14
+ .option("--url <url>", "Observability API base URL.", parseUrl)
15
+ .option("--port <port>", "Observability API localhost port.", parseNonNegativeInteger("--port"))
16
+ .option("--json", "Print raw JSON response.");
17
+ }
18
+ export function parseRunsArgs(args) {
19
+ const command = configureCommandForParse(createRunsCommand());
20
+ if (hasHelpFlag(args))
21
+ return { status: "help", message: command.helpInformation().trimEnd() };
22
+ try {
23
+ command.parse(args, { from: "user" });
24
+ }
25
+ catch (error) {
26
+ return { status: "error", message: commanderErrorMessage(error) };
27
+ }
28
+ return {
29
+ status: "ok",
30
+ options: runsOptionsFromCommanderOptions(command.opts()),
31
+ };
32
+ }
33
+ export function runsOptionsFromCommanderOptions(parsed) {
34
+ return {
35
+ issue: parsed.issue ?? null,
36
+ failed: parsed.failed ?? false,
37
+ cost: parsed.cost ?? false,
38
+ retries: parsed.retries ?? false,
39
+ id: parsed.id ?? null,
40
+ limit: parsed.limit ?? null,
41
+ url: parsed.url ?? null,
42
+ port: parsed.port ?? null,
43
+ json: parsed.json ?? false,
44
+ };
45
+ }
46
+ export async function runRunsMain(args) {
47
+ const parsed = parseRunsArgs(args);
48
+ if (parsed.status === "help")
49
+ return `${parsed.message}\n`;
50
+ if (parsed.status === "error")
51
+ throw new Error(parsed.message);
52
+ return runRunsCommand(parsed.options);
53
+ }
54
+ export async function runRunsCommand(options) {
55
+ const url = await runsUrl(options);
56
+ const response = await fetch(url);
57
+ const body = (await response.json());
58
+ if (response.status === 200)
59
+ return renderOutput(body, options.json);
60
+ if (response.status === 404)
61
+ throw new Error(errorMessage(body, "Run not found"));
62
+ if (response.status === 503)
63
+ throw new Error(errorMessage(body, "Observability API unavailable"));
64
+ throw new Error(`Unexpected response status ${response.status}`);
65
+ }
66
+ async function runsUrl(options) {
67
+ const resolvedBaseUrl = await resolveBaseUrl(options);
68
+ const params = new URLSearchParams();
69
+ if (options.issue)
70
+ params.set("issue", options.issue);
71
+ if (options.failed)
72
+ params.set("failed", "true");
73
+ if (options.cost)
74
+ params.set("cost", "true");
75
+ if (options.retries)
76
+ params.set("retries", "true");
77
+ if (options.id)
78
+ params.set("id", options.id);
79
+ if (options.limit !== null)
80
+ params.set("limit", String(options.limit));
81
+ const query = params.toString();
82
+ return `${resolvedBaseUrl}/api/v1/runs${query ? `?${query}` : ""}`;
83
+ }
84
+ async function resolveBaseUrl(options) {
85
+ if (options.url)
86
+ return trimTrailingSlash(options.url);
87
+ const workflow = await loadWorkflow();
88
+ if (options.port !== null && options.port > 0)
89
+ return `http://${workflow.settings.server.host}:${options.port}`;
90
+ const port = workflow.settings.server.port;
91
+ if (typeof port === "number" && port > 0)
92
+ return `http://${workflow.settings.server.host}:${port}`;
93
+ throw new Error("No observability server port configured. Pass --port/--url or set server.port in WORKFLOW.md.");
94
+ }
95
+ function renderOutput(body, json) {
96
+ if (json)
97
+ return `${JSON.stringify(body, null, 2)}\n`;
98
+ const view = stringField(body, "view");
99
+ if (view === "run")
100
+ return renderRun(body);
101
+ if (view === "cost")
102
+ return renderCost(body);
103
+ if (view === "retries")
104
+ return renderRetries(body);
105
+ if (view === "runs")
106
+ return renderRuns(body);
107
+ return `${JSON.stringify(body, null, 2)}\n`;
108
+ }
109
+ function renderRun(body) {
110
+ const run = recordField(body, "run");
111
+ const lines = [
112
+ `Run ${stringField(run, "id")}`,
113
+ "",
114
+ `issue=${stringField(run, "issue_identifier")} agent=${stringField(run, "agent_kind")} outcome=${stringField(run, "outcome")} attempt=${numberField(run, "retry_attempt")}`,
115
+ `duration=${formatDuration(numberOrNull(run, "duration_ms"))} tokens=${formatInteger(tokenTotal(run))} turns=${numberField(run, "turn_count")}`,
116
+ `session=${stringField(run, "session_id") || "n/a"} worker=${stringField(run, "worker_host") || "local"}`,
117
+ `workspace=${stringField(run, "workspace_path") || "n/a"}`,
118
+ `last_event=${stringField(run, "last_event") || "n/a"} at=${stringField(run, "last_event_at") || "n/a"}`,
119
+ `failure_reason=${stringField(run, "failure_reason") || "n/a"}`,
120
+ `log_file=${stringField(recordField(run, "log_hints"), "symphony_log_file") || "n/a"}`,
121
+ ];
122
+ const related = arrayField(body, "related_runs");
123
+ if (related.length === 0)
124
+ return `${lines.join("\n")}\n`;
125
+ return `${[
126
+ ...lines,
127
+ "",
128
+ "Related runs",
129
+ renderTable(["ID", "OUTCOME", "TOKENS", "STARTED"], related.map((item) => {
130
+ const relatedRun = asRecord(item);
131
+ return [
132
+ stringField(relatedRun, "id"),
133
+ stringField(relatedRun, "outcome"),
134
+ formatInteger(tokenTotal(relatedRun)),
135
+ stringField(relatedRun, "started_at") || "n/a",
136
+ ];
137
+ })),
138
+ ].join("\n")}\n`;
139
+ }
140
+ function renderCost(body) {
141
+ const summary = recordField(body, "summary");
142
+ const byAgent = arrayField(summary, "by_agent");
143
+ const topRuns = arrayField(summary, "top_runs");
144
+ return `${[
145
+ "Cost Summary",
146
+ "",
147
+ renderTable(["AGENT", "RUNS", "DONE", "INPUT", "OUTPUT", "TOTAL", "AVG/RUN", "USD"], byAgent.map((item) => {
148
+ const row = asRecord(item);
149
+ return [
150
+ stringField(row, "agent_kind"),
151
+ formatInteger(numberField(row, "run_count")),
152
+ formatInteger(numberField(row, "completed_count")),
153
+ formatInteger(numberField(row, "input_tokens")),
154
+ formatInteger(numberField(row, "output_tokens")),
155
+ formatInteger(numberField(row, "total_tokens")),
156
+ formatFloat(numberField(row, "average_total_tokens_per_run")),
157
+ formatCost(numberOrNull(row, "estimated_cost_usd")),
158
+ ];
159
+ })),
160
+ "",
161
+ "Top Runs",
162
+ renderTable(["ID", "ISSUE", "AGENT", "OUTCOME", "TOKENS"], topRuns.map((item) => {
163
+ const run = asRecord(item);
164
+ return [
165
+ stringField(run, "id"),
166
+ stringField(run, "issue_identifier"),
167
+ stringField(run, "agent_kind"),
168
+ stringField(run, "outcome"),
169
+ formatInteger(tokenTotal(run)),
170
+ ];
171
+ })),
172
+ ].join("\n")}\n`;
173
+ }
174
+ function renderRetries(body) {
175
+ const issues = arrayField(body, "issues");
176
+ return `${[
177
+ "Retry Summary",
178
+ "",
179
+ renderTable(["ISSUE", "ATTEMPTS", "LATEST", "TOKENS", "RUN ID", "FAILURE"], issues.map((item) => {
180
+ const issue = asRecord(item);
181
+ return [
182
+ stringField(issue, "issue_identifier"),
183
+ formatInteger(numberField(issue, "attempts")),
184
+ stringField(issue, "latest_outcome"),
185
+ formatInteger(numberField(issue, "total_tokens")),
186
+ stringField(issue, "latest_run_id"),
187
+ stringField(issue, "latest_failure_reason") || "n/a",
188
+ ];
189
+ })),
190
+ ].join("\n")}\n`;
191
+ }
192
+ function renderRuns(body) {
193
+ const summary = recordField(body, "summary");
194
+ const runs = arrayField(body, "runs");
195
+ return `${[
196
+ "Run History",
197
+ "",
198
+ `total=${numberField(summary, "total")} running=${numberField(summary, "running")} success=${numberField(summary, "success")} failed=${numberField(summary, "failed")} stalled=${numberField(summary, "stalled")} canceled=${numberField(summary, "canceled")}`,
199
+ "",
200
+ renderTable(["ID", "ISSUE", "AGENT", "OUTCOME", "ATTEMPT", "TURNS", "TOKENS", "DURATION", "SESSION"], runs.map((item) => {
201
+ const run = asRecord(item);
202
+ return [
203
+ stringField(run, "id"),
204
+ stringField(run, "issue_identifier"),
205
+ stringField(run, "agent_kind"),
206
+ stringField(run, "outcome"),
207
+ formatInteger(numberField(run, "retry_attempt")),
208
+ formatInteger(numberField(run, "turn_count")),
209
+ formatInteger(tokenTotal(run)),
210
+ formatDuration(numberOrNull(run, "duration_ms")),
211
+ compact(stringField(run, "session_id")),
212
+ ];
213
+ })),
214
+ ].join("\n")}\n`;
215
+ }
216
+ function renderTable(headers, rows) {
217
+ const widths = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => row[index]?.length ?? 0)));
218
+ return [
219
+ formatRow(headers, widths),
220
+ formatRow(widths.map((width) => "-".repeat(width)), widths),
221
+ ...rows.map((row) => formatRow(row, widths)),
222
+ ].join("\n");
223
+ }
224
+ function formatRow(columns, widths) {
225
+ return columns.map((column, index) => column.padEnd(widths[index] ?? 0)).join(" ");
226
+ }
227
+ function errorMessage(body, fallback) {
228
+ return stringField(recordField(body, "error"), "message") || fallback;
229
+ }
230
+ function asRecord(value) {
231
+ return typeof value === "object" && value !== null ? value : {};
232
+ }
233
+ function recordField(record, key) {
234
+ return asRecord(record[key]);
235
+ }
236
+ function arrayField(record, key) {
237
+ return Array.isArray(record[key]) ? record[key] : [];
238
+ }
239
+ function stringField(record, key) {
240
+ const value = record[key];
241
+ return typeof value === "string" ? value : "";
242
+ }
243
+ function numberField(record, key) {
244
+ const value = record[key];
245
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
246
+ }
247
+ function numberOrNull(record, key) {
248
+ const value = record[key];
249
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
250
+ }
251
+ function tokenTotal(run) {
252
+ return numberField(recordField(run, "tokens"), "total_tokens");
253
+ }
254
+ function formatInteger(value) {
255
+ return String(Math.round(value));
256
+ }
257
+ function formatFloat(value) {
258
+ return value.toFixed(1);
259
+ }
260
+ function formatCost(value) {
261
+ return value === null ? "n/a" : `$${value.toFixed(4)}`;
262
+ }
263
+ function formatDuration(durationMs) {
264
+ if (durationMs === null)
265
+ return "n/a";
266
+ if (durationMs >= 1000)
267
+ return `${Math.floor(durationMs / 1000)}s`;
268
+ return `${durationMs}ms`;
269
+ }
270
+ function compact(value) {
271
+ if (!value)
272
+ return "n/a";
273
+ return value.length > 14 ? `${value.slice(0, 6)}...${value.slice(-5)}` : value;
274
+ }
275
+ function trimTrailingSlash(value) {
276
+ return value.trim().replace(/\/+$/, "");
277
+ }
278
+ function parseUrl(value) {
279
+ return trimTrailingSlash(parseRequiredValue("--url")(value));
280
+ }
281
+ //# sourceMappingURL=runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { type WorkerDriverRegistry } from "@lorenz/worker-sdk";
2
+ /**
3
+ * Out-of-tree worker-driver loading: the configured worker-pool driver accepts a MODULE
4
+ * SPECIFIER (an npm package name, `@scope/name`, `./relative` or `/absolute`
5
+ * path, with an optional `#exportName` suffix) in addition to a registered
6
+ * kind. The daemon dynamic-imports the module at startup (and on a reload that
7
+ * changes the specifier) and registers it into the worker-driver registry under
8
+ * the EXACT configured string, so the pool's existing registry resolution
9
+ * (`registry.require(settings.driver)`) needs no changes and third parties
10
+ * ship drivers without forking the repo.
11
+ *
12
+ * Trust: a dynamic import runs arbitrary code in the daemon process - the same
13
+ * trust boundary as workspace hooks. Loads happen ONLY here (startup/reload),
14
+ * never on the acquire path, and the `worker_pool_driver_loaded` audit event
15
+ * records exactly which code went live from where.
16
+ *
17
+ * Module pinning: Node's ESM cache loads a given specifier's code once per
18
+ * daemon lifetime. Changing driver CODE requires a daemon restart; changing
19
+ * the CONFIG to a different specifier hot-loads the new module. A reload that
20
+ * re-encounters an already-loaded specifier emits
21
+ * `worker_pool_driver_module_pinned` so the pin is observable, and cache-busting
22
+ * query strings are rejected (unbounded module-graph growth, half-initialized
23
+ * module hazards).
24
+ */
25
+ /** A parsed configured worker-pool driver value that is not a registered kind. */
26
+ export interface WorkerDriverRef {
27
+ /** The module specifier with any `#exportName` suffix removed. */
28
+ specifier: string;
29
+ /** The named export selected by a `#name` suffix; undefined means default. */
30
+ exportName?: string | undefined;
31
+ }
32
+ /**
33
+ * Parses a configured driver string into its module-specifier form. Resolution
34
+ * rule (the single authority for the one-field-two-grammars overload): an
35
+ * EXACT registered kind always wins - {@link ensureWorkerDriverLoaded} checks
36
+ * `registry.get(driver)` BEFORE calling this, so a published npm package named
37
+ * `docker` can never shadow the built-in. A `#name` suffix selects a named
38
+ * export; everything else is the specifier itself.
39
+ */
40
+ export declare function parseWorkerDriverRef(driver: string): WorkerDriverRef;
41
+ /** Options for {@link ensureWorkerDriverLoaded}. */
42
+ export interface EnsureWorkerDriverLoadedOptions {
43
+ /** Anchor for `./relative` specifiers; the daemon passes `dirname(workflow.path)`. */
44
+ baseDir?: string | undefined;
45
+ /** Structured-event sink for the loaded/pinned audit events. */
46
+ logEvent?: ((event: Record<string, unknown>) => void) | undefined;
47
+ }
48
+ /**
49
+ * Idempotently makes the configured worker-pool driver resolvable in
50
+ * `registry`. A registry hit (a built-in kind, an extension, or a specifier a
51
+ * previous call already loaded) is a no-op - except that a re-encountered
52
+ * loader-registered specifier emits `worker_pool_driver_module_pinned` so the
53
+ * code-is-pinned semantic is observable on reload. A miss parses the driver as
54
+ * a module reference, dynamic-imports it, and registers a factory whose kind
55
+ * IS the configured specifier string, emitting `worker_pool_driver_loaded`.
56
+ *
57
+ * Called by the daemon BEFORE `createWorkerPool` at startup and (via the
58
+ * coordinator's injected `driverLoader`) BEFORE `pool.reconcile` on reload, so
59
+ * the pool's registry resolution stays synchronous and transactional. A module
60
+ * registered for a reconcile that later fails is harmless: the registry is a
61
+ * catalog, and an unused entry is inert.
62
+ */
63
+ export declare function ensureWorkerDriverLoaded(driver: string, registry: WorkerDriverRegistry, options?: EnsureWorkerDriverLoadedOptions): Promise<void>;
64
+ //# sourceMappingURL=workerDriverLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerDriverLoader.d.ts","sourceRoot":"","sources":["../src/workerDriverLoader.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAsBpE;AAgLD,oDAAoD;AACpD,MAAM,WAAW,+BAA+B;IAC9C,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACnE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -0,0 +1,211 @@
1
+ import path from "node:path";
2
+ import { pathToFileURL } from "node:url";
3
+ import { assertWorkerDriverModule, } from "@lorenz/worker-sdk";
4
+ /**
5
+ * Parses a configured driver string into its module-specifier form. Resolution
6
+ * rule (the single authority for the one-field-two-grammars overload): an
7
+ * EXACT registered kind always wins - {@link ensureWorkerDriverLoaded} checks
8
+ * `registry.get(driver)` BEFORE calling this, so a published npm package named
9
+ * `docker` can never shadow the built-in. A `#name` suffix selects a named
10
+ * export; everything else is the specifier itself.
11
+ */
12
+ export function parseWorkerDriverRef(driver) {
13
+ const hashIndex = driver.lastIndexOf("#");
14
+ const specifier = hashIndex === -1 ? driver : driver.slice(0, hashIndex);
15
+ const exportName = hashIndex === -1 ? undefined : driver.slice(hashIndex + 1);
16
+ if (specifier === "") {
17
+ throw new Error(`worker_pool_driver_invalid_specifier: ${driver} has an empty module specifier`);
18
+ }
19
+ if (exportName === "") {
20
+ throw new Error(`worker_pool_driver_invalid_specifier: ${driver} has an empty #exportName suffix`);
21
+ }
22
+ if (specifier.includes("?")) {
23
+ throw new Error(`worker_pool_driver_invalid_specifier: ${specifier} - cache-busting query strings are not ` +
24
+ `supported (module code is pinned for the daemon lifetime; restart the daemon to pick ` +
25
+ `up driver code changes)`);
26
+ }
27
+ return { specifier, exportName };
28
+ }
29
+ /** Whether a specifier is a filesystem path (vs a bare npm package name). */
30
+ function isPathSpecifier(specifier) {
31
+ return (specifier.startsWith("./") ||
32
+ specifier.startsWith("../") ||
33
+ path.isAbsolute(specifier) ||
34
+ specifier.startsWith("file:"));
35
+ }
36
+ /**
37
+ * Dynamic-imports a worker-driver module and validates it. Relative and absolute
38
+ * paths resolve against `baseDir` via `pathToFileURL`; bare names resolve
39
+ * through the daemon's module graph (the operator installs the driver package
40
+ * next to symphony; `./path` is the escape hatch). The imported namespace is
41
+ * unwrapped (`default`, the transpiled-CJS `default.default` shape, or the
42
+ * selected named export) and passed through `assertWorkerDriverModule`, so a
43
+ * malformed module or an SDK version mismatch fails loud here - before the
44
+ * pool, the runtime, or any provision exists.
45
+ */
46
+ async function loadWorkerDriverModule(specifier, options) {
47
+ const { baseDir, exportName, knownKinds } = options;
48
+ const resolvedFrom = isPathSpecifier(specifier) && !specifier.startsWith("file:")
49
+ ? pathToFileURL(path.resolve(baseDir, specifier)).href
50
+ : specifier;
51
+ let namespace;
52
+ try {
53
+ namespace = (await import(resolvedFrom));
54
+ }
55
+ catch (error) {
56
+ throw moduleResolutionError(specifier, resolvedFrom, error, knownKinds ?? []);
57
+ }
58
+ const source = exportName === undefined ? specifier : `${specifier}#${exportName}`;
59
+ const candidate = selectExport(namespace, exportName);
60
+ if (candidate === undefined) {
61
+ const available = Object.keys(namespace)
62
+ .filter((key) => key !== "__esModule")
63
+ .sort();
64
+ throw new Error(exportName === undefined
65
+ ? `worker_pool_driver_module_invalid: ${source} has no default export` +
66
+ (available.length > 0 ? ` (named exports: ${available.join(", ")})` : "") +
67
+ `; export defineWorkerDriver(...) as the default export or select a named export with #name`
68
+ : `worker_pool_driver_module_invalid: ${source} has no export named "${exportName}"` +
69
+ (available.length > 0 ? ` (available: ${available.join(", ")})` : ""));
70
+ }
71
+ assertWorkerDriverModule(candidate, source);
72
+ return { module: candidate, resolvedFrom };
73
+ }
74
+ /**
75
+ * Unwraps the driver module from the imported namespace: the selected named
76
+ * export (falling back through a transpiled-CJS `default` object), or the
77
+ * default export including the `default.default` shape some transpilers emit.
78
+ */
79
+ function selectExport(namespace, exportName) {
80
+ if (exportName !== undefined) {
81
+ const named = namespace[exportName];
82
+ if (named !== undefined)
83
+ return named;
84
+ const viaDefault = namespace["default"];
85
+ if (typeof viaDefault === "object" && viaDefault !== null) {
86
+ return viaDefault[exportName];
87
+ }
88
+ return undefined;
89
+ }
90
+ let candidate = namespace["default"];
91
+ if (candidate === undefined) {
92
+ // A CJS module's exports are hoisted onto the namespace itself; accept the
93
+ // namespace only when it already looks like a driver module, so an ESM
94
+ // module that simply lacks a default export gets the no-default error.
95
+ return typeof namespace["create"] === "function" ? namespace : undefined;
96
+ }
97
+ // Transpiled-CJS double default: `module.exports = { default: <module> }`
98
+ // imported as `{ default: { default: <module> } }`. A real driver module has
99
+ // a `create` function, so only unwrap when the outer layer does not.
100
+ if (typeof candidate === "object" &&
101
+ candidate !== null &&
102
+ "default" in candidate &&
103
+ typeof candidate.create !== "function") {
104
+ candidate = candidate["default"];
105
+ }
106
+ return candidate;
107
+ }
108
+ /** Builds the actionable error for a failed module import. */
109
+ function moduleResolutionError(specifier, resolvedFrom, cause, knownKinds) {
110
+ const message = cause instanceof Error ? cause.message : String(cause);
111
+ if (isPathSpecifier(specifier)) {
112
+ return new Error(`worker_pool_driver_unavailable: ${specifier} (failed to import ${resolvedFrom}: ${message})`);
113
+ }
114
+ const kinds = knownKinds.length > 0
115
+ ? ` (known kinds: ${[...knownKinds].sort().join(", ")})`
116
+ : " (no worker drivers registered)";
117
+ const close = closestKind(specifier, knownKinds);
118
+ const hint = close === undefined ? "" : ` - did you mean "${close}"?`;
119
+ return new Error(`worker_pool_driver_unavailable: ${specifier} is not a registered kind and could not be ` +
120
+ `resolved as a module${kinds}${hint} [${message}]`);
121
+ }
122
+ /**
123
+ * The registered kind within a small edit distance of a mistyped bare
124
+ * specifier, or undefined when nothing is close. Mitigates the typo detection
125
+ * a closed config enum used to provide: `driver: dokcer` now reads as a module
126
+ * specifier, so the resolution failure points back at the built-in.
127
+ */
128
+ function closestKind(specifier, kinds) {
129
+ let best;
130
+ for (const kind of kinds) {
131
+ const distance = editDistance(specifier.toLowerCase(), kind.toLowerCase());
132
+ if (distance <= 2 && (best === undefined || distance < best.distance)) {
133
+ best = { kind, distance };
134
+ }
135
+ }
136
+ return best?.kind;
137
+ }
138
+ /** Levenshtein distance (small inputs only: driver kinds and specifiers). */
139
+ function editDistance(a, b) {
140
+ if (a === b)
141
+ return 0;
142
+ const rows = a.length + 1;
143
+ const cols = b.length + 1;
144
+ let prev = Array.from({ length: cols }, (_, j) => j);
145
+ for (let i = 1; i < rows; i += 1) {
146
+ const current = [i, ...new Array(cols - 1).fill(0)];
147
+ for (let j = 1; j < cols; j += 1) {
148
+ const substitution = (prev[j - 1] ?? 0) + (a[i - 1] === b[j - 1] ? 0 : 1);
149
+ current[j] = Math.min((prev[j] ?? 0) + 1, (current[j - 1] ?? 0) + 1, substitution);
150
+ }
151
+ prev = current;
152
+ }
153
+ return prev[cols - 1] ?? Math.max(a.length, b.length);
154
+ }
155
+ /**
156
+ * Specifiers THIS loader registered, per registry. Distinguishes a reload that
157
+ * re-encounters an already-loaded specifier (emit the module-pinned audit
158
+ * event) from an ordinary built-in/extension hit (silent no-op).
159
+ */
160
+ const loadedSpecifiers = new WeakMap();
161
+ /**
162
+ * Idempotently makes the configured worker-pool driver resolvable in
163
+ * `registry`. A registry hit (a built-in kind, an extension, or a specifier a
164
+ * previous call already loaded) is a no-op - except that a re-encountered
165
+ * loader-registered specifier emits `worker_pool_driver_module_pinned` so the
166
+ * code-is-pinned semantic is observable on reload. A miss parses the driver as
167
+ * a module reference, dynamic-imports it, and registers a factory whose kind
168
+ * IS the configured specifier string, emitting `worker_pool_driver_loaded`.
169
+ *
170
+ * Called by the daemon BEFORE `createWorkerPool` at startup and (via the
171
+ * coordinator's injected `driverLoader`) BEFORE `pool.reconcile` on reload, so
172
+ * the pool's registry resolution stays synchronous and transactional. A module
173
+ * registered for a reconcile that later fails is harmless: the registry is a
174
+ * catalog, and an unused entry is inert.
175
+ */
176
+ export async function ensureWorkerDriverLoaded(driver, registry, options = {}) {
177
+ const logEvent = options.logEvent ?? (() => { });
178
+ if (registry.get(driver) !== undefined) {
179
+ if (loadedSpecifiers.get(registry)?.has(driver)) {
180
+ logEvent({ event: "worker_pool_driver_module_pinned", specifier: driver });
181
+ }
182
+ return;
183
+ }
184
+ const ref = parseWorkerDriverRef(driver);
185
+ const { module, resolvedFrom } = await loadWorkerDriverModule(ref.specifier, {
186
+ baseDir: options.baseDir ?? process.cwd(),
187
+ exportName: ref.exportName,
188
+ knownKinds: registry.kinds(),
189
+ });
190
+ // Register under the EXACT configured string: the pool resolves
191
+ // `settings.driver` verbatim, so the factory's kind must be the specifier,
192
+ // not the module's self-declared kind (which is logged for the audit trail).
193
+ registry.register({
194
+ kind: driver,
195
+ create: (driverOptions, deps) => module.create(driverOptions, deps),
196
+ });
197
+ let loaded = loadedSpecifiers.get(registry);
198
+ if (loaded === undefined) {
199
+ loaded = new Set();
200
+ loadedSpecifiers.set(registry, loaded);
201
+ }
202
+ loaded.add(driver);
203
+ logEvent({
204
+ event: "worker_pool_driver_loaded",
205
+ specifier: driver,
206
+ kind: module.kind,
207
+ sdkVersion: module.sdkVersion,
208
+ resolvedFrom,
209
+ });
210
+ }
211
+ //# sourceMappingURL=workerDriverLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerDriverLoader.js","sourceRoot":"","sources":["../src/workerDriverLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@lorenz/cli",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./runs": "./dist/runs.js"
11
+ },
12
+ "bin": {
13
+ "lorenz": "./bin/lorenz.js"
14
+ },
15
+ "dependencies": {
16
+ "@lorenz/acp": "file:../../packages/acp",
17
+ "@lorenz/agent-runner": "file:../../packages/agent-runner",
18
+ "@lorenz/agent-sdk": "file:../../packages/agent-sdk",
19
+ "@lorenz/cli-kit": "file:../../packages/cli-kit",
20
+ "@lorenz/config": "file:../../packages/config",
21
+ "@lorenz/dispatch": "file:../../packages/dispatch",
22
+ "@lorenz/dispatch-coordinator": "file:../../packages/dispatch-coordinator",
23
+ "@lorenz/docker-worker": "file:../../extensions/docker-worker",
24
+ "@lorenz/domain": "file:../../packages/domain",
25
+ "@lorenz/humanize": "file:../../packages/humanize",
26
+ "@lorenz/issue": "file:../../packages/issue",
27
+ "@lorenz/jira-tracker": "file:../../extensions/jira-tracker",
28
+ "@lorenz/linear-tracker": "file:../../extensions/linear-tracker",
29
+ "@lorenz/local-tracker": "file:../../extensions/local-tracker",
30
+ "@lorenz/log-file": "file:../../packages/log-file",
31
+ "@lorenz/mcp": "file:../../packages/mcp",
32
+ "@lorenz/memory-tracker": "file:../../extensions/memory-tracker",
33
+ "@lorenz/orchestrator": "file:../../packages/orchestrator",
34
+ "@lorenz/policies": "file:../../packages/policies",
35
+ "@lorenz/presenter": "file:../../packages/presenter",
36
+ "@lorenz/projections": "file:../../packages/projections",
37
+ "@lorenz/prompt": "file:../../packages/prompt",
38
+ "@lorenz/retry-scheduler": "file:../../packages/retry-scheduler",
39
+ "@lorenz/runtime": "file:../../packages/runtime",
40
+ "@lorenz/server": "file:../../packages/server",
41
+ "@lorenz/slack-tracker": "file:../../extensions/slack-tracker",
42
+ "@lorenz/ssh": "file:../../packages/ssh",
43
+ "@lorenz/static-worker": "file:../../packages/static-worker",
44
+ "@lorenz/tool-sdk": "file:../../packages/tool-sdk",
45
+ "@lorenz/traceviz-emitter": "file:../../packages/traceviz-emitter",
46
+ "@lorenz/tracker-sdk": "file:../../packages/tracker-sdk",
47
+ "@lorenz/tui": "file:../../packages/tui",
48
+ "@lorenz/worker-host-pool": "file:../../packages/worker-host-pool",
49
+ "@lorenz/worker-pool": "file:../../packages/worker-pool",
50
+ "@lorenz/worker-sdk": "file:../../packages/worker-sdk",
51
+ "@lorenz/workflow": "file:../../packages/workflow",
52
+ "@lorenz/workspace": "file:../../packages/workspace",
53
+ "commander": "^14.0.3",
54
+ "ink": "^7.0.1",
55
+ "react": "^19.2.5"
56
+ }
57
+ }