pi-agent-flow 2.2.33 → 2.3.1

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 (214) hide show
  1. package/agents/craft.md +1 -1
  2. package/agents/debug.md +1 -1
  3. package/agents/ideas.md +1 -1
  4. package/dist/batch/batch-bash.d.ts +6 -1
  5. package/dist/batch/batch-bash.d.ts.map +1 -1
  6. package/dist/batch/batch-bash.js +7 -2
  7. package/dist/batch/batch-bash.js.map +1 -1
  8. package/dist/batch/constants.d.ts +4 -2
  9. package/dist/batch/constants.d.ts.map +1 -1
  10. package/dist/batch/execute.d.ts +2 -2
  11. package/dist/batch/execute.d.ts.map +1 -1
  12. package/dist/batch/execute.js +13 -1
  13. package/dist/batch/execute.js.map +1 -1
  14. package/dist/batch/fuzzy-edit.d.ts +1 -1
  15. package/dist/batch/fuzzy-edit.d.ts.map +1 -1
  16. package/dist/batch/fuzzy-edit.js +43 -17
  17. package/dist/batch/fuzzy-edit.js.map +1 -1
  18. package/dist/batch/summary.d.ts.map +1 -1
  19. package/dist/batch/summary.js +146 -0
  20. package/dist/batch/summary.js.map +1 -1
  21. package/dist/cli/ask-user.d.ts +40 -0
  22. package/dist/cli/ask-user.d.ts.map +1 -0
  23. package/dist/cli/ask-user.js +117 -0
  24. package/dist/cli/ask-user.js.map +1 -0
  25. package/dist/cli/batch-read.d.ts +17 -0
  26. package/dist/cli/batch-read.d.ts.map +1 -0
  27. package/dist/cli/batch-read.js +76 -0
  28. package/dist/cli/batch-read.js.map +1 -0
  29. package/dist/cli/batch.d.ts +20 -0
  30. package/dist/cli/batch.d.ts.map +1 -0
  31. package/dist/cli/batch.js +128 -0
  32. package/dist/cli/batch.js.map +1 -0
  33. package/dist/cli/chain.d.ts +24 -0
  34. package/dist/cli/chain.d.ts.map +1 -0
  35. package/dist/cli/chain.js +166 -0
  36. package/dist/cli/chain.js.map +1 -0
  37. package/dist/cli/exec/bash.d.ts +7 -0
  38. package/dist/cli/exec/bash.d.ts.map +1 -0
  39. package/dist/cli/exec/bash.js +63 -0
  40. package/dist/cli/exec/bash.js.map +1 -0
  41. package/dist/cli/exec/delete.d.ts +6 -0
  42. package/dist/cli/exec/delete.d.ts.map +1 -0
  43. package/dist/cli/exec/delete.js +18 -0
  44. package/dist/cli/exec/delete.js.map +1 -0
  45. package/dist/cli/exec/edit.d.ts +6 -0
  46. package/dist/cli/exec/edit.d.ts.map +1 -0
  47. package/dist/cli/exec/edit.js +44 -0
  48. package/dist/cli/exec/edit.js.map +1 -0
  49. package/dist/cli/exec/patch.d.ts +6 -0
  50. package/dist/cli/exec/patch.d.ts.map +1 -0
  51. package/dist/cli/exec/patch.js +20 -0
  52. package/dist/cli/exec/patch.js.map +1 -0
  53. package/dist/cli/exec/poll.d.ts +7 -0
  54. package/dist/cli/exec/poll.d.ts.map +1 -0
  55. package/dist/cli/exec/poll.js +59 -0
  56. package/dist/cli/exec/poll.js.map +1 -0
  57. package/dist/cli/exec/read.d.ts +15 -0
  58. package/dist/cli/exec/read.d.ts.map +1 -0
  59. package/dist/cli/exec/read.js +54 -0
  60. package/dist/cli/exec/read.js.map +1 -0
  61. package/dist/cli/exec/rg.d.ts +10 -0
  62. package/dist/cli/exec/rg.d.ts.map +1 -0
  63. package/dist/cli/exec/rg.js +32 -0
  64. package/dist/cli/exec/rg.js.map +1 -0
  65. package/dist/cli/exec/util.d.ts +9 -0
  66. package/dist/cli/exec/util.d.ts.map +1 -0
  67. package/dist/cli/exec/util.js +8 -0
  68. package/dist/cli/exec/util.js.map +1 -0
  69. package/dist/cli/exec/web.d.ts +8 -0
  70. package/dist/cli/exec/web.d.ts.map +1 -0
  71. package/dist/cli/exec/web.js +48 -0
  72. package/dist/cli/exec/web.js.map +1 -0
  73. package/dist/cli/exec/write.d.ts +6 -0
  74. package/dist/cli/exec/write.d.ts.map +1 -0
  75. package/dist/cli/exec/write.js +23 -0
  76. package/dist/cli/exec/write.js.map +1 -0
  77. package/dist/cli/flags/bash.d.ts +3 -0
  78. package/dist/cli/flags/bash.d.ts.map +1 -0
  79. package/dist/cli/flags/bash.js +7 -0
  80. package/dist/cli/flags/bash.js.map +1 -0
  81. package/dist/cli/flags/delete.d.ts +3 -0
  82. package/dist/cli/flags/delete.d.ts.map +1 -0
  83. package/dist/cli/flags/delete.js +4 -0
  84. package/dist/cli/flags/delete.js.map +1 -0
  85. package/dist/cli/flags/edit.d.ts +3 -0
  86. package/dist/cli/flags/edit.d.ts.map +1 -0
  87. package/dist/cli/flags/edit.js +8 -0
  88. package/dist/cli/flags/edit.js.map +1 -0
  89. package/dist/cli/flags/patch.d.ts +3 -0
  90. package/dist/cli/flags/patch.d.ts.map +1 -0
  91. package/dist/cli/flags/patch.js +5 -0
  92. package/dist/cli/flags/patch.js.map +1 -0
  93. package/dist/cli/flags/poll.d.ts +3 -0
  94. package/dist/cli/flags/poll.d.ts.map +1 -0
  95. package/dist/cli/flags/poll.js +5 -0
  96. package/dist/cli/flags/poll.js.map +1 -0
  97. package/dist/cli/flags/read.d.ts +3 -0
  98. package/dist/cli/flags/read.d.ts.map +1 -0
  99. package/dist/cli/flags/read.js +7 -0
  100. package/dist/cli/flags/read.js.map +1 -0
  101. package/dist/cli/flags/rg.d.ts +3 -0
  102. package/dist/cli/flags/rg.d.ts.map +1 -0
  103. package/dist/cli/flags/rg.js +10 -0
  104. package/dist/cli/flags/rg.js.map +1 -0
  105. package/dist/cli/flags/web.d.ts +3 -0
  106. package/dist/cli/flags/web.d.ts.map +1 -0
  107. package/dist/cli/flags/web.js +7 -0
  108. package/dist/cli/flags/web.js.map +1 -0
  109. package/dist/cli/flags/write.d.ts +3 -0
  110. package/dist/cli/flags/write.d.ts.map +1 -0
  111. package/dist/cli/flags/write.js +5 -0
  112. package/dist/cli/flags/write.js.map +1 -0
  113. package/dist/cli/flow.d.ts +33 -0
  114. package/dist/cli/flow.d.ts.map +1 -0
  115. package/dist/cli/flow.js +185 -0
  116. package/dist/cli/flow.js.map +1 -0
  117. package/dist/cli/format.d.ts +12 -0
  118. package/dist/cli/format.d.ts.map +1 -0
  119. package/dist/cli/format.js +29 -0
  120. package/dist/cli/format.js.map +1 -0
  121. package/dist/cli/help.d.ts +16 -0
  122. package/dist/cli/help.d.ts.map +1 -0
  123. package/dist/cli/help.js +42 -0
  124. package/dist/cli/help.js.map +1 -0
  125. package/dist/cli/parse.d.ts +24 -0
  126. package/dist/cli/parse.d.ts.map +1 -0
  127. package/dist/cli/parse.js +165 -0
  128. package/dist/cli/parse.js.map +1 -0
  129. package/dist/cli/register.d.ts +69 -0
  130. package/dist/cli/register.d.ts.map +1 -0
  131. package/dist/cli/register.js +82 -0
  132. package/dist/cli/register.js.map +1 -0
  133. package/dist/cli/runner.d.ts +30 -0
  134. package/dist/cli/runner.d.ts.map +1 -0
  135. package/dist/cli/runner.js +102 -0
  136. package/dist/cli/runner.js.map +1 -0
  137. package/dist/cli/tokenize.d.ts +9 -0
  138. package/dist/cli/tokenize.d.ts.map +1 -0
  139. package/dist/cli/tokenize.js +80 -0
  140. package/dist/cli/tokenize.js.map +1 -0
  141. package/dist/core2/snapshot.d.ts.map +1 -1
  142. package/dist/core2/snapshot.js +8 -1
  143. package/dist/core2/snapshot.js.map +1 -1
  144. package/dist/flow/agents.d.ts +2 -0
  145. package/dist/flow/agents.d.ts.map +1 -1
  146. package/dist/flow/agents.js +2 -0
  147. package/dist/flow/agents.js.map +1 -1
  148. package/dist/flow/continuation.d.ts.map +1 -1
  149. package/dist/flow/continuation.js +26 -0
  150. package/dist/flow/continuation.js.map +1 -1
  151. package/dist/flow/executor.d.ts.map +1 -1
  152. package/dist/flow/executor.js +1 -0
  153. package/dist/flow/executor.js.map +1 -1
  154. package/dist/flow/flow-args.js +1 -1
  155. package/dist/flow/flow-args.js.map +1 -1
  156. package/dist/flow/process-lifecycle.d.ts.map +1 -1
  157. package/dist/flow/process-lifecycle.js +11 -3
  158. package/dist/flow/process-lifecycle.js.map +1 -1
  159. package/dist/flow/runner.d.ts.map +1 -1
  160. package/dist/flow/runner.js +36 -5
  161. package/dist/flow/runner.js.map +1 -1
  162. package/dist/flow/warp.d.ts.map +1 -1
  163. package/dist/flow/warp.js +16 -10
  164. package/dist/flow/warp.js.map +1 -1
  165. package/dist/index.d.ts +1 -0
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +158 -241
  168. package/dist/index.js.map +1 -1
  169. package/dist/steering/flow-prompt.js +2 -2
  170. package/dist/steering/flow-prompt.js.map +1 -1
  171. package/dist/steering/sliding-prompt.d.ts.map +1 -1
  172. package/dist/steering/sliding-prompt.js +10 -21
  173. package/dist/steering/sliding-prompt.js.map +1 -1
  174. package/dist/tools/ask-user.d.ts +10 -7
  175. package/dist/tools/ask-user.d.ts.map +1 -1
  176. package/dist/tools/ask-user.js +51 -62
  177. package/dist/tools/ask-user.js.map +1 -1
  178. package/dist/tools/trace.d.ts +12 -7
  179. package/dist/tools/trace.d.ts.map +1 -1
  180. package/dist/tools/trace.js +155 -194
  181. package/dist/tools/trace.js.map +1 -1
  182. package/dist/tools/web-ops.d.ts +40 -0
  183. package/dist/tools/web-ops.d.ts.map +1 -1
  184. package/dist/tools/web-ops.js +7 -3
  185. package/dist/tools/web-ops.js.map +1 -1
  186. package/package.json +3 -2
  187. package/dist/batch/index.d.ts +0 -73
  188. package/dist/batch/index.d.ts.map +0 -1
  189. package/dist/batch/index.js +0 -450
  190. package/dist/batch/index.js.map +0 -1
  191. package/dist/batch/normalize.d.ts +0 -4
  192. package/dist/batch/normalize.d.ts.map +0 -1
  193. package/dist/batch/normalize.js +0 -85
  194. package/dist/batch/normalize.js.map +0 -1
  195. package/dist/flow/flow-args-prep.d.ts +0 -28
  196. package/dist/flow/flow-args-prep.d.ts.map +0 -1
  197. package/dist/flow/flow-args-prep.js +0 -83
  198. package/dist/flow/flow-args-prep.js.map +0 -1
  199. package/dist/flow/flow-dispatch-prep.d.ts +0 -11
  200. package/dist/flow/flow-dispatch-prep.d.ts.map +0 -1
  201. package/dist/flow/flow-dispatch-prep.js +0 -40
  202. package/dist/flow/flow-dispatch-prep.js.map +0 -1
  203. package/dist/flow/op-aliases.d.ts +0 -51
  204. package/dist/flow/op-aliases.d.ts.map +0 -1
  205. package/dist/flow/op-aliases.js +0 -185
  206. package/dist/flow/op-aliases.js.map +0 -1
  207. package/dist/tools/array-coerce.d.ts +0 -9
  208. package/dist/tools/array-coerce.d.ts.map +0 -1
  209. package/dist/tools/array-coerce.js +0 -47
  210. package/dist/tools/array-coerce.js.map +0 -1
  211. package/dist/tools/trace-dispatch-prep.d.ts +0 -10
  212. package/dist/tools/trace-dispatch-prep.d.ts.map +0 -1
  213. package/dist/tools/trace-dispatch-prep.js +0 -199
  214. package/dist/tools/trace-dispatch-prep.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/cli/batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Chain splitter.
3
+ *
4
+ * Splits a command string on top-level `;` and `&&`.
5
+ * Respects quotes and backslash escapes.
6
+ * Returns: Array<{ kind: "run" | "and"; cmd: string }>.
7
+ * The first op is always kind: "run"; subsequent ops are "run" after `;`
8
+ * and "and" after `&&`.
9
+ */
10
+ export interface ChainOp {
11
+ kind: "run" | "and";
12
+ cmd: string;
13
+ }
14
+ export declare function splitChain(input: string): ChainOp[];
15
+ /**
16
+ * Splits a command string on the first top-level standalone `--`.
17
+ * Respects quotes and backslash escapes.
18
+ * Returns { pre: string; post: string }.
19
+ */
20
+ export declare function splitOnDoubleDash(input: string): {
21
+ pre: string;
22
+ post: string;
23
+ };
24
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/cli/chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAqFnD;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAqE9E"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Chain splitter.
3
+ *
4
+ * Splits a command string on top-level `;` and `&&`.
5
+ * Respects quotes and backslash escapes.
6
+ * Returns: Array<{ kind: "run" | "and"; cmd: string }>.
7
+ * The first op is always kind: "run"; subsequent ops are "run" after `;`
8
+ * and "and" after `&&`.
9
+ */
10
+ export function splitChain(input) {
11
+ const ops = [];
12
+ let current = "";
13
+ let inSingle = false;
14
+ let inDouble = false;
15
+ let escapeNext = false;
16
+ let nextKind = "run";
17
+ function flush() {
18
+ const trimmed = current.trim();
19
+ if (trimmed.length > 0) {
20
+ ops.push({ kind: nextKind, cmd: trimmed });
21
+ }
22
+ current = "";
23
+ return trimmed.length > 0;
24
+ }
25
+ for (let i = 0; i < input.length; i++) {
26
+ const ch = input[i];
27
+ if (escapeNext) {
28
+ current += ch;
29
+ escapeNext = false;
30
+ continue;
31
+ }
32
+ if (ch === '\\' && !inSingle && !inDouble) {
33
+ escapeNext = true;
34
+ continue;
35
+ }
36
+ if (inSingle) {
37
+ if (ch === "'") {
38
+ inSingle = false;
39
+ }
40
+ current += ch;
41
+ continue;
42
+ }
43
+ if (inDouble) {
44
+ if (ch === '"') {
45
+ inDouble = false;
46
+ }
47
+ current += ch;
48
+ continue;
49
+ }
50
+ if (ch === "'") {
51
+ inSingle = true;
52
+ current += ch;
53
+ continue;
54
+ }
55
+ if (ch === '"') {
56
+ inDouble = true;
57
+ current += ch;
58
+ continue;
59
+ }
60
+ // Check for && first (two chars) before ; (one char)
61
+ if (ch === '&' && i + 1 < input.length && input[i + 1] === '&') {
62
+ if (flush()) {
63
+ nextKind = "and";
64
+ }
65
+ i++; // skip second &
66
+ continue;
67
+ }
68
+ if (ch === ';') {
69
+ flush();
70
+ nextKind = "run";
71
+ continue;
72
+ }
73
+ current += ch;
74
+ }
75
+ // Final flush
76
+ flush();
77
+ if (ops.length === 0) {
78
+ ops.push({ kind: "run", cmd: "" });
79
+ }
80
+ return ops;
81
+ }
82
+ // ---------------------------------------------------------------------------
83
+ // Double-dash separator
84
+ // ---------------------------------------------------------------------------
85
+ /**
86
+ * Splits a command string on the first top-level standalone `--`.
87
+ * Respects quotes and backslash escapes.
88
+ * Returns { pre: string; post: string }.
89
+ */
90
+ export function splitOnDoubleDash(input) {
91
+ let pre = "";
92
+ let post = "";
93
+ let inSingle = false;
94
+ let inDouble = false;
95
+ let escapeNext = false;
96
+ let found = false;
97
+ for (let i = 0; i < input.length; i++) {
98
+ const ch = input[i];
99
+ if (escapeNext) {
100
+ if (found)
101
+ post += ch;
102
+ else
103
+ pre += ch;
104
+ escapeNext = false;
105
+ continue;
106
+ }
107
+ if (ch === '\\' && !inSingle && !inDouble) {
108
+ escapeNext = true;
109
+ if (found)
110
+ post += ch;
111
+ else
112
+ pre += ch;
113
+ continue;
114
+ }
115
+ if (inSingle) {
116
+ if (ch === "'")
117
+ inSingle = false;
118
+ if (found)
119
+ post += ch;
120
+ else
121
+ pre += ch;
122
+ continue;
123
+ }
124
+ if (inDouble) {
125
+ if (ch === '"')
126
+ inDouble = false;
127
+ if (found)
128
+ post += ch;
129
+ else
130
+ pre += ch;
131
+ continue;
132
+ }
133
+ if (ch === "'") {
134
+ inSingle = true;
135
+ if (found)
136
+ post += ch;
137
+ else
138
+ pre += ch;
139
+ continue;
140
+ }
141
+ if (ch === '"') {
142
+ inDouble = true;
143
+ if (found)
144
+ post += ch;
145
+ else
146
+ pre += ch;
147
+ continue;
148
+ }
149
+ if (!found && ch === '-' && i + 1 < input.length && input[i + 1] === '-') {
150
+ const prev = i > 0 ? input[i - 1] : ' ';
151
+ const nextIdx = i + 2;
152
+ const isWhitespace = (c) => c === ' ' || c === '\t' || c === '\n' || c === '\r';
153
+ if (isWhitespace(prev) && (nextIdx >= input.length || isWhitespace(input[nextIdx]))) {
154
+ found = true;
155
+ i++; // skip second dash
156
+ continue;
157
+ }
158
+ }
159
+ if (found)
160
+ post += ch;
161
+ else
162
+ pre += ch;
163
+ }
164
+ return { pre: pre.trim(), post: post.trim() };
165
+ }
166
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/cli/chain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { BashProcessTracker } from "../../batch/batch-bash.js";
2
+ import { type ExecResult } from "./util.js";
3
+ export declare function runBashSubcommand(parsed: {
4
+ flags: Record<string, unknown>;
5
+ positionals: string[];
6
+ }, cwd: string, bashTracker: BashProcessTracker | undefined, signal?: AbortSignal): Promise<ExecResult>;
7
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/bash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EACjE,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA6DrB"}
@@ -0,0 +1,63 @@
1
+ import { executeBatchBash, generateBashId } from "../../batch/batch-bash.js";
2
+ import { CliError } from "../parse.js";
3
+ import { finalizeExec } from "./util.js";
4
+ export async function runBashSubcommand(parsed, cwd, bashTracker, signal) {
5
+ if (parsed.positionals.length === 0) {
6
+ throw new CliError("bash requires a command string.", "Usage: batch bash [flags] <command>");
7
+ }
8
+ const command = parsed.positionals.join(" ");
9
+ const id = typeof parsed.flags.id === "string" ? parsed.flags.id : generateBashId();
10
+ const timeout = typeof parsed.flags.timeout === "number" ? parsed.flags.timeout : undefined;
11
+ const workingDir = typeof parsed.flags.cwd === "string" ? parsed.flags.cwd : undefined;
12
+ if (!bashTracker) {
13
+ return {
14
+ output: "Bash tracker not available.",
15
+ results: [{
16
+ op: "bash",
17
+ path: "bash",
18
+ status: "error",
19
+ id,
20
+ command,
21
+ error: "Bash tracker not available.",
22
+ }],
23
+ error: "Bash tracker not available.",
24
+ failed: true,
25
+ };
26
+ }
27
+ const normalizedBashOps = [{
28
+ i: id,
29
+ c: command,
30
+ t: timeout,
31
+ h: workingDir,
32
+ }];
33
+ const bashOutput = await executeBatchBash(normalizedBashOps, cwd, bashTracker, signal);
34
+ const bashLines = [];
35
+ const results = bashOutput;
36
+ for (const r of bashOutput) {
37
+ if (r.status === "ok") {
38
+ bashLines.push(`\n--- bash [${r.id}] exit ${r.exitCode} ---`);
39
+ if (r.timingTier)
40
+ bashLines.push(`[Execution time: ${r.timingTier}]`);
41
+ if (r.stdout?.trim())
42
+ bashLines.push(r.stdout.trimEnd());
43
+ }
44
+ else if (r.status === "pending") {
45
+ bashLines.push(`\n--- bash [${r.id}] pending ---`);
46
+ if (r.stdout?.trim())
47
+ bashLines.push(`[partial output]\n${r.stdout.trimEnd()}`);
48
+ bashLines.push(`[Use batch_bash_poll with i: ["${r.id}"] to check results]`);
49
+ }
50
+ else {
51
+ bashLines.push(`\n--- bash [${r.id}] error ---`);
52
+ if (r.timingTier)
53
+ bashLines.push(`[Execution time: ${r.timingTier}]`);
54
+ if (r.stdout?.trim())
55
+ bashLines.push(r.stdout.trimEnd());
56
+ if (r.stderr?.trim())
57
+ bashLines.push(`[stderr]\n${r.stderr.trimEnd()}`);
58
+ }
59
+ }
60
+ const output = bashLines.join("\n");
61
+ return finalizeExec(output, results);
62
+ }
63
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/cli/exec/bash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ExecResult } from "./util.js";
2
+ export declare function runDeleteSubcommand(parsed: {
3
+ flags: Record<string, unknown>;
4
+ positionals: string[];
5
+ }, cwd: string, signal?: AbortSignal): Promise<ExecResult>;
6
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/delete.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1D,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EACjE,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAqBrB"}
@@ -0,0 +1,18 @@
1
+ import { executeOperations } from "../../batch/execute.js";
2
+ import { CliError } from "../parse.js";
3
+ import { finalizeExec } from "./util.js";
4
+ export async function runDeleteSubcommand(parsed, cwd, signal) {
5
+ if (parsed.positionals.length === 0) {
6
+ throw new CliError("delete requires at least one path.", "Usage: batch delete <path> ...");
7
+ }
8
+ const ops = parsed.positionals.map((path) => ({
9
+ o: "delete",
10
+ p: path,
11
+ }));
12
+ const { contentText, results } = await executeOperations(ops, cwd, signal, {
13
+ readOptions: { truncate: false, toolName: "batch" },
14
+ includeLimitWarnings: false,
15
+ });
16
+ return finalizeExec(contentText, results);
17
+ }
18
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/cli/exec/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAmB,MAAM,WAAW,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiE,EACjE,GAAW,EACX,MAAoB;IAEpB,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,QAAQ,CAAC,oCAAoC,EAAE,gCAAgC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,GAAG,GAAkB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,IAAI;KACR,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CACtD,GAAG,EACH,GAAG,EACH,MAAM,EACN;QACE,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;QACnD,oBAAoB,EAAE,KAAK;KAC5B,CACF,CAAC;IAEF,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ExecResult } from "./util.js";
2
+ export declare function runEditSubcommand(parsed: {
3
+ flags: Record<string, unknown>;
4
+ positionals: string[];
5
+ }, cwd: string, signal?: AbortSignal): Promise<ExecResult>;
6
+ //# sourceMappingURL=edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/edit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EACjE,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAuDrB"}
@@ -0,0 +1,44 @@
1
+ import { executeOperations } from "../../batch/execute.js";
2
+ import { CliError } from "../parse.js";
3
+ import { finalizeExec } from "./util.js";
4
+ export async function runEditSubcommand(parsed, cwd, signal) {
5
+ if (parsed.positionals.length === 0) {
6
+ throw new CliError("edit requires at least one path.", "Usage: batch edit [flags] <path> ...");
7
+ }
8
+ const find = parsed.flags.find;
9
+ const replace = parsed.flags.replace;
10
+ const findArray = Array.isArray(find) ? find : find !== undefined ? [find] : [];
11
+ const replaceArray = Array.isArray(replace) ? replace : replace !== undefined ? [replace] : [];
12
+ if (findArray.length === 0) {
13
+ throw new CliError("edit requires at least one --find <text>.", "Usage: batch edit -f <oldText> -r <newText> <path>");
14
+ }
15
+ if (findArray.length !== replaceArray.length) {
16
+ throw new CliError(`Mismatched edit pairs: ${findArray.length} --find flag(s) but ${replaceArray.length} --replace flag(s).`, "Provide the same number of --find and --replace flags.");
17
+ }
18
+ const edits = [];
19
+ for (let i = 0; i < findArray.length; i++) {
20
+ edits.push({ f: String(findArray[i]), r: String(replaceArray[i]) });
21
+ }
22
+ const append = parsed.flags.append === true;
23
+ const allOccurrences = parsed.flags["all-occurrences"] === true;
24
+ const ops = parsed.positionals.map((path) => {
25
+ const op = {
26
+ o: "edit",
27
+ p: path,
28
+ e: edits,
29
+ };
30
+ if (append) {
31
+ op.append = true;
32
+ }
33
+ if (allOccurrences) {
34
+ op.allOccurrences = true;
35
+ }
36
+ return op;
37
+ });
38
+ const { contentText, results } = await executeOperations(ops, cwd, signal, {
39
+ readOptions: { truncate: false, toolName: "batch" },
40
+ includeLimitWarnings: false,
41
+ });
42
+ return finalizeExec(contentText, results);
43
+ }
44
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/cli/exec/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAmB,MAAM,WAAW,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiE,EACjE,GAAW,EACX,MAAoB;IAEpB,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,QAAQ,CAAC,kCAAkC,EAAE,sCAAsC,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC,2CAA2C,EAAE,oDAAoD,CAAC,CAAC;IACxH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,QAAQ,CAChB,0BAA0B,SAAS,CAAC,MAAM,uBAAuB,YAAY,CAAC,MAAM,qBAAqB,EACzG,wDAAwD,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;IAC5C,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAEhE,MAAM,GAAG,GAAkB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzD,MAAM,EAAE,GAAgB;YACtB,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,KAAK;SACT,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CACtD,GAAG,EACH,GAAG,EACH,MAAM,EACN;QACE,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;QACnD,oBAAoB,EAAE,KAAK;KAC5B,CACF,CAAC;IAEF,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ExecResult } from "./util.js";
2
+ export declare function runPatchSubcommand(parsed: {
3
+ flags: Record<string, unknown>;
4
+ positionals: string[];
5
+ }, cwd: string, signal?: AbortSignal): Promise<ExecResult>;
6
+ //# sourceMappingURL=patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/patch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EACjE,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAuBrB"}
@@ -0,0 +1,20 @@
1
+ import { executeOperations } from "../../batch/execute.js";
2
+ import { CliError } from "../parse.js";
3
+ import { finalizeExec } from "./util.js";
4
+ export async function runPatchSubcommand(parsed, cwd, signal) {
5
+ const content = typeof parsed.flags.content === "string" ? parsed.flags.content : undefined;
6
+ if (content === undefined) {
7
+ throw new CliError("patch requires --content <patch text>.", "Usage: batch patch -c <patch_text>");
8
+ }
9
+ const ops = [{
10
+ o: "patch",
11
+ p: "patch",
12
+ c: content,
13
+ }];
14
+ const { contentText, results } = await executeOperations(ops, cwd, signal, {
15
+ readOptions: { truncate: false, toolName: "batch" },
16
+ includeLimitWarnings: false,
17
+ });
18
+ return finalizeExec(contentText, results);
19
+ }
20
+ //# sourceMappingURL=patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/cli/exec/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAmB,MAAM,WAAW,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAiE,EACjE,GAAW,EACX,MAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,wCAAwC,EAAE,oCAAoC,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,GAAG,GAAkB,CAAC;YAC1B,CAAC,EAAE,OAAO;YACV,CAAC,EAAE,OAAO;YACV,CAAC,EAAE,OAAO;SACX,CAAC,CAAC;IAEH,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CACtD,GAAG,EACH,GAAG,EACH,MAAM,EACN;QACE,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;QACnD,oBAAoB,EAAE,KAAK;KAC5B,CACF,CAAC;IAEF,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { BashProcessTracker } from "../../batch/batch-bash.js";
2
+ import { type ExecResult } from "./util.js";
3
+ export declare function runPollSubcommand(parsed: {
4
+ flags: Record<string, unknown>;
5
+ positionals: string[];
6
+ }, _cwd: string, bashTracker: BashProcessTracker | undefined, _signal?: AbortSignal): Promise<ExecResult>;
7
+ //# sourceMappingURL=poll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/poll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EACjE,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAuDrB"}
@@ -0,0 +1,59 @@
1
+ import { pollBatchBashResults } from "../../batch/batch-bash.js";
2
+ import { CliError } from "../parse.js";
3
+ import { finalizeExec } from "./util.js";
4
+ export async function runPollSubcommand(parsed, _cwd, bashTracker, _signal) {
5
+ const id = parsed.flags.id;
6
+ const idArray = Array.isArray(id) ? id : id !== undefined ? [id] : [];
7
+ const ids = idArray.map(String);
8
+ if (ids.length === 0) {
9
+ throw new CliError("poll requires at least one --id <bash_id>.", "Usage: batch poll -i <id> [-i <id2> ...]");
10
+ }
11
+ if (!bashTracker) {
12
+ return {
13
+ output: "Bash tracker not available.",
14
+ results: [{
15
+ op: "bash",
16
+ path: "poll",
17
+ status: "error",
18
+ error: "Bash tracker not available.",
19
+ }],
20
+ error: "Bash tracker not available.",
21
+ failed: true,
22
+ };
23
+ }
24
+ const pollResults = pollBatchBashResults(ids, bashTracker);
25
+ const lines = [];
26
+ const results = [];
27
+ for (const r of pollResults) {
28
+ const opResult = {
29
+ op: "bash",
30
+ status: r.status === "completed" ? "ok" : "pending",
31
+ id: r.id,
32
+ command: r.command,
33
+ stdout: r.stdout,
34
+ stderr: r.stderr,
35
+ exitCode: r.exitCode,
36
+ };
37
+ results.push(opResult);
38
+ if (r.status === "completed") {
39
+ lines.push(`--- poll [${r.id}] completed ---`);
40
+ if (r.stdout?.trim())
41
+ lines.push(r.stdout.trimEnd());
42
+ if (r.stderr?.trim())
43
+ lines.push(`[stderr]\n${r.stderr.trimEnd()}`);
44
+ lines.push(`exit code: ${r.exitCode ?? "unknown"}`);
45
+ }
46
+ else {
47
+ lines.push(`--- poll [${r.id}] pending ---`);
48
+ const tail = bashTracker.getRunningTail(r.id);
49
+ if (tail)
50
+ lines.push(`[last ${tail.split("\n").length} lines]\n${tail}`);
51
+ const cmd = bashTracker.getRunningCommand(r.id);
52
+ if (cmd)
53
+ lines.push(`command: ${cmd}`);
54
+ }
55
+ }
56
+ const output = lines.join("\n");
57
+ return finalizeExec(output, results);
58
+ }
59
+ //# sourceMappingURL=poll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.js","sourceRoot":"","sources":["../../../src/cli/exec/poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAmB,MAAM,WAAW,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiE,EACjE,IAAY,EACZ,WAA2C,EAC3C,OAAqB;IAErB,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,4CAA4C,EAAE,0CAA0C,CAAC,CAAC;IAC/G,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,6BAA6B;YACrC,OAAO,EAAE,CAAC;oBACR,EAAE,EAAE,MAAe;oBACnB,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,OAAgB;oBACxB,KAAK,EAAE,6BAA6B;iBACrC,CAAC;YACF,KAAK,EAAE,6BAA6B;YACpC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAe,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa;YACzB,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACnD,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAC/C,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,EAAE,CAAC,CAAC;YACzE,MAAM,GAAG,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare function runReadSubcommand(parsed: {
2
+ flags: Record<string, unknown>;
3
+ positionals: string[];
4
+ }, cwd: string, signal?: AbortSignal, toolName?: "batch" | "batch_read"): Promise<{
5
+ output: string;
6
+ results: import("../../batch/constants.js").OpResult[];
7
+ error?: string;
8
+ failed: boolean;
9
+ }>;
10
+ export declare function parsePathSpec(spec: string): {
11
+ path: string;
12
+ start?: number;
13
+ end?: number;
14
+ };
15
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/read.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EACjE,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,GAAE,OAAO,GAAG,YAAsB,GACzC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAgDtH;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAS1F"}
@@ -0,0 +1,54 @@
1
+ import { executeOperations } from "../../batch/execute.js";
2
+ import { CliError } from "../parse.js";
3
+ export async function runReadSubcommand(parsed, cwd, signal, toolName = "batch") {
4
+ if (parsed.positionals.length === 0) {
5
+ throw new CliError("read requires at least one path.", "Usage: batch read [flags] <path> ...");
6
+ }
7
+ const flagStart = typeof parsed.flags.start === "number" ? parsed.flags.start : undefined;
8
+ const flagLimit = typeof parsed.flags.limit === "number" ? parsed.flags.limit : undefined;
9
+ const flagEnd = typeof parsed.flags.end === "number" ? parsed.flags.end : undefined;
10
+ const ops = [];
11
+ for (const spec of parsed.positionals) {
12
+ const { path, start, end } = parsePathSpec(spec);
13
+ const effectiveStart = start ?? flagStart;
14
+ let effectiveLimit;
15
+ if (end !== undefined && effectiveStart !== undefined) {
16
+ effectiveLimit = end - effectiveStart + 1;
17
+ }
18
+ else if (end !== undefined) {
19
+ effectiveLimit = end;
20
+ }
21
+ else {
22
+ effectiveLimit = flagLimit;
23
+ }
24
+ if (flagEnd !== undefined && effectiveStart !== undefined && effectiveLimit === undefined) {
25
+ effectiveLimit = flagEnd - effectiveStart + 1;
26
+ }
27
+ ops.push({
28
+ o: "read",
29
+ p: path,
30
+ s: effectiveStart,
31
+ l: effectiveLimit,
32
+ });
33
+ }
34
+ const { contentText, results } = await executeOperations(ops, cwd, signal, {
35
+ readOptions: { truncate: false, toolName },
36
+ includeLimitWarnings: false,
37
+ });
38
+ const failed = results.some((r) => r.status === "error");
39
+ const error = failed
40
+ ? (results.find((r) => r.status === "error")?.error ?? "operation failed")
41
+ : undefined;
42
+ return { output: contentText, results, error, failed };
43
+ }
44
+ export function parsePathSpec(spec) {
45
+ const match = spec.match(/^(.*):(\d+)(?:-(\d+))?$/);
46
+ if (match) {
47
+ const pathPart = match[1];
48
+ const start = parseInt(match[2], 10);
49
+ const end = match[3] ? parseInt(match[3], 10) : undefined;
50
+ return { path: pathPart, start, end };
51
+ }
52
+ return { path: spec };
53
+ }
54
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/cli/exec/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiE,EACjE,GAAW,EACX,MAAoB,EACpB,WAAmC,OAAO;IAE1C,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,QAAQ,CAAC,kCAAkC,EAAE,sCAAsC,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpF,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,KAAK,IAAI,SAAS,CAAC;QAC1C,IAAI,cAAkC,CAAC;QACvC,IAAI,GAAG,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACtD,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,cAAc,GAAG,GAAG,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1F,cAAc,GAAG,OAAO,GAAG,cAAc,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,GAAG,CAAC,IAAI,CAAC;YACP,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,cAAc;YACjB,CAAC,EAAE,cAAc;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CACtD,GAAG,EACH,GAAG,EACH,MAAM,EACN;QACE,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC1C,oBAAoB,EAAE,KAAK;KAC5B,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM;QAClB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,kBAAkB,CAAC;QAC1E,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACpD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function runRgSubcommand(parsed: {
2
+ flags: Record<string, unknown>;
3
+ positionals: string[];
4
+ }, cwd: string, signal?: AbortSignal, toolName?: "batch" | "batch_read"): Promise<{
5
+ output: string;
6
+ results: import("../../batch/constants.js").OpResult[];
7
+ error?: string;
8
+ failed: boolean;
9
+ }>;
10
+ //# sourceMappingURL=rg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rg.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/rg.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,CACnC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EACjE,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,GAAE,OAAO,GAAG,YAAsB,GACzC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAqCtH"}