@ttfw/envoi 1.0.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 (283) hide show
  1. package/README.md +238 -0
  2. package/dist/commands/app.d.ts +2 -0
  3. package/dist/commands/app.d.ts.map +1 -0
  4. package/dist/commands/app.js +31 -0
  5. package/dist/commands/app.js.map +1 -0
  6. package/dist/commands/autonomy.d.ts +6 -0
  7. package/dist/commands/autonomy.d.ts.map +1 -0
  8. package/dist/commands/autonomy.js +89 -0
  9. package/dist/commands/autonomy.js.map +1 -0
  10. package/dist/commands/builder.d.ts +13 -0
  11. package/dist/commands/builder.d.ts.map +1 -0
  12. package/dist/commands/builder.js +142 -0
  13. package/dist/commands/builder.js.map +1 -0
  14. package/dist/commands/idea.d.ts +12 -0
  15. package/dist/commands/idea.d.ts.map +1 -0
  16. package/dist/commands/idea.js +79 -0
  17. package/dist/commands/idea.js.map +1 -0
  18. package/dist/commands/init.d.ts +18 -0
  19. package/dist/commands/init.d.ts.map +1 -0
  20. package/dist/commands/init.js +423 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/mode.d.ts +13 -0
  23. package/dist/commands/mode.d.ts.map +1 -0
  24. package/dist/commands/mode.js +96 -0
  25. package/dist/commands/mode.js.map +1 -0
  26. package/dist/commands/onboard.d.ts +37 -0
  27. package/dist/commands/onboard.d.ts.map +1 -0
  28. package/dist/commands/onboard.js +743 -0
  29. package/dist/commands/onboard.js.map +1 -0
  30. package/dist/commands/pr-note.d.ts +8 -0
  31. package/dist/commands/pr-note.d.ts.map +1 -0
  32. package/dist/commands/pr-note.js +27 -0
  33. package/dist/commands/pr-note.js.map +1 -0
  34. package/dist/commands/undo.d.ts +7 -0
  35. package/dist/commands/undo.d.ts.map +1 -0
  36. package/dist/commands/undo.js +59 -0
  37. package/dist/commands/undo.js.map +1 -0
  38. package/dist/commands/update.d.ts +24 -0
  39. package/dist/commands/update.d.ts.map +1 -0
  40. package/dist/commands/update.js +248 -0
  41. package/dist/commands/update.js.map +1 -0
  42. package/dist/constants/report_codes.d.ts +29 -0
  43. package/dist/constants/report_codes.d.ts.map +1 -0
  44. package/dist/constants/report_codes.js +69 -0
  45. package/dist/constants/report_codes.js.map +1 -0
  46. package/dist/index.d.ts +3 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +675 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/lib/autonomy.d.ts +16 -0
  51. package/dist/lib/autonomy.d.ts.map +1 -0
  52. package/dist/lib/autonomy.js +38 -0
  53. package/dist/lib/autonomy.js.map +1 -0
  54. package/dist/lib/blocked.d.ts +87 -0
  55. package/dist/lib/blocked.d.ts.map +1 -0
  56. package/dist/lib/blocked.js +134 -0
  57. package/dist/lib/blocked.js.map +1 -0
  58. package/dist/lib/branding.d.ts +13 -0
  59. package/dist/lib/branding.d.ts.map +1 -0
  60. package/dist/lib/branding.js +19 -0
  61. package/dist/lib/branding.js.map +1 -0
  62. package/dist/lib/claude.d.ts +42 -0
  63. package/dist/lib/claude.d.ts.map +1 -0
  64. package/dist/lib/claude.js +291 -0
  65. package/dist/lib/claude.js.map +1 -0
  66. package/dist/lib/config.d.ts +71 -0
  67. package/dist/lib/config.d.ts.map +1 -0
  68. package/dist/lib/config.js +410 -0
  69. package/dist/lib/config.js.map +1 -0
  70. package/dist/lib/diff.d.ts +150 -0
  71. package/dist/lib/diff.d.ts.map +1 -0
  72. package/dist/lib/diff.js +257 -0
  73. package/dist/lib/diff.js.map +1 -0
  74. package/dist/lib/doctor.d.ts +67 -0
  75. package/dist/lib/doctor.d.ts.map +1 -0
  76. package/dist/lib/doctor.js +211 -0
  77. package/dist/lib/doctor.js.map +1 -0
  78. package/dist/lib/fingerprint.d.ts +27 -0
  79. package/dist/lib/fingerprint.d.ts.map +1 -0
  80. package/dist/lib/fingerprint.js +116 -0
  81. package/dist/lib/fingerprint.js.map +1 -0
  82. package/dist/lib/fs.d.ts +93 -0
  83. package/dist/lib/fs.d.ts.map +1 -0
  84. package/dist/lib/fs.js +179 -0
  85. package/dist/lib/fs.js.map +1 -0
  86. package/dist/lib/git.d.ts +177 -0
  87. package/dist/lib/git.d.ts.map +1 -0
  88. package/dist/lib/git.js +355 -0
  89. package/dist/lib/git.js.map +1 -0
  90. package/dist/lib/git_branching.d.ts +84 -0
  91. package/dist/lib/git_branching.d.ts.map +1 -0
  92. package/dist/lib/git_branching.js +327 -0
  93. package/dist/lib/git_branching.js.map +1 -0
  94. package/dist/lib/gitignore.d.ts +26 -0
  95. package/dist/lib/gitignore.d.ts.map +1 -0
  96. package/dist/lib/gitignore.js +119 -0
  97. package/dist/lib/gitignore.js.map +1 -0
  98. package/dist/lib/guardrails.d.ts +232 -0
  99. package/dist/lib/guardrails.d.ts.map +1 -0
  100. package/dist/lib/guardrails.js +323 -0
  101. package/dist/lib/guardrails.js.map +1 -0
  102. package/dist/lib/history.d.ts +110 -0
  103. package/dist/lib/history.d.ts.map +1 -0
  104. package/dist/lib/history.js +236 -0
  105. package/dist/lib/history.js.map +1 -0
  106. package/dist/lib/index.d.ts +29 -0
  107. package/dist/lib/index.d.ts.map +1 -0
  108. package/dist/lib/index.js +29 -0
  109. package/dist/lib/index.js.map +1 -0
  110. package/dist/lib/json-extract.d.ts +42 -0
  111. package/dist/lib/json-extract.d.ts.map +1 -0
  112. package/dist/lib/json-extract.js +201 -0
  113. package/dist/lib/json-extract.js.map +1 -0
  114. package/dist/lib/judge.d.ts +237 -0
  115. package/dist/lib/judge.d.ts.map +1 -0
  116. package/dist/lib/judge.js +501 -0
  117. package/dist/lib/judge.js.map +1 -0
  118. package/dist/lib/lock.d.ts +79 -0
  119. package/dist/lib/lock.d.ts.map +1 -0
  120. package/dist/lib/lock.js +254 -0
  121. package/dist/lib/lock.js.map +1 -0
  122. package/dist/lib/migration.d.ts +9 -0
  123. package/dist/lib/migration.d.ts.map +1 -0
  124. package/dist/lib/migration.js +74 -0
  125. package/dist/lib/migration.js.map +1 -0
  126. package/dist/lib/paths.d.ts +18 -0
  127. package/dist/lib/paths.d.ts.map +1 -0
  128. package/dist/lib/paths.js +27 -0
  129. package/dist/lib/paths.js.map +1 -0
  130. package/dist/lib/preflight.d.ts +33 -0
  131. package/dist/lib/preflight.d.ts.map +1 -0
  132. package/dist/lib/preflight.js +177 -0
  133. package/dist/lib/preflight.js.map +1 -0
  134. package/dist/lib/prompt_budget.d.ts +18 -0
  135. package/dist/lib/prompt_budget.d.ts.map +1 -0
  136. package/dist/lib/prompt_budget.js +36 -0
  137. package/dist/lib/prompt_budget.js.map +1 -0
  138. package/dist/lib/report.d.ts +102 -0
  139. package/dist/lib/report.d.ts.map +1 -0
  140. package/dist/lib/report.js +347 -0
  141. package/dist/lib/report.js.map +1 -0
  142. package/dist/lib/reviewer-flow.d.ts +80 -0
  143. package/dist/lib/reviewer-flow.d.ts.map +1 -0
  144. package/dist/lib/reviewer-flow.js +138 -0
  145. package/dist/lib/reviewer-flow.js.map +1 -0
  146. package/dist/lib/reviewer.d.ts +53 -0
  147. package/dist/lib/reviewer.d.ts.map +1 -0
  148. package/dist/lib/reviewer.js +199 -0
  149. package/dist/lib/reviewer.js.map +1 -0
  150. package/dist/lib/risk.d.ts +127 -0
  151. package/dist/lib/risk.d.ts.map +1 -0
  152. package/dist/lib/risk.js +192 -0
  153. package/dist/lib/risk.js.map +1 -0
  154. package/dist/lib/rollback.d.ts +143 -0
  155. package/dist/lib/rollback.d.ts.map +1 -0
  156. package/dist/lib/rollback.js +244 -0
  157. package/dist/lib/rollback.js.map +1 -0
  158. package/dist/lib/schema.d.ts +47 -0
  159. package/dist/lib/schema.d.ts.map +1 -0
  160. package/dist/lib/schema.js +91 -0
  161. package/dist/lib/schema.js.map +1 -0
  162. package/dist/lib/scope.d.ts +89 -0
  163. package/dist/lib/scope.d.ts.map +1 -0
  164. package/dist/lib/scope.js +135 -0
  165. package/dist/lib/scope.js.map +1 -0
  166. package/dist/lib/self_update.d.ts +13 -0
  167. package/dist/lib/self_update.d.ts.map +1 -0
  168. package/dist/lib/self_update.js +172 -0
  169. package/dist/lib/self_update.js.map +1 -0
  170. package/dist/lib/state.d.ts +143 -0
  171. package/dist/lib/state.d.ts.map +1 -0
  172. package/dist/lib/state.js +258 -0
  173. package/dist/lib/state.js.map +1 -0
  174. package/dist/lib/tick.d.ts +310 -0
  175. package/dist/lib/tick.d.ts.map +1 -0
  176. package/dist/lib/tick.js +424 -0
  177. package/dist/lib/tick.js.map +1 -0
  178. package/dist/lib/transport.d.ts +145 -0
  179. package/dist/lib/transport.d.ts.map +1 -0
  180. package/dist/lib/transport.js +237 -0
  181. package/dist/lib/transport.js.map +1 -0
  182. package/dist/lib/verdict_labels.d.ts +5 -0
  183. package/dist/lib/verdict_labels.d.ts.map +1 -0
  184. package/dist/lib/verdict_labels.js +25 -0
  185. package/dist/lib/verdict_labels.js.map +1 -0
  186. package/dist/lib/verify-safety.d.ts +63 -0
  187. package/dist/lib/verify-safety.d.ts.map +1 -0
  188. package/dist/lib/verify-safety.js +123 -0
  189. package/dist/lib/verify-safety.js.map +1 -0
  190. package/dist/lib/verify.d.ts +139 -0
  191. package/dist/lib/verify.d.ts.map +1 -0
  192. package/dist/lib/verify.js +311 -0
  193. package/dist/lib/verify.js.map +1 -0
  194. package/dist/lib/workspace_state.d.ts +79 -0
  195. package/dist/lib/workspace_state.d.ts.map +1 -0
  196. package/dist/lib/workspace_state.js +283 -0
  197. package/dist/lib/workspace_state.js.map +1 -0
  198. package/dist/runner/builder.d.ts +58 -0
  199. package/dist/runner/builder.d.ts.map +1 -0
  200. package/dist/runner/builder.js +775 -0
  201. package/dist/runner/builder.js.map +1 -0
  202. package/dist/runner/builder_parse.d.ts +37 -0
  203. package/dist/runner/builder_parse.d.ts.map +1 -0
  204. package/dist/runner/builder_parse.js +76 -0
  205. package/dist/runner/builder_parse.js.map +1 -0
  206. package/dist/runner/index.d.ts +9 -0
  207. package/dist/runner/index.d.ts.map +1 -0
  208. package/dist/runner/index.js +7 -0
  209. package/dist/runner/index.js.map +1 -0
  210. package/dist/runner/loop.d.ts +51 -0
  211. package/dist/runner/loop.d.ts.map +1 -0
  212. package/dist/runner/loop.js +221 -0
  213. package/dist/runner/loop.js.map +1 -0
  214. package/dist/runner/orchestrator.d.ts +67 -0
  215. package/dist/runner/orchestrator.d.ts.map +1 -0
  216. package/dist/runner/orchestrator.js +376 -0
  217. package/dist/runner/orchestrator.js.map +1 -0
  218. package/dist/runner/tick.d.ts +10 -0
  219. package/dist/runner/tick.d.ts.map +1 -0
  220. package/dist/runner/tick.js +1639 -0
  221. package/dist/runner/tick.js.map +1 -0
  222. package/dist/types/blocked.d.ts +52 -0
  223. package/dist/types/blocked.d.ts.map +1 -0
  224. package/dist/types/blocked.js +8 -0
  225. package/dist/types/blocked.js.map +1 -0
  226. package/dist/types/builder.d.ts +25 -0
  227. package/dist/types/builder.d.ts.map +1 -0
  228. package/dist/types/builder.js +7 -0
  229. package/dist/types/builder.js.map +1 -0
  230. package/dist/types/claude.d.ts +86 -0
  231. package/dist/types/claude.d.ts.map +1 -0
  232. package/dist/types/claude.js +48 -0
  233. package/dist/types/claude.js.map +1 -0
  234. package/dist/types/config.d.ts +384 -0
  235. package/dist/types/config.d.ts.map +1 -0
  236. package/dist/types/config.js +7 -0
  237. package/dist/types/config.js.map +1 -0
  238. package/dist/types/index.d.ts +18 -0
  239. package/dist/types/index.d.ts.map +1 -0
  240. package/dist/types/index.js +8 -0
  241. package/dist/types/index.js.map +1 -0
  242. package/dist/types/lock.d.ts +21 -0
  243. package/dist/types/lock.d.ts.map +1 -0
  244. package/dist/types/lock.js +8 -0
  245. package/dist/types/lock.js.map +1 -0
  246. package/dist/types/preflight.d.ts +49 -0
  247. package/dist/types/preflight.d.ts.map +1 -0
  248. package/dist/types/preflight.js +8 -0
  249. package/dist/types/preflight.js.map +1 -0
  250. package/dist/types/report.d.ts +161 -0
  251. package/dist/types/report.d.ts.map +1 -0
  252. package/dist/types/report.js +8 -0
  253. package/dist/types/report.js.map +1 -0
  254. package/dist/types/reviewer.d.ts +66 -0
  255. package/dist/types/reviewer.d.ts.map +1 -0
  256. package/dist/types/reviewer.js +5 -0
  257. package/dist/types/reviewer.js.map +1 -0
  258. package/dist/types/state.d.ts +124 -0
  259. package/dist/types/state.d.ts.map +1 -0
  260. package/dist/types/state.js +20 -0
  261. package/dist/types/state.js.map +1 -0
  262. package/dist/types/task.d.ts +117 -0
  263. package/dist/types/task.d.ts.map +1 -0
  264. package/dist/types/task.js +7 -0
  265. package/dist/types/task.js.map +1 -0
  266. package/dist/types/workspace_state.d.ts +125 -0
  267. package/dist/types/workspace_state.d.ts.map +1 -0
  268. package/dist/types/workspace_state.js +10 -0
  269. package/dist/types/workspace_state.js.map +1 -0
  270. package/envoi.config.json +191 -0
  271. package/package.json +52 -0
  272. package/relais/prompts/.gitkeep +0 -0
  273. package/relais/prompts/builder.system.txt +13 -0
  274. package/relais/prompts/builder.user.txt +15 -0
  275. package/relais/prompts/orchestrator.system.txt +37 -0
  276. package/relais/prompts/orchestrator.user.txt +34 -0
  277. package/relais/prompts/reviewer.system.txt +33 -0
  278. package/relais/prompts/reviewer.user.txt +35 -0
  279. package/relais/schemas/.gitkeep +0 -0
  280. package/relais/schemas/builder_result.schema.json +29 -0
  281. package/relais/schemas/report.schema.json +195 -0
  282. package/relais/schemas/reviewer_result.schema.json +70 -0
  283. package/relais/schemas/task.schema.json +155 -0
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Claude Code CLI wrapper for invoking Claude with proper flags.
3
+ *
4
+ * Provides functions to build CLI arguments, spawn processes, and parse responses.
5
+ */
6
+ import { spawn } from 'node:child_process';
7
+ import { ClaudeError, InterruptedError } from '../types/claude.js';
8
+ function isDebugEnabled() {
9
+ return process.env.ENVOI_DEBUG === '1';
10
+ }
11
+ /**
12
+ * Builds CLI arguments array from config and invocation parameters.
13
+ *
14
+ * @param config - Claude Code CLI configuration
15
+ * @param invocation - Invocation parameters
16
+ * @returns Array of CLI arguments
17
+ */
18
+ export function buildClaudeArgs(config, invocation) {
19
+ const args = [
20
+ '--print', // non-interactive output
21
+ '--output-format',
22
+ config.output_format,
23
+ '--max-turns',
24
+ invocation.maxTurns.toString(),
25
+ '--no-session-persistence', // always
26
+ '--permission-mode',
27
+ invocation.permissionMode,
28
+ '--model',
29
+ invocation.model,
30
+ ];
31
+ // Add optional allowedTools flag
32
+ if (invocation.allowedTools) {
33
+ args.push('--allowedTools', invocation.allowedTools);
34
+ }
35
+ // Add optional system-prompt flag
36
+ if (invocation.systemPrompt) {
37
+ args.push('--system-prompt', invocation.systemPrompt);
38
+ }
39
+ // Add the prompt as the last argument
40
+ args.push(invocation.prompt);
41
+ return args;
42
+ }
43
+ /**
44
+ * Parses the JSON response from Claude Code CLI and extracts the result.
45
+ *
46
+ * The CLI returns a JSON wrapper with format: { result: 'model output', ... }
47
+ * This function extracts the .result field as the actual model text.
48
+ *
49
+ * When the CLI returns an error response (e.g., error_max_turns), the result
50
+ * field may be missing. In such cases, this function returns an empty result
51
+ * so callers can handle the situation gracefully.
52
+ *
53
+ * @param stdout - Standard output from CLI process
54
+ * @returns Parsed result object with result field and optional subtype for errors
55
+ * @throws {Error} If JSON parsing fails
56
+ */
57
+ function toNumberOrNull(value) {
58
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
59
+ }
60
+ function parseUsageShape(candidate) {
61
+ if (typeof candidate !== 'object' || candidate === null)
62
+ return null;
63
+ const usage = candidate;
64
+ const input = toNumberOrNull(usage.input_tokens) ??
65
+ toNumberOrNull(usage.prompt_tokens) ??
66
+ toNumberOrNull(usage.inputTokens);
67
+ const output = toNumberOrNull(usage.output_tokens) ??
68
+ toNumberOrNull(usage.completion_tokens) ??
69
+ toNumberOrNull(usage.outputTokens);
70
+ const total = toNumberOrNull(usage.total_tokens) ?? toNumberOrNull(usage.totalTokens);
71
+ const cacheCreation = toNumberOrNull(usage.cache_creation_input_tokens);
72
+ const cacheRead = toNumberOrNull(usage.cache_read_input_tokens);
73
+ const computedTotal = total ??
74
+ (input !== null && output !== null ? input + output : null);
75
+ const hasAnyValue = input !== null ||
76
+ output !== null ||
77
+ computedTotal !== null ||
78
+ cacheCreation !== null ||
79
+ cacheRead !== null;
80
+ if (!hasAnyValue)
81
+ return null;
82
+ return {
83
+ input_tokens: input,
84
+ output_tokens: output,
85
+ total_tokens: computedTotal,
86
+ cache_creation_input_tokens: cacheCreation,
87
+ cache_read_input_tokens: cacheRead,
88
+ };
89
+ }
90
+ function extractTokenUsage(raw) {
91
+ const candidates = [
92
+ raw.usage,
93
+ raw.token_usage,
94
+ raw.metrics,
95
+ raw.metrics?.usage,
96
+ raw.message?.usage,
97
+ ];
98
+ for (const candidate of candidates) {
99
+ const usage = parseUsageShape(candidate);
100
+ if (usage)
101
+ return usage;
102
+ }
103
+ return null;
104
+ }
105
+ export function parseClaudeResponse(stdout) {
106
+ let parsed;
107
+ try {
108
+ parsed = JSON.parse(stdout);
109
+ }
110
+ catch (error) {
111
+ throw new Error(`Failed to parse JSON response: ${error instanceof Error ? error.message : String(error)}`);
112
+ }
113
+ if (typeof parsed !== 'object' || parsed === null) {
114
+ throw new Error('Parsed response is not an object');
115
+ }
116
+ const obj = parsed;
117
+ // Handle CLI error responses (e.g., error_max_turns) that lack a result field
118
+ // Return empty result so callers can handle based on subtype
119
+ if (typeof obj.result !== 'string') {
120
+ const subtype = typeof obj.subtype === 'string' ? obj.subtype : undefined;
121
+ const tokenUsage = extractTokenUsage(obj);
122
+ if (isDebugEnabled()) {
123
+ console.log(`[CLAUDE_DEBUG] No result field in response, subtype=${subtype}`);
124
+ }
125
+ return {
126
+ result: '',
127
+ raw: parsed,
128
+ subtype,
129
+ tokenUsage,
130
+ };
131
+ }
132
+ const tokenUsage = extractTokenUsage(obj);
133
+ return {
134
+ result: obj.result,
135
+ raw: parsed,
136
+ subtype: typeof obj.subtype === 'string' ? obj.subtype : undefined,
137
+ tokenUsage,
138
+ };
139
+ }
140
+ /**
141
+ * Invokes Claude Code CLI with the given configuration and invocation parameters.
142
+ *
143
+ * @param config - Claude Code CLI configuration
144
+ * @param invocation - Invocation parameters including prompt, model, etc.
145
+ * @returns Promise resolving to ClaudeResponse with parsed output
146
+ * @throws {ClaudeError} If invocation fails or times out
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const response = await invokeClaudeCode(config, {
151
+ * prompt: 'Hello, Claude!',
152
+ * maxTurns: 1,
153
+ * permissionMode: 'plan',
154
+ * model: 'claude-3-5-sonnet-20241022',
155
+ * timeout: 60000
156
+ * });
157
+ * ```
158
+ */
159
+ export async function invokeClaudeCode(config, invocation) {
160
+ // Short-circuit if already aborted
161
+ if (invocation.signal?.aborted) {
162
+ throw new InterruptedError('Claude Code invocation aborted by signal');
163
+ }
164
+ const startTime = Date.now();
165
+ const args = buildClaudeArgs(config, invocation);
166
+ return new Promise((resolve, reject) => {
167
+ let stdout = '';
168
+ let stderr = '';
169
+ let timeoutId = null;
170
+ let aborted = false;
171
+ let abortHandler = null;
172
+ let exited = false;
173
+ let killTimerId = null;
174
+ // Spawn the process
175
+ const child = spawn(config.command, args, {
176
+ stdio: ['pipe', 'pipe', 'pipe'],
177
+ });
178
+ if (isDebugEnabled()) {
179
+ console.log(`[CLAUDE_DEBUG] Spawned PID: ${child.pid}`);
180
+ }
181
+ // Close stdin: we always pass prompt via argv; prevents cli waiting on stdin
182
+ child.stdin?.end();
183
+ // Cleanup function to remove all listeners and timers
184
+ const cleanup = () => {
185
+ if (timeoutId) {
186
+ clearTimeout(timeoutId);
187
+ timeoutId = null;
188
+ }
189
+ if (killTimerId) {
190
+ clearTimeout(killTimerId);
191
+ killTimerId = null;
192
+ }
193
+ if (abortHandler && invocation.signal) {
194
+ invocation.signal.removeEventListener('abort', abortHandler);
195
+ abortHandler = null;
196
+ }
197
+ };
198
+ // Track if child has exited
199
+ child.on('exit', (code, signal) => {
200
+ if (isDebugEnabled()) {
201
+ console.log(`[CLAUDE_DEBUG] Exit: code=${code}, signal=${signal}`);
202
+ }
203
+ exited = true;
204
+ // Clear the SIGKILL escalation timer if child exited
205
+ if (killTimerId) {
206
+ clearTimeout(killTimerId);
207
+ killTimerId = null;
208
+ }
209
+ });
210
+ // Handle abort signal
211
+ if (invocation.signal) {
212
+ abortHandler = () => {
213
+ if (aborted)
214
+ return;
215
+ aborted = true;
216
+ cleanup();
217
+ child.kill('SIGTERM');
218
+ // Force kill after 1 second if still alive
219
+ killTimerId = setTimeout(() => {
220
+ if (!exited)
221
+ child.kill('SIGKILL');
222
+ }, 1000);
223
+ reject(new InterruptedError('Claude Code invocation aborted by signal'));
224
+ };
225
+ invocation.signal.addEventListener('abort', abortHandler, { once: true });
226
+ }
227
+ // Set up timeout
228
+ if (invocation.timeout > 0) {
229
+ timeoutId = setTimeout(() => {
230
+ cleanup();
231
+ child.kill('SIGTERM');
232
+ reject(new ClaudeError(`Claude Code CLI invocation timed out after ${invocation.timeout}ms`, 124, // Standard timeout exit code
233
+ stderr));
234
+ }, invocation.timeout);
235
+ }
236
+ // Capture stdout
237
+ child.stdout?.on('data', (data) => {
238
+ stdout += data.toString();
239
+ });
240
+ // Capture stderr
241
+ child.stderr?.on('data', (data) => {
242
+ stderr += data.toString();
243
+ });
244
+ // Handle process completion
245
+ child.on('close', (code) => {
246
+ // If we were aborted, error was already handled
247
+ if (aborted) {
248
+ return;
249
+ }
250
+ cleanup();
251
+ const durationMs = Date.now() - startTime;
252
+ const exitCode = code ?? 0;
253
+ // If process was killed by timeout, error was already handled
254
+ if (code === null && !aborted) {
255
+ return;
256
+ }
257
+ try {
258
+ // Parse the JSON response
259
+ const parsed = parseClaudeResponse(stdout);
260
+ // If result is empty and we have an error subtype, treat as failure
261
+ // Common subtypes: error_max_turns, error_during_execution
262
+ const isErrorSubtype = parsed.subtype?.startsWith('error_') ?? false;
263
+ const effectiveSuccess = exitCode === 0 && !isErrorSubtype;
264
+ resolve({
265
+ success: effectiveSuccess,
266
+ result: effectiveSuccess ? parsed.result : (parsed.result || null),
267
+ raw: parsed.raw,
268
+ exitCode,
269
+ durationMs,
270
+ stderr,
271
+ tokenUsage: parsed.tokenUsage,
272
+ });
273
+ }
274
+ catch (error) {
275
+ if (isDebugEnabled()) {
276
+ console.log(`[CLAUDE_DEBUG] Parse failed. stdout (first 2000 chars):\n${stdout.slice(0, 2000)}`);
277
+ }
278
+ reject(new ClaudeError(`Failed to parse Claude response: ${error instanceof Error ? error.message : String(error)}`, exitCode, stderr, error instanceof Error ? error : undefined));
279
+ }
280
+ });
281
+ // Handle process errors
282
+ child.on('error', (error) => {
283
+ if (aborted) {
284
+ return;
285
+ }
286
+ cleanup();
287
+ reject(new ClaudeError(`Failed to spawn Claude Code CLI process: ${error.message}`, 1, stderr, error));
288
+ });
289
+ });
290
+ }
291
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Configuration loading and validation utilities.
3
+ *
4
+ * Provides functions to load, find, and validate Envoi config files.
5
+ */
6
+ import type { EnvoiConfig } from '../types/config.js';
7
+ /** Default configuration file name */
8
+ export declare const CONFIG_FILE_NAME = "envoi.config.json";
9
+ export declare const LEGACY_CONFIG_NAME = "relais.config.json";
10
+ /**
11
+ * Error thrown when configuration loading or validation fails.
12
+ */
13
+ export declare class ConfigError extends Error {
14
+ readonly configPath?: string | undefined;
15
+ readonly cause?: Error | undefined;
16
+ constructor(message: string, configPath?: string | undefined, cause?: Error | undefined);
17
+ }
18
+ /**
19
+ * Searches for a configuration file by walking upward from the current directory.
20
+ * Stops at the filesystem root if not found.
21
+ *
22
+ * @returns Path to the config file if found, null otherwise
23
+ */
24
+ export declare function findConfigFile(): Promise<string | null>;
25
+ /**
26
+ * Gets the repository root directory (where the config file is located).
27
+ * If configPath is provided, returns its directory. Otherwise, searches upward
28
+ * from the current directory.
29
+ *
30
+ * @param configPath - Optional path to the config file. If provided, returns its directory.
31
+ * @returns Path to the repository root directory, or null if config not found
32
+ */
33
+ export declare function getRepoRoot(configPath?: string): Promise<string | null>;
34
+ /**
35
+ * Changes the current working directory to the repository root.
36
+ * This ensures that relative paths in config (workspace_dir, lockfile, etc.)
37
+ * resolve correctly regardless of where the command was invoked from.
38
+ *
39
+ * @param configPath - Optional path to the config file. If not provided, searches upward.
40
+ * @throws {ConfigError} If the config file cannot be found
41
+ */
42
+ export declare function chdirToRepoRoot(configPath?: string): Promise<void>;
43
+ /**
44
+ * Validates that an object conforms to the EnvoiConfig interface.
45
+ *
46
+ * This performs structural validation to ensure all required fields are present
47
+ * and have the expected types.
48
+ *
49
+ * @param config - The object to validate
50
+ * @returns True if the object is a valid EnvoiConfig
51
+ */
52
+ export declare function validateConfig(config: unknown): config is EnvoiConfig;
53
+ /**
54
+ * Loads and validates an Envoi configuration file.
55
+ *
56
+ * @param configPath - Optional path to the config file. If not provided,
57
+ * searches upward for a known config file name.
58
+ * @returns The validated configuration object
59
+ * @throws {ConfigError} If the config file cannot be found, read, or is invalid
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * // Load from default location
64
+ * const config = await loadConfig();
65
+ *
66
+ * // Load from specific path
67
+ * const config = await loadConfig('/path/to/envoi.config.json');
68
+ * ```
69
+ */
70
+ export declare function loadConfig(configPath?: string): Promise<EnvoiConfig>;
71
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQtD,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,sBAA2B,CAAC;AACzD,eAAO,MAAM,kBAAkB,uBAA0B,CAAC;AAE1D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;aAGlB,UAAU,CAAC,EAAE,MAAM;aACnB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB7D;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW7E;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,WAAW,CA4NrE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuC1E"}