@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
@@ -0,0 +1,113 @@
1
+ /**
2
+ * OTLP metrics payload parser.
3
+ *
4
+ * Parses OpenTelemetry metrics JSON payloads from Claude Code and
5
+ * buffers metric rows for batched Postgres inserts.
6
+ */
7
+ import { extractResourceAttributes, buildFactoryMetadata, getDataPointValue, getDataPointAttribute, nanoToIso, } from './otlp-types.js';
8
+ import { bufferMetric, } from './telemetry-writer.js';
9
+ /**
10
+ * Parse OTLP metrics payload and buffer metric rows.
11
+ *
12
+ * Claude Code emits these metrics (per official OTel schema):
13
+ * - claude_code.token.usage (Counter, attrs: type=input|output|cacheRead|cacheCreation, model)
14
+ * - claude_code.cost.usage (Counter, attr: model, unit: USD)
15
+ * - claude_code.active_time.total (Counter, unit: seconds)
16
+ * - claude_code.session.count, claude_code.lines_of_code.count, etc.
17
+ *
18
+ * We aggregate per-resource into a single TelemetryMetricRow.
19
+ */
20
+ export function processMetrics(payload, fallbackOrgId) {
21
+ if (!payload.resourceMetrics)
22
+ return;
23
+ for (const rm of payload.resourceMetrics) {
24
+ const attrs = extractResourceAttributes(rm.resource);
25
+ const orgId = attrs.orgId ?? fallbackOrgId;
26
+ // Collect all metric values into a single row per resource
27
+ const factoryMeta = buildFactoryMetadata(attrs);
28
+ const row = {
29
+ organization_id: orgId,
30
+ strategy_id: attrs.strategyId,
31
+ delivery_id: attrs.deliveryId,
32
+ session_id: attrs.sessionId,
33
+ input_tokens: 0,
34
+ output_tokens: 0,
35
+ cache_read_tokens: 0,
36
+ cache_creation_tokens: 0,
37
+ cost_usd: 0,
38
+ active_time_ms: 0,
39
+ tool_call_count: 0,
40
+ tool_error_count: 0,
41
+ model: null,
42
+ metadata: factoryMeta,
43
+ period_start: new Date().toISOString(),
44
+ period_end: new Date().toISOString(),
45
+ };
46
+ let hasData = false;
47
+ let earliestNano;
48
+ let latestNano;
49
+ for (const sm of rm.scopeMetrics ?? []) {
50
+ for (const metric of sm.metrics ?? []) {
51
+ const dataPoints = metric.sum?.dataPoints ?? metric.gauge?.dataPoints ?? [];
52
+ for (const dp of dataPoints) {
53
+ const value = getDataPointValue(dp);
54
+ // Track time range
55
+ if (dp.startTimeUnixNano && (!earliestNano || dp.startTimeUnixNano < earliestNano)) {
56
+ earliestNano = dp.startTimeUnixNano;
57
+ }
58
+ if (dp.timeUnixNano && (!latestNano || dp.timeUnixNano > latestNano)) {
59
+ latestNano = dp.timeUnixNano;
60
+ }
61
+ switch (metric.name) {
62
+ case 'claude_code.token.usage': {
63
+ // Token usage has a `type` attribute: input, output, cacheRead, cacheCreation
64
+ const tokenType = getDataPointAttribute(dp, 'type');
65
+ // Extract model from first data point that has it
66
+ if (!row.model) {
67
+ row.model = getDataPointAttribute(dp, 'model');
68
+ }
69
+ switch (tokenType) {
70
+ case 'input':
71
+ row.input_tokens = value;
72
+ hasData = true;
73
+ break;
74
+ case 'output':
75
+ row.output_tokens = value;
76
+ hasData = true;
77
+ break;
78
+ case 'cacheRead':
79
+ row.cache_read_tokens = value;
80
+ hasData = true;
81
+ break;
82
+ case 'cacheCreation':
83
+ row.cache_creation_tokens = value;
84
+ hasData = true;
85
+ break;
86
+ }
87
+ break;
88
+ }
89
+ case 'claude_code.cost.usage':
90
+ row.cost_usd = value;
91
+ hasData = true;
92
+ break;
93
+ case 'claude_code.active_time.total':
94
+ // Claude emits seconds, DB stores milliseconds
95
+ row.active_time_ms = Math.round(value * 1000);
96
+ hasData = true;
97
+ break;
98
+ // code_edit_tool.decision tracks Edit/Write/NotebookEdit permission
99
+ // decisions (accept/reject), not general tool calls. Tool call counts
100
+ // are derived from tool_result log events in processLogs() instead.
101
+ // Unknown metrics (session.count, lines_of_code.count, etc.) are silently ignored
102
+ }
103
+ }
104
+ }
105
+ }
106
+ if (hasData) {
107
+ row.period_start = nanoToIso(earliestNano);
108
+ row.period_end = nanoToIso(latestNano);
109
+ bufferMetric(row);
110
+ }
111
+ }
112
+ }
113
+ //# sourceMappingURL=otlp-metric-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp-metric-parser.js","sourceRoot":"","sources":["../src/otlp-metric-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Stale OTLP port detection and reclaim.
3
+ *
4
+ * Checks if the OTLP receiver port is held by an orphaned process
5
+ * from a previous daemon instance and reclaims it if safe.
6
+ */
7
+ /**
8
+ * Check if a port is currently in use by attempting a TCP connection.
9
+ * Returns true if something is listening on the port.
10
+ */
11
+ export declare function isPortInUse(port: number, host?: string): Promise<boolean>;
12
+ /**
13
+ * Find the PID(s) holding a given TCP port using `lsof`.
14
+ * Returns an array of PIDs (may be empty if lsof is unavailable or no match).
15
+ */
16
+ export declare function findPidsOnPort(port: number): number[];
17
+ /**
18
+ * Attempt to reclaim a stale OTLP port.
19
+ *
20
+ * Checks if the port is in use, cross-references with the PID file,
21
+ * and kills orphaned processes if the recorded daemon PID is stale.
22
+ *
23
+ * @returns true if reclaim was attempted (port was in use), false if port was free
24
+ */
25
+ export declare function reclaimStalePort(port: number, pidFilePath: string | undefined): Promise<boolean>;
26
+ //# sourceMappingURL=otlp-port-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp-port-manager.d.ts","sourceRoot":"","sources":["../src/otlp-port-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBtF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBrD;AA4BD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CA6CtG"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Stale OTLP port detection and reclaim.
3
+ *
4
+ * Checks if the OTLP receiver port is held by an orphaned process
5
+ * from a previous daemon instance and reclaims it if safe.
6
+ */
7
+ import { connect as netConnect } from 'node:net';
8
+ import { execFileSync } from 'node:child_process';
9
+ import { readFileSync, existsSync } from 'node:fs';
10
+ /**
11
+ * Check if a port is currently in use by attempting a TCP connection.
12
+ * Returns true if something is listening on the port.
13
+ */
14
+ export function isPortInUse(port, host = '127.0.0.1') {
15
+ return new Promise((resolve) => {
16
+ const socket = netConnect({ port, host });
17
+ socket.once('connect', () => {
18
+ socket.destroy();
19
+ resolve(true);
20
+ });
21
+ socket.once('error', () => {
22
+ socket.destroy();
23
+ resolve(false);
24
+ });
25
+ // Short timeout -- we only need to know if something answers
26
+ socket.setTimeout(1000, () => {
27
+ socket.destroy();
28
+ resolve(false);
29
+ });
30
+ });
31
+ }
32
+ /**
33
+ * Find the PID(s) holding a given TCP port using `lsof`.
34
+ * Returns an array of PIDs (may be empty if lsof is unavailable or no match).
35
+ */
36
+ export function findPidsOnPort(port) {
37
+ try {
38
+ // -i :port -t returns just PIDs, one per line
39
+ const output = execFileSync('lsof', ['-i', `:${port}`, '-t', '-sTCP:LISTEN'], {
40
+ encoding: 'utf-8',
41
+ timeout: 5000,
42
+ });
43
+ return output
44
+ .trim()
45
+ .split('\n')
46
+ .map(line => parseInt(line.trim(), 10))
47
+ .filter(pid => !isNaN(pid) && pid > 0);
48
+ }
49
+ catch {
50
+ // lsof not available or no matches -- not fatal
51
+ return [];
52
+ }
53
+ }
54
+ /**
55
+ * Check if a process with the given PID is alive.
56
+ */
57
+ function isProcessAlive(pid) {
58
+ try {
59
+ process.kill(pid, 0);
60
+ return true;
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ }
66
+ /**
67
+ * Read the daemon PID file and return the PID, or null if unreadable/missing.
68
+ */
69
+ function readDaemonPid(pidFilePath) {
70
+ if (!pidFilePath || !existsSync(pidFilePath))
71
+ return null;
72
+ try {
73
+ const contents = readFileSync(pidFilePath, 'utf-8').trim();
74
+ const pid = parseInt(contents, 10);
75
+ return isNaN(pid) ? null : pid;
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ }
81
+ /**
82
+ * Attempt to reclaim a stale OTLP port.
83
+ *
84
+ * Checks if the port is in use, cross-references with the PID file,
85
+ * and kills orphaned processes if the recorded daemon PID is stale.
86
+ *
87
+ * @returns true if reclaim was attempted (port was in use), false if port was free
88
+ */
89
+ export async function reclaimStalePort(port, pidFilePath) {
90
+ const inUse = await isPortInUse(port);
91
+ if (!inUse)
92
+ return false;
93
+ console.warn(`[otlp-receiver] Port ${port} is already in use, attempting reclaim`);
94
+ // Read the daemon PID file to check if the previous daemon is still alive
95
+ const daemonPid = readDaemonPid(pidFilePath);
96
+ if (daemonPid !== null && isProcessAlive(daemonPid)) {
97
+ // The previous daemon is still running -- do not kill it.
98
+ // The caller (acquirePidFile in index.ts) should have caught this.
99
+ console.warn(`[otlp-receiver] Previous daemon (PID ${daemonPid}) is still alive -- cannot reclaim`);
100
+ return true;
101
+ }
102
+ // Previous daemon is dead (or no PID file). Find what holds the port.
103
+ const pids = findPidsOnPort(port);
104
+ if (pids.length === 0) {
105
+ // Port appears in use but lsof found nothing -- possibly TIME_WAIT.
106
+ // SO_REUSEADDR + retry should handle this.
107
+ console.log('[otlp-receiver] No process found holding port (likely TIME_WAIT)');
108
+ return true;
109
+ }
110
+ // Kill orphaned processes that are holding the port.
111
+ // Only kill processes that are NOT the current daemon.
112
+ for (const pid of pids) {
113
+ if (pid === process.pid)
114
+ continue;
115
+ // If we have a PID file, only kill processes that match the stale daemon PID
116
+ // or are children of it. Without ppid checks, be conservative: kill if
117
+ // the daemon PID is stale (already verified above).
118
+ console.log(`[otlp-receiver] Killing orphaned process ${pid} holding port ${port}`);
119
+ try {
120
+ process.kill(pid, 'SIGTERM');
121
+ }
122
+ catch (err) {
123
+ console.warn(`[otlp-receiver] Failed to kill PID ${pid}: ${err.message}`);
124
+ }
125
+ }
126
+ // Give killed processes a moment to release the port
127
+ await new Promise(resolve => setTimeout(resolve, 500));
128
+ return true;
129
+ }
130
+ //# sourceMappingURL=otlp-port-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp-port-manager.js","sourceRoot":"","sources":["../src/otlp-port-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * OTLP HTTP Receiver for agent telemetry.
3
+ *
4
+ * Lightweight HTTP server accepting OpenTelemetry JSON payloads:
5
+ * - POST /v1/metrics -- OTLP metrics (token counts, cost, tool calls)
6
+ * - POST /v1/logs -- OTLP logs (tool call events, errors)
7
+ *
8
+ * Extracts Telora resource attributes (telora.org_id, telora.strategy_id,
9
+ * telora.delivery_id) for entity correlation and forwards parsed data
10
+ * to the telemetry writer for batched Postgres inserts.
11
+ *
12
+ * Runs on a configurable port (default 4318) alongside the daemon process.
13
+ */
14
+ import type { TelemetryConfig } from './types.js';
15
+ /**
16
+ * Check if a port is currently in use by attempting a TCP connection.
17
+ * Returns true if something is listening on the port.
18
+ */
19
+ export declare function isPortInUse(port: number, host?: string): Promise<boolean>;
20
+ /**
21
+ * Find the PID(s) holding a given TCP port using `lsof`.
22
+ * Returns an array of PIDs (may be empty if lsof is unavailable or no match).
23
+ */
24
+ export declare function findPidsOnPort(port: number): number[];
25
+ /**
26
+ * Attempt to reclaim a stale OTLP port.
27
+ *
28
+ * Checks if the port is in use, cross-references with the PID file,
29
+ * and kills orphaned processes if the recorded daemon PID is stale.
30
+ *
31
+ * @returns true if reclaim was attempted (port was in use), false if port was free
32
+ */
33
+ export declare function reclaimStalePort(port: number, pidFilePath: string | undefined): Promise<boolean>;
34
+ /**
35
+ * Start the OTLP HTTP receiver server.
36
+ *
37
+ * Performs stale port detection and reclaim before binding, then retries
38
+ * with exponential backoff if EADDRINUSE persists (e.g. TIME_WAIT).
39
+ *
40
+ * @param pidFilePath - Path to the daemon PID file for stale process detection
41
+ */
42
+ export declare function startOtlpReceiver(config: TelemetryConfig, organizationId: string, pidFilePath?: string): Promise<void>;
43
+ /**
44
+ * Stop the OTLP HTTP receiver server.
45
+ *
46
+ * Closes all open connections and waits for the server to shut down.
47
+ * If the server doesn't close within SHUTDOWN_TIMEOUT_MS, it is
48
+ * force-destroyed to prevent hanging on stale keep-alive connections.
49
+ */
50
+ export declare function stopOtlpReceiver(): Promise<void>;
51
+ //# sourceMappingURL=otlp-receiver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp-receiver.d.ts","sourceRoot":"","sources":["../src/otlp-receiver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0dlD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBtF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBrD;AA4BD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CA6CtG;AAgCD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAwEf;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhD"}