takt 0.41.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +59 -28
  2. package/builtins/en/config.yaml +9 -1
  3. package/builtins/en/facets/instructions/dual-team-leader-implement.md +7 -2
  4. package/builtins/en/facets/instructions/fix-maintenance.md +43 -0
  5. package/builtins/en/facets/instructions/implement-maintenance.md +72 -0
  6. package/builtins/en/facets/instructions/plan-maintenance.md +51 -0
  7. package/builtins/en/facets/instructions/review-coding.md +8 -0
  8. package/builtins/en/facets/instructions/supervise-maintenance.md +110 -0
  9. package/builtins/en/facets/instructions/team-leader-implement.md +6 -1
  10. package/builtins/en/facets/instructions/write-tests-first.md +5 -0
  11. package/builtins/en/facets/instructions/write-tests-maintenance.md +45 -0
  12. package/builtins/en/facets/knowledge/architecture.md +18 -13
  13. package/builtins/en/facets/knowledge/cqrs-es.md +48 -0
  14. package/builtins/en/facets/knowledge/existing-system.md +70 -0
  15. package/builtins/en/facets/knowledge/frontend.md +25 -0
  16. package/builtins/en/facets/knowledge/react.md +35 -0
  17. package/builtins/en/facets/output-contracts/coding-review.md +41 -0
  18. package/builtins/en/facets/output-contracts/frontend-review.md +1 -0
  19. package/builtins/en/facets/output-contracts/maintenance-scope.md +29 -0
  20. package/builtins/en/facets/personas/coding-reviewer.md +27 -0
  21. package/builtins/en/facets/personas/dual-supervisor.md +1 -1
  22. package/builtins/en/facets/policies/ai-antipattern.md +59 -0
  23. package/builtins/en/facets/policies/coding.md +85 -3
  24. package/builtins/en/facets/policies/existing-system-respect.md +73 -0
  25. package/builtins/en/facets/policies/qa.md +3 -1
  26. package/builtins/en/facets/policies/review.md +25 -12
  27. package/builtins/en/facets/policies/testing.md +33 -0
  28. package/builtins/en/workflow-categories.yaml +1 -0
  29. package/builtins/en/workflows/auto-improvement-loop.yaml +20 -4
  30. package/builtins/en/workflows/default-peer-review.yaml +25 -3
  31. package/builtins/en/workflows/frontend-maintenance.yaml +499 -0
  32. package/builtins/en/workflows/peer-review.yaml +23 -1
  33. package/builtins/en/workflows/review-fix-takt-default.yaml +30 -2
  34. package/builtins/ja/config.yaml +9 -1
  35. package/builtins/ja/facets/instructions/dual-team-leader-implement.md +7 -2
  36. package/builtins/ja/facets/instructions/fix-maintenance.md +43 -0
  37. package/builtins/ja/facets/instructions/implement-maintenance.md +72 -0
  38. package/builtins/ja/facets/instructions/plan-maintenance.md +51 -0
  39. package/builtins/ja/facets/instructions/review-coding.md +8 -0
  40. package/builtins/ja/facets/instructions/supervise-maintenance.md +110 -0
  41. package/builtins/ja/facets/instructions/team-leader-implement.md +6 -1
  42. package/builtins/ja/facets/instructions/write-tests-first.md +5 -0
  43. package/builtins/ja/facets/instructions/write-tests-maintenance.md +45 -0
  44. package/builtins/ja/facets/knowledge/architecture.md +18 -13
  45. package/builtins/ja/facets/knowledge/cqrs-es.md +48 -0
  46. package/builtins/ja/facets/knowledge/existing-system.md +70 -0
  47. package/builtins/ja/facets/knowledge/frontend.md +25 -0
  48. package/builtins/ja/facets/knowledge/react.md +35 -0
  49. package/builtins/ja/facets/output-contracts/coding-review.md +41 -0
  50. package/builtins/ja/facets/output-contracts/frontend-review.md +1 -0
  51. package/builtins/ja/facets/output-contracts/maintenance-scope.md +29 -0
  52. package/builtins/ja/facets/personas/coding-reviewer.md +27 -0
  53. package/builtins/ja/facets/personas/dual-supervisor.md +2 -2
  54. package/builtins/ja/facets/policies/ai-antipattern.md +59 -0
  55. package/builtins/ja/facets/policies/coding.md +85 -3
  56. package/builtins/ja/facets/policies/existing-system-respect.md +73 -0
  57. package/builtins/ja/facets/policies/qa.md +3 -1
  58. package/builtins/ja/facets/policies/review.md +25 -12
  59. package/builtins/ja/facets/policies/testing.md +33 -0
  60. package/builtins/ja/workflow-categories.yaml +1 -0
  61. package/builtins/ja/workflows/auto-improvement-loop.yaml +20 -4
  62. package/builtins/ja/workflows/default-peer-review.yaml +25 -3
  63. package/builtins/ja/workflows/frontend-maintenance.yaml +499 -0
  64. package/builtins/ja/workflows/peer-review.yaml +23 -1
  65. package/builtins/ja/workflows/review-fix-takt-default.yaml +30 -2
  66. package/builtins/skill/references/yaml-schema.md +8 -3
  67. package/builtins/skill-codex/references/yaml-schema.md +8 -3
  68. package/dist/agents/decompose-task-usecase.d.ts.map +1 -1
  69. package/dist/agents/decompose-task-usecase.js +3 -2
  70. package/dist/agents/decompose-task-usecase.js.map +1 -1
  71. package/dist/agents/judge-status-usecase.d.ts.map +1 -1
  72. package/dist/agents/judge-status-usecase.js +4 -3
  73. package/dist/agents/judge-status-usecase.js.map +1 -1
  74. package/dist/agents/provider-call-options.d.ts +4 -0
  75. package/dist/agents/provider-call-options.d.ts.map +1 -0
  76. package/dist/agents/provider-call-options.js +9 -0
  77. package/dist/agents/provider-call-options.js.map +1 -0
  78. package/dist/agents/runner.js +1 -1
  79. package/dist/agents/runner.js.map +1 -1
  80. package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts.map +1 -1
  81. package/dist/agents/structured-caller/prompt-based-structured-caller.js +5 -4
  82. package/dist/agents/structured-caller/prompt-based-structured-caller.js.map +1 -1
  83. package/dist/agents/team-leader-structured-output.d.ts.map +1 -1
  84. package/dist/agents/team-leader-structured-output.js +21 -0
  85. package/dist/agents/team-leader-structured-output.js.map +1 -1
  86. package/dist/app/cli/commands.js +7 -1
  87. package/dist/app/cli/commands.js.map +1 -1
  88. package/dist/app/cli/program.js +1 -1
  89. package/dist/app/cli/program.js.map +1 -1
  90. package/dist/app/cli/routing.d.ts.map +1 -1
  91. package/dist/app/cli/routing.js +8 -1
  92. package/dist/app/cli/routing.js.map +1 -1
  93. package/dist/core/models/assistant-config.d.ts +4 -0
  94. package/dist/core/models/assistant-config.d.ts.map +1 -0
  95. package/dist/core/models/assistant-config.js +4 -0
  96. package/dist/core/models/assistant-config.js.map +1 -0
  97. package/dist/core/models/config-schemas.d.ts +160 -9
  98. package/dist/core/models/config-schemas.d.ts.map +1 -1
  99. package/dist/core/models/config-schemas.js +12 -2
  100. package/dist/core/models/config-schemas.js.map +1 -1
  101. package/dist/core/models/config-types.d.ts +30 -4
  102. package/dist/core/models/config-types.d.ts.map +1 -1
  103. package/dist/core/models/index.d.ts +1 -1
  104. package/dist/core/models/index.d.ts.map +1 -1
  105. package/dist/core/models/index.js.map +1 -1
  106. package/dist/core/models/provider-profiles.d.ts +1 -1
  107. package/dist/core/models/provider-profiles.d.ts.map +1 -1
  108. package/dist/core/models/quality-gate-defaults.d.ts +2 -0
  109. package/dist/core/models/quality-gate-defaults.d.ts.map +1 -0
  110. package/dist/core/models/quality-gate-defaults.js +2 -0
  111. package/dist/core/models/quality-gate-defaults.js.map +1 -0
  112. package/dist/core/models/response.d.ts +1 -1
  113. package/dist/core/models/response.d.ts.map +1 -1
  114. package/dist/core/models/response.js +1 -1
  115. package/dist/core/models/response.js.map +1 -1
  116. package/dist/core/models/schema-base.d.ts +80 -3
  117. package/dist/core/models/schema-base.d.ts.map +1 -1
  118. package/dist/core/models/schema-base.js +76 -2
  119. package/dist/core/models/schema-base.js.map +1 -1
  120. package/dist/core/models/types.d.ts +2 -2
  121. package/dist/core/models/types.d.ts.map +1 -1
  122. package/dist/core/models/workflow-provider-options.d.ts +7 -0
  123. package/dist/core/models/workflow-provider-options.d.ts.map +1 -1
  124. package/dist/core/models/workflow-schemas.d.ts +368 -51
  125. package/dist/core/models/workflow-schemas.d.ts.map +1 -1
  126. package/dist/core/models/workflow-system-input-types.d.ts +8 -1
  127. package/dist/core/models/workflow-system-input-types.d.ts.map +1 -1
  128. package/dist/core/models/workflow-system-schemas.d.ts +7 -1
  129. package/dist/core/models/workflow-system-schemas.d.ts.map +1 -1
  130. package/dist/core/models/workflow-system-schemas.js +12 -1
  131. package/dist/core/models/workflow-system-schemas.js.map +1 -1
  132. package/dist/core/models/workflow-types.d.ts +13 -5
  133. package/dist/core/models/workflow-types.d.ts.map +1 -1
  134. package/dist/core/models/workflow-types.js.map +1 -1
  135. package/dist/core/workflow/engine/OptionsBuilder.d.ts +1 -0
  136. package/dist/core/workflow/engine/OptionsBuilder.d.ts.map +1 -1
  137. package/dist/core/workflow/engine/OptionsBuilder.js +9 -4
  138. package/dist/core/workflow/engine/OptionsBuilder.js.map +1 -1
  139. package/dist/core/workflow/engine/ParallelRunner.d.ts +11 -0
  140. package/dist/core/workflow/engine/ParallelRunner.d.ts.map +1 -1
  141. package/dist/core/workflow/engine/ParallelRunner.js +139 -19
  142. package/dist/core/workflow/engine/ParallelRunner.js.map +1 -1
  143. package/dist/core/workflow/engine/TeamLeaderRunner.d.ts.map +1 -1
  144. package/dist/core/workflow/engine/TeamLeaderRunner.js +55 -23
  145. package/dist/core/workflow/engine/TeamLeaderRunner.js.map +1 -1
  146. package/dist/core/workflow/engine/WorkflowEngine.d.ts +1 -0
  147. package/dist/core/workflow/engine/WorkflowEngine.d.ts.map +1 -1
  148. package/dist/core/workflow/engine/WorkflowEngine.js +29 -4
  149. package/dist/core/workflow/engine/WorkflowEngine.js.map +1 -1
  150. package/dist/core/workflow/engine/WorkflowEngineSetup.d.ts.map +1 -1
  151. package/dist/core/workflow/engine/WorkflowEngineSetup.js +2 -0
  152. package/dist/core/workflow/engine/WorkflowEngineSetup.js.map +1 -1
  153. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts +8 -0
  154. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts.map +1 -1
  155. package/dist/core/workflow/engine/WorkflowRunLoop.js +78 -7
  156. package/dist/core/workflow/engine/WorkflowRunLoop.js.map +1 -1
  157. package/dist/core/workflow/engine/team-leader-execution.d.ts +1 -0
  158. package/dist/core/workflow/engine/team-leader-execution.d.ts.map +1 -1
  159. package/dist/core/workflow/engine/team-leader-execution.js +22 -0
  160. package/dist/core/workflow/engine/team-leader-execution.js.map +1 -1
  161. package/dist/core/workflow/engine/team-leader-timeout-fallback.d.ts +13 -0
  162. package/dist/core/workflow/engine/team-leader-timeout-fallback.d.ts.map +1 -0
  163. package/dist/core/workflow/engine/team-leader-timeout-fallback.js +125 -0
  164. package/dist/core/workflow/engine/team-leader-timeout-fallback.js.map +1 -0
  165. package/dist/core/workflow/instruction/InstructionBuilder.d.ts.map +1 -1
  166. package/dist/core/workflow/instruction/InstructionBuilder.js +4 -3
  167. package/dist/core/workflow/instruction/InstructionBuilder.js.map +1 -1
  168. package/dist/core/workflow/observability/workflowSpans.d.ts +28 -0
  169. package/dist/core/workflow/observability/workflowSpans.d.ts.map +1 -0
  170. package/dist/core/workflow/observability/workflowSpans.js +107 -0
  171. package/dist/core/workflow/observability/workflowSpans.js.map +1 -0
  172. package/dist/core/workflow/part-definition-validator.d.ts.map +1 -1
  173. package/dist/core/workflow/part-definition-validator.js +4 -0
  174. package/dist/core/workflow/part-definition-validator.js.map +1 -1
  175. package/dist/core/workflow/permission-profile-resolution.d.ts.map +1 -1
  176. package/dist/core/workflow/permission-profile-resolution.js +1 -0
  177. package/dist/core/workflow/permission-profile-resolution.js.map +1 -1
  178. package/dist/core/workflow/phase-runner.d.ts +1 -3
  179. package/dist/core/workflow/phase-runner.d.ts.map +1 -1
  180. package/dist/core/workflow/phase-runner.js.map +1 -1
  181. package/dist/core/workflow/quality-gates/commandGateMessage.d.ts +4 -0
  182. package/dist/core/workflow/quality-gates/commandGateMessage.d.ts.map +1 -0
  183. package/dist/core/workflow/quality-gates/commandGateMessage.js +84 -0
  184. package/dist/core/workflow/quality-gates/commandGateMessage.js.map +1 -0
  185. package/dist/core/workflow/quality-gates/commandGateRunner.d.ts +3 -0
  186. package/dist/core/workflow/quality-gates/commandGateRunner.d.ts.map +1 -0
  187. package/dist/core/workflow/quality-gates/commandGateRunner.js +242 -0
  188. package/dist/core/workflow/quality-gates/commandGateRunner.js.map +1 -0
  189. package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts +3 -0
  190. package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts.map +1 -0
  191. package/dist/core/workflow/quality-gates/qualityGateRunner.js +29 -0
  192. package/dist/core/workflow/quality-gates/qualityGateRunner.js.map +1 -0
  193. package/dist/core/workflow/quality-gates/types.d.ts +41 -0
  194. package/dist/core/workflow/quality-gates/types.d.ts.map +1 -0
  195. package/dist/core/workflow/quality-gates/types.js +2 -0
  196. package/dist/core/workflow/quality-gates/types.js.map +1 -0
  197. package/dist/core/workflow/report-phase-runner.d.ts.map +1 -1
  198. package/dist/core/workflow/report-phase-runner.js +3 -2
  199. package/dist/core/workflow/report-phase-runner.js.map +1 -1
  200. package/dist/core/workflow/run/run-meta.d.ts +3 -1
  201. package/dist/core/workflow/run/run-meta.d.ts.map +1 -1
  202. package/dist/core/workflow/run/run-meta.js +2 -0
  203. package/dist/core/workflow/run/run-meta.js.map +1 -1
  204. package/dist/core/workflow/run/run-slug.d.ts +2 -0
  205. package/dist/core/workflow/run/run-slug.d.ts.map +1 -0
  206. package/dist/core/workflow/run/run-slug.js +19 -0
  207. package/dist/core/workflow/run/run-slug.js.map +1 -0
  208. package/dist/core/workflow/status-judgment-phase.d.ts.map +1 -1
  209. package/dist/core/workflow/status-judgment-phase.js +7 -3
  210. package/dist/core/workflow/status-judgment-phase.js.map +1 -1
  211. package/dist/core/workflow/system/system-step-effect-runner.d.ts.map +1 -1
  212. package/dist/core/workflow/system/system-step-effect-runner.js +16 -1
  213. package/dist/core/workflow/system/system-step-effect-runner.js.map +1 -1
  214. package/dist/core/workflow/team-leader-continuation-ids.d.ts +3 -0
  215. package/dist/core/workflow/team-leader-continuation-ids.d.ts.map +1 -0
  216. package/dist/core/workflow/team-leader-continuation-ids.js +6 -0
  217. package/dist/core/workflow/team-leader-continuation-ids.js.map +1 -0
  218. package/dist/core/workflow/types.d.ts +7 -1
  219. package/dist/core/workflow/types.d.ts.map +1 -1
  220. package/dist/features/interactive/assistantInitFiles.d.ts +2 -0
  221. package/dist/features/interactive/assistantInitFiles.d.ts.map +1 -0
  222. package/dist/features/interactive/assistantInitFiles.js +110 -0
  223. package/dist/features/interactive/assistantInitFiles.js.map +1 -0
  224. package/dist/features/interactive/conversationLoop.d.ts +5 -1
  225. package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
  226. package/dist/features/interactive/conversationLoop.js +33 -11
  227. package/dist/features/interactive/conversationLoop.js.map +1 -1
  228. package/dist/features/interactive/imageAttachments.d.ts +20 -0
  229. package/dist/features/interactive/imageAttachments.d.ts.map +1 -0
  230. package/dist/features/interactive/imageAttachments.js +75 -0
  231. package/dist/features/interactive/imageAttachments.js.map +1 -0
  232. package/dist/features/interactive/index.d.ts +2 -1
  233. package/dist/features/interactive/index.d.ts.map +1 -1
  234. package/dist/features/interactive/index.js +1 -1
  235. package/dist/features/interactive/index.js.map +1 -1
  236. package/dist/features/interactive/inlineImagePaste.d.ts +21 -0
  237. package/dist/features/interactive/inlineImagePaste.d.ts.map +1 -0
  238. package/dist/features/interactive/inlineImagePaste.js +136 -0
  239. package/dist/features/interactive/inlineImagePaste.js.map +1 -0
  240. package/dist/features/interactive/instructModeTypes.d.ts +23 -0
  241. package/dist/features/interactive/instructModeTypes.d.ts.map +1 -0
  242. package/dist/features/interactive/instructModeTypes.js +2 -0
  243. package/dist/features/interactive/instructModeTypes.js.map +1 -0
  244. package/dist/features/interactive/interactive-summary.d.ts +1 -1
  245. package/dist/features/interactive/interactive-summary.d.ts.map +1 -1
  246. package/dist/features/interactive/interactive-summary.js +4 -3
  247. package/dist/features/interactive/interactive-summary.js.map +1 -1
  248. package/dist/features/interactive/interactive.d.ts +8 -3
  249. package/dist/features/interactive/interactive.d.ts.map +1 -1
  250. package/dist/features/interactive/interactive.js +4 -0
  251. package/dist/features/interactive/interactive.js.map +1 -1
  252. package/dist/features/interactive/interactiveInput.d.ts +2 -1
  253. package/dist/features/interactive/interactiveInput.d.ts.map +1 -1
  254. package/dist/features/interactive/interactiveInput.js +5 -1
  255. package/dist/features/interactive/interactiveInput.js.map +1 -1
  256. package/dist/features/interactive/lineEditor.d.ts +2 -0
  257. package/dist/features/interactive/lineEditor.d.ts.map +1 -1
  258. package/dist/features/interactive/lineEditor.js +130 -9
  259. package/dist/features/interactive/lineEditor.js.map +1 -1
  260. package/dist/features/interactive/passthroughMode.d.ts.map +1 -1
  261. package/dist/features/interactive/passthroughMode.js +8 -4
  262. package/dist/features/interactive/passthroughMode.js.map +1 -1
  263. package/dist/features/interactive/promptSections.d.ts +2 -0
  264. package/dist/features/interactive/promptSections.d.ts.map +1 -1
  265. package/dist/features/interactive/promptSections.js +7 -1
  266. package/dist/features/interactive/promptSections.js.map +1 -1
  267. package/dist/features/interactive/quietMode.d.ts.map +1 -1
  268. package/dist/features/interactive/quietMode.js +12 -8
  269. package/dist/features/interactive/quietMode.js.map +1 -1
  270. package/dist/features/interactive/retryMode.d.ts +10 -13
  271. package/dist/features/interactive/retryMode.d.ts.map +1 -1
  272. package/dist/features/interactive/retryMode.js +42 -22
  273. package/dist/features/interactive/retryMode.js.map +1 -1
  274. package/dist/features/interactive/slashCommandRegistry.d.ts.map +1 -1
  275. package/dist/features/interactive/slashCommandRegistry.js +1 -0
  276. package/dist/features/interactive/slashCommandRegistry.js.map +1 -1
  277. package/dist/features/tasks/add/index.d.ts +4 -0
  278. package/dist/features/tasks/add/index.d.ts.map +1 -1
  279. package/dist/features/tasks/add/index.js +12 -29
  280. package/dist/features/tasks/add/index.js.map +1 -1
  281. package/dist/features/tasks/attachments.d.ts +19 -0
  282. package/dist/features/tasks/attachments.d.ts.map +1 -0
  283. package/dist/features/tasks/attachments.js +129 -0
  284. package/dist/features/tasks/attachments.js.map +1 -0
  285. package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
  286. package/dist/features/tasks/execute/resolveTask.js +4 -3
  287. package/dist/features/tasks/execute/resolveTask.js.map +1 -1
  288. package/dist/features/tasks/execute/runMeta.d.ts +5 -1
  289. package/dist/features/tasks/execute/runMeta.d.ts.map +1 -1
  290. package/dist/features/tasks/execute/runMeta.js +10 -4
  291. package/dist/features/tasks/execute/runMeta.js.map +1 -1
  292. package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
  293. package/dist/features/tasks/execute/selectAndExecute.js +48 -4
  294. package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
  295. package/dist/features/tasks/execute/taskSpecContext.d.ts +7 -2
  296. package/dist/features/tasks/execute/taskSpecContext.d.ts.map +1 -1
  297. package/dist/features/tasks/execute/taskSpecContext.js +23 -36
  298. package/dist/features/tasks/execute/taskSpecContext.js.map +1 -1
  299. package/dist/features/tasks/execute/taskWorkflowExecution.d.ts.map +1 -1
  300. package/dist/features/tasks/execute/taskWorkflowExecution.js +2 -1
  301. package/dist/features/tasks/execute/taskWorkflowExecution.js.map +1 -1
  302. package/dist/features/tasks/execute/traceReportRedaction.d.ts +0 -1
  303. package/dist/features/tasks/execute/traceReportRedaction.d.ts.map +1 -1
  304. package/dist/features/tasks/execute/traceReportRedaction.js +1 -9
  305. package/dist/features/tasks/execute/traceReportRedaction.js.map +1 -1
  306. package/dist/features/tasks/execute/types.d.ts +8 -0
  307. package/dist/features/tasks/execute/types.d.ts.map +1 -1
  308. package/dist/features/tasks/execute/workflowExecution.d.ts.map +1 -1
  309. package/dist/features/tasks/execute/workflowExecution.js +12 -1
  310. package/dist/features/tasks/execute/workflowExecution.js.map +1 -1
  311. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts +5 -1
  312. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts.map +1 -1
  313. package/dist/features/tasks/execute/workflowExecutionBootstrap.js +7 -2
  314. package/dist/features/tasks/execute/workflowExecutionBootstrap.js.map +1 -1
  315. package/dist/features/tasks/index.d.ts +1 -0
  316. package/dist/features/tasks/index.d.ts.map +1 -1
  317. package/dist/features/tasks/index.js +1 -0
  318. package/dist/features/tasks/index.js.map +1 -1
  319. package/dist/features/tasks/list/instructMode.d.ts +2 -20
  320. package/dist/features/tasks/list/instructMode.d.ts.map +1 -1
  321. package/dist/features/tasks/list/instructMode.js +15 -4
  322. package/dist/features/tasks/list/instructMode.js.map +1 -1
  323. package/dist/features/tasks/list/retryTaskSpecAttachments.d.ts +8 -0
  324. package/dist/features/tasks/list/retryTaskSpecAttachments.d.ts.map +1 -0
  325. package/dist/features/tasks/list/retryTaskSpecAttachments.js +87 -0
  326. package/dist/features/tasks/list/retryTaskSpecAttachments.js.map +1 -0
  327. package/dist/features/tasks/list/taskInstructionActions.d.ts.map +1 -1
  328. package/dist/features/tasks/list/taskInstructionActions.js +20 -2
  329. package/dist/features/tasks/list/taskInstructionActions.js.map +1 -1
  330. package/dist/features/tasks/list/taskRetryActions.d.ts.map +1 -1
  331. package/dist/features/tasks/list/taskRetryActions.js +24 -6
  332. package/dist/features/tasks/list/taskRetryActions.js.map +1 -1
  333. package/dist/features/tasks/resume/directInstructMode.d.ts +13 -0
  334. package/dist/features/tasks/resume/directInstructMode.d.ts.map +1 -0
  335. package/dist/features/tasks/resume/directInstructMode.js +67 -0
  336. package/dist/features/tasks/resume/directInstructMode.js.map +1 -0
  337. package/dist/features/tasks/resume/directRunFinder.d.ts +7 -0
  338. package/dist/features/tasks/resume/directRunFinder.d.ts.map +1 -0
  339. package/dist/features/tasks/resume/directRunFinder.js +43 -0
  340. package/dist/features/tasks/resume/directRunFinder.js.map +1 -0
  341. package/dist/features/tasks/resume/index.d.ts +3 -0
  342. package/dist/features/tasks/resume/index.d.ts.map +1 -0
  343. package/dist/features/tasks/resume/index.js +229 -0
  344. package/dist/features/tasks/resume/index.js.map +1 -0
  345. package/dist/features/tasks/taskSpecFile.d.ts +2 -0
  346. package/dist/features/tasks/taskSpecFile.d.ts.map +1 -0
  347. package/dist/features/tasks/taskSpecFile.js +38 -0
  348. package/dist/features/tasks/taskSpecFile.js.map +1 -0
  349. package/dist/infra/claude/executor.d.ts.map +1 -1
  350. package/dist/infra/claude/executor.js +27 -6
  351. package/dist/infra/claude/executor.js.map +1 -1
  352. package/dist/infra/claude/mcp-config.d.ts +7 -0
  353. package/dist/infra/claude/mcp-config.d.ts.map +1 -0
  354. package/dist/infra/claude/mcp-config.js +30 -0
  355. package/dist/infra/claude/mcp-config.js.map +1 -0
  356. package/dist/infra/claude-headless/client.d.ts.map +1 -1
  357. package/dist/infra/claude-headless/client.js +5 -40
  358. package/dist/infra/claude-headless/client.js.map +1 -1
  359. package/dist/infra/claude-headless/result-response.js +1 -1
  360. package/dist/infra/claude-headless/result-response.js.map +1 -1
  361. package/dist/infra/claude-terminal/client.d.ts +4 -0
  362. package/dist/infra/claude-terminal/client.d.ts.map +1 -0
  363. package/dist/infra/claude-terminal/client.js +314 -0
  364. package/dist/infra/claude-terminal/client.js.map +1 -0
  365. package/dist/infra/claude-terminal/command.d.ts +4 -0
  366. package/dist/infra/claude-terminal/command.d.ts.map +1 -0
  367. package/dist/infra/claude-terminal/command.js +50 -0
  368. package/dist/infra/claude-terminal/command.js.map +1 -0
  369. package/dist/infra/claude-terminal/response-normalizer.d.ts +14 -0
  370. package/dist/infra/claude-terminal/response-normalizer.d.ts.map +1 -0
  371. package/dist/infra/claude-terminal/response-normalizer.js +118 -0
  372. package/dist/infra/claude-terminal/response-normalizer.js.map +1 -0
  373. package/dist/infra/claude-terminal/tmux-backend.d.ts +7 -0
  374. package/dist/infra/claude-terminal/tmux-backend.d.ts.map +1 -0
  375. package/dist/infra/claude-terminal/tmux-backend.js +177 -0
  376. package/dist/infra/claude-terminal/tmux-backend.js.map +1 -0
  377. package/dist/infra/claude-terminal/transcript-reader.d.ts +13 -0
  378. package/dist/infra/claude-terminal/transcript-reader.d.ts.map +1 -0
  379. package/dist/infra/claude-terminal/transcript-reader.js +329 -0
  380. package/dist/infra/claude-terminal/transcript-reader.js.map +1 -0
  381. package/dist/infra/claude-terminal/types.d.ts +106 -0
  382. package/dist/infra/claude-terminal/types.d.ts.map +1 -0
  383. package/dist/infra/claude-terminal/types.js +2 -0
  384. package/dist/infra/claude-terminal/types.js.map +1 -0
  385. package/dist/infra/codex/CodexStreamHandler.d.ts +4 -2
  386. package/dist/infra/codex/CodexStreamHandler.d.ts.map +1 -1
  387. package/dist/infra/codex/CodexStreamHandler.js +55 -21
  388. package/dist/infra/codex/CodexStreamHandler.js.map +1 -1
  389. package/dist/infra/codex/client.d.ts +2 -0
  390. package/dist/infra/codex/client.d.ts.map +1 -1
  391. package/dist/infra/codex/client.js +42 -6
  392. package/dist/infra/codex/client.js.map +1 -1
  393. package/dist/infra/config/configNormalizers.d.ts +23 -16
  394. package/dist/infra/config/configNormalizers.d.ts.map +1 -1
  395. package/dist/infra/config/configNormalizers.js +69 -7
  396. package/dist/infra/config/configNormalizers.js.map +1 -1
  397. package/dist/infra/config/env/global-current-env-specs.d.ts.map +1 -1
  398. package/dist/infra/config/env/global-current-env-specs.js +7 -0
  399. package/dist/infra/config/env/global-current-env-specs.js.map +1 -1
  400. package/dist/infra/config/env/project-current-env-specs.d.ts.map +1 -1
  401. package/dist/infra/config/env/project-current-env-specs.js +7 -0
  402. package/dist/infra/config/env/project-current-env-specs.js.map +1 -1
  403. package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
  404. package/dist/infra/config/global/globalConfigCore.js +5 -0
  405. package/dist/infra/config/global/globalConfigCore.js.map +1 -1
  406. package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
  407. package/dist/infra/config/global/globalConfigSerializer.js +10 -0
  408. package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
  409. package/dist/infra/config/global/initialization.d.ts +1 -1
  410. package/dist/infra/config/global/initialization.d.ts.map +1 -1
  411. package/dist/infra/config/global/initialization.js +1 -0
  412. package/dist/infra/config/global/initialization.js.map +1 -1
  413. package/dist/infra/config/loaders/qualityGateOverrides.d.ts +3 -2
  414. package/dist/infra/config/loaders/qualityGateOverrides.d.ts.map +1 -1
  415. package/dist/infra/config/loaders/qualityGateOverrides.js +42 -3
  416. package/dist/infra/config/loaders/qualityGateOverrides.js.map +1 -1
  417. package/dist/infra/config/loaders/workflowFileLoader.d.ts.map +1 -1
  418. package/dist/infra/config/loaders/workflowFileLoader.js +2 -2
  419. package/dist/infra/config/loaders/workflowFileLoader.js.map +1 -1
  420. package/dist/infra/config/loaders/workflowNormalizationPolicies.d.ts +3 -1
  421. package/dist/infra/config/loaders/workflowNormalizationPolicies.d.ts.map +1 -1
  422. package/dist/infra/config/loaders/workflowNormalizationPolicies.js +28 -0
  423. package/dist/infra/config/loaders/workflowNormalizationPolicies.js.map +1 -1
  424. package/dist/infra/config/loaders/workflowParser.d.ts +2 -2
  425. package/dist/infra/config/loaders/workflowParser.d.ts.map +1 -1
  426. package/dist/infra/config/loaders/workflowParser.js +3 -2
  427. package/dist/infra/config/loaders/workflowParser.js.map +1 -1
  428. package/dist/infra/config/loaders/workflowStepNormalizer.d.ts.map +1 -1
  429. package/dist/infra/config/loaders/workflowStepNormalizer.js +2 -1
  430. package/dist/infra/config/loaders/workflowStepNormalizer.js.map +1 -1
  431. package/dist/infra/config/observabilityConfig.d.ts +13 -0
  432. package/dist/infra/config/observabilityConfig.d.ts.map +1 -0
  433. package/dist/infra/config/observabilityConfig.js +52 -0
  434. package/dist/infra/config/observabilityConfig.js.map +1 -0
  435. package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
  436. package/dist/infra/config/project/projectConfig.js +23 -5
  437. package/dist/infra/config/project/projectConfig.js.map +1 -1
  438. package/dist/infra/config/project/projectConfigTransforms.d.ts +5 -1
  439. package/dist/infra/config/project/projectConfigTransforms.d.ts.map +1 -1
  440. package/dist/infra/config/project/projectConfigTransforms.js +8 -0
  441. package/dist/infra/config/project/projectConfigTransforms.js.map +1 -1
  442. package/dist/infra/config/providerOptions.d.ts +8 -2
  443. package/dist/infra/config/providerOptions.d.ts.map +1 -1
  444. package/dist/infra/config/providerOptions.js +49 -1
  445. package/dist/infra/config/providerOptions.js.map +1 -1
  446. package/dist/infra/config/providerOptionsContract.d.ts +3 -3
  447. package/dist/infra/config/providerOptionsContract.d.ts.map +1 -1
  448. package/dist/infra/config/providerOptionsContract.js +14 -0
  449. package/dist/infra/config/providerOptionsContract.js.map +1 -1
  450. package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
  451. package/dist/infra/config/resolveConfigValue.js +18 -0
  452. package/dist/infra/config/resolveConfigValue.js.map +1 -1
  453. package/dist/infra/config/resolvedConfig.d.ts +2 -1
  454. package/dist/infra/config/resolvedConfig.d.ts.map +1 -1
  455. package/dist/infra/config/traced/tracedConfigSchema.d.ts.map +1 -1
  456. package/dist/infra/config/traced/tracedConfigSchema.js +16 -0
  457. package/dist/infra/config/traced/tracedConfigSchema.js.map +1 -1
  458. package/dist/infra/git/format.d.ts.map +1 -1
  459. package/dist/infra/git/format.js +75 -8
  460. package/dist/infra/git/format.js.map +1 -1
  461. package/dist/infra/git/index.d.ts +1 -1
  462. package/dist/infra/git/index.d.ts.map +1 -1
  463. package/dist/infra/git/types.d.ts +5 -0
  464. package/dist/infra/git/types.d.ts.map +1 -1
  465. package/dist/infra/github/pr.d.ts.map +1 -1
  466. package/dist/infra/github/pr.js +174 -28
  467. package/dist/infra/github/pr.js.map +1 -1
  468. package/dist/infra/observability/otelFoundation.d.ts +6 -0
  469. package/dist/infra/observability/otelFoundation.d.ts.map +1 -0
  470. package/dist/infra/observability/otelFoundation.js +89 -0
  471. package/dist/infra/observability/otelFoundation.js.map +1 -0
  472. package/dist/infra/opencode/client.d.ts.map +1 -1
  473. package/dist/infra/opencode/client.js +19 -15
  474. package/dist/infra/opencode/client.js.map +1 -1
  475. package/dist/infra/providers/claude-terminal.d.ts +6 -0
  476. package/dist/infra/providers/claude-terminal.d.ts.map +1 -0
  477. package/dist/infra/providers/claude-terminal.js +70 -0
  478. package/dist/infra/providers/claude-terminal.js.map +1 -0
  479. package/dist/infra/providers/index.d.ts.map +1 -1
  480. package/dist/infra/providers/index.js +2 -0
  481. package/dist/infra/providers/index.js.map +1 -1
  482. package/dist/infra/providers/provider-capabilities.d.ts +1 -0
  483. package/dist/infra/providers/provider-capabilities.d.ts.map +1 -1
  484. package/dist/infra/providers/provider-capabilities.js +16 -0
  485. package/dist/infra/providers/provider-capabilities.js.map +1 -1
  486. package/dist/infra/rate-limit/detection.d.ts +2 -0
  487. package/dist/infra/rate-limit/detection.d.ts.map +1 -1
  488. package/dist/infra/rate-limit/detection.js +14 -1
  489. package/dist/infra/rate-limit/detection.js.map +1 -1
  490. package/dist/infra/task/clone-base-branch.d.ts +11 -0
  491. package/dist/infra/task/clone-base-branch.d.ts.map +1 -1
  492. package/dist/infra/task/clone-base-branch.js +34 -4
  493. package/dist/infra/task/clone-base-branch.js.map +1 -1
  494. package/dist/infra/task/clone.d.ts +2 -1
  495. package/dist/infra/task/clone.d.ts.map +1 -1
  496. package/dist/infra/task/clone.js +20 -3
  497. package/dist/infra/task/clone.js.map +1 -1
  498. package/dist/infra/task/index.d.ts +1 -1
  499. package/dist/infra/task/index.d.ts.map +1 -1
  500. package/dist/infra/task/index.js +1 -1
  501. package/dist/infra/task/index.js.map +1 -1
  502. package/dist/infra/task/projectLocalTaktSync.d.ts.map +1 -1
  503. package/dist/infra/task/projectLocalTaktSync.js +6 -2
  504. package/dist/infra/task/projectLocalTaktSync.js.map +1 -1
  505. package/dist/infra/task/runner.d.ts +2 -2
  506. package/dist/infra/task/runner.d.ts.map +1 -1
  507. package/dist/infra/task/runner.js +4 -4
  508. package/dist/infra/task/runner.js.map +1 -1
  509. package/dist/infra/task/taskRecordMutations.d.ts +1 -1
  510. package/dist/infra/task/taskRecordMutations.d.ts.map +1 -1
  511. package/dist/infra/task/taskRecordMutations.js +5 -1
  512. package/dist/infra/task/taskRecordMutations.js.map +1 -1
  513. package/dist/infra/task/taskRetryService.d.ts +2 -2
  514. package/dist/infra/task/taskRetryService.d.ts.map +1 -1
  515. package/dist/infra/task/taskRetryService.js +4 -4
  516. package/dist/infra/task/taskRetryService.js.map +1 -1
  517. package/dist/infra/workflow/system/system-enqueue-effect.d.ts +2 -2
  518. package/dist/infra/workflow/system/system-enqueue-effect.d.ts.map +1 -1
  519. package/dist/infra/workflow/system/system-enqueue-effect.js +5 -2
  520. package/dist/infra/workflow/system/system-enqueue-effect.js.map +1 -1
  521. package/dist/shared/constants.d.ts +1 -0
  522. package/dist/shared/constants.d.ts.map +1 -1
  523. package/dist/shared/constants.js +1 -0
  524. package/dist/shared/constants.js.map +1 -1
  525. package/dist/shared/i18n/labels_en.yaml +3 -1
  526. package/dist/shared/i18n/labels_ja.yaml +3 -1
  527. package/dist/shared/prompts/en/score_direct_instruct_system_prompt.md +63 -0
  528. package/dist/shared/prompts/en/score_retry_system_prompt.md +2 -2
  529. package/dist/shared/prompts/ja/score_direct_instruct_system_prompt.md +63 -0
  530. package/dist/shared/prompts/ja/score_retry_system_prompt.md +2 -2
  531. package/dist/shared/types/provider.d.ts +1 -1
  532. package/dist/shared/types/provider.d.ts.map +1 -1
  533. package/dist/shared/utils/debug.d.ts +2 -0
  534. package/dist/shared/utils/debug.d.ts.map +1 -1
  535. package/dist/shared/utils/debug.js +1 -0
  536. package/dist/shared/utils/debug.js.map +1 -1
  537. package/dist/shared/utils/sensitiveText.d.ts +2 -0
  538. package/dist/shared/utils/sensitiveText.d.ts.map +1 -0
  539. package/dist/shared/utils/sensitiveText.js +40 -0
  540. package/dist/shared/utils/sensitiveText.js.map +1 -0
  541. package/package.json +4 -2
@@ -0,0 +1,177 @@
1
+ import * as childProcess from 'node:child_process';
2
+ import { setTimeout as sleep } from 'node:timers/promises';
3
+ import { promisify } from 'node:util';
4
+ import { stripAnsi } from '../../shared/utils/text.js';
5
+ import { createLogger, getErrorMessage } from '../../shared/utils/index.js';
6
+ import { createClaudeTerminalSessionName } from './command.js';
7
+ const log = createLogger('claude-terminal-tmux');
8
+ const CLAUDE_READY_TIMEOUT_MS = 60000;
9
+ const PANE_CHANGE_TIMEOUT_MS = 5000;
10
+ const PANE_POLL_INTERVAL_MS = 100;
11
+ const CLAUDE_READY_TAIL_LINES = 3;
12
+ const CLAUDE_BUSY_PATTERN = /(Running|thinking|Searching|Reading|Writing|Editing|Crunched)/i;
13
+ const CLAUDE_PROMPT_PATTERN = /^[❯❱>](?:\s+(?!\d+\.\s)|$)/;
14
+ function getProperty(error, property) {
15
+ return error[property];
16
+ }
17
+ function getFailureCode(error) {
18
+ const code = getProperty(error, 'code');
19
+ if (typeof code === 'string' || typeof code === 'number') {
20
+ return String(code);
21
+ }
22
+ return undefined;
23
+ }
24
+ function getFailureStderr(error) {
25
+ const stderr = getProperty(error, 'stderr');
26
+ if (typeof stderr !== 'string') {
27
+ return undefined;
28
+ }
29
+ const trimmed = stderr.trim();
30
+ return trimmed.length > 0 ? redactSensitiveClaudeArgs(trimmed) : undefined;
31
+ }
32
+ function redactSensitiveClaudeArgs(text) {
33
+ return text
34
+ .replace(/(--system-prompt(?:=|\s+)).*/g, '$1[redacted]')
35
+ .replace(/(--json-schema(?:=|\s+)).*/g, '$1[redacted]');
36
+ }
37
+ function formatTmuxError(error) {
38
+ if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
39
+ return new Error('tmux command not found. Install tmux to use provider: claude-terminal.');
40
+ }
41
+ if (error && typeof error === 'object') {
42
+ const execError = error;
43
+ const code = getFailureCode(execError);
44
+ const stderr = getFailureStderr(execError);
45
+ const codeText = code ? ` with code ${code}` : '';
46
+ const stderrText = stderr ? `: ${stderr}` : '.';
47
+ return new Error(`tmux command failed${codeText}${stderrText}`);
48
+ }
49
+ return new Error('tmux command failed.');
50
+ }
51
+ async function runTmux(args, options) {
52
+ if (!childProcess.execFile) {
53
+ throw new Error('node:child_process.execFile is required to run tmux.');
54
+ }
55
+ const execFileAsync = promisify(childProcess.execFile);
56
+ try {
57
+ const result = await execFileAsync('tmux', args, {
58
+ cwd: options?.cwd,
59
+ encoding: 'utf-8',
60
+ maxBuffer: 1024 * 1024 * 4,
61
+ });
62
+ return result.stdout;
63
+ }
64
+ catch (error) {
65
+ throw formatTmuxError(error);
66
+ }
67
+ }
68
+ async function loadBuffer(bufferName, text) {
69
+ if (!childProcess.spawn) {
70
+ throw new Error('node:child_process.spawn is required to run tmux.');
71
+ }
72
+ await new Promise((resolve, reject) => {
73
+ const child = childProcess.spawn('tmux', ['load-buffer', '-b', bufferName, '-'], {
74
+ stdio: ['pipe', 'ignore', 'pipe'],
75
+ });
76
+ let stderr = '';
77
+ child.stderr?.setEncoding('utf-8');
78
+ child.stderr?.on('data', (chunk) => {
79
+ stderr += chunk;
80
+ });
81
+ child.on('error', (error) => reject(formatTmuxError(error)));
82
+ child.on('close', (code) => {
83
+ if (code === 0) {
84
+ resolve();
85
+ return;
86
+ }
87
+ reject(new Error(`tmux load-buffer failed (${code}): ${stderr.trim()}`));
88
+ });
89
+ child.stdin.end(text);
90
+ });
91
+ }
92
+ async function capturePane(session, lines) {
93
+ return runTmux(['capture-pane', '-p', '-t', session.name, '-S', `-${lines}`]);
94
+ }
95
+ function isClaudeInputReady(capturedPane) {
96
+ const plain = stripAnsi(capturedPane);
97
+ const tailLines = plain
98
+ .split(/\r?\n/)
99
+ .map((line) => line.trim())
100
+ .filter((line) => line.length > 0)
101
+ .slice(-CLAUDE_READY_TAIL_LINES);
102
+ const hasPrompt = tailLines.some((line) => CLAUDE_PROMPT_PATTERN.test(line));
103
+ const isBusy = CLAUDE_BUSY_PATTERN.test(tailLines.join('\n'));
104
+ return hasPrompt && !isBusy;
105
+ }
106
+ async function waitForClaudeInputReady(session) {
107
+ const deadline = Date.now() + CLAUDE_READY_TIMEOUT_MS;
108
+ while (Date.now() < deadline) {
109
+ const captured = await capturePane(session, 20);
110
+ if (isClaudeInputReady(captured)) {
111
+ return;
112
+ }
113
+ await sleep(PANE_POLL_INTERVAL_MS);
114
+ }
115
+ throw new Error('Timed out waiting for Claude terminal input prompt.');
116
+ }
117
+ async function waitForPaneChange(session, before) {
118
+ const deadline = Date.now() + PANE_CHANGE_TIMEOUT_MS;
119
+ while (Date.now() < deadline) {
120
+ const captured = await capturePane(session, 40);
121
+ if (captured !== before) {
122
+ return;
123
+ }
124
+ await sleep(PANE_POLL_INTERVAL_MS);
125
+ }
126
+ throw new Error('Timed out waiting for Claude terminal paste to appear in pane.');
127
+ }
128
+ export class TmuxTerminalBackend {
129
+ async start(options) {
130
+ const name = createClaudeTerminalSessionName();
131
+ await runTmux([
132
+ 'new-session',
133
+ '-d',
134
+ '-s',
135
+ name,
136
+ '-c',
137
+ options.cwd,
138
+ options.command.executable,
139
+ ...options.command.args,
140
+ ], { cwd: options.cwd });
141
+ return { id: name, name };
142
+ }
143
+ async pasteText(session, text) {
144
+ const bufferName = `${session.name}-prompt`;
145
+ await waitForClaudeInputReady(session);
146
+ const beforePaste = await capturePane(session, 40);
147
+ await loadBuffer(bufferName, text);
148
+ let pasteError;
149
+ try {
150
+ await runTmux(['paste-buffer', '-p', '-b', bufferName, '-t', session.name]);
151
+ await waitForPaneChange(session, beforePaste);
152
+ await runTmux(['send-keys', '-t', session.name, 'Enter']);
153
+ }
154
+ catch (error) {
155
+ pasteError = error;
156
+ }
157
+ try {
158
+ await runTmux(['delete-buffer', '-b', bufferName]);
159
+ }
160
+ catch (deleteError) {
161
+ if (!pasteError) {
162
+ throw deleteError;
163
+ }
164
+ log.error('Failed to delete Claude terminal tmux buffer after paste failure', {
165
+ buffer: bufferName,
166
+ error: getErrorMessage(deleteError),
167
+ });
168
+ }
169
+ if (pasteError) {
170
+ throw pasteError;
171
+ }
172
+ }
173
+ async stop(session) {
174
+ await runTmux(['kill-session', '-t', session.name]);
175
+ }
176
+ }
177
+ //# sourceMappingURL=tmux-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux-backend.js","sourceRoot":"","sources":["../../../src/infra/claude-terminal/tmux-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAG/D,MAAM,GAAG,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;AACjD,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,mBAAmB,GAAG,gEAAgE,CAAC;AAC7F,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAE3D,SAAS,WAAW,CAAC,KAAa,EAAE,QAAgB;IAClD,OAAQ,KAAiC,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,IAAI;SACR,OAAO,CAAC,+BAA+B,EAAE,cAAc,CAAC;SACxD,OAAO,CAAC,6BAA6B,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrF,OAAO,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,KAA0B,CAAC;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAChD,OAAO,IAAI,KAAK,CAAC,sBAAsB,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAc,EAAE,OAA0B;IAC/D,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAIL,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;YAC/C,GAAG,EAAE,OAAO,EAAE,GAAG;YACjB,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,CAAC,KAA0B,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,UAAkB,EAAE,IAAY;IACxD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE;YAC/E,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAwB,EAAE,KAAa;IAChE,OAAO,OAAO,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK;SACpB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,OAAwB;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC;IACtD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAwB,EAAE,MAAc;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,sBAAsB,CAAC;IACrD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,OAAO,mBAAmB;IAC9B,KAAK,CAAC,KAAK,CAAC,OAA6B;QACvC,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,OAAO,CAAC;YACZ,aAAa;YACb,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,OAAO,CAAC,GAAG;YACX,OAAO,CAAC,OAAO,CAAC,UAAU;YAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI;SACxB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAwB,EAAE,IAAY;QACpD,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,IAAI,SAAS,CAAC;QAC5C,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,UAAmB,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5E,MAAM,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9C,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,CAAC,eAAe,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,WAAW,CAAC;YACpB,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,kEAAkE,EAAE;gBAC5E,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC;aACpC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,MAAM,OAAO,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { ClaudeSessionRef, ClaudeTranscriptBaseline, ClaudeTerminalTranscript, ClaudeTranscriptReader, FindClaudeSessionOptions, WaitForClaudeResponseOptions } from './types.js';
2
+ interface ParseClaudeTerminalTranscriptOptions {
3
+ baseline?: ClaudeTranscriptBaseline;
4
+ allowIncompleteFinalLine?: boolean;
5
+ }
6
+ export declare function parseClaudeTerminalTranscript(transcript: string, options?: ParseClaudeTerminalTranscriptOptions): ClaudeTerminalTranscript;
7
+ export declare class ProjectClaudeTranscriptReader implements ClaudeTranscriptReader {
8
+ readBaseline(options: Pick<FindClaudeSessionOptions, 'cwd' | 'sessionId'>): Promise<ClaudeTranscriptBaseline>;
9
+ findSession(options: FindClaudeSessionOptions): Promise<ClaudeSessionRef>;
10
+ waitForAssistantResponse(options: WaitForClaudeResponseOptions): Promise<ClaudeTerminalTranscript>;
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=transcript-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-reader.d.ts","sourceRoot":"","sources":["../../../src/infra/claude-terminal/transcript-reader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EAExB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AA6KpB,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAwCD,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,oCAAyC,GACjD,wBAAwB,CAgB1B;AA2GD,qBAAa,6BAA8B,YAAW,sBAAsB;IACpE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAW7G,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBzE,wBAAwB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA+BzG"}
@@ -0,0 +1,329 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { resolve, sep } from 'node:path';
3
+ import { setTimeout as sleep } from 'node:timers/promises';
4
+ import { getClaudeProjectSessionsDir } from '../config/project/sessionStore.js';
5
+ function toRecord(value) {
6
+ return value && typeof value === 'object' && !Array.isArray(value)
7
+ ? value
8
+ : undefined;
9
+ }
10
+ function requireString(value, field) {
11
+ if (typeof value !== 'string' || value.length === 0) {
12
+ throw new Error(`Malformed Claude terminal transcript: ${field} must be a non-empty string.`);
13
+ }
14
+ return value;
15
+ }
16
+ function requireRecord(value, field) {
17
+ const record = toRecord(value);
18
+ if (!record) {
19
+ throw new Error(`Malformed Claude terminal transcript: ${field} must be an object.`);
20
+ }
21
+ return record;
22
+ }
23
+ function extractTextContent(content) {
24
+ if (!Array.isArray(content)) {
25
+ return [];
26
+ }
27
+ return content.flatMap((item) => {
28
+ const record = toRecord(item);
29
+ return record?.type === 'text' && typeof record.text === 'string' ? [record.text] : [];
30
+ });
31
+ }
32
+ function readQuestion(record, field) {
33
+ const question = requireString(record.question, `${field}.question`);
34
+ const output = { question };
35
+ if (typeof record.header === 'string') {
36
+ output.header = record.header;
37
+ }
38
+ if (typeof record.multiSelect === 'boolean') {
39
+ output.multiSelect = record.multiSelect;
40
+ }
41
+ if (Array.isArray(record.options)) {
42
+ output.options = record.options.map((option, index) => {
43
+ const optionRecord = requireRecord(option, `${field}.options[${index}]`);
44
+ const parsed = { label: requireString(optionRecord.label, `${field}.options[${index}].label`) };
45
+ return typeof optionRecord.description === 'string'
46
+ ? { ...parsed, description: optionRecord.description }
47
+ : parsed;
48
+ });
49
+ }
50
+ return output;
51
+ }
52
+ function readQuestions(input, field) {
53
+ if (!Array.isArray(input.questions) || input.questions.length === 0) {
54
+ throw new Error(`Malformed Claude terminal transcript: ${field}.questions must be a non-empty array.`);
55
+ }
56
+ return input.questions.map((question, index) => readQuestion(requireRecord(question, `${field}.questions[${index}]`), `${field}.questions[${index}]`));
57
+ }
58
+ function extractToolUseEvents(content) {
59
+ if (!Array.isArray(content)) {
60
+ return [];
61
+ }
62
+ return content.flatMap((item) => {
63
+ const record = toRecord(item);
64
+ if (record?.type !== 'tool_use') {
65
+ return [];
66
+ }
67
+ const tool = requireString(record.name, 'tool_use.name');
68
+ const input = requireRecord(record.input, 'tool_use.input');
69
+ if (tool === 'AskUserQuestion') {
70
+ return [{
71
+ type: 'ask_user_question',
72
+ questions: readQuestions(input, 'tool_use.input'),
73
+ }];
74
+ }
75
+ return [{
76
+ type: 'tool_use',
77
+ id: requireString(record.id, 'tool_use.id'),
78
+ tool,
79
+ input,
80
+ }];
81
+ });
82
+ }
83
+ function readSessionId(entry, currentSessionId) {
84
+ if (typeof entry.session_id === 'string' && entry.session_id.length > 0) {
85
+ return entry.session_id;
86
+ }
87
+ if (typeof entry.sessionId === 'string' && entry.sessionId.length > 0) {
88
+ return entry.sessionId;
89
+ }
90
+ return currentSessionId;
91
+ }
92
+ function appendTranscriptEntry(parsed, entry) {
93
+ const sessionId = readSessionId(entry, parsed.sessionId);
94
+ if (entry.type === 'assistant') {
95
+ const message = toRecord(entry.message);
96
+ const text = extractTextContent(message?.content);
97
+ const events = extractToolUseEvents(message?.content);
98
+ return {
99
+ sessionId,
100
+ assistantText: [...(parsed.assistantText ? [parsed.assistantText] : []), ...text].join('\n'),
101
+ events: [...parsed.events, ...events],
102
+ };
103
+ }
104
+ if (entry.type === 'permission_request') {
105
+ return {
106
+ sessionId,
107
+ assistantText: parsed.assistantText,
108
+ events: [...parsed.events, {
109
+ type: 'permission_request',
110
+ tool: requireString(entry.tool, 'permission_request.tool'),
111
+ input: requireRecord(entry.input, 'permission_request.input'),
112
+ }],
113
+ };
114
+ }
115
+ if (entry.type === 'ask_user_question') {
116
+ return {
117
+ sessionId,
118
+ assistantText: parsed.assistantText,
119
+ events: [...parsed.events, {
120
+ type: 'ask_user_question',
121
+ questions: [{
122
+ question: requireString(entry.question, 'ask_user_question.question'),
123
+ }],
124
+ }],
125
+ };
126
+ }
127
+ return { ...parsed, sessionId };
128
+ }
129
+ function parseTranscriptLineForPolling(line, lineNumber, allowIncomplete) {
130
+ try {
131
+ return requireRecord(JSON.parse(line), `line ${lineNumber}`);
132
+ }
133
+ catch (error) {
134
+ if (error instanceof SyntaxError && allowIncomplete) {
135
+ return undefined;
136
+ }
137
+ if (error instanceof SyntaxError) {
138
+ throw new Error(`Malformed Claude terminal transcript JSON at line ${lineNumber}: ${error.message}`);
139
+ }
140
+ throw error;
141
+ }
142
+ }
143
+ function countLineNumberOffset(transcript) {
144
+ return [...transcript.matchAll(/\n/g)].length;
145
+ }
146
+ function transcriptSinceBaseline(transcript, baseline) {
147
+ if (!baseline) {
148
+ return transcript;
149
+ }
150
+ const transcriptBytes = Buffer.from(transcript, 'utf-8');
151
+ if (transcriptBytes.byteLength < baseline.byteOffset) {
152
+ throw new Error('Malformed Claude terminal transcript: transcript is shorter than the response baseline.');
153
+ }
154
+ return transcriptBytes.subarray(baseline.byteOffset).toString('utf-8');
155
+ }
156
+ function hasFinalNewline(transcript) {
157
+ return transcript.endsWith('\n') || transcript.endsWith('\r');
158
+ }
159
+ function canIgnoreLineParseError(index, lines, transcript, allowIncompleteFinalLine) {
160
+ return allowIncompleteFinalLine === true
161
+ && !hasFinalNewline(transcript)
162
+ && index === lines.length - 1;
163
+ }
164
+ function hasCompletionEntry(transcript, options) {
165
+ const { baseline, allowIncompleteFinalLine } = options;
166
+ const lineNumberOffset = baseline.lineNumberOffset;
167
+ const transcriptBody = transcriptSinceBaseline(transcript, baseline);
168
+ const lines = transcriptBody.split(/\r?\n/);
169
+ return lines.some((rawLine, index) => {
170
+ const line = rawLine.trim();
171
+ if (line.length === 0) {
172
+ return false;
173
+ }
174
+ const entry = parseTranscriptLineForPolling(line, index + 1 + lineNumberOffset, canIgnoreLineParseError(index, lines, transcriptBody, allowIncompleteFinalLine));
175
+ return entry?.type === 'result'
176
+ || (entry?.type === 'system' && entry.subtype === 'turn_duration');
177
+ });
178
+ }
179
+ export function parseClaudeTerminalTranscript(transcript, options = {}) {
180
+ const lineNumberOffset = options.baseline?.lineNumberOffset ?? 0;
181
+ const transcriptBody = transcriptSinceBaseline(transcript, options.baseline);
182
+ const lines = transcriptBody.split(/\r?\n/);
183
+ return lines.reduce((parsed, rawLine, index) => {
184
+ const line = rawLine.trim();
185
+ if (line.length === 0) {
186
+ return parsed;
187
+ }
188
+ const entry = parseTranscriptLineForPolling(line, index + 1 + lineNumberOffset, canIgnoreLineParseError(index, lines, transcriptBody, options.allowIncompleteFinalLine));
189
+ return entry ? appendTranscriptEntry(parsed, entry) : parsed;
190
+ }, { sessionId: '', assistantText: '', events: [] });
191
+ }
192
+ function hasBlockingInteractiveEvent(transcript) {
193
+ return transcript.events.some((event) => event.type === 'permission_request' || event.type === 'ask_user_question');
194
+ }
195
+ function withSessionIdFallback(transcript, sessionId) {
196
+ return transcript.sessionId ? transcript : { ...transcript, sessionId };
197
+ }
198
+ function throwIfAborted(signal) {
199
+ if (!signal?.aborted) {
200
+ return;
201
+ }
202
+ if (signal.reason instanceof Error) {
203
+ throw signal.reason;
204
+ }
205
+ if (typeof signal.reason === 'string' && signal.reason.length > 0) {
206
+ throw new Error(signal.reason);
207
+ }
208
+ throw new Error('Claude terminal transcript polling aborted.');
209
+ }
210
+ async function sleepWithAbort(pollIntervalMs, signal) {
211
+ throwIfAborted(signal);
212
+ try {
213
+ if (signal) {
214
+ await sleep(pollIntervalMs, undefined, { signal });
215
+ return;
216
+ }
217
+ await sleep(pollIntervalMs);
218
+ }
219
+ catch (error) {
220
+ if (signal?.aborted) {
221
+ throwIfAborted(signal);
222
+ }
223
+ throw error;
224
+ }
225
+ }
226
+ async function pollUntil(timeoutMs, pollIntervalMs, abortSignal, attempt, timeoutMessage) {
227
+ const deadline = Date.now() + timeoutMs;
228
+ throwIfAborted(abortSignal);
229
+ while (Date.now() <= deadline) {
230
+ throwIfAborted(abortSignal);
231
+ const value = await attempt();
232
+ throwIfAborted(abortSignal);
233
+ if (value !== undefined) {
234
+ return value;
235
+ }
236
+ await sleepWithAbort(pollIntervalMs, abortSignal);
237
+ throwIfAborted(abortSignal);
238
+ }
239
+ throwIfAborted(abortSignal);
240
+ throw new Error(timeoutMessage);
241
+ }
242
+ function requireSafeSessionFilename(sessionId) {
243
+ if (sessionId.length === 0
244
+ || sessionId === '.'
245
+ || sessionId === '..'
246
+ || sessionId.includes('/')
247
+ || sessionId.includes('\\')) {
248
+ throw new Error('Invalid Claude terminal session id: session id must be a single transcript filename.');
249
+ }
250
+ return `${sessionId}.jsonl`;
251
+ }
252
+ function transcriptPath(cwd, sessionId) {
253
+ const baseDir = resolve(getClaudeProjectSessionsDir(cwd));
254
+ const resolvedPath = resolve(baseDir, requireSafeSessionFilename(sessionId));
255
+ if (!resolvedPath.startsWith(`${baseDir}${sep}`)) {
256
+ throw new Error('Invalid Claude terminal session id: transcript path escapes the project session directory.');
257
+ }
258
+ return resolvedPath;
259
+ }
260
+ function isFileMissing(error) {
261
+ return error !== null
262
+ && typeof error === 'object'
263
+ && 'code' in error
264
+ && error.code === 'ENOENT';
265
+ }
266
+ async function readTranscript(cwd, sessionId) {
267
+ try {
268
+ return await readFile(transcriptPath(cwd, sessionId), 'utf-8');
269
+ }
270
+ catch (error) {
271
+ if (isFileMissing(error)) {
272
+ return undefined;
273
+ }
274
+ throw error;
275
+ }
276
+ }
277
+ export class ProjectClaudeTranscriptReader {
278
+ async readBaseline(options) {
279
+ const transcript = await readTranscript(options.cwd, options.sessionId);
280
+ if (transcript === undefined) {
281
+ return { byteOffset: 0, lineNumberOffset: 0 };
282
+ }
283
+ return {
284
+ byteOffset: Buffer.byteLength(transcript, 'utf-8'),
285
+ lineNumberOffset: countLineNumberOffset(transcript),
286
+ };
287
+ }
288
+ async findSession(options) {
289
+ return pollUntil(options.timeoutMs, options.pollIntervalMs, options.abortSignal, async () => {
290
+ const transcript = await readTranscript(options.cwd, options.sessionId);
291
+ if (transcript === undefined || transcript.trim().length === 0) {
292
+ return undefined;
293
+ }
294
+ const parsed = parseClaudeTerminalTranscript(transcript, {
295
+ allowIncompleteFinalLine: true,
296
+ });
297
+ if (!parsed.sessionId && !parsed.assistantText && parsed.events.length === 0) {
298
+ return undefined;
299
+ }
300
+ return { sessionId: parsed.sessionId || options.sessionId };
301
+ }, 'Timed out waiting for Claude terminal session id.');
302
+ }
303
+ async waitForAssistantResponse(options) {
304
+ return pollUntil(options.timeoutMs, options.pollIntervalMs, options.abortSignal, async () => {
305
+ const transcript = await readTranscript(options.cwd, options.session.sessionId);
306
+ if (transcript === undefined || transcript.trim().length === 0) {
307
+ return undefined;
308
+ }
309
+ const parsed = parseClaudeTerminalTranscript(transcript, {
310
+ baseline: options.baseline,
311
+ allowIncompleteFinalLine: true,
312
+ });
313
+ if (hasBlockingInteractiveEvent(parsed)) {
314
+ return withSessionIdFallback(parsed, options.session.sessionId);
315
+ }
316
+ if (!parsed.assistantText) {
317
+ return undefined;
318
+ }
319
+ if (!hasCompletionEntry(transcript, {
320
+ baseline: options.baseline,
321
+ allowIncompleteFinalLine: true,
322
+ })) {
323
+ return undefined;
324
+ }
325
+ return withSessionIdFallback(parsed, options.session.sessionId);
326
+ }, 'Timed out waiting for Claude terminal assistant response.');
327
+ }
328
+ }
329
+ //# sourceMappingURL=transcript-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-reader.js","sourceRoot":"","sources":["../../../src/infra/claude-terminal/transcript-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import type { McpServerConfig, PermissionMode } from '../../core/models/index.js';
2
+ import type { ClaudeEffort } from '../../core/models/workflow-types.js';
3
+ import type { PermissionHandler, AskUserQuestionHandler, AskUserQuestionInput } from '../../core/workflow/types.js';
4
+ import type { StreamCallback } from '../../shared/types/provider.js';
5
+ export type ClaudeTerminalBackendName = 'tmux';
6
+ export interface ClaudeTerminalCommand {
7
+ executable: string;
8
+ args: string[];
9
+ }
10
+ export interface TerminalSession {
11
+ id: string;
12
+ name: string;
13
+ }
14
+ export interface TerminalStartOptions {
15
+ cwd: string;
16
+ backend: ClaudeTerminalBackendName;
17
+ command: ClaudeTerminalCommand;
18
+ }
19
+ export interface TerminalBackend {
20
+ start(options: TerminalStartOptions): Promise<TerminalSession>;
21
+ pasteText(session: TerminalSession, text: string): Promise<void>;
22
+ stop(session: TerminalSession): Promise<void>;
23
+ }
24
+ export type ClaudeTerminalEvent = {
25
+ type: 'tool_use';
26
+ id: string;
27
+ tool: string;
28
+ input: Record<string, unknown>;
29
+ } | {
30
+ type: 'permission_request';
31
+ tool: string;
32
+ input: Record<string, unknown>;
33
+ } | {
34
+ type: 'ask_user_question';
35
+ questions: AskUserQuestionInput['questions'];
36
+ };
37
+ export interface ClaudeTerminalTranscript {
38
+ sessionId: string;
39
+ assistantText: string;
40
+ events: ClaudeTerminalEvent[];
41
+ }
42
+ export interface ClaudeTranscriptBaseline {
43
+ byteOffset: number;
44
+ lineNumberOffset: number;
45
+ }
46
+ export interface ClaudeSessionRef {
47
+ sessionId: string;
48
+ }
49
+ export interface FindClaudeSessionOptions {
50
+ cwd: string;
51
+ sessionId: string;
52
+ timeoutMs: number;
53
+ pollIntervalMs: number;
54
+ abortSignal?: AbortSignal;
55
+ }
56
+ export interface WaitForClaudeResponseOptions {
57
+ session: ClaudeSessionRef;
58
+ baseline: ClaudeTranscriptBaseline;
59
+ cwd: string;
60
+ timeoutMs: number;
61
+ pollIntervalMs: number;
62
+ abortSignal?: AbortSignal;
63
+ }
64
+ export interface ClaudeTranscriptReader {
65
+ readBaseline(options: Pick<FindClaudeSessionOptions, 'cwd' | 'sessionId'>): Promise<ClaudeTranscriptBaseline>;
66
+ findSession(options: FindClaudeSessionOptions): Promise<ClaudeSessionRef>;
67
+ waitForAssistantResponse(options: WaitForClaudeResponseOptions): Promise<ClaudeTerminalTranscript>;
68
+ }
69
+ export interface ClaudeTerminalCallOptions {
70
+ cwd: string;
71
+ abortSignal?: AbortSignal;
72
+ sessionId?: string;
73
+ model?: string;
74
+ effort?: ClaudeEffort;
75
+ allowedTools?: string[];
76
+ mcpServers?: Record<string, McpServerConfig>;
77
+ maxTurns?: number;
78
+ permissionMode?: PermissionMode;
79
+ bypassPermissions?: boolean;
80
+ backend?: ClaudeTerminalBackendName;
81
+ timeoutMs?: number;
82
+ keepSession?: boolean;
83
+ transcriptPollIntervalMs?: number;
84
+ onStream?: StreamCallback;
85
+ onPermissionRequest?: PermissionHandler;
86
+ onAskUserQuestion?: AskUserQuestionHandler;
87
+ outputSchema?: Record<string, unknown>;
88
+ systemPrompt?: string;
89
+ pathToClaudeCodeExecutable?: string;
90
+ terminalBackend?: TerminalBackend;
91
+ transcriptReader?: ClaudeTranscriptReader;
92
+ }
93
+ export interface BuildClaudeTerminalCommandOptions {
94
+ pathToClaudeCodeExecutable?: string;
95
+ model?: string;
96
+ effort?: ClaudeEffort;
97
+ allowedTools?: string[];
98
+ mcpConfigPath?: string;
99
+ permissionMode?: PermissionMode;
100
+ bypassPermissions?: boolean;
101
+ sessionId?: string;
102
+ newSessionId?: string;
103
+ systemPrompt?: string;
104
+ outputSchema?: Record<string, unknown>;
105
+ }
106
+ //# sourceMappingURL=types.d.ts.map