@telora/daemon 0.12.33

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 (473) hide show
  1. package/.env.example +64 -0
  2. package/README.md +229 -0
  3. package/build-info.json +4 -0
  4. package/dist/activity-tracker.d.ts +13 -0
  5. package/dist/activity-tracker.d.ts.map +1 -0
  6. package/dist/activity-tracker.js +19 -0
  7. package/dist/activity-tracker.js.map +1 -0
  8. package/dist/agent-state.d.ts +45 -0
  9. package/dist/agent-state.d.ts.map +1 -0
  10. package/dist/agent-state.js +61 -0
  11. package/dist/agent-state.js.map +1 -0
  12. package/dist/audit-hooks.d.ts +12 -0
  13. package/dist/audit-hooks.d.ts.map +1 -0
  14. package/dist/audit-hooks.js +45 -0
  15. package/dist/audit-hooks.js.map +1 -0
  16. package/dist/auto-update.d.ts +42 -0
  17. package/dist/auto-update.d.ts.map +1 -0
  18. package/dist/auto-update.js +96 -0
  19. package/dist/auto-update.js.map +1 -0
  20. package/dist/branch-status.d.ts +40 -0
  21. package/dist/branch-status.d.ts.map +1 -0
  22. package/dist/branch-status.js +107 -0
  23. package/dist/branch-status.js.map +1 -0
  24. package/dist/completion-detector.d.ts +87 -0
  25. package/dist/completion-detector.d.ts.map +1 -0
  26. package/dist/completion-detector.js +160 -0
  27. package/dist/completion-detector.js.map +1 -0
  28. package/dist/completion-handler.d.ts +48 -0
  29. package/dist/completion-handler.d.ts.map +1 -0
  30. package/dist/completion-handler.js +200 -0
  31. package/dist/completion-handler.js.map +1 -0
  32. package/dist/condition-evaluators.d.ts +31 -0
  33. package/dist/condition-evaluators.d.ts.map +1 -0
  34. package/dist/condition-evaluators.js +416 -0
  35. package/dist/condition-evaluators.js.map +1 -0
  36. package/dist/config.d.ts +55 -0
  37. package/dist/config.d.ts.map +1 -0
  38. package/dist/config.js +311 -0
  39. package/dist/config.js.map +1 -0
  40. package/dist/control-state.d.ts +41 -0
  41. package/dist/control-state.d.ts.map +1 -0
  42. package/dist/control-state.js +204 -0
  43. package/dist/control-state.js.map +1 -0
  44. package/dist/crash-recovery-cleanup.d.ts +21 -0
  45. package/dist/crash-recovery-cleanup.d.ts.map +1 -0
  46. package/dist/crash-recovery-cleanup.js +198 -0
  47. package/dist/crash-recovery-cleanup.js.map +1 -0
  48. package/dist/crash-recovery-scan.d.ts +19 -0
  49. package/dist/crash-recovery-scan.d.ts.map +1 -0
  50. package/dist/crash-recovery-scan.js +145 -0
  51. package/dist/crash-recovery-scan.js.map +1 -0
  52. package/dist/crash-recovery-types.d.ts +54 -0
  53. package/dist/crash-recovery-types.d.ts.map +1 -0
  54. package/dist/crash-recovery-types.js +13 -0
  55. package/dist/crash-recovery-types.js.map +1 -0
  56. package/dist/crash-recovery.d.ts +88 -0
  57. package/dist/crash-recovery.d.ts.map +1 -0
  58. package/dist/crash-recovery.js +448 -0
  59. package/dist/crash-recovery.js.map +1 -0
  60. package/dist/daemon-logs.d.ts +19 -0
  61. package/dist/daemon-logs.d.ts.map +1 -0
  62. package/dist/daemon-logs.js +81 -0
  63. package/dist/daemon-logs.js.map +1 -0
  64. package/dist/daemon-process.d.ts +154 -0
  65. package/dist/daemon-process.d.ts.map +1 -0
  66. package/dist/daemon-process.js +427 -0
  67. package/dist/daemon-process.js.map +1 -0
  68. package/dist/dag-validator.d.ts +52 -0
  69. package/dist/dag-validator.d.ts.map +1 -0
  70. package/dist/dag-validator.js +199 -0
  71. package/dist/dag-validator.js.map +1 -0
  72. package/dist/delivery-guards.d.ts +41 -0
  73. package/dist/delivery-guards.d.ts.map +1 -0
  74. package/dist/delivery-guards.js +195 -0
  75. package/dist/delivery-guards.js.map +1 -0
  76. package/dist/delivery-lifecycle.d.ts +110 -0
  77. package/dist/delivery-lifecycle.d.ts.map +1 -0
  78. package/dist/delivery-lifecycle.js +353 -0
  79. package/dist/delivery-lifecycle.js.map +1 -0
  80. package/dist/delivery-merge.d.ts +17 -0
  81. package/dist/delivery-merge.d.ts.map +1 -0
  82. package/dist/delivery-merge.js +89 -0
  83. package/dist/delivery-merge.js.map +1 -0
  84. package/dist/dependency-resolver.d.ts +77 -0
  85. package/dist/dependency-resolver.d.ts.map +1 -0
  86. package/dist/dependency-resolver.js +337 -0
  87. package/dist/dependency-resolver.js.map +1 -0
  88. package/dist/evaluation-context.d.ts +49 -0
  89. package/dist/evaluation-context.d.ts.map +1 -0
  90. package/dist/evaluation-context.js +98 -0
  91. package/dist/evaluation-context.js.map +1 -0
  92. package/dist/git-activity.d.ts +24 -0
  93. package/dist/git-activity.d.ts.map +1 -0
  94. package/dist/git-activity.js +97 -0
  95. package/dist/git-activity.js.map +1 -0
  96. package/dist/git-branch.d.ts +33 -0
  97. package/dist/git-branch.d.ts.map +1 -0
  98. package/dist/git-branch.js +88 -0
  99. package/dist/git-branch.js.map +1 -0
  100. package/dist/git-integration.d.ts +27 -0
  101. package/dist/git-integration.d.ts.map +1 -0
  102. package/dist/git-integration.js +82 -0
  103. package/dist/git-integration.js.map +1 -0
  104. package/dist/git-merge-helpers.d.ts +48 -0
  105. package/dist/git-merge-helpers.d.ts.map +1 -0
  106. package/dist/git-merge-helpers.js +105 -0
  107. package/dist/git-merge-helpers.js.map +1 -0
  108. package/dist/git-merge-lock.d.ts +67 -0
  109. package/dist/git-merge-lock.d.ts.map +1 -0
  110. package/dist/git-merge-lock.js +157 -0
  111. package/dist/git-merge-lock.js.map +1 -0
  112. package/dist/git-merge-strategies.d.ts +39 -0
  113. package/dist/git-merge-strategies.d.ts.map +1 -0
  114. package/dist/git-merge-strategies.js +127 -0
  115. package/dist/git-merge-strategies.js.map +1 -0
  116. package/dist/git-merge.d.ts +80 -0
  117. package/dist/git-merge.d.ts.map +1 -0
  118. package/dist/git-merge.js +373 -0
  119. package/dist/git-merge.js.map +1 -0
  120. package/dist/git-state-detector.d.ts +24 -0
  121. package/dist/git-state-detector.d.ts.map +1 -0
  122. package/dist/git-state-detector.js +122 -0
  123. package/dist/git-state-detector.js.map +1 -0
  124. package/dist/git-types.d.ts +40 -0
  125. package/dist/git-types.d.ts.map +1 -0
  126. package/dist/git-types.js +23 -0
  127. package/dist/git-types.js.map +1 -0
  128. package/dist/git-utils.d.ts +28 -0
  129. package/dist/git-utils.d.ts.map +1 -0
  130. package/dist/git-utils.js +57 -0
  131. package/dist/git-utils.js.map +1 -0
  132. package/dist/git.d.ts +24 -0
  133. package/dist/git.d.ts.map +1 -0
  134. package/dist/git.js +64 -0
  135. package/dist/git.js.map +1 -0
  136. package/dist/guard-engine.d.ts +19 -0
  137. package/dist/guard-engine.d.ts.map +1 -0
  138. package/dist/guard-engine.js +21 -0
  139. package/dist/guard-engine.js.map +1 -0
  140. package/dist/guard-evaluator.d.ts +47 -0
  141. package/dist/guard-evaluator.d.ts.map +1 -0
  142. package/dist/guard-evaluator.js +193 -0
  143. package/dist/guard-evaluator.js.map +1 -0
  144. package/dist/heartbeat.d.ts +73 -0
  145. package/dist/heartbeat.d.ts.map +1 -0
  146. package/dist/heartbeat.js +306 -0
  147. package/dist/heartbeat.js.map +1 -0
  148. package/dist/index.d.ts +32 -0
  149. package/dist/index.d.ts.map +1 -0
  150. package/dist/index.js +493 -0
  151. package/dist/index.js.map +1 -0
  152. package/dist/listener-auto-advance.d.ts +29 -0
  153. package/dist/listener-auto-advance.d.ts.map +1 -0
  154. package/dist/listener-auto-advance.js +172 -0
  155. package/dist/listener-auto-advance.js.map +1 -0
  156. package/dist/listener-review.d.ts +37 -0
  157. package/dist/listener-review.d.ts.map +1 -0
  158. package/dist/listener-review.js +217 -0
  159. package/dist/listener-review.js.map +1 -0
  160. package/dist/listener.d.ts +57 -0
  161. package/dist/listener.d.ts.map +1 -0
  162. package/dist/listener.js +361 -0
  163. package/dist/listener.js.map +1 -0
  164. package/dist/log-manager.d.ts +18 -0
  165. package/dist/log-manager.d.ts.map +1 -0
  166. package/dist/log-manager.js +18 -0
  167. package/dist/log-manager.js.map +1 -0
  168. package/dist/otlp-log-parser.d.ts +21 -0
  169. package/dist/otlp-log-parser.d.ts.map +1 -0
  170. package/dist/otlp-log-parser.js +143 -0
  171. package/dist/otlp-log-parser.js.map +1 -0
  172. package/dist/otlp-metric-parser.d.ts +20 -0
  173. package/dist/otlp-metric-parser.d.ts.map +1 -0
  174. package/dist/otlp-metric-parser.js +113 -0
  175. package/dist/otlp-metric-parser.js.map +1 -0
  176. package/dist/otlp-port-manager.d.ts +26 -0
  177. package/dist/otlp-port-manager.d.ts.map +1 -0
  178. package/dist/otlp-port-manager.js +130 -0
  179. package/dist/otlp-port-manager.js.map +1 -0
  180. package/dist/otlp-receiver.d.ts +51 -0
  181. package/dist/otlp-receiver.d.ts.map +1 -0
  182. package/dist/otlp-receiver.js +663 -0
  183. package/dist/otlp-receiver.js.map +1 -0
  184. package/dist/otlp-types.d.ts +92 -0
  185. package/dist/otlp-types.d.ts.map +1 -0
  186. package/dist/otlp-types.js +133 -0
  187. package/dist/otlp-types.js.map +1 -0
  188. package/dist/output-monitor.d.ts +33 -0
  189. package/dist/output-monitor.d.ts.map +1 -0
  190. package/dist/output-monitor.js +67 -0
  191. package/dist/output-monitor.js.map +1 -0
  192. package/dist/planning-prompt-builder.d.ts +67 -0
  193. package/dist/planning-prompt-builder.d.ts.map +1 -0
  194. package/dist/planning-prompt-builder.js +515 -0
  195. package/dist/planning-prompt-builder.js.map +1 -0
  196. package/dist/prompt-builder.d.ts +14 -0
  197. package/dist/prompt-builder.d.ts.map +1 -0
  198. package/dist/prompt-builder.js +174 -0
  199. package/dist/prompt-builder.js.map +1 -0
  200. package/dist/qa-crash-recovery.d.ts +77 -0
  201. package/dist/qa-crash-recovery.d.ts.map +1 -0
  202. package/dist/qa-crash-recovery.js +243 -0
  203. package/dist/qa-crash-recovery.js.map +1 -0
  204. package/dist/qa-dev-server.d.ts +73 -0
  205. package/dist/qa-dev-server.d.ts.map +1 -0
  206. package/dist/qa-dev-server.js +279 -0
  207. package/dist/qa-dev-server.js.map +1 -0
  208. package/dist/qa-orchestrator.d.ts +79 -0
  209. package/dist/qa-orchestrator.d.ts.map +1 -0
  210. package/dist/qa-orchestrator.js +349 -0
  211. package/dist/qa-orchestrator.js.map +1 -0
  212. package/dist/qa-port-allocator.d.ts +34 -0
  213. package/dist/qa-port-allocator.d.ts.map +1 -0
  214. package/dist/qa-port-allocator.js +75 -0
  215. package/dist/qa-port-allocator.js.map +1 -0
  216. package/dist/qa-provisioner.d.ts +33 -0
  217. package/dist/qa-provisioner.d.ts.map +1 -0
  218. package/dist/qa-provisioner.js +141 -0
  219. package/dist/qa-provisioner.js.map +1 -0
  220. package/dist/qa-state.d.ts +93 -0
  221. package/dist/qa-state.d.ts.map +1 -0
  222. package/dist/qa-state.js +74 -0
  223. package/dist/qa-state.js.map +1 -0
  224. package/dist/queries/control-state.d.ts +25 -0
  225. package/dist/queries/control-state.d.ts.map +1 -0
  226. package/dist/queries/control-state.js +34 -0
  227. package/dist/queries/control-state.js.map +1 -0
  228. package/dist/queries/daemon-connection.d.ts +25 -0
  229. package/dist/queries/daemon-connection.d.ts.map +1 -0
  230. package/dist/queries/daemon-connection.js +28 -0
  231. package/dist/queries/daemon-connection.js.map +1 -0
  232. package/dist/queries/deliveries.d.ts +100 -0
  233. package/dist/queries/deliveries.d.ts.map +1 -0
  234. package/dist/queries/deliveries.js +184 -0
  235. package/dist/queries/deliveries.js.map +1 -0
  236. package/dist/queries/git-activity.d.ts +20 -0
  237. package/dist/queries/git-activity.d.ts.map +1 -0
  238. package/dist/queries/git-activity.js +22 -0
  239. package/dist/queries/git-activity.js.map +1 -0
  240. package/dist/queries/guards.d.ts +47 -0
  241. package/dist/queries/guards.d.ts.map +1 -0
  242. package/dist/queries/guards.js +138 -0
  243. package/dist/queries/guards.js.map +1 -0
  244. package/dist/queries/index.d.ts +19 -0
  245. package/dist/queries/index.d.ts.map +1 -0
  246. package/dist/queries/index.js +17 -0
  247. package/dist/queries/index.js.map +1 -0
  248. package/dist/queries/issues.d.ts +41 -0
  249. package/dist/queries/issues.d.ts.map +1 -0
  250. package/dist/queries/issues.js +67 -0
  251. package/dist/queries/issues.js.map +1 -0
  252. package/dist/queries/qa.d.ts +79 -0
  253. package/dist/queries/qa.d.ts.map +1 -0
  254. package/dist/queries/qa.js +85 -0
  255. package/dist/queries/qa.js.map +1 -0
  256. package/dist/queries/roles.d.ts +13 -0
  257. package/dist/queries/roles.d.ts.map +1 -0
  258. package/dist/queries/roles.js +39 -0
  259. package/dist/queries/roles.js.map +1 -0
  260. package/dist/queries/schemas.d.ts +777 -0
  261. package/dist/queries/schemas.d.ts.map +1 -0
  262. package/dist/queries/schemas.js +391 -0
  263. package/dist/queries/schemas.js.map +1 -0
  264. package/dist/queries/sessions.d.ts +64 -0
  265. package/dist/queries/sessions.d.ts.map +1 -0
  266. package/dist/queries/sessions.js +100 -0
  267. package/dist/queries/sessions.js.map +1 -0
  268. package/dist/queries/shared.d.ts +61 -0
  269. package/dist/queries/shared.d.ts.map +1 -0
  270. package/dist/queries/shared.js +187 -0
  271. package/dist/queries/shared.js.map +1 -0
  272. package/dist/queries/strategies.d.ts +69 -0
  273. package/dist/queries/strategies.d.ts.map +1 -0
  274. package/dist/queries/strategies.js +80 -0
  275. package/dist/queries/strategies.js.map +1 -0
  276. package/dist/queries/workflows.d.ts +17 -0
  277. package/dist/queries/workflows.d.ts.map +1 -0
  278. package/dist/queries/workflows.js +49 -0
  279. package/dist/queries/workflows.js.map +1 -0
  280. package/dist/queries/worktrees.d.ts +38 -0
  281. package/dist/queries/worktrees.d.ts.map +1 -0
  282. package/dist/queries/worktrees.js +37 -0
  283. package/dist/queries/worktrees.js.map +1 -0
  284. package/dist/self-update.d.ts +94 -0
  285. package/dist/self-update.d.ts.map +1 -0
  286. package/dist/self-update.js +438 -0
  287. package/dist/self-update.js.map +1 -0
  288. package/dist/session-lifecycle.d.ts +77 -0
  289. package/dist/session-lifecycle.d.ts.map +1 -0
  290. package/dist/session-lifecycle.js +379 -0
  291. package/dist/session-lifecycle.js.map +1 -0
  292. package/dist/shutdown-state.d.ts +17 -0
  293. package/dist/shutdown-state.d.ts.map +1 -0
  294. package/dist/shutdown-state.js +22 -0
  295. package/dist/shutdown-state.js.map +1 -0
  296. package/dist/spawn-cooldown.d.ts +14 -0
  297. package/dist/spawn-cooldown.d.ts.map +1 -0
  298. package/dist/spawn-cooldown.js +34 -0
  299. package/dist/spawn-cooldown.js.map +1 -0
  300. package/dist/spawn-environment.d.ts +35 -0
  301. package/dist/spawn-environment.d.ts.map +1 -0
  302. package/dist/spawn-environment.js +48 -0
  303. package/dist/spawn-environment.js.map +1 -0
  304. package/dist/spawner-liveness.d.ts +23 -0
  305. package/dist/spawner-liveness.d.ts.map +1 -0
  306. package/dist/spawner-liveness.js +99 -0
  307. package/dist/spawner-liveness.js.map +1 -0
  308. package/dist/spawner-resolution.d.ts +27 -0
  309. package/dist/spawner-resolution.d.ts.map +1 -0
  310. package/dist/spawner-resolution.js +99 -0
  311. package/dist/spawner-resolution.js.map +1 -0
  312. package/dist/spawner-timeout.d.ts +32 -0
  313. package/dist/spawner-timeout.d.ts.map +1 -0
  314. package/dist/spawner-timeout.js +124 -0
  315. package/dist/spawner-timeout.js.map +1 -0
  316. package/dist/spawner.d.ts +77 -0
  317. package/dist/spawner.d.ts.map +1 -0
  318. package/dist/spawner.js +734 -0
  319. package/dist/spawner.js.map +1 -0
  320. package/dist/strategy-completion.d.ts +110 -0
  321. package/dist/strategy-completion.d.ts.map +1 -0
  322. package/dist/strategy-completion.js +434 -0
  323. package/dist/strategy-completion.js.map +1 -0
  324. package/dist/strategy-engine.d.ts +47 -0
  325. package/dist/strategy-engine.d.ts.map +1 -0
  326. package/dist/strategy-engine.js +419 -0
  327. package/dist/strategy-engine.js.map +1 -0
  328. package/dist/strategy-executor.d.ts +93 -0
  329. package/dist/strategy-executor.d.ts.map +1 -0
  330. package/dist/strategy-executor.js +775 -0
  331. package/dist/strategy-executor.js.map +1 -0
  332. package/dist/strategy-lifecycle.d.ts +61 -0
  333. package/dist/strategy-lifecycle.d.ts.map +1 -0
  334. package/dist/strategy-lifecycle.js +516 -0
  335. package/dist/strategy-lifecycle.js.map +1 -0
  336. package/dist/strategy-merge.d.ts +72 -0
  337. package/dist/strategy-merge.d.ts.map +1 -0
  338. package/dist/strategy-merge.js +371 -0
  339. package/dist/strategy-merge.js.map +1 -0
  340. package/dist/strategy-prompt-builder.d.ts +62 -0
  341. package/dist/strategy-prompt-builder.d.ts.map +1 -0
  342. package/dist/strategy-prompt-builder.js +538 -0
  343. package/dist/strategy-prompt-builder.js.map +1 -0
  344. package/dist/strategy-provisioning.d.ts +16 -0
  345. package/dist/strategy-provisioning.d.ts.map +1 -0
  346. package/dist/strategy-provisioning.js +119 -0
  347. package/dist/strategy-provisioning.js.map +1 -0
  348. package/dist/strategy-team-state.d.ts +24 -0
  349. package/dist/strategy-team-state.d.ts.map +1 -0
  350. package/dist/strategy-team-state.js +43 -0
  351. package/dist/strategy-team-state.js.map +1 -0
  352. package/dist/strategy-teardown.d.ts +24 -0
  353. package/dist/strategy-teardown.d.ts.map +1 -0
  354. package/dist/strategy-teardown.js +158 -0
  355. package/dist/strategy-teardown.js.map +1 -0
  356. package/dist/strategy-worktree-state.d.ts +47 -0
  357. package/dist/strategy-worktree-state.d.ts.map +1 -0
  358. package/dist/strategy-worktree-state.js +104 -0
  359. package/dist/strategy-worktree-state.js.map +1 -0
  360. package/dist/supabase.d.ts +36 -0
  361. package/dist/supabase.d.ts.map +1 -0
  362. package/dist/supabase.js +50 -0
  363. package/dist/supabase.js.map +1 -0
  364. package/dist/task-converter.d.ts +61 -0
  365. package/dist/task-converter.d.ts.map +1 -0
  366. package/dist/task-converter.js +286 -0
  367. package/dist/task-converter.js.map +1 -0
  368. package/dist/task-dag-builder.d.ts +14 -0
  369. package/dist/task-dag-builder.d.ts.map +1 -0
  370. package/dist/task-dag-builder.js +17 -0
  371. package/dist/task-dag-builder.js.map +1 -0
  372. package/dist/team-prompt-base.d.ts +114 -0
  373. package/dist/team-prompt-base.d.ts.map +1 -0
  374. package/dist/team-prompt-base.js +531 -0
  375. package/dist/team-prompt-base.js.map +1 -0
  376. package/dist/team-prompt-variants.d.ts +27 -0
  377. package/dist/team-prompt-variants.d.ts.map +1 -0
  378. package/dist/team-prompt-variants.js +134 -0
  379. package/dist/team-prompt-variants.js.map +1 -0
  380. package/dist/team-spawner.d.ts +50 -0
  381. package/dist/team-spawner.d.ts.map +1 -0
  382. package/dist/team-spawner.js +410 -0
  383. package/dist/team-spawner.js.map +1 -0
  384. package/dist/telemetry-writer.d.ts +66 -0
  385. package/dist/telemetry-writer.d.ts.map +1 -0
  386. package/dist/telemetry-writer.js +96 -0
  387. package/dist/telemetry-writer.js.map +1 -0
  388. package/dist/trigger-executor.d.ts +56 -0
  389. package/dist/trigger-executor.d.ts.map +1 -0
  390. package/dist/trigger-executor.js +313 -0
  391. package/dist/trigger-executor.js.map +1 -0
  392. package/dist/types/config.d.ts +60 -0
  393. package/dist/types/config.d.ts.map +1 -0
  394. package/dist/types/config.js +5 -0
  395. package/dist/types/config.js.map +1 -0
  396. package/dist/types/dag.d.ts +53 -0
  397. package/dist/types/dag.d.ts.map +1 -0
  398. package/dist/types/dag.js +5 -0
  399. package/dist/types/dag.js.map +1 -0
  400. package/dist/types/delivery.d.ts +71 -0
  401. package/dist/types/delivery.d.ts.map +1 -0
  402. package/dist/types/delivery.js +5 -0
  403. package/dist/types/delivery.js.map +1 -0
  404. package/dist/types/index.d.ts +15 -0
  405. package/dist/types/index.d.ts.map +1 -0
  406. package/dist/types/index.js +15 -0
  407. package/dist/types/index.js.map +1 -0
  408. package/dist/types/issue.d.ts +22 -0
  409. package/dist/types/issue.d.ts.map +1 -0
  410. package/dist/types/issue.js +5 -0
  411. package/dist/types/issue.js.map +1 -0
  412. package/dist/types/merge.d.ts +28 -0
  413. package/dist/types/merge.d.ts.map +1 -0
  414. package/dist/types/merge.js +5 -0
  415. package/dist/types/merge.js.map +1 -0
  416. package/dist/types/session.d.ts +98 -0
  417. package/dist/types/session.d.ts.map +1 -0
  418. package/dist/types/session.js +5 -0
  419. package/dist/types/session.js.map +1 -0
  420. package/dist/types/strategy.d.ts +175 -0
  421. package/dist/types/strategy.d.ts.map +1 -0
  422. package/dist/types/strategy.js +5 -0
  423. package/dist/types/strategy.js.map +1 -0
  424. package/dist/types/workflow.d.ts +34 -0
  425. package/dist/types/workflow.d.ts.map +1 -0
  426. package/dist/types/workflow.js +9 -0
  427. package/dist/types/workflow.js.map +1 -0
  428. package/dist/types.d.ts +9 -0
  429. package/dist/types.d.ts.map +1 -0
  430. package/dist/types.js +9 -0
  431. package/dist/types.js.map +1 -0
  432. package/dist/unified-init.d.ts +16 -0
  433. package/dist/unified-init.d.ts.map +1 -0
  434. package/dist/unified-init.js +183 -0
  435. package/dist/unified-init.js.map +1 -0
  436. package/dist/unified-shell-config.d.ts +34 -0
  437. package/dist/unified-shell-config.d.ts.map +1 -0
  438. package/dist/unified-shell-config.js +238 -0
  439. package/dist/unified-shell-config.js.map +1 -0
  440. package/dist/unified-shell-status.d.ts +15 -0
  441. package/dist/unified-shell-status.d.ts.map +1 -0
  442. package/dist/unified-shell-status.js +100 -0
  443. package/dist/unified-shell-status.js.map +1 -0
  444. package/dist/unified-shell.d.ts +50 -0
  445. package/dist/unified-shell.d.ts.map +1 -0
  446. package/dist/unified-shell.js +682 -0
  447. package/dist/unified-shell.js.map +1 -0
  448. package/dist/version-check.d.ts +19 -0
  449. package/dist/version-check.d.ts.map +1 -0
  450. package/dist/version-check.js +67 -0
  451. package/dist/version-check.js.map +1 -0
  452. package/dist/workflow-engine.d.ts +95 -0
  453. package/dist/workflow-engine.d.ts.map +1 -0
  454. package/dist/workflow-engine.js +165 -0
  455. package/dist/workflow-engine.js.map +1 -0
  456. package/dist/worktree-merge.d.ts +23 -0
  457. package/dist/worktree-merge.d.ts.map +1 -0
  458. package/dist/worktree-merge.js +57 -0
  459. package/dist/worktree-merge.js.map +1 -0
  460. package/dist/worktree-safety.d.ts +48 -0
  461. package/dist/worktree-safety.d.ts.map +1 -0
  462. package/dist/worktree-safety.js +113 -0
  463. package/dist/worktree-safety.js.map +1 -0
  464. package/dist/worktree-strategy.d.ts +69 -0
  465. package/dist/worktree-strategy.d.ts.map +1 -0
  466. package/dist/worktree-strategy.js +214 -0
  467. package/dist/worktree-strategy.js.map +1 -0
  468. package/dist/worktree.d.ts +159 -0
  469. package/dist/worktree.d.ts.map +1 -0
  470. package/dist/worktree.js +512 -0
  471. package/dist/worktree.js.map +1 -0
  472. package/package.json +76 -0
  473. package/scripts/telora-daemon-wrapper.sh +31 -0
package/dist/types.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Type definitions for the agent orchestration daemon.
3
+ *
4
+ * This file is a thin re-export facade. All types are defined in
5
+ * domain-specific files under ./types/ and re-exported here so that
6
+ * existing `import from './types.js'` statements continue to work.
7
+ */
8
+ export * from './types/index.js';
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Unified setup wizard for the Telora daemon.
3
+ *
4
+ * Merges the daemon (strategy engine) and factory engine setup wizards into a
5
+ * single `telora-daemon init` flow that writes one `~/.telora/daemon.json` file
6
+ * with the unified multi-product schema.
7
+ */
8
+ /**
9
+ * Unified interactive setup wizard for the Telora daemon.
10
+ *
11
+ * Walks the user through configuring shared fields (Telora URL, org),
12
+ * adding one or more products, choosing which engines to enable, and
13
+ * engine-specific settings. Writes a single `~/.telora/daemon.json` config file.
14
+ */
15
+ export declare function runUnifiedInit(): Promise<void>;
16
+ //# sourceMappingURL=unified-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-init.d.ts","sourceRoot":"","sources":["../src/unified-init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4DH;;;;;;GAMG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAyJpD"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Unified setup wizard for the Telora daemon.
3
+ *
4
+ * Merges the daemon (strategy engine) and factory engine setup wizards into a
5
+ * single `telora-daemon init` flow that writes one `~/.telora/daemon.json` file
6
+ * with the unified multi-product schema.
7
+ */
8
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
9
+ import { createInterface } from 'node:readline';
10
+ import { resolve } from 'node:path';
11
+ import { homedir } from 'node:os';
12
+ /**
13
+ * Prompt for user input with an optional default value.
14
+ */
15
+ async function prompt(question, defaultValue) {
16
+ const rl = createInterface({
17
+ input: process.stdin,
18
+ output: process.stdout,
19
+ });
20
+ const displayDefault = defaultValue ? ` (${defaultValue})` : '';
21
+ return new Promise((resolve) => {
22
+ rl.question(`${question}${displayDefault}: `, (answer) => {
23
+ rl.close();
24
+ resolve(answer.trim() || defaultValue || '');
25
+ });
26
+ });
27
+ }
28
+ /**
29
+ * Prompt for a yes/no confirmation with a configurable default.
30
+ */
31
+ async function promptYesNo(question, defaultYes = true) {
32
+ const hint = defaultYes ? '[Y/n]' : '[y/N]';
33
+ const answer = await prompt(`${question} ${hint}`);
34
+ if (!answer) {
35
+ return defaultYes;
36
+ }
37
+ return answer.toLowerCase().startsWith('y');
38
+ }
39
+ /**
40
+ * Validate that a path exists and is a git repository.
41
+ */
42
+ function validateRepoPath(repoPath) {
43
+ const resolved = resolve(repoPath);
44
+ if (!existsSync(resolved)) {
45
+ return `Path does not exist: ${resolved}`;
46
+ }
47
+ const gitDir = resolve(resolved, '.git');
48
+ if (!existsSync(gitDir)) {
49
+ return `Not a git repository (no .git found): ${resolved}`;
50
+ }
51
+ return null;
52
+ }
53
+ /**
54
+ * Unified interactive setup wizard for the Telora daemon.
55
+ *
56
+ * Walks the user through configuring shared fields (Telora URL, org),
57
+ * adding one or more products, choosing which engines to enable, and
58
+ * engine-specific settings. Writes a single `~/.telora/daemon.json` config file.
59
+ */
60
+ export async function runUnifiedInit() {
61
+ console.log('\nTelora Daemon Setup Wizard\n');
62
+ console.log('This will create a ~/.telora/daemon.json config file.\n');
63
+ // -- Shared fields --
64
+ const teloraUrl = await prompt('Telora URL', 'http://127.0.0.1:54321');
65
+ const organizationId = await prompt('Organization ID');
66
+ if (!organizationId) {
67
+ console.error('\nOrganization ID is required. You can find it in Telora -> Settings -> Organization.\n');
68
+ process.exit(1);
69
+ }
70
+ // -- Products --
71
+ console.log('');
72
+ const productCountStr = await prompt('How many products?', '1');
73
+ const productCount = Math.max(1, parseInt(productCountStr, 10) || 1);
74
+ const products = [];
75
+ const seenIds = new Set();
76
+ for (let i = 0; i < productCount; i++) {
77
+ const label = productCount > 1 ? ` [${i + 1}/${productCount}]` : '';
78
+ console.log('');
79
+ const productId = await prompt(`Product ID${label}`);
80
+ if (!productId) {
81
+ console.error('\nProduct ID is required.\n');
82
+ process.exit(1);
83
+ }
84
+ if (seenIds.has(productId)) {
85
+ console.error(`\nDuplicate product ID: ${productId}. Each product must have a unique ID.\n`);
86
+ process.exit(1);
87
+ }
88
+ seenIds.add(productId);
89
+ // Default repo path: cwd for single product, require explicit path for multi
90
+ const defaultRepoPath = productCount === 1 ? process.cwd() : undefined;
91
+ const repoPath = await prompt(`Repository path${label}`, defaultRepoPath);
92
+ if (!repoPath) {
93
+ console.error('\nRepository path is required for each product.\n');
94
+ process.exit(1);
95
+ }
96
+ const validationError = validateRepoPath(repoPath);
97
+ if (validationError) {
98
+ console.error(`\n${validationError}\n`);
99
+ process.exit(1);
100
+ }
101
+ products.push({ id: productId, repoPath: resolve(repoPath) });
102
+ }
103
+ // -- Engine selection --
104
+ console.log('');
105
+ const enableStrategy = await promptYesNo('Enable strategy engine (delivery orchestration)?', true);
106
+ const enableFactory = await promptYesNo('Enable factory engine (build-gate cycles)?', true);
107
+ if (!enableStrategy && !enableFactory) {
108
+ console.log('\nAt least one engine must be enabled. Aborting.\n');
109
+ process.exit(1);
110
+ }
111
+ // -- Strategy engine settings --
112
+ let integrationBranch = 'integration';
113
+ let maxTotalSessions = 5;
114
+ if (enableStrategy) {
115
+ console.log('\nStrategy engine settings:');
116
+ integrationBranch = await prompt('Integration branch name', 'integration');
117
+ const maxSessionsStr = await prompt('Max concurrent agents', '5');
118
+ maxTotalSessions = parseInt(maxSessionsStr, 10) || 5;
119
+ }
120
+ // -- Factory engine settings --
121
+ let maxConcurrentInstances = 3;
122
+ if (enableFactory) {
123
+ console.log('\nFactory engine settings:');
124
+ const maxStr = await prompt('Max concurrent instances', '3');
125
+ maxConcurrentInstances = parseInt(maxStr, 10) || 3;
126
+ }
127
+ // -- Build unified config --
128
+ const config = {
129
+ teloraUrl,
130
+ organizationId,
131
+ products,
132
+ engines: {
133
+ strategy: {
134
+ enabled: enableStrategy,
135
+ integrationBranch,
136
+ maxTotalSessions,
137
+ },
138
+ factory: {
139
+ enabled: enableFactory,
140
+ maxConcurrentInstances,
141
+ },
142
+ },
143
+ };
144
+ // -- Write config file to global location --
145
+ const teloraDir = resolve(homedir(), '.telora');
146
+ if (!existsSync(teloraDir)) {
147
+ mkdirSync(teloraDir, { recursive: true });
148
+ console.log(`\nCreated ${teloraDir}/`);
149
+ }
150
+ const configPath = resolve(teloraDir, 'daemon.json');
151
+ writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
152
+ console.log(`Created ${configPath}`);
153
+ // -- Next steps --
154
+ console.log('\nNext steps:\n');
155
+ console.log('1. Set your tracker ID as an environment variable:');
156
+ console.log(' export TELORA_TRACKER_ID=your-tracker-id-here');
157
+ console.log('');
158
+ console.log(' You can find your tracker ID in Telora -> Settings -> AI Work Trackers');
159
+ console.log('');
160
+ console.log('2. Start the daemon:');
161
+ console.log(' telora-daemon');
162
+ console.log('');
163
+ if (enableStrategy) {
164
+ console.log('3. (Optional) Create the integration branch in each product repo:');
165
+ for (const product of products) {
166
+ console.log(` cd ${product.repoPath} && git checkout -b ${integrationBranch}`);
167
+ }
168
+ console.log('');
169
+ console.log(' The daemon will create the integration branch automatically if it does not exist.');
170
+ console.log('');
171
+ }
172
+ // Suggest .gitignore additions for each product repo
173
+ for (const product of products) {
174
+ const gitignorePath = resolve(product.repoPath, '.gitignore');
175
+ if (existsSync(gitignorePath)) {
176
+ console.log(`Consider adding these to ${product.repoPath}/.gitignore:`);
177
+ console.log(' .telora/logs/');
178
+ console.log(' .telora/worktrees/');
179
+ console.log('');
180
+ }
181
+ }
182
+ }
183
+ //# sourceMappingURL=unified-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-init.js","sourceRoot":"","sources":["../src/unified-init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;GAEG;AACH,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,YAAqB;IAC3D,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,cAAc,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACvD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,aAAsB,IAAI;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IAEnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,wBAAwB,QAAQ,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,yCAAyC,QAAQ,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IAEvE,sBAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAEvE,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAC;QACzG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;IAEjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAErE,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,2BAA2B,SAAS,yCAAyC,CAAC,CAAC;YAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,6EAA6E;QAC7E,MAAM,eAAe,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,KAAK,eAAe,IAAI,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,yBAAyB;IAEzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,kDAAkD,EAAE,IAAI,CAAC,CAAC;IACnG,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,4CAA4C,EAAE,IAAI,CAAC,CAAC;IAE5F,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iCAAiC;IAEjC,IAAI,iBAAiB,GAAG,aAAa,CAAC;IACtC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,iBAAiB,GAAG,MAAM,MAAM,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;QAC3E,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAClE,gBAAgB,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,gCAAgC;IAEhC,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAE/B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QAC7D,sBAAsB,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,6BAA6B;IAE7B,MAAM,MAAM,GAA4B;QACtC,SAAS;QACT,cAAc;QACd,QAAQ;QACR,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,OAAO,EAAE,cAAc;gBACvB,iBAAiB;gBACjB,gBAAgB;aACjB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,aAAa;gBACtB,sBAAsB;aACvB;SACF;KACF,CAAC;IAEF,6CAA6C;IAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IAErC,mBAAmB;IAEnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE/B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,QAAQ,uBAAuB,iBAAiB,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,qDAAqD;IACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,QAAQ,cAAc,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Engine configuration builders for the unified daemon shell.
3
+ *
4
+ * Builds complete engine configs (DaemonConfig / FactoryConfig) from the
5
+ * unified base config and per-engine sections, applying defaults and
6
+ * env-var overrides.
7
+ */
8
+ import { type UnifiedConfig, type EngineSection } from '@telora/daemon-core';
9
+ import type { BaseConfig } from '@telora/daemon-core';
10
+ /**
11
+ * Build a complete strategy engine config (DaemonConfig) from the unified
12
+ * base config and the strategy engine section. Applies the same defaults
13
+ * and env-var overrides as daemon/src/config.ts loadConfig().
14
+ */
15
+ export declare function buildStrategyConfig(base: Partial<BaseConfig>, section: EngineSection, env?: Record<string, string | undefined>): BaseConfig & Record<string, unknown>;
16
+ /**
17
+ * Build a complete factory engine config (FactoryConfig) from the unified
18
+ * base config and the factory engine section. Applies the same defaults
19
+ * and env-var overrides as factory/src/config.ts loadConfig().
20
+ */
21
+ export declare function buildFactoryConfig(base: Partial<BaseConfig>, section: EngineSection, env?: Record<string, string | undefined>): BaseConfig & Record<string, unknown>;
22
+ /**
23
+ * Resolve whether auto-update is enabled from env vars and config file.
24
+ * Env var TELORA_AUTO_UPDATE takes precedence over config file autoUpdate.enabled.
25
+ * Default: true.
26
+ */
27
+ export declare function resolveAutoUpdateEnabled(config: UnifiedConfig): boolean;
28
+ /**
29
+ * Resolve auto-update check interval from env vars and config file.
30
+ * Env var TELORA_AUTO_UPDATE_INTERVAL_MS takes precedence.
31
+ * Default: 3600000 (1 hour).
32
+ */
33
+ export declare function resolveAutoUpdateIntervalMs(config: UnifiedConfig): number;
34
+ //# sourceMappingURL=unified-shell-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-shell-config.d.ts","sourceRoot":"","sources":["../src/unified-shell-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA2DtD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,EACzB,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAqD,GAC1F,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqItC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,EACzB,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAqD,GAC1F,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6CtC;AAQD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAWvE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAYzE"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Engine configuration builders for the unified daemon shell.
3
+ *
4
+ * Builds complete engine configs (DaemonConfig / FactoryConfig) from the
5
+ * unified base config and per-engine sections, applying defaults and
6
+ * env-var overrides.
7
+ */
8
+ import { resolve } from 'node:path';
9
+ import { networkInterfaces } from 'node:os';
10
+ import { buildEngineConfig, } from '@telora/daemon-core';
11
+ // ---------------------------------------------------------------------------
12
+ // LAN host detection (mirrored from daemon's config.ts to avoid circular deps)
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * Auto-detect the first non-internal IPv4 address for LAN-accessible URLs.
16
+ * Falls back to 'localhost' if no suitable address is found.
17
+ */
18
+ function detectLanHost() {
19
+ const interfaces = networkInterfaces();
20
+ for (const ifaceEntries of Object.values(interfaces)) {
21
+ if (!ifaceEntries)
22
+ continue;
23
+ for (const iface of ifaceEntries) {
24
+ if (iface.family === 'IPv4' && !iface.internal) {
25
+ return iface.address;
26
+ }
27
+ }
28
+ }
29
+ return 'localhost';
30
+ }
31
+ // ---------------------------------------------------------------------------
32
+ // Numeric env-var helpers (mirrored from daemon/config.ts)
33
+ // ---------------------------------------------------------------------------
34
+ function resolveInt(envVal, fileVal, defaultVal) {
35
+ if (envVal !== undefined && envVal !== '') {
36
+ return parseInt(envVal, 10);
37
+ }
38
+ if (typeof fileVal === 'number') {
39
+ return fileVal;
40
+ }
41
+ return defaultVal;
42
+ }
43
+ function resolveFloat(envVal, fileVal, defaultVal) {
44
+ if (envVal !== undefined && envVal !== '') {
45
+ return parseFloat(envVal);
46
+ }
47
+ if (typeof fileVal === 'number') {
48
+ return fileVal;
49
+ }
50
+ return defaultVal;
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // Engine config builders
54
+ // ---------------------------------------------------------------------------
55
+ /**
56
+ * Build a complete strategy engine config (DaemonConfig) from the unified
57
+ * base config and the strategy engine section. Applies the same defaults
58
+ * and env-var overrides as daemon/src/config.ts loadConfig().
59
+ */
60
+ export function buildStrategyConfig(base, section, env = process.env) {
61
+ // Start with the flat merge from daemon-core
62
+ const flat = buildEngineConfig(base, section);
63
+ const fields = section.fields;
64
+ const repoPath = flat.repoPath || process.cwd();
65
+ const claudeCodePath = flat.claudeCodePath || 'claude';
66
+ const logDir = flat.logDir || resolve(repoPath, '.telora', 'logs');
67
+ const sessionTimeoutMs = flat.sessionTimeoutMs ?? 3600000;
68
+ const mcpConfigPath = flat.mcpConfigPath ?? null;
69
+ // Strategy-specific fields with env overrides
70
+ const worktreeDir = env.TELORA_WORKTREE_DIR
71
+ || (typeof fields.worktreeDir === 'string' ? fields.worktreeDir : '')
72
+ || resolve(repoPath, '.telora', 'worktrees');
73
+ const integrationBranch = env.TELORA_INTEGRATION_BRANCH
74
+ || (typeof fields.integrationBranch === 'string' ? fields.integrationBranch : '')
75
+ || 'integration';
76
+ const maxTotalSessions = resolveInt(env.MAX_TOTAL_SESSIONS, fields.maxTotalSessions, 5);
77
+ const tokenLimit = resolveInt(env.TOKEN_LIMIT, fields.tokenLimit, 200000);
78
+ const costLimit = resolveFloat(env.COST_LIMIT, fields.costLimit, 10.0);
79
+ const mergeLockTimeoutMs = resolveInt(env.MERGE_LOCK_TIMEOUT_MS, fields.mergeLockTimeoutMs, 300000);
80
+ const mergeLockContentionWarningMs = resolveInt(env.MERGE_LOCK_CONTENTION_WARNING_MS, fields.mergeLockContentionWarningMs, 30000);
81
+ // Guard failure mode
82
+ const rawPolicyFailureMode = env.TELORA_POLICY_FAILURE_MODE
83
+ || (typeof fields.policyFailureMode === 'string' ? fields.policyFailureMode : '')
84
+ || 'fail-open';
85
+ if (rawPolicyFailureMode !== 'fail-open' && rawPolicyFailureMode !== 'fail-closed') {
86
+ throw new Error(`Invalid TELORA_POLICY_FAILURE_MODE: "${rawPolicyFailureMode}". Must be "fail-open" or "fail-closed".`);
87
+ }
88
+ // Log retention
89
+ const logMaxAgeDays = resolveInt(env.LOG_MAX_AGE_DAYS, fields.logMaxAgeDays, 7);
90
+ const logMaxTotalBytes = resolveInt(env.LOG_MAX_TOTAL_BYTES, fields.logMaxTotalBytes, 1073741824);
91
+ const logMaxFiles = resolveInt(env.LOG_MAX_FILES, fields.logMaxFiles, 500);
92
+ // Telemetry
93
+ const telemetryFile = (typeof fields.telemetry === 'object' && fields.telemetry !== null)
94
+ ? fields.telemetry
95
+ : {};
96
+ const telemetry = {
97
+ enabled: env.TELORA_TELEMETRY_ENABLED !== undefined
98
+ ? env.TELORA_TELEMETRY_ENABLED !== '0' && env.TELORA_TELEMETRY_ENABLED !== 'false'
99
+ : (typeof telemetryFile.enabled === 'boolean' ? telemetryFile.enabled : true),
100
+ port: resolveInt(env.TELORA_TELEMETRY_PORT, telemetryFile.port, 4318),
101
+ flushIntervalMs: resolveInt(env.TELORA_TELEMETRY_FLUSH_INTERVAL_MS, telemetryFile.flushIntervalMs, 5000),
102
+ retentionDays: resolveInt(env.TELORA_TELEMETRY_RETENTION_DAYS, telemetryFile.retentionDays, 30),
103
+ };
104
+ // QA environment
105
+ const qaPortRangeStart = resolveInt(env.TELORA_QA_PORT_RANGE_START, fields.qaPortRangeStart, 9100);
106
+ const qaPortRangeEnd = resolveInt(env.TELORA_QA_PORT_RANGE_END, fields.qaPortRangeEnd, 9199);
107
+ const qaHost = env.TELORA_QA_HOST
108
+ || (typeof fields.qaHost === 'string' ? fields.qaHost : '')
109
+ || detectLanHost();
110
+ // Local Supabase
111
+ const localSupabaseUrl = env.TELORA_LOCAL_SUPABASE_URL
112
+ || (typeof fields.localSupabaseUrl === 'string' ? fields.localSupabaseUrl : '')
113
+ || 'http://127.0.0.1:54321';
114
+ const localSupabaseAnonKey = env.TELORA_LOCAL_SUPABASE_ANON_KEY
115
+ || (typeof fields.localSupabaseAnonKey === 'string' ? fields.localSupabaseAnonKey : '')
116
+ || null;
117
+ // Products array from base config (already resolved by loadUnifiedConfig)
118
+ const products = flat.products ?? [];
119
+ return {
120
+ // Base fields
121
+ teloraUrl: flat.teloraUrl,
122
+ trackerId: flat.trackerId,
123
+ organizationId: flat.organizationId,
124
+ productId: flat.productId,
125
+ repoPath,
126
+ products,
127
+ claudeCodePath,
128
+ logDir,
129
+ sessionTimeoutMs,
130
+ mcpConfigPath,
131
+ // Strategy-specific fields
132
+ worktreeDir,
133
+ integrationBranch,
134
+ maxTotalSessions,
135
+ tokenLimit,
136
+ costLimit,
137
+ mergeLockTimeoutMs,
138
+ mergeLockContentionWarningMs,
139
+ policyFailureMode: rawPolicyFailureMode,
140
+ logMaxAgeDays,
141
+ logMaxTotalBytes,
142
+ logMaxFiles,
143
+ telemetry,
144
+ qaPortRangeStart,
145
+ qaPortRangeEnd,
146
+ qaHost,
147
+ localSupabaseUrl,
148
+ localSupabaseAnonKey,
149
+ };
150
+ }
151
+ /**
152
+ * Build a complete factory engine config (FactoryConfig) from the unified
153
+ * base config and the factory engine section. Applies the same defaults
154
+ * and env-var overrides as factory/src/config.ts loadConfig().
155
+ */
156
+ export function buildFactoryConfig(base, section, env = process.env) {
157
+ const flat = buildEngineConfig(base, section);
158
+ const fields = section.fields;
159
+ const repoPath = flat.repoPath || process.cwd();
160
+ const claudeCodePath = flat.claudeCodePath || 'claude';
161
+ // Factory uses a separate log directory by default
162
+ const logDir = flat.logDir || resolve(repoPath, '.telora', 'factory-logs');
163
+ const sessionTimeoutMs = flat.sessionTimeoutMs ?? 3600000;
164
+ const mcpConfigPath = flat.mcpConfigPath ?? null;
165
+ // Factory-specific fields with env overrides
166
+ const factoryWorktreeDir = env.TELORA_FACTORY_WORKTREE_DIR
167
+ || (typeof fields.factoryWorktreeDir === 'string' ? fields.factoryWorktreeDir : '')
168
+ || resolve(repoPath, '.telora', 'factory-worktrees');
169
+ const maxConcurrentInstances = env.FACTORY_MAX_CONCURRENT_INSTANCES
170
+ ? parseInt(env.FACTORY_MAX_CONCURRENT_INSTANCES, 10)
171
+ : (typeof fields.maxConcurrentInstances === 'number' ? fields.maxConcurrentInstances : 3);
172
+ // Telemetry: inherit from flat config (resolved by buildEngineConfig) or default
173
+ const telemetry = (flat.telemetry && typeof flat.telemetry === 'object')
174
+ ? flat.telemetry
175
+ : { enabled: true, port: 4318 };
176
+ // Products array from base config (already resolved by loadUnifiedConfig)
177
+ const products = flat.products ?? [];
178
+ return {
179
+ // Base fields
180
+ teloraUrl: flat.teloraUrl,
181
+ trackerId: flat.trackerId,
182
+ organizationId: flat.organizationId,
183
+ productId: flat.productId,
184
+ repoPath,
185
+ products,
186
+ claudeCodePath,
187
+ logDir,
188
+ sessionTimeoutMs,
189
+ mcpConfigPath,
190
+ // Factory-specific fields
191
+ factoryWorktreeDir,
192
+ maxConcurrentInstances,
193
+ telemetry,
194
+ };
195
+ }
196
+ // ---------------------------------------------------------------------------
197
+ // Auto-update config resolution
198
+ // ---------------------------------------------------------------------------
199
+ const DEFAULT_AUTO_UPDATE_INTERVAL_MS = 3_600_000; // 1 hour
200
+ /**
201
+ * Resolve whether auto-update is enabled from env vars and config file.
202
+ * Env var TELORA_AUTO_UPDATE takes precedence over config file autoUpdate.enabled.
203
+ * Default: true.
204
+ */
205
+ export function resolveAutoUpdateEnabled(config) {
206
+ const envVal = process.env.TELORA_AUTO_UPDATE;
207
+ if (envVal !== undefined && envVal !== '') {
208
+ return envVal !== '0' && envVal !== 'false';
209
+ }
210
+ const fileConfig = config.rawFileConfig;
211
+ if (typeof fileConfig.autoUpdate === 'object' && fileConfig.autoUpdate !== null) {
212
+ const au = fileConfig.autoUpdate;
213
+ if (typeof au.enabled === 'boolean')
214
+ return au.enabled;
215
+ }
216
+ return true;
217
+ }
218
+ /**
219
+ * Resolve auto-update check interval from env vars and config file.
220
+ * Env var TELORA_AUTO_UPDATE_INTERVAL_MS takes precedence.
221
+ * Default: 3600000 (1 hour).
222
+ */
223
+ export function resolveAutoUpdateIntervalMs(config) {
224
+ const envVal = process.env.TELORA_AUTO_UPDATE_INTERVAL_MS;
225
+ if (envVal !== undefined && envVal !== '') {
226
+ const parsed = parseInt(envVal, 10);
227
+ if (!isNaN(parsed) && parsed > 0)
228
+ return parsed;
229
+ }
230
+ const fileConfig = config.rawFileConfig;
231
+ if (typeof fileConfig.autoUpdate === 'object' && fileConfig.autoUpdate !== null) {
232
+ const au = fileConfig.autoUpdate;
233
+ if (typeof au.intervalMs === 'number' && au.intervalMs > 0)
234
+ return au.intervalMs;
235
+ }
236
+ return DEFAULT_AUTO_UPDATE_INTERVAL_MS;
237
+ }
238
+ //# sourceMappingURL=unified-shell-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-shell-config.js","sourceRoot":"","sources":["../src/unified-shell-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Status reporting and dry-run output for the unified daemon shell.
3
+ *
4
+ * Aggregated status display (SIGUSR1) and configuration summary printing.
5
+ */
6
+ import type { ExecutionEngine, UnifiedConfig, ResourceGovernor } from '@telora/daemon-core';
7
+ /**
8
+ * Print aggregated status from all active engines.
9
+ */
10
+ export declare function printAggregatedStatus(engines: ExecutionEngine[], governor?: ResourceGovernor): void;
11
+ /**
12
+ * Print a dry-run summary of the unified config.
13
+ */
14
+ export declare function printUnifiedConfigSummary(config: UnifiedConfig): void;
15
+ //# sourceMappingURL=unified-shell-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-shell-status.d.ts","sourceRoot":"","sources":["../src/unified-shell-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5F;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CA8DnG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAwBrE"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Status reporting and dry-run output for the unified daemon shell.
3
+ *
4
+ * Aggregated status display (SIGUSR1) and configuration summary printing.
5
+ */
6
+ /**
7
+ * Print aggregated status from all active engines.
8
+ */
9
+ export function printAggregatedStatus(engines, governor) {
10
+ console.log('\n=== Unified Daemon Status ===');
11
+ console.log(`Engines: ${engines.map(e => e.name).join(', ')}`);
12
+ console.log(`PID: ${process.pid}`);
13
+ console.log(`Uptime: ${Math.round(process.uptime())}s`);
14
+ // Resource governor utilization
15
+ if (governor) {
16
+ const util = governor.getUtilization();
17
+ console.log(`\n--- Resource Governor ---`);
18
+ console.log(` Global slots: ${util.total}/${util.max} in use`);
19
+ for (const [engine, count] of Object.entries(util.perEngine)) {
20
+ console.log(` ${engine}: ${count} slots`);
21
+ }
22
+ if (util.queueDepth > 0) {
23
+ console.log(` Queue depth: ${util.queueDepth}`);
24
+ for (const [engine, depth] of Object.entries(util.queueDepthPerEngine)) {
25
+ console.log(` ${engine}: ${depth} waiting`);
26
+ }
27
+ }
28
+ }
29
+ for (const engine of engines) {
30
+ const health = engine.healthCheck();
31
+ const resources = engine.getResourceUsage();
32
+ console.log(`\n--- ${engine.name} engine ---`);
33
+ console.log(` Status: ${health.status}`);
34
+ console.log(` Active work items: ${health.activeWorkItems}`);
35
+ console.log(` Claude processes: ${resources.activeClaudeProcesses}`);
36
+ console.log(` Active worktrees: ${resources.activeWorktrees}`);
37
+ // Print engine-specific details
38
+ const details = health.details;
39
+ for (const [key, value] of Object.entries(details)) {
40
+ if (Array.isArray(value)) {
41
+ if (value.length > 0) {
42
+ console.log(` ${key}:`);
43
+ for (const item of value) {
44
+ if (typeof item === 'object' && item !== null) {
45
+ const parts = Object.entries(item)
46
+ .map(([k, v]) => `${k}: ${String(v)}`)
47
+ .join(' | ');
48
+ console.log(` - ${parts}`);
49
+ }
50
+ else {
51
+ console.log(` - ${String(item)}`);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ else if (typeof value === 'object' && value !== null) {
57
+ const entries = Object.entries(value);
58
+ if (entries.length > 0) {
59
+ console.log(` ${key}:`);
60
+ for (const [k, v] of entries) {
61
+ console.log(` ${k}: ${String(v)}`);
62
+ }
63
+ }
64
+ }
65
+ else {
66
+ console.log(` ${key}: ${String(value)}`);
67
+ }
68
+ }
69
+ }
70
+ console.log('');
71
+ }
72
+ /**
73
+ * Print a dry-run summary of the unified config.
74
+ */
75
+ export function printUnifiedConfigSummary(config) {
76
+ console.log('Unified Daemon Configuration:');
77
+ console.log(` Telora URL: ${config.base.teloraUrl ?? '[not set]'}`);
78
+ console.log(` Tracker ID: ${config.base.trackerId ? '[configured]' : '[not set]'}`);
79
+ console.log(` Organization ID: ${config.base.organizationId ?? '[not set]'}`);
80
+ console.log(` Product ID: ${config.base.productId ?? '[not set]'}`);
81
+ console.log(` Repository Path: ${config.base.repoPath ?? '[cwd]'}`);
82
+ console.log(` Claude Code Path: ${config.base.claudeCodePath ?? 'claude'}`);
83
+ console.log(` Log Directory: ${config.base.logDir ?? '[default]'}`);
84
+ console.log(` Session Timeout: ${config.base.sessionTimeoutMs ?? 3600000}ms`);
85
+ console.log(` MCP Config Path: ${config.base.mcpConfigPath ?? '[not set]'}`);
86
+ console.log(`\n Strategy engine: ${config.strategy.enabled ? 'enabled' : 'disabled'}`);
87
+ if (config.strategy.enabled) {
88
+ const sf = config.strategy.fields;
89
+ console.log(` worktreeDir: ${String(sf.worktreeDir ?? '[default]')}`);
90
+ console.log(` integrationBranch: ${String(sf.integrationBranch ?? 'integration')}`);
91
+ console.log(` maxTotalSessions: ${String(sf.maxTotalSessions ?? 5)}`);
92
+ }
93
+ console.log(`\n Factory engine: ${config.factory.enabled ? 'enabled' : 'disabled'}`);
94
+ if (config.factory.enabled) {
95
+ const ff = config.factory.fields;
96
+ console.log(` factoryWorktreeDir: ${String(ff.factoryWorktreeDir ?? '[default]')}`);
97
+ console.log(` maxConcurrentInstances: ${String(ff.maxConcurrentInstances ?? 3)}`);
98
+ }
99
+ }
100
+ //# sourceMappingURL=unified-shell-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-shell-status.js","sourceRoot":"","sources":["../src/unified-shell-status.ts"],"names":[],"mappings":"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"}