@telora/daemon 0.19.43 → 0.19.74

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 (542) hide show
  1. package/build-info.json +8 -3
  2. package/dist/assembly-engine.d.ts +9 -0
  3. package/dist/assembly-engine.d.ts.map +1 -1
  4. package/dist/assembly-engine.js.map +1 -1
  5. package/dist/audit-hooks.js +1 -1
  6. package/dist/audit-shape.d.ts +103 -0
  7. package/dist/audit-shape.d.ts.map +1 -0
  8. package/dist/audit-shape.js +81 -0
  9. package/dist/audit-shape.js.map +1 -0
  10. package/dist/branch-status.js +2 -2
  11. package/dist/branch-status.js.map +1 -1
  12. package/dist/ci-sensor-loop.d.ts +47 -0
  13. package/dist/ci-sensor-loop.d.ts.map +1 -0
  14. package/dist/ci-sensor-loop.js +116 -0
  15. package/dist/ci-sensor-loop.js.map +1 -0
  16. package/dist/ci-status-git.d.ts +52 -0
  17. package/dist/ci-status-git.d.ts.map +1 -0
  18. package/dist/ci-status-git.js +86 -0
  19. package/dist/ci-status-git.js.map +1 -0
  20. package/dist/ci-status.d.ts +122 -0
  21. package/dist/ci-status.d.ts.map +1 -0
  22. package/dist/ci-status.js +114 -0
  23. package/dist/ci-status.js.map +1 -0
  24. package/dist/cli/connect/agents.d.ts +24 -0
  25. package/dist/cli/connect/agents.d.ts.map +1 -0
  26. package/dist/cli/connect/agents.js +65 -0
  27. package/dist/cli/connect/agents.js.map +1 -0
  28. package/dist/cli/connect/claude.d.ts +31 -0
  29. package/dist/cli/connect/claude.d.ts.map +1 -0
  30. package/dist/cli/connect/claude.js +104 -0
  31. package/dist/cli/connect/claude.js.map +1 -0
  32. package/dist/cli/connect/cline.d.ts +37 -0
  33. package/dist/cli/connect/cline.d.ts.map +1 -0
  34. package/dist/cli/connect/cline.js +115 -0
  35. package/dist/cli/connect/cline.js.map +1 -0
  36. package/dist/cli/connect/codex.d.ts +44 -0
  37. package/dist/cli/connect/codex.d.ts.map +1 -0
  38. package/dist/cli/connect/codex.js +111 -0
  39. package/dist/cli/connect/codex.js.map +1 -0
  40. package/dist/cli/connect/ide.d.ts +69 -0
  41. package/dist/cli/connect/ide.d.ts.map +1 -0
  42. package/dist/cli/connect/ide.js +134 -0
  43. package/dist/cli/connect/ide.js.map +1 -0
  44. package/dist/cli/connect/scaffolding.d.ts +31 -0
  45. package/dist/cli/connect/scaffolding.d.ts.map +1 -0
  46. package/dist/cli/connect/scaffolding.js +52 -0
  47. package/dist/cli/connect/scaffolding.js.map +1 -0
  48. package/dist/cli/connect/shared.d.ts +30 -0
  49. package/dist/cli/connect/shared.d.ts.map +1 -0
  50. package/dist/cli/connect/shared.js +11 -0
  51. package/dist/cli/connect/shared.js.map +1 -0
  52. package/dist/cli/connect.d.ts +9 -210
  53. package/dist/cli/connect.d.ts.map +1 -1
  54. package/dist/cli/connect.js +10 -526
  55. package/dist/cli/connect.js.map +1 -1
  56. package/dist/cli/open.js +2 -2
  57. package/dist/completion/event.d.ts +3 -0
  58. package/dist/completion/event.d.ts.map +1 -1
  59. package/dist/completion/event.js +44 -9
  60. package/dist/completion/event.js.map +1 -1
  61. package/dist/completion/merge-phase.d.ts +3 -0
  62. package/dist/completion/merge-phase.d.ts.map +1 -1
  63. package/dist/completion/merge-phase.js +35 -3
  64. package/dist/completion/merge-phase.js.map +1 -1
  65. package/dist/completion/read-only-pristine.d.ts +1 -1
  66. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  67. package/dist/completion/read-only-pristine.js +1 -1
  68. package/dist/completion/read-only-pristine.js.map +1 -1
  69. package/dist/completion/review-exit-phase.d.ts +30 -3
  70. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  71. package/dist/completion/review-exit-phase.js +203 -15
  72. package/dist/completion/review-exit-phase.js.map +1 -1
  73. package/dist/completion/status-advance-phase.js +1 -1
  74. package/dist/completion/status-advance-phase.js.map +1 -1
  75. package/dist/completion/team-completion.d.ts.map +1 -1
  76. package/dist/completion/team-completion.js +22 -2
  77. package/dist/completion/team-completion.js.map +1 -1
  78. package/dist/completion/team-lifecycle.js +1 -1
  79. package/dist/completion/terminated-work-reconcile.js +1 -1
  80. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  81. package/dist/condition-evaluators.d.ts +41 -2
  82. package/dist/condition-evaluators.d.ts.map +1 -1
  83. package/dist/condition-evaluators.js +37 -288
  84. package/dist/condition-evaluators.js.map +1 -1
  85. package/dist/context-audit.d.ts +1 -1
  86. package/dist/context-audit.d.ts.map +1 -1
  87. package/dist/context-lock.d.ts +1 -1
  88. package/dist/context-lock.d.ts.map +1 -1
  89. package/dist/control-state.d.ts +2 -2
  90. package/dist/control-state.d.ts.map +1 -1
  91. package/dist/control-state.js +4 -3
  92. package/dist/control-state.js.map +1 -1
  93. package/dist/daemon-process.d.ts +1 -1
  94. package/dist/daemon-process.d.ts.map +1 -1
  95. package/dist/delivery-advance-block.d.ts +1 -1
  96. package/dist/delivery-advance-block.d.ts.map +1 -1
  97. package/dist/delivery-advance-block.js +1 -1
  98. package/dist/delivery-advance-block.js.map +1 -1
  99. package/dist/delivery-lifecycle.js +1 -1
  100. package/dist/delivery-reconciler-shadow.d.ts +1 -1
  101. package/dist/delivery-reconciler-shadow.d.ts.map +1 -1
  102. package/dist/delivery-reconciler-shadow.js +1 -1
  103. package/dist/delivery-reconciler-shadow.js.map +1 -1
  104. package/dist/delivery-reconciler.d.ts +1 -0
  105. package/dist/delivery-reconciler.d.ts.map +1 -1
  106. package/dist/delivery-reconciler.js +6 -0
  107. package/dist/delivery-reconciler.js.map +1 -1
  108. package/dist/directive-executor.js +1 -1
  109. package/dist/directive-executor.js.map +1 -1
  110. package/dist/drift-eval-loop.d.ts.map +1 -1
  111. package/dist/drift-eval-loop.js +6 -14
  112. package/dist/drift-eval-loop.js.map +1 -1
  113. package/dist/escalations.d.ts +1 -1
  114. package/dist/escalations.d.ts.map +1 -1
  115. package/dist/escalations.js +1 -1
  116. package/dist/escalations.js.map +1 -1
  117. package/dist/evaluation-context.d.ts +2 -33
  118. package/dist/evaluation-context.d.ts.map +1 -1
  119. package/dist/evaluation-context.js +2 -56
  120. package/dist/evaluation-context.js.map +1 -1
  121. package/dist/focus-engine.d.ts +14 -5
  122. package/dist/focus-engine.d.ts.map +1 -1
  123. package/dist/focus-engine.js +35 -289
  124. package/dist/focus-engine.js.map +1 -1
  125. package/dist/focus-executor.d.ts +10 -791
  126. package/dist/focus-executor.d.ts.map +1 -1
  127. package/dist/focus-executor.js +42 -1566
  128. package/dist/focus-executor.js.map +1 -1
  129. package/dist/focus-lifecycle.js +2 -2
  130. package/dist/focus-lifecycle.js.map +1 -1
  131. package/dist/focus-loop-registry.d.ts +52 -0
  132. package/dist/focus-loop-registry.d.ts.map +1 -0
  133. package/dist/focus-loop-registry.js +328 -0
  134. package/dist/focus-loop-registry.js.map +1 -0
  135. package/dist/focus-merge.d.ts +1 -1
  136. package/dist/focus-merge.d.ts.map +1 -1
  137. package/dist/focus-merge.js +3 -3
  138. package/dist/focus-merge.js.map +1 -1
  139. package/dist/focus-phase.d.ts +4 -0
  140. package/dist/focus-phase.d.ts.map +1 -1
  141. package/dist/focus-phase.js +3 -3
  142. package/dist/focus-phase.js.map +1 -1
  143. package/dist/focus-stage-lifecycle/planning-release.d.ts +197 -0
  144. package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -0
  145. package/dist/focus-stage-lifecycle/planning-release.js +312 -0
  146. package/dist/focus-stage-lifecycle/planning-release.js.map +1 -0
  147. package/dist/focus-stage-lifecycle/review-convergence.d.ts +133 -0
  148. package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +1 -0
  149. package/dist/focus-stage-lifecycle/review-convergence.js +235 -0
  150. package/dist/focus-stage-lifecycle/review-convergence.js.map +1 -0
  151. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +133 -0
  152. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -0
  153. package/dist/focus-stage-lifecycle/wedge-watchdog.js +365 -0
  154. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -0
  155. package/dist/focus-stage-lifecycle.d.ts +22 -403
  156. package/dist/focus-stage-lifecycle.d.ts.map +1 -1
  157. package/dist/focus-stage-lifecycle.js +26 -798
  158. package/dist/focus-stage-lifecycle.js.map +1 -1
  159. package/dist/{git-activity.d.ts → git/activity.d.ts} +1 -1
  160. package/dist/git/activity.d.ts.map +1 -0
  161. package/dist/{git-activity.js → git/activity.js} +2 -2
  162. package/dist/git/activity.js.map +1 -0
  163. package/dist/{git-branch.d.ts → git/branch.d.ts} +2 -2
  164. package/dist/git/branch.d.ts.map +1 -0
  165. package/dist/{git-branch.js → git/branch.js} +2 -2
  166. package/dist/git/branch.js.map +1 -0
  167. package/dist/{git-fetch.d.ts → git/fetch.d.ts} +2 -2
  168. package/dist/git/fetch.d.ts.map +1 -0
  169. package/dist/{git-fetch.js → git/fetch.js} +1 -1
  170. package/dist/git/fetch.js.map +1 -0
  171. package/dist/{git-genesis.d.ts → git/genesis.d.ts} +3 -3
  172. package/dist/git/genesis.d.ts.map +1 -0
  173. package/dist/{git-genesis.js → git/genesis.js} +5 -5
  174. package/dist/git/genesis.js.map +1 -0
  175. package/dist/git/index.d.ts +36 -0
  176. package/dist/git/index.d.ts.map +1 -0
  177. package/dist/git/index.js +36 -0
  178. package/dist/git/index.js.map +1 -0
  179. package/dist/{git-integration.d.ts → git/integration.d.ts} +2 -2
  180. package/dist/git/integration.d.ts.map +1 -0
  181. package/dist/{git-integration.js → git/integration.js} +4 -4
  182. package/dist/git/integration.js.map +1 -0
  183. package/dist/{git-merge-helpers.d.ts → git/merge-helpers.d.ts} +3 -3
  184. package/dist/git/merge-helpers.d.ts.map +1 -0
  185. package/dist/{git-merge-helpers.js → git/merge-helpers.js} +3 -3
  186. package/dist/git/merge-helpers.js.map +1 -0
  187. package/dist/{git-merge-lock.d.ts → git/merge-lock.d.ts} +1 -1
  188. package/dist/git/merge-lock.d.ts.map +1 -0
  189. package/dist/{git-merge-lock.js → git/merge-lock.js} +1 -1
  190. package/dist/git/merge-lock.js.map +1 -0
  191. package/dist/{git-merge-strategies.d.ts → git/merge-strategies.d.ts} +2 -2
  192. package/dist/git/merge-strategies.d.ts.map +1 -0
  193. package/dist/{git-merge-strategies.js → git/merge-strategies.js} +3 -3
  194. package/dist/git/merge-strategies.js.map +1 -0
  195. package/dist/{git-merge.d.ts → git/merge.d.ts} +4 -4
  196. package/dist/git/merge.d.ts.map +1 -0
  197. package/dist/{git-merge.js → git/merge.js} +4 -4
  198. package/dist/git/merge.js.map +1 -0
  199. package/dist/{git-state-detector.d.ts → git/state-detector.d.ts} +2 -2
  200. package/dist/git/state-detector.d.ts.map +1 -0
  201. package/dist/{git-state-detector.js → git/state-detector.js} +7 -7
  202. package/dist/git/state-detector.js.map +1 -0
  203. package/dist/{git-types.d.ts → git/types.d.ts} +2 -2
  204. package/dist/git/types.d.ts.map +1 -0
  205. package/dist/{git-types.js → git/types.js} +1 -1
  206. package/dist/git/types.js.map +1 -0
  207. package/dist/{git-utils.d.ts → git/utils.d.ts} +1 -1
  208. package/dist/git/utils.d.ts.map +1 -0
  209. package/dist/{git-utils.js → git/utils.js} +2 -2
  210. package/dist/git/utils.js.map +1 -0
  211. package/dist/git.d.ts +5 -5
  212. package/dist/git.d.ts.map +1 -1
  213. package/dist/git.js +10 -10
  214. package/dist/git.js.map +1 -1
  215. package/dist/guard-engine.d.ts +3 -2
  216. package/dist/guard-engine.d.ts.map +1 -1
  217. package/dist/guard-engine.js +2 -2
  218. package/dist/guard-engine.js.map +1 -1
  219. package/dist/install-probe-tick.d.ts +63 -0
  220. package/dist/install-probe-tick.d.ts.map +1 -0
  221. package/dist/install-probe-tick.js +137 -0
  222. package/dist/install-probe-tick.js.map +1 -0
  223. package/dist/install-probe.d.ts +115 -0
  224. package/dist/install-probe.d.ts.map +1 -0
  225. package/dist/install-probe.js +197 -0
  226. package/dist/install-probe.js.map +1 -0
  227. package/dist/listener-auto-advance.d.ts.map +1 -1
  228. package/dist/listener-auto-advance.js +51 -9
  229. package/dist/listener-auto-advance.js.map +1 -1
  230. package/dist/listener.d.ts.map +1 -1
  231. package/dist/listener.js +15 -7
  232. package/dist/listener.js.map +1 -1
  233. package/dist/{loop-context-audit-pass.d.ts → loops/context-audit-pass.d.ts} +4 -4
  234. package/dist/loops/context-audit-pass.d.ts.map +1 -0
  235. package/dist/{loop-context-audit-pass.js → loops/context-audit-pass.js} +7 -7
  236. package/dist/loops/context-audit-pass.js.map +1 -0
  237. package/dist/{loop-engine-types.d.ts → loops/engine-types.d.ts} +1 -1
  238. package/dist/loops/engine-types.d.ts.map +1 -0
  239. package/dist/{loop-engine-types.js → loops/engine-types.js} +1 -1
  240. package/dist/loops/engine-types.js.map +1 -0
  241. package/dist/{loop-engine.d.ts → loops/engine.d.ts} +6 -6
  242. package/dist/loops/engine.d.ts.map +1 -0
  243. package/dist/{loop-engine.js → loops/engine.js} +13 -13
  244. package/dist/loops/engine.js.map +1 -0
  245. package/dist/{loop-event-bus.d.ts → loops/event-bus.d.ts} +1 -1
  246. package/dist/loops/event-bus.d.ts.map +1 -0
  247. package/dist/{loop-event-bus.js → loops/event-bus.js} +1 -1
  248. package/dist/loops/event-bus.js.map +1 -0
  249. package/dist/loops/index.d.ts +33 -0
  250. package/dist/loops/index.d.ts.map +1 -0
  251. package/dist/loops/index.js +32 -0
  252. package/dist/loops/index.js.map +1 -0
  253. package/dist/{loop-llm-client.d.ts → loops/llm-client.d.ts} +3 -3
  254. package/dist/loops/llm-client.d.ts.map +1 -0
  255. package/dist/{loop-llm-client.js → loops/llm-client.js} +3 -3
  256. package/dist/loops/llm-client.js.map +1 -0
  257. package/dist/{loop-llm-flag.d.ts → loops/llm-flag.d.ts} +1 -1
  258. package/dist/loops/llm-flag.d.ts.map +1 -0
  259. package/dist/{loop-llm-flag.js → loops/llm-flag.js} +1 -1
  260. package/dist/loops/llm-flag.js.map +1 -0
  261. package/dist/{loop-operational-block.d.ts → loops/operational-block.d.ts} +1 -1
  262. package/dist/loops/operational-block.d.ts.map +1 -0
  263. package/dist/{loop-operational-block.js → loops/operational-block.js} +1 -1
  264. package/dist/loops/operational-block.js.map +1 -0
  265. package/dist/{loop-prompt-builder.d.ts → loops/prompt-builder.d.ts} +2 -2
  266. package/dist/loops/prompt-builder.d.ts.map +1 -0
  267. package/dist/{loop-prompt-builder.js → loops/prompt-builder.js} +1 -1
  268. package/dist/loops/prompt-builder.js.map +1 -0
  269. package/dist/{loop-variance.d.ts → loops/variance.d.ts} +1 -1
  270. package/dist/loops/variance.d.ts.map +1 -0
  271. package/dist/{loop-variance.js → loops/variance.js} +1 -1
  272. package/dist/loops/variance.js.map +1 -0
  273. package/dist/merge-back-loop.d.ts.map +1 -1
  274. package/dist/merge-back-loop.js +4 -3
  275. package/dist/merge-back-loop.js.map +1 -1
  276. package/dist/merge-detector.js +2 -2
  277. package/dist/merge-detector.js.map +1 -1
  278. package/dist/{nexus-endpoint-clearance.d.ts → nexus/endpoint-clearance.d.ts} +2 -2
  279. package/dist/nexus/endpoint-clearance.d.ts.map +1 -0
  280. package/dist/{nexus-endpoint-clearance.js → nexus/endpoint-clearance.js} +2 -2
  281. package/dist/nexus/endpoint-clearance.js.map +1 -0
  282. package/dist/{nexus-escalation-bridge.d.ts → nexus/escalation-bridge.d.ts} +1 -1
  283. package/dist/nexus/escalation-bridge.d.ts.map +1 -0
  284. package/dist/{nexus-escalation-bridge.js → nexus/escalation-bridge.js} +2 -2
  285. package/dist/nexus/escalation-bridge.js.map +1 -0
  286. package/dist/{nexus-incoming.d.ts → nexus/incoming.d.ts} +2 -2
  287. package/dist/nexus/incoming.d.ts.map +1 -0
  288. package/dist/{nexus-incoming.js → nexus/incoming.js} +2 -2
  289. package/dist/nexus/incoming.js.map +1 -0
  290. package/dist/nexus/index.d.ts +20 -0
  291. package/dist/nexus/index.d.ts.map +1 -0
  292. package/dist/nexus/index.js +20 -0
  293. package/dist/nexus/index.js.map +1 -0
  294. package/dist/{nexus-intake-spawn.d.ts → nexus/intake-spawn.d.ts} +3 -3
  295. package/dist/nexus/intake-spawn.d.ts.map +1 -0
  296. package/dist/{nexus-intake-spawn.js → nexus/intake-spawn.js} +1 -1
  297. package/dist/nexus/intake-spawn.js.map +1 -0
  298. package/dist/{nexus-intake.d.ts → nexus/intake.d.ts} +2 -2
  299. package/dist/nexus/intake.d.ts.map +1 -0
  300. package/dist/{nexus-intake.js → nexus/intake.js} +4 -4
  301. package/dist/nexus/intake.js.map +1 -0
  302. package/dist/{nexus-return.d.ts → nexus/return.d.ts} +3 -3
  303. package/dist/nexus/return.d.ts.map +1 -0
  304. package/dist/{nexus-return.js → nexus/return.js} +4 -4
  305. package/dist/nexus/return.js.map +1 -0
  306. package/dist/otlp/index.d.ts +19 -0
  307. package/dist/otlp/index.d.ts.map +1 -0
  308. package/dist/otlp/index.js +19 -0
  309. package/dist/otlp/index.js.map +1 -0
  310. package/dist/{otlp-log-parser.d.ts → otlp/log-parser.d.ts} +2 -2
  311. package/dist/otlp/log-parser.d.ts.map +1 -0
  312. package/dist/{otlp-log-parser.js → otlp/log-parser.js} +5 -6
  313. package/dist/otlp/log-parser.js.map +1 -0
  314. package/dist/{otlp-metric-parser.d.ts → otlp/metric-parser.d.ts} +2 -2
  315. package/dist/otlp/metric-parser.d.ts.map +1 -0
  316. package/dist/{otlp-metric-parser.js → otlp/metric-parser.js} +4 -5
  317. package/dist/otlp/metric-parser.js.map +1 -0
  318. package/dist/{otlp-port-manager.d.ts → otlp/port-manager.d.ts} +1 -1
  319. package/dist/otlp/port-manager.d.ts.map +1 -0
  320. package/dist/{otlp-port-manager.js → otlp/port-manager.js} +1 -1
  321. package/dist/otlp/port-manager.js.map +1 -0
  322. package/dist/{otlp-receiver.d.ts → otlp/receiver.d.ts} +2 -2
  323. package/dist/otlp/receiver.d.ts.map +1 -0
  324. package/dist/{otlp-receiver.js → otlp/receiver.js} +5 -33
  325. package/dist/otlp/receiver.js.map +1 -0
  326. package/dist/{otlp-types.d.ts → otlp/types.d.ts} +1 -9
  327. package/dist/otlp/types.d.ts.map +1 -0
  328. package/dist/{otlp-types.js → otlp/types.js} +1 -27
  329. package/dist/otlp/types.js.map +1 -0
  330. package/dist/pipeline-config.d.ts +1 -1
  331. package/dist/{prd-controller.d.ts → prd/controller.d.ts} +7 -7
  332. package/dist/prd/controller.d.ts.map +1 -0
  333. package/dist/{prd-controller.js → prd/controller.js} +11 -11
  334. package/dist/prd/controller.js.map +1 -0
  335. package/dist/{prd-divergence.d.ts → prd/divergence.d.ts} +2 -2
  336. package/dist/prd/divergence.d.ts.map +1 -0
  337. package/dist/{prd-divergence.js → prd/divergence.js} +1 -1
  338. package/dist/prd/divergence.js.map +1 -0
  339. package/dist/{prd-focus-pushdown.d.ts → prd/focus-pushdown.d.ts} +2 -2
  340. package/dist/prd/focus-pushdown.d.ts.map +1 -0
  341. package/dist/{prd-focus-pushdown.js → prd/focus-pushdown.js} +3 -3
  342. package/dist/prd/focus-pushdown.js.map +1 -0
  343. package/dist/{prd-frontier.d.ts → prd/frontier.d.ts} +2 -2
  344. package/dist/prd/frontier.d.ts.map +1 -0
  345. package/dist/{prd-frontier.js → prd/frontier.js} +1 -1
  346. package/dist/prd/frontier.js.map +1 -0
  347. package/dist/prd/index.d.ts +26 -0
  348. package/dist/prd/index.d.ts.map +1 -0
  349. package/dist/prd/index.js +25 -0
  350. package/dist/prd/index.js.map +1 -0
  351. package/dist/{prd-steward.d.ts → prd/steward.d.ts} +4 -4
  352. package/dist/prd/steward.d.ts.map +1 -0
  353. package/dist/{prd-steward.js → prd/steward.js} +4 -4
  354. package/dist/prd/steward.js.map +1 -0
  355. package/dist/{prd-viability.d.ts → prd/viability.d.ts} +2 -2
  356. package/dist/prd/viability.d.ts.map +1 -0
  357. package/dist/{prd-viability.js → prd/viability.js} +1 -1
  358. package/dist/prd/viability.js.map +1 -0
  359. package/dist/product-scaffold.js +2 -2
  360. package/dist/product-scaffold.js.map +1 -1
  361. package/dist/prompt-sections/persona-sections.d.ts +32 -0
  362. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  363. package/dist/prompt-sections/persona-sections.js +78 -2
  364. package/dist/prompt-sections/persona-sections.js.map +1 -1
  365. package/dist/queries/context-lock-queries.js +1 -1
  366. package/dist/queries/context-lock-queries.js.map +1 -1
  367. package/dist/queries/deliveries.d.ts +31 -0
  368. package/dist/queries/deliveries.d.ts.map +1 -1
  369. package/dist/queries/deliveries.js +5 -0
  370. package/dist/queries/deliveries.js.map +1 -1
  371. package/dist/queries/focuses.d.ts +17 -0
  372. package/dist/queries/focuses.d.ts.map +1 -1
  373. package/dist/queries/focuses.js +27 -0
  374. package/dist/queries/focuses.js.map +1 -1
  375. package/dist/queries/schemas.d.ts +8 -0
  376. package/dist/queries/schemas.d.ts.map +1 -1
  377. package/dist/queries/schemas.js +16 -0
  378. package/dist/queries/schemas.js.map +1 -1
  379. package/dist/reality-pole.js +1 -1
  380. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  381. package/dist/resolvers/git-diff-against-base.js +4 -1
  382. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  383. package/dist/resolvers/prd-context.js +1 -1
  384. package/dist/sensor-sweep.js +1 -1
  385. package/dist/spawn/model-routing.d.ts +277 -0
  386. package/dist/spawn/model-routing.d.ts.map +1 -0
  387. package/dist/spawn/model-routing.js +464 -0
  388. package/dist/spawn/model-routing.js.map +1 -0
  389. package/dist/spawn/process-spawn.d.ts +128 -0
  390. package/dist/spawn/process-spawn.d.ts.map +1 -0
  391. package/dist/spawn/process-spawn.js +378 -0
  392. package/dist/spawn/process-spawn.js.map +1 -0
  393. package/dist/spawn/prompt-assembly.d.ts +143 -0
  394. package/dist/spawn/prompt-assembly.d.ts.map +1 -0
  395. package/dist/spawn/prompt-assembly.js +263 -0
  396. package/dist/spawn/prompt-assembly.js.map +1 -0
  397. package/dist/spawn/shared.d.ts +72 -0
  398. package/dist/spawn/shared.d.ts.map +1 -0
  399. package/dist/spawn/shared.js +14 -0
  400. package/dist/spawn/shared.js.map +1 -0
  401. package/dist/spawn/spawn-decision.d.ts +189 -0
  402. package/dist/spawn/spawn-decision.d.ts.map +1 -0
  403. package/dist/spawn/spawn-decision.js +361 -0
  404. package/dist/spawn/spawn-decision.js.map +1 -0
  405. package/dist/spawn/worktree-session.d.ts +105 -0
  406. package/dist/spawn/worktree-session.d.ts.map +1 -0
  407. package/dist/spawn/worktree-session.js +216 -0
  408. package/dist/spawn/worktree-session.js.map +1 -0
  409. package/dist/spawner/lifecycle.js +2 -2
  410. package/dist/spawner/lifecycle.js.map +1 -1
  411. package/dist/spawner/resolution.js +1 -1
  412. package/dist/stall-detector-config.d.ts +4 -0
  413. package/dist/stall-detector-config.d.ts.map +1 -1
  414. package/dist/stall-detector-config.js +6 -0
  415. package/dist/stall-detector-config.js.map +1 -1
  416. package/dist/state-cascade.js +1 -1
  417. package/dist/state-cascade.js.map +1 -1
  418. package/dist/team-prompt-base.d.ts +1 -1
  419. package/dist/team-prompt-base.d.ts.map +1 -1
  420. package/dist/team-prompt-base.js +1 -1
  421. package/dist/team-prompt-base.js.map +1 -1
  422. package/dist/trigger-executor.d.ts +5 -9
  423. package/dist/trigger-executor.d.ts.map +1 -1
  424. package/dist/trigger-executor.js +14 -36
  425. package/dist/trigger-executor.js.map +1 -1
  426. package/dist/types/focus.d.ts +13 -0
  427. package/dist/types/focus.d.ts.map +1 -1
  428. package/dist/types/workflow.d.ts +1 -3
  429. package/dist/types/workflow.d.ts.map +1 -1
  430. package/dist/unified-engine-lifecycle.js +1 -1
  431. package/dist/unified-init.d.ts +3 -3
  432. package/dist/unified-init.d.ts.map +1 -1
  433. package/dist/unified-init.js +9 -25
  434. package/dist/unified-init.js.map +1 -1
  435. package/dist/unified-shell.d.ts +3 -3
  436. package/dist/unified-shell.js +4 -4
  437. package/dist/unified-shell.js.map +1 -1
  438. package/dist/verification-engine.d.ts.map +1 -1
  439. package/dist/verification-engine.js +15 -0
  440. package/dist/verification-engine.js.map +1 -1
  441. package/dist/{worktree-focus.d.ts → worktree/focus.d.ts} +2 -2
  442. package/dist/worktree/focus.d.ts.map +1 -0
  443. package/dist/{worktree-focus.js → worktree/focus.js} +7 -7
  444. package/dist/worktree/focus.js.map +1 -0
  445. package/dist/worktree/index.d.ts +16 -0
  446. package/dist/worktree/index.d.ts.map +1 -0
  447. package/dist/worktree/index.js +16 -0
  448. package/dist/worktree/index.js.map +1 -0
  449. package/dist/{worktree-safety.d.ts → worktree/safety.d.ts} +1 -1
  450. package/dist/worktree/safety.d.ts.map +1 -0
  451. package/dist/{worktree-safety.js → worktree/safety.js} +2 -2
  452. package/dist/worktree/safety.js.map +1 -0
  453. package/dist/{worktree-state.d.ts → worktree/state.d.ts} +1 -1
  454. package/dist/worktree/state.d.ts.map +1 -0
  455. package/dist/{worktree-state.js → worktree/state.js} +6 -6
  456. package/dist/worktree/state.js.map +1 -0
  457. package/dist/worktree.d.ts +1 -1
  458. package/dist/worktree.js +5 -5
  459. package/dist/worktree.js.map +1 -1
  460. package/package.json +5 -4
  461. package/dist/git-activity.d.ts.map +0 -1
  462. package/dist/git-activity.js.map +0 -1
  463. package/dist/git-branch.d.ts.map +0 -1
  464. package/dist/git-branch.js.map +0 -1
  465. package/dist/git-fetch.d.ts.map +0 -1
  466. package/dist/git-fetch.js.map +0 -1
  467. package/dist/git-genesis.d.ts.map +0 -1
  468. package/dist/git-genesis.js.map +0 -1
  469. package/dist/git-integration.d.ts.map +0 -1
  470. package/dist/git-integration.js.map +0 -1
  471. package/dist/git-merge-helpers.d.ts.map +0 -1
  472. package/dist/git-merge-helpers.js.map +0 -1
  473. package/dist/git-merge-lock.d.ts.map +0 -1
  474. package/dist/git-merge-lock.js.map +0 -1
  475. package/dist/git-merge-strategies.d.ts.map +0 -1
  476. package/dist/git-merge-strategies.js.map +0 -1
  477. package/dist/git-merge.d.ts.map +0 -1
  478. package/dist/git-merge.js.map +0 -1
  479. package/dist/git-state-detector.d.ts.map +0 -1
  480. package/dist/git-state-detector.js.map +0 -1
  481. package/dist/git-types.d.ts.map +0 -1
  482. package/dist/git-types.js.map +0 -1
  483. package/dist/git-utils.d.ts.map +0 -1
  484. package/dist/git-utils.js.map +0 -1
  485. package/dist/loop-context-audit-pass.d.ts.map +0 -1
  486. package/dist/loop-context-audit-pass.js.map +0 -1
  487. package/dist/loop-engine-types.d.ts.map +0 -1
  488. package/dist/loop-engine-types.js.map +0 -1
  489. package/dist/loop-engine.d.ts.map +0 -1
  490. package/dist/loop-engine.js.map +0 -1
  491. package/dist/loop-event-bus.d.ts.map +0 -1
  492. package/dist/loop-event-bus.js.map +0 -1
  493. package/dist/loop-llm-client.d.ts.map +0 -1
  494. package/dist/loop-llm-client.js.map +0 -1
  495. package/dist/loop-llm-flag.d.ts.map +0 -1
  496. package/dist/loop-llm-flag.js.map +0 -1
  497. package/dist/loop-operational-block.d.ts.map +0 -1
  498. package/dist/loop-operational-block.js.map +0 -1
  499. package/dist/loop-prompt-builder.d.ts.map +0 -1
  500. package/dist/loop-prompt-builder.js.map +0 -1
  501. package/dist/loop-variance.d.ts.map +0 -1
  502. package/dist/loop-variance.js.map +0 -1
  503. package/dist/nexus-endpoint-clearance.d.ts.map +0 -1
  504. package/dist/nexus-endpoint-clearance.js.map +0 -1
  505. package/dist/nexus-escalation-bridge.d.ts.map +0 -1
  506. package/dist/nexus-escalation-bridge.js.map +0 -1
  507. package/dist/nexus-incoming.d.ts.map +0 -1
  508. package/dist/nexus-incoming.js.map +0 -1
  509. package/dist/nexus-intake-spawn.d.ts.map +0 -1
  510. package/dist/nexus-intake-spawn.js.map +0 -1
  511. package/dist/nexus-intake.d.ts.map +0 -1
  512. package/dist/nexus-intake.js.map +0 -1
  513. package/dist/nexus-return.d.ts.map +0 -1
  514. package/dist/nexus-return.js.map +0 -1
  515. package/dist/otlp-log-parser.d.ts.map +0 -1
  516. package/dist/otlp-log-parser.js.map +0 -1
  517. package/dist/otlp-metric-parser.d.ts.map +0 -1
  518. package/dist/otlp-metric-parser.js.map +0 -1
  519. package/dist/otlp-port-manager.d.ts.map +0 -1
  520. package/dist/otlp-port-manager.js.map +0 -1
  521. package/dist/otlp-receiver.d.ts.map +0 -1
  522. package/dist/otlp-receiver.js.map +0 -1
  523. package/dist/otlp-types.d.ts.map +0 -1
  524. package/dist/otlp-types.js.map +0 -1
  525. package/dist/prd-controller.d.ts.map +0 -1
  526. package/dist/prd-controller.js.map +0 -1
  527. package/dist/prd-divergence.d.ts.map +0 -1
  528. package/dist/prd-divergence.js.map +0 -1
  529. package/dist/prd-focus-pushdown.d.ts.map +0 -1
  530. package/dist/prd-focus-pushdown.js.map +0 -1
  531. package/dist/prd-frontier.d.ts.map +0 -1
  532. package/dist/prd-frontier.js.map +0 -1
  533. package/dist/prd-steward.d.ts.map +0 -1
  534. package/dist/prd-steward.js.map +0 -1
  535. package/dist/prd-viability.d.ts.map +0 -1
  536. package/dist/prd-viability.js.map +0 -1
  537. package/dist/worktree-focus.d.ts.map +0 -1
  538. package/dist/worktree-focus.js.map +0 -1
  539. package/dist/worktree-safety.d.ts.map +0 -1
  540. package/dist/worktree-safety.js.map +0 -1
  541. package/dist/worktree-state.d.ts.map +0 -1
  542. package/dist/worktree-state.js.map +0 -1
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Cline harness config writers: the project-level Cline rules file and the
3
+ * Telora MCP registration in the Cline CLI settings. Extracted verbatim from
4
+ * `../connect.ts` and re-exported from there for import stability.
5
+ */
6
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { homedir } from 'node:os';
9
+ import { resolveMcpServerPath } from '../../mcp-resolution.js';
10
+ import { SEED_BODY, SEED_MCP_REGISTRATION_SENTENCE } from '../../templates/claude-md.js';
11
+ const CLINE_MCP_REGISTRATION_SENTENCE = 'The Telora MCP server is registered in `~/.cline/data/settings/cline_mcp_settings.json`.';
12
+ /**
13
+ * Render a project-level Cline rules file carrying the same Telora seed
14
+ * discipline as CLAUDE.md / AGENTS.md. Cline CLI reads project rules from
15
+ * `.cline/rules/`, so this is the operator-facing context equivalent for the
16
+ * Cline harness.
17
+ */
18
+ export function renderClineRules(inv) {
19
+ const productLabel = inv.productName ? `${inv.productName} (${inv.productId})` : inv.productId;
20
+ const body = SEED_BODY.replace(SEED_MCP_REGISTRATION_SENTENCE, CLINE_MCP_REGISTRATION_SENTENCE);
21
+ return (`# Telora Workstation\n\n` +
22
+ `This workstation is connected to Telora. The connection invariant is recorded here for Cline CLI sessions:\n\n` +
23
+ `- Telora URL: ${inv.teloraUrl}\n` +
24
+ `- Organization: ${inv.organizationId}\n` +
25
+ `- Product: ${productLabel}\n\n` +
26
+ body);
27
+ }
28
+ /**
29
+ * Write the Telora Cline project rules file. The file is owned by the connect
30
+ * flow, so re-runs replace it wholesale; user-authored Cline rules live beside
31
+ * it under `.cline/rules/`.
32
+ */
33
+ export function writeClineProjectRules(repoPath, inv, io) {
34
+ const dir = resolve(repoPath, '.cline', 'rules');
35
+ const path = resolve(dir, 'telora.md');
36
+ const content = renderClineRules(inv);
37
+ if (!existsSync(dir))
38
+ mkdirSync(dir, { recursive: true });
39
+ if (existsSync(path) && readFileSync(path, 'utf-8') === content)
40
+ return;
41
+ writeFileSync(path, content);
42
+ io.out(`Wrote ${path}.\n`);
43
+ }
44
+ /**
45
+ * Render the Cline CLI MCP config object. Current Cline CLI documentation
46
+ * stores MCP settings under `~/.cline/data/settings/cline_mcp_settings.json`
47
+ * with a top-level `mcpServers` map.
48
+ *
49
+ * Carries the MCP profile ONLY -- never workstation identity. Like the
50
+ * `.mcp.json` and Codex builders, identity (`TELORA_URL` / `TELORA_TRACKER_ID`)
51
+ * resolves from the single source `~/.telora/daemon.json` via the MCP server's
52
+ * `loadCredentials()` fallback; a persisted copy here would only drift.
53
+ */
54
+ export function renderClineMcpSettings(params) {
55
+ return {
56
+ mcpServers: {
57
+ telora: {
58
+ command: 'node',
59
+ args: [params.mcpServerPath],
60
+ env: {
61
+ TELORA_MCP_PROFILE: 'human',
62
+ },
63
+ disabled: false,
64
+ autoApprove: [],
65
+ },
66
+ },
67
+ };
68
+ }
69
+ export function writeOrMergeClineMcpSettings(io, params = {}) {
70
+ let mcpServerPath;
71
+ try {
72
+ mcpServerPath = resolveMcpServerPath();
73
+ }
74
+ catch (err) {
75
+ io.err(`Warning: could not resolve @telora/mcp-products; skipping Cline MCP registration: ${err instanceof Error ? err.message : String(err)}\n`);
76
+ return;
77
+ }
78
+ const home = params.homeOverride ?? homedir();
79
+ const dir = resolve(home, '.cline', 'data', 'settings');
80
+ const path = resolve(dir, 'cline_mcp_settings.json');
81
+ const desired = renderClineMcpSettings({ mcpServerPath });
82
+ if (!existsSync(dir))
83
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
84
+ let parsed = {};
85
+ if (existsSync(path)) {
86
+ try {
87
+ const raw = readFileSync(path, 'utf-8');
88
+ const candidate = JSON.parse(raw);
89
+ if (candidate && typeof candidate === 'object' && !Array.isArray(candidate)) {
90
+ parsed = candidate;
91
+ }
92
+ }
93
+ catch (err) {
94
+ io.err(`Warning: ${path} is not valid JSON; leaving it alone: ${err instanceof Error ? err.message : String(err)}\n`);
95
+ return;
96
+ }
97
+ }
98
+ const existingServers = parsed.mcpServers && typeof parsed.mcpServers === 'object' && !Array.isArray(parsed.mcpServers)
99
+ ? parsed.mcpServers
100
+ : {};
101
+ const desiredServers = desired.mcpServers;
102
+ const next = {
103
+ ...parsed,
104
+ mcpServers: {
105
+ ...existingServers,
106
+ telora: desiredServers.telora,
107
+ },
108
+ };
109
+ const content = JSON.stringify(next, null, 2) + '\n';
110
+ if (existsSync(path) && readFileSync(path, 'utf-8') === content)
111
+ return;
112
+ writeFileSync(path, content, { mode: 0o600 });
113
+ io.out(`Registered Telora MCP server in ${path}.\n`);
114
+ }
115
+ //# sourceMappingURL=cline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline.js","sourceRoot":"","sources":["../../../src/cli/connect/cline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAIzF,MAAM,+BAA+B,GACnC,0FAA0F,CAAC;AAE7F;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAgC;IAC/D,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/F,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAC5B,8BAA8B,EAC9B,+BAA+B,CAChC,CAAC;IACF,OAAO,CACL,0BAA0B;QAC1B,gHAAgH;QAChH,iBAAiB,GAAG,CAAC,SAAS,IAAI;QAClC,mBAAmB,GAAG,CAAC,cAAc,IAAI;QACzC,cAAc,YAAY,MAAM;QAChC,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,GAAgC,EAChC,EAAa;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,OAAO;QAAE,OAAO;IACxE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAEtC;IACC,OAAO;QACL,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC5B,GAAG,EAAE;oBACH,kBAAkB,EAAE,OAAO;iBAC5B;gBACD,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,EAAE;aAChB;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,EAAa,EACb,SAAoC,EAAE;IAEtC,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,oBAAoB,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,EAAE,CAAC,GAAG,CACJ,qFACE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,IAAI,CACL,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,OAAO,EAAE,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvE,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5E,MAAM,GAAG,SAAoC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,EAAE,CAAC,GAAG,CACJ,YAAY,IAAI,yCACd,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,IAAI,CACL,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GACnB,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;QAC7F,CAAC,CAAE,MAAM,CAAC,UAAsC;QAChD,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,cAAc,GAAG,OAAO,CAAC,UAAqC,CAAC;IACrE,MAAM,IAAI,GAAG;QACX,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,eAAe;YAClB,MAAM,EAAE,cAAc,CAAC,MAAM;SAC9B;KACF,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAErD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,OAAO;QAAE,OAAO;IACxE,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9C,EAAE,CAAC,GAAG,CAAC,mCAAmC,IAAI,KAAK,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Codex harness config writer: registration of the Telora MCP server in the
3
+ * operator's personal `~/.codex/config.toml`. Extracted verbatim from
4
+ * `../connect.ts` and re-exported from there for import stability.
5
+ */
6
+ import type { ConnectIO } from './shared.js';
7
+ /**
8
+ * Render the delimited Telora MCP block for the operator's personal
9
+ * `~/.codex/config.toml`. Mirrors the `.mcp.json` shape (command=node + the
10
+ * resolved abs path to @telora/mcp-products) but as a TOML `[mcp_servers.telora]`
11
+ * table, the form Codex reads. Profile is `human` (operator-interactive),
12
+ * matching the `.mcp.json` the Claude path writes.
13
+ *
14
+ * Carries the MCP profile ONLY -- never workstation identity. Identity
15
+ * (`TELORA_URL` / `TELORA_TRACKER_ID`) resolves from the single source
16
+ * `~/.telora/daemon.json` via the MCP server's `loadCredentials()` fallback,
17
+ * so a persisted copy here would only be a drift hazard. Keeping it out is the
18
+ * single-source invariant (the `.mcp.json` builder omits it for the same
19
+ * reason).
20
+ *
21
+ * Values are emitted as JSON-encoded TOML string literals, which is valid TOML
22
+ * for the path value we control here.
23
+ */
24
+ export declare function renderCodexMcpBlock(params: {
25
+ mcpServerPath: string;
26
+ }): string;
27
+ /**
28
+ * Register the Telora MCP server in the operator's personal
29
+ * `~/.codex/config.toml` (NOT the per-product execution CODEX_HOME -- that is
30
+ * `codex-provision.ts`, a separate concern). This is what makes the Telora
31
+ * tool surface reachable from the operator's interactive Codex chat.
32
+ *
33
+ * Idempotent delimited merge, mirroring `writeOrMergeClaudeMd`: replace the
34
+ * `# BEGIN/END TELORA MCP` block in place if present, append it if absent,
35
+ * never duplicate. When the computed content equals what is on disk, NO write
36
+ * occurs. `homeOverride` lets tests target a temp HOME.
37
+ *
38
+ * Best-effort: if the MCP package cannot be resolved, prints a warning and
39
+ * returns without touching the file (the connect flow must not abort).
40
+ */
41
+ export declare function writeOrMergeCodexMcpToml(io: ConnectIO, params?: {
42
+ homeOverride?: string;
43
+ }): void;
44
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/cli/connect/codex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAWT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,SAAS,EACb,MAAM,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACrC,IAAI,CA0DN"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Codex harness config writer: registration of the Telora MCP server in the
3
+ * operator's personal `~/.codex/config.toml`. Extracted verbatim from
4
+ * `../connect.ts` and re-exported from there for import stability.
5
+ */
6
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { homedir } from 'node:os';
9
+ import { resolveMcpServerPath } from '../../mcp-resolution.js';
10
+ // Delimiter comments wrapping the Telora MCP block in the operator's
11
+ // ~/.codex/config.toml. TOML comments start with '#', so these are inert to
12
+ // the parser yet let us replace exactly our block on re-runs.
13
+ const TELORA_CODEX_MCP_BEGIN = '# BEGIN TELORA MCP';
14
+ const TELORA_CODEX_MCP_END = '# END TELORA MCP';
15
+ /**
16
+ * Render the delimited Telora MCP block for the operator's personal
17
+ * `~/.codex/config.toml`. Mirrors the `.mcp.json` shape (command=node + the
18
+ * resolved abs path to @telora/mcp-products) but as a TOML `[mcp_servers.telora]`
19
+ * table, the form Codex reads. Profile is `human` (operator-interactive),
20
+ * matching the `.mcp.json` the Claude path writes.
21
+ *
22
+ * Carries the MCP profile ONLY -- never workstation identity. Identity
23
+ * (`TELORA_URL` / `TELORA_TRACKER_ID`) resolves from the single source
24
+ * `~/.telora/daemon.json` via the MCP server's `loadCredentials()` fallback,
25
+ * so a persisted copy here would only be a drift hazard. Keeping it out is the
26
+ * single-source invariant (the `.mcp.json` builder omits it for the same
27
+ * reason).
28
+ *
29
+ * Values are emitted as JSON-encoded TOML string literals, which is valid TOML
30
+ * for the path value we control here.
31
+ */
32
+ export function renderCodexMcpBlock(params) {
33
+ const lines = [
34
+ TELORA_CODEX_MCP_BEGIN,
35
+ `[mcp_servers.telora]`,
36
+ `command = "node"`,
37
+ `args = [${JSON.stringify(params.mcpServerPath)}]`,
38
+ `[mcp_servers.telora.env]`,
39
+ `TELORA_MCP_PROFILE = "human"`,
40
+ TELORA_CODEX_MCP_END,
41
+ ];
42
+ return lines.join('\n') + '\n';
43
+ }
44
+ /**
45
+ * Register the Telora MCP server in the operator's personal
46
+ * `~/.codex/config.toml` (NOT the per-product execution CODEX_HOME -- that is
47
+ * `codex-provision.ts`, a separate concern). This is what makes the Telora
48
+ * tool surface reachable from the operator's interactive Codex chat.
49
+ *
50
+ * Idempotent delimited merge, mirroring `writeOrMergeClaudeMd`: replace the
51
+ * `# BEGIN/END TELORA MCP` block in place if present, append it if absent,
52
+ * never duplicate. When the computed content equals what is on disk, NO write
53
+ * occurs. `homeOverride` lets tests target a temp HOME.
54
+ *
55
+ * Best-effort: if the MCP package cannot be resolved, prints a warning and
56
+ * returns without touching the file (the connect flow must not abort).
57
+ */
58
+ export function writeOrMergeCodexMcpToml(io, params = {}) {
59
+ let mcpServerPath;
60
+ try {
61
+ mcpServerPath = resolveMcpServerPath();
62
+ }
63
+ catch (err) {
64
+ io.err(`Warning: could not resolve @telora/mcp-products; skipping Codex MCP registration: ${err instanceof Error ? err.message : String(err)}\n`);
65
+ return;
66
+ }
67
+ const home = params.homeOverride ?? homedir();
68
+ const dir = resolve(home, '.codex');
69
+ const path = resolve(dir, 'config.toml');
70
+ const block = renderCodexMcpBlock({ mcpServerPath });
71
+ if (!existsSync(dir))
72
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
73
+ if (!existsSync(path)) {
74
+ writeFileSync(path, block, { mode: 0o600 });
75
+ io.out(`Wrote ${path}.\n`);
76
+ return;
77
+ }
78
+ const existing = readFileSync(path, 'utf-8');
79
+ const beginIdx = existing.indexOf(TELORA_CODEX_MCP_BEGIN);
80
+ let newContent;
81
+ let message;
82
+ if (beginIdx === -1) {
83
+ const sep = existing.endsWith('\n') ? '\n' : '\n\n';
84
+ newContent = existing.trimEnd().length === 0 ? block : existing + sep + block;
85
+ message = `Registered Telora MCP server in ${path}.\n`;
86
+ }
87
+ else {
88
+ const endIdx = existing.indexOf(TELORA_CODEX_MCP_END, beginIdx);
89
+ if (endIdx === -1) {
90
+ const sep = existing.endsWith('\n') ? '\n' : '\n\n';
91
+ newContent = existing + sep + block;
92
+ message = `Registered Telora MCP server in ${path} (prior block was malformed).\n`;
93
+ }
94
+ else {
95
+ const after = endIdx + TELORA_CODEX_MCP_END.length;
96
+ const trailingNewline = existing[after] === '\n' ? 1 : 0;
97
+ newContent =
98
+ existing.slice(0, beginIdx) +
99
+ block.trimEnd() +
100
+ '\n' +
101
+ existing.slice(after + trailingNewline);
102
+ message = `Refreshed Telora MCP server registration in ${path}.\n`;
103
+ }
104
+ }
105
+ // Idempotency guard: skip the write when nothing would change.
106
+ if (newContent === existing)
107
+ return;
108
+ writeFileSync(path, newContent, { mode: 0o600 });
109
+ io.out(message);
110
+ }
111
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/cli/connect/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * IDE (cursor / vscode) harness config writers: the project MCP config and the
3
+ * combined AGENTS.md + MCP scaffolding. Extracted verbatim from `../connect.ts`
4
+ * and re-exported from there for import stability.
5
+ */
6
+ import type { AgentsMdConnectionInvariant } from '../../templates/agents-md.js';
7
+ import type { ConnectIO } from './shared.js';
8
+ /**
9
+ * Default `TELORA_MCP_PRELOAD` for the IDE harnesses (cursor / vscode).
10
+ *
11
+ * Static-surface clients ignore `tools/list_changed`, so `telora_discover`
12
+ * lazy-loading never becomes callable mid-session -- they need the domains
13
+ * they will actually use registered at startup. This modest set (escalations,
14
+ * wiki, reality-tree planning) covers inspection + light-operator work while
15
+ * keeping the active tool surface under the ~40-tool ceiling those clients
16
+ * impose. Operators can widen it by editing the generated MCP config.
17
+ */
18
+ export declare const DEFAULT_IDE_HARNESS_PRELOAD = "agent,wiki,reality_trees";
19
+ /** IDE (cursor / vscode) harness kinds -- the subset that writes a project MCP config. */
20
+ export type IdeHarness = 'cursor' | 'vscode';
21
+ /**
22
+ * The MCP-registration sentence spliced into the AGENTS.md seed body for each
23
+ * IDE harness. Both Cursor and VS Code read AGENTS.md natively, but they load
24
+ * MCP from different project files, so the seeded discipline must name the
25
+ * right one. (`renderAgentsMd` defaults to the Codex `~/.codex/config.toml`
26
+ * location; these override it.)
27
+ */
28
+ export declare const IDE_MCP_REGISTRATION_SENTENCE: Record<IdeHarness, string>;
29
+ /** Project-relative path of the MCP config file for each IDE harness. */
30
+ export declare const IDE_MCP_CONFIG_PATH: Record<IdeHarness, string>;
31
+ /**
32
+ * Build the project-level MCP config object for an IDE harness.
33
+ *
34
+ * Cursor reads `.cursor/mcp.json` with a top-level `mcpServers` map (the same
35
+ * shape as `.mcp.json`). VS Code reads `.vscode/mcp.json` with a top-level
36
+ * `servers` map whose entries declare `type: "stdio"`.
37
+ *
38
+ * Both carry the MCP profile + domain-preload env ONLY -- never workstation
39
+ * identity. Identity (`TELORA_URL` / `TELORA_TRACKER_ID`) resolves from the
40
+ * single source `~/.telora/daemon.json` via the MCP server's
41
+ * `loadCredentials()` fallback, so a persisted copy here would only drift --
42
+ * the same single-source invariant the `.mcp.json` / Codex / Cline builders
43
+ * hold. The preload env is what makes these static-surface clients usable:
44
+ * it registers the named domains at startup rather than via `telora_discover`.
45
+ */
46
+ export declare function renderIdeMcpConfig(kind: IdeHarness, params: {
47
+ mcpServerPath: string;
48
+ preload: string;
49
+ }): Record<string, unknown>;
50
+ /**
51
+ * Write the Telora project MCP config for an IDE harness (`.cursor/mcp.json`
52
+ * or `.vscode/mcp.json`).
53
+ *
54
+ * Idempotent JSON merge, mirroring `writeOrMergeClineMcpSettings`: preserve any
55
+ * user-authored server entries, replace only the `telora` key, and skip the
56
+ * write when nothing would change. Best-effort: if the MCP package cannot be
57
+ * resolved, prints a warning and returns without touching the file (the connect
58
+ * flow must not abort). `params.preload` defaults to `DEFAULT_IDE_HARNESS_PRELOAD`.
59
+ */
60
+ export declare function writeIdeMcpConfig(repoPath: string, kind: IdeHarness, io: ConnectIO, params?: {
61
+ preload?: string;
62
+ }): void;
63
+ /**
64
+ * Write the full IDE-harness scaffolding (AGENTS.md seed + project MCP config)
65
+ * for `cursor` or `vscode`. Extracted so both `connect --harness <ide>` and the
66
+ * token-free `harness add <ide>` verb write byte-identical output.
67
+ */
68
+ export declare function writeIdeHarnessScaffolding(repoPath: string, kind: IdeHarness, inv: AgentsMdConnectionInvariant, io: ConnectIO): void;
69
+ //# sourceMappingURL=ide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide.d.ts","sourceRoot":"","sources":["../../../src/cli/connect/ide.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE,0FAA0F;AAC1F,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAGpE,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAG1D,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,SAAS,EACb,MAAM,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,IAAI,CAsDN;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,2BAA2B,EAChC,EAAE,EAAE,SAAS,GACZ,IAAI,CAON"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * IDE (cursor / vscode) harness config writers: the project MCP config and the
3
+ * combined AGENTS.md + MCP scaffolding. Extracted verbatim from `../connect.ts`
4
+ * and re-exported from there for import stability.
5
+ */
6
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { resolveMcpServerPath } from '../../mcp-resolution.js';
9
+ import { writeOrMergeAgentsMd } from './agents.js';
10
+ /**
11
+ * Default `TELORA_MCP_PRELOAD` for the IDE harnesses (cursor / vscode).
12
+ *
13
+ * Static-surface clients ignore `tools/list_changed`, so `telora_discover`
14
+ * lazy-loading never becomes callable mid-session -- they need the domains
15
+ * they will actually use registered at startup. This modest set (escalations,
16
+ * wiki, reality-tree planning) covers inspection + light-operator work while
17
+ * keeping the active tool surface under the ~40-tool ceiling those clients
18
+ * impose. Operators can widen it by editing the generated MCP config.
19
+ */
20
+ export const DEFAULT_IDE_HARNESS_PRELOAD = 'agent,wiki,reality_trees';
21
+ /**
22
+ * The MCP-registration sentence spliced into the AGENTS.md seed body for each
23
+ * IDE harness. Both Cursor and VS Code read AGENTS.md natively, but they load
24
+ * MCP from different project files, so the seeded discipline must name the
25
+ * right one. (`renderAgentsMd` defaults to the Codex `~/.codex/config.toml`
26
+ * location; these override it.)
27
+ */
28
+ export const IDE_MCP_REGISTRATION_SENTENCE = {
29
+ cursor: 'The Telora MCP server is registered in `.cursor/mcp.json`.',
30
+ vscode: 'The Telora MCP server is registered in `.vscode/mcp.json`.',
31
+ };
32
+ /** Project-relative path of the MCP config file for each IDE harness. */
33
+ export const IDE_MCP_CONFIG_PATH = {
34
+ cursor: '.cursor/mcp.json',
35
+ vscode: '.vscode/mcp.json',
36
+ };
37
+ /**
38
+ * Build the project-level MCP config object for an IDE harness.
39
+ *
40
+ * Cursor reads `.cursor/mcp.json` with a top-level `mcpServers` map (the same
41
+ * shape as `.mcp.json`). VS Code reads `.vscode/mcp.json` with a top-level
42
+ * `servers` map whose entries declare `type: "stdio"`.
43
+ *
44
+ * Both carry the MCP profile + domain-preload env ONLY -- never workstation
45
+ * identity. Identity (`TELORA_URL` / `TELORA_TRACKER_ID`) resolves from the
46
+ * single source `~/.telora/daemon.json` via the MCP server's
47
+ * `loadCredentials()` fallback, so a persisted copy here would only drift --
48
+ * the same single-source invariant the `.mcp.json` / Codex / Cline builders
49
+ * hold. The preload env is what makes these static-surface clients usable:
50
+ * it registers the named domains at startup rather than via `telora_discover`.
51
+ */
52
+ export function renderIdeMcpConfig(kind, params) {
53
+ const env = {
54
+ TELORA_MCP_PROFILE: 'human',
55
+ TELORA_MCP_PRELOAD: params.preload,
56
+ };
57
+ if (kind === 'cursor') {
58
+ return {
59
+ mcpServers: {
60
+ telora: { command: 'node', args: [params.mcpServerPath], env },
61
+ },
62
+ };
63
+ }
64
+ return {
65
+ servers: {
66
+ telora: { type: 'stdio', command: 'node', args: [params.mcpServerPath], env },
67
+ },
68
+ };
69
+ }
70
+ /**
71
+ * Write the Telora project MCP config for an IDE harness (`.cursor/mcp.json`
72
+ * or `.vscode/mcp.json`).
73
+ *
74
+ * Idempotent JSON merge, mirroring `writeOrMergeClineMcpSettings`: preserve any
75
+ * user-authored server entries, replace only the `telora` key, and skip the
76
+ * write when nothing would change. Best-effort: if the MCP package cannot be
77
+ * resolved, prints a warning and returns without touching the file (the connect
78
+ * flow must not abort). `params.preload` defaults to `DEFAULT_IDE_HARNESS_PRELOAD`.
79
+ */
80
+ export function writeIdeMcpConfig(repoPath, kind, io, params = {}) {
81
+ let mcpServerPath;
82
+ try {
83
+ mcpServerPath = resolveMcpServerPath();
84
+ }
85
+ catch (err) {
86
+ io.err(`Warning: could not resolve @telora/mcp-products; skipping ${kind} MCP registration: ${err instanceof Error ? err.message : String(err)}\n`);
87
+ return;
88
+ }
89
+ const dir = resolve(repoPath, kind === 'cursor' ? '.cursor' : '.vscode');
90
+ const path = resolve(dir, 'mcp.json');
91
+ const mapKey = kind === 'cursor' ? 'mcpServers' : 'servers';
92
+ const desired = renderIdeMcpConfig(kind, {
93
+ mcpServerPath,
94
+ preload: params.preload ?? DEFAULT_IDE_HARNESS_PRELOAD,
95
+ });
96
+ if (!existsSync(dir))
97
+ mkdirSync(dir, { recursive: true });
98
+ let parsed = {};
99
+ if (existsSync(path)) {
100
+ try {
101
+ const candidate = JSON.parse(readFileSync(path, 'utf-8'));
102
+ if (candidate && typeof candidate === 'object' && !Array.isArray(candidate)) {
103
+ parsed = candidate;
104
+ }
105
+ }
106
+ catch (err) {
107
+ io.err(`Warning: ${path} is not valid JSON; leaving it alone: ${err instanceof Error ? err.message : String(err)}\n`);
108
+ return;
109
+ }
110
+ }
111
+ const existingServers = parsed[mapKey] && typeof parsed[mapKey] === 'object' && !Array.isArray(parsed[mapKey])
112
+ ? parsed[mapKey]
113
+ : {};
114
+ const desiredServers = desired[mapKey];
115
+ const next = {
116
+ ...parsed,
117
+ [mapKey]: { ...existingServers, telora: desiredServers.telora },
118
+ };
119
+ const content = JSON.stringify(next, null, 2) + '\n';
120
+ if (existsSync(path) && readFileSync(path, 'utf-8') === content)
121
+ return;
122
+ writeFileSync(path, content);
123
+ io.out(`Registered Telora MCP server in ${path}.\n`);
124
+ }
125
+ /**
126
+ * Write the full IDE-harness scaffolding (AGENTS.md seed + project MCP config)
127
+ * for `cursor` or `vscode`. Extracted so both `connect --harness <ide>` and the
128
+ * token-free `harness add <ide>` verb write byte-identical output.
129
+ */
130
+ export function writeIdeHarnessScaffolding(repoPath, kind, inv, io) {
131
+ writeOrMergeAgentsMd(repoPath, { ...inv, mcpRegistrationSentence: IDE_MCP_REGISTRATION_SENTENCE[kind] }, io);
132
+ writeIdeMcpConfig(repoPath, kind, io);
133
+ }
134
+ //# sourceMappingURL=ide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide.js","sourceRoot":"","sources":["../../../src/cli/connect/ide.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Per-harness scaffolding dispatcher + the harness-specific `.gitignore`
3
+ * entries. This is the ONE place the per-harness writer set is dispatched.
4
+ * Extracted verbatim from `../connect.ts` and re-exported from there for import
5
+ * stability.
6
+ */
7
+ import type { AgentsMdConnectionInvariant } from '../../templates/agents-md.js';
8
+ import type { ConnectIO, OperatorHarness } from './shared.js';
9
+ /**
10
+ * The `.gitignore` entries a harness's scaffolding requires beyond the always-
11
+ * added `.telora/` + `.mcp.json`. Only the IDE harnesses add a project MCP
12
+ * config (per-user-machine, absolute path -> not shared).
13
+ */
14
+ export declare function harnessGitignoreEntries(harness: OperatorHarness): string[];
15
+ /**
16
+ * Write the harness-specific agent scaffolding for the chosen operator harness.
17
+ * This is the ONE place the per-harness writer set is dispatched, so both
18
+ * `connect --harness <h>` and the token-free `harness add <h>` verb produce
19
+ * byte-identical output for a given identity.
20
+ *
21
+ * - claude: CLAUDE.md + .claude/settings.json
22
+ * - codex: AGENTS.md + Telora MCP in ~/.codex/config.toml
23
+ * - cline: .cline/rules/telora.md + Telora MCP in ~/.cline settings
24
+ * - cursor: AGENTS.md + .cursor/mcp.json (preload env)
25
+ * - vscode: AGENTS.md + .vscode/mcp.json (preload env)
26
+ *
27
+ * Does NOT touch `.gitignore` -- callers pair this with
28
+ * `ensureGitignoreEntries(repoPath, io, harnessGitignoreEntries(harness))`.
29
+ */
30
+ export declare function writeHarnessScaffolding(repoPath: string, harness: OperatorHarness, inv: AgentsMdConnectionInvariant, io: ConnectIO): void;
31
+ //# sourceMappingURL=scaffolding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffolding.d.ts","sourceRoot":"","sources":["../../../src/cli/connect/scaffolding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAE1E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,2BAA2B,EAChC,EAAE,EAAE,SAAS,GACZ,IAAI,CAaN"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Per-harness scaffolding dispatcher + the harness-specific `.gitignore`
3
+ * entries. This is the ONE place the per-harness writer set is dispatched.
4
+ * Extracted verbatim from `../connect.ts` and re-exported from there for import
5
+ * stability.
6
+ */
7
+ import { writeOrMergeClaudeMd, writeOrMergeClaudeSettings } from './claude.js';
8
+ import { writeOrMergeAgentsMd } from './agents.js';
9
+ import { writeOrMergeCodexMcpToml } from './codex.js';
10
+ import { writeClineProjectRules, writeOrMergeClineMcpSettings } from './cline.js';
11
+ import { IDE_MCP_CONFIG_PATH, writeIdeHarnessScaffolding } from './ide.js';
12
+ /**
13
+ * The `.gitignore` entries a harness's scaffolding requires beyond the always-
14
+ * added `.telora/` + `.mcp.json`. Only the IDE harnesses add a project MCP
15
+ * config (per-user-machine, absolute path -> not shared).
16
+ */
17
+ export function harnessGitignoreEntries(harness) {
18
+ return harness === 'cursor' || harness === 'vscode' ? [IDE_MCP_CONFIG_PATH[harness]] : [];
19
+ }
20
+ /**
21
+ * Write the harness-specific agent scaffolding for the chosen operator harness.
22
+ * This is the ONE place the per-harness writer set is dispatched, so both
23
+ * `connect --harness <h>` and the token-free `harness add <h>` verb produce
24
+ * byte-identical output for a given identity.
25
+ *
26
+ * - claude: CLAUDE.md + .claude/settings.json
27
+ * - codex: AGENTS.md + Telora MCP in ~/.codex/config.toml
28
+ * - cline: .cline/rules/telora.md + Telora MCP in ~/.cline settings
29
+ * - cursor: AGENTS.md + .cursor/mcp.json (preload env)
30
+ * - vscode: AGENTS.md + .vscode/mcp.json (preload env)
31
+ *
32
+ * Does NOT touch `.gitignore` -- callers pair this with
33
+ * `ensureGitignoreEntries(repoPath, io, harnessGitignoreEntries(harness))`.
34
+ */
35
+ export function writeHarnessScaffolding(repoPath, harness, inv, io) {
36
+ if (harness === 'codex') {
37
+ writeOrMergeAgentsMd(repoPath, inv, io);
38
+ writeOrMergeCodexMcpToml(io);
39
+ }
40
+ else if (harness === 'cline') {
41
+ writeClineProjectRules(repoPath, inv, io);
42
+ writeOrMergeClineMcpSettings(io);
43
+ }
44
+ else if (harness === 'cursor' || harness === 'vscode') {
45
+ writeIdeHarnessScaffolding(repoPath, harness, inv, io);
46
+ }
47
+ else {
48
+ writeOrMergeClaudeMd(repoPath, inv.productName ?? null, io);
49
+ writeOrMergeClaudeSettings(repoPath, io);
50
+ }
51
+ }
52
+ //# sourceMappingURL=scaffolding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../../src/cli/connect/scaffolding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3E;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgB,EAChB,OAAwB,EACxB,GAAgC,EAChC,EAAa;IAEb,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACxC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1C,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxD,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5D,0BAA0B,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Shared types + helpers for the connect-flow per-harness config writers.
3
+ *
4
+ * These live here (rather than in `../connect.ts`) so the per-harness writer
5
+ * modules under `connect/` can depend on them WITHOUT importing from
6
+ * `../connect.ts` -- which itself re-exports the writers, so that would be an
7
+ * import cycle. `connect.ts` imports these from here too; the dependency edge
8
+ * only ever points connect.ts -> connect/shared.ts, never back.
9
+ */
10
+ export interface ConnectIO {
11
+ /** stdout writer (defaults to process.stdout.write). */
12
+ out: (msg: string) => void;
13
+ /** stderr writer (defaults to process.stderr.write). */
14
+ err: (msg: string) => void;
15
+ /** Fetch implementation (defaults to globalThis.fetch). */
16
+ fetch: typeof fetch;
17
+ }
18
+ /**
19
+ * The operator's chosen INTERACTIVE harness for the declare-intent workflow.
20
+ * This is independent of the daemon's per-product execution engine (which is
21
+ * resolved separately, from product config). `claude` is the default and its
22
+ * scaffolding path is byte-for-byte unchanged from before this option existed.
23
+ *
24
+ * `cursor` and `vscode` are inspection-and-light-operator IDE harnesses: both
25
+ * read AGENTS.md natively and take a project MCP config (`.cursor/mcp.json` /
26
+ * `.vscode/mcp.json`) carrying the domain-preload env so a static-surface
27
+ * client lands with a deterministic tool set under its ~40-tool ceiling.
28
+ */
29
+ export type OperatorHarness = 'claude' | 'codex' | 'cline' | 'cursor' | 'vscode';
30
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/cli/connect/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,wDAAwD;IACxD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,2DAA2D;IAC3D,KAAK,EAAE,OAAO,KAAK,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shared types + helpers for the connect-flow per-harness config writers.
3
+ *
4
+ * These live here (rather than in `../connect.ts`) so the per-harness writer
5
+ * modules under `connect/` can depend on them WITHOUT importing from
6
+ * `../connect.ts` -- which itself re-exports the writers, so that would be an
7
+ * import cycle. `connect.ts` imports these from here too; the dependency edge
8
+ * only ever points connect.ts -> connect/shared.ts, never back.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=shared.js.map