pi-agent-flow 2.2.32 → 2.3.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 (184) hide show
  1. package/agents/craft.md +2 -1
  2. package/agents/debug.md +2 -1
  3. package/agents/ideas.md +2 -1
  4. package/agents/scout.md +1 -0
  5. package/dist/batch/apply-patch.d.ts.map +1 -1
  6. package/dist/batch/apply-patch.js +22 -0
  7. package/dist/batch/apply-patch.js.map +1 -1
  8. package/dist/batch/batch-bash.d.ts +5 -3
  9. package/dist/batch/batch-bash.d.ts.map +1 -1
  10. package/dist/batch/batch-bash.js +6 -13
  11. package/dist/batch/batch-bash.js.map +1 -1
  12. package/dist/batch/constants.d.ts +4 -0
  13. package/dist/batch/constants.d.ts.map +1 -1
  14. package/dist/batch/constants.js +1 -0
  15. package/dist/batch/constants.js.map +1 -1
  16. package/dist/batch/execute.d.ts.map +1 -1
  17. package/dist/batch/execute.js +117 -4
  18. package/dist/batch/execute.js.map +1 -1
  19. package/dist/batch/format-directory-listing.d.ts +26 -0
  20. package/dist/batch/format-directory-listing.d.ts.map +1 -0
  21. package/dist/batch/format-directory-listing.js +89 -0
  22. package/dist/batch/format-directory-listing.js.map +1 -0
  23. package/dist/batch/fuzzy-edit.d.ts +1 -1
  24. package/dist/batch/fuzzy-edit.d.ts.map +1 -1
  25. package/dist/batch/fuzzy-edit.js +53 -17
  26. package/dist/batch/fuzzy-edit.js.map +1 -1
  27. package/dist/batch/index.d.ts +6 -68
  28. package/dist/batch/index.d.ts.map +1 -1
  29. package/dist/batch/index.js +7 -494
  30. package/dist/batch/index.js.map +1 -1
  31. package/dist/batch/summary.d.ts.map +1 -1
  32. package/dist/batch/summary.js +146 -0
  33. package/dist/batch/summary.js.map +1 -1
  34. package/dist/cli/batch-read.d.ts +20 -0
  35. package/dist/cli/batch-read.d.ts.map +1 -0
  36. package/dist/cli/batch-read.js +267 -0
  37. package/dist/cli/batch-read.js.map +1 -0
  38. package/dist/cli/batch.d.ts +20 -0
  39. package/dist/cli/batch.d.ts.map +1 -0
  40. package/dist/cli/batch.js +252 -0
  41. package/dist/cli/batch.js.map +1 -0
  42. package/dist/cli/chain.d.ts +24 -0
  43. package/dist/cli/chain.d.ts.map +1 -0
  44. package/dist/cli/chain.js +166 -0
  45. package/dist/cli/chain.js.map +1 -0
  46. package/dist/cli/exec/bash.d.ts +11 -0
  47. package/dist/cli/exec/bash.d.ts.map +1 -0
  48. package/dist/cli/exec/bash.js +63 -0
  49. package/dist/cli/exec/bash.js.map +1 -0
  50. package/dist/cli/exec/delete.d.ts +10 -0
  51. package/dist/cli/exec/delete.d.ts.map +1 -0
  52. package/dist/cli/exec/delete.js +21 -0
  53. package/dist/cli/exec/delete.js.map +1 -0
  54. package/dist/cli/exec/edit.d.ts +10 -0
  55. package/dist/cli/exec/edit.d.ts.map +1 -0
  56. package/dist/cli/exec/edit.js +47 -0
  57. package/dist/cli/exec/edit.js.map +1 -0
  58. package/dist/cli/exec/index.d.ts +10 -0
  59. package/dist/cli/exec/index.d.ts.map +1 -0
  60. package/dist/cli/exec/index.js +10 -0
  61. package/dist/cli/exec/index.js.map +1 -0
  62. package/dist/cli/exec/patch.d.ts +10 -0
  63. package/dist/cli/exec/patch.d.ts.map +1 -0
  64. package/dist/cli/exec/patch.js +23 -0
  65. package/dist/cli/exec/patch.js.map +1 -0
  66. package/dist/cli/exec/poll.d.ts +12 -0
  67. package/dist/cli/exec/poll.d.ts.map +1 -0
  68. package/dist/cli/exec/poll.js +59 -0
  69. package/dist/cli/exec/poll.js.map +1 -0
  70. package/dist/cli/exec/read.d.ts +10 -0
  71. package/dist/cli/exec/read.d.ts.map +1 -0
  72. package/dist/cli/exec/read.js +54 -0
  73. package/dist/cli/exec/read.js.map +1 -0
  74. package/dist/cli/exec/rg.d.ts +10 -0
  75. package/dist/cli/exec/rg.d.ts.map +1 -0
  76. package/dist/cli/exec/rg.js +32 -0
  77. package/dist/cli/exec/rg.js.map +1 -0
  78. package/dist/cli/exec/web.d.ts +13 -0
  79. package/dist/cli/exec/web.d.ts.map +1 -0
  80. package/dist/cli/exec/web.js +47 -0
  81. package/dist/cli/exec/web.js.map +1 -0
  82. package/dist/cli/exec/write.d.ts +10 -0
  83. package/dist/cli/exec/write.d.ts.map +1 -0
  84. package/dist/cli/exec/write.js +26 -0
  85. package/dist/cli/exec/write.js.map +1 -0
  86. package/dist/cli/flags/bash.d.ts +3 -0
  87. package/dist/cli/flags/bash.d.ts.map +1 -0
  88. package/dist/cli/flags/bash.js +6 -0
  89. package/dist/cli/flags/bash.js.map +1 -0
  90. package/dist/cli/flags/delete.d.ts +3 -0
  91. package/dist/cli/flags/delete.d.ts.map +1 -0
  92. package/dist/cli/flags/delete.js +2 -0
  93. package/dist/cli/flags/delete.js.map +1 -0
  94. package/dist/cli/flags/edit.d.ts +3 -0
  95. package/dist/cli/flags/edit.d.ts.map +1 -0
  96. package/dist/cli/flags/edit.js +7 -0
  97. package/dist/cli/flags/edit.js.map +1 -0
  98. package/dist/cli/flags/index.d.ts +10 -0
  99. package/dist/cli/flags/index.d.ts.map +1 -0
  100. package/dist/cli/flags/index.js +10 -0
  101. package/dist/cli/flags/index.js.map +1 -0
  102. package/dist/cli/flags/patch.d.ts +3 -0
  103. package/dist/cli/flags/patch.d.ts.map +1 -0
  104. package/dist/cli/flags/patch.js +4 -0
  105. package/dist/cli/flags/patch.js.map +1 -0
  106. package/dist/cli/flags/poll.d.ts +3 -0
  107. package/dist/cli/flags/poll.d.ts.map +1 -0
  108. package/dist/cli/flags/poll.js +4 -0
  109. package/dist/cli/flags/poll.js.map +1 -0
  110. package/dist/cli/flags/read.d.ts +3 -0
  111. package/dist/cli/flags/read.d.ts.map +1 -0
  112. package/dist/cli/flags/read.js +6 -0
  113. package/dist/cli/flags/read.js.map +1 -0
  114. package/dist/cli/flags/rg.d.ts +3 -0
  115. package/dist/cli/flags/rg.d.ts.map +1 -0
  116. package/dist/cli/flags/rg.js +9 -0
  117. package/dist/cli/flags/rg.js.map +1 -0
  118. package/dist/cli/flags/web.d.ts +3 -0
  119. package/dist/cli/flags/web.d.ts.map +1 -0
  120. package/dist/cli/flags/web.js +6 -0
  121. package/dist/cli/flags/web.js.map +1 -0
  122. package/dist/cli/flags/write.d.ts +3 -0
  123. package/dist/cli/flags/write.d.ts.map +1 -0
  124. package/dist/cli/flags/write.js +4 -0
  125. package/dist/cli/flags/write.js.map +1 -0
  126. package/dist/cli/flow.d.ts +33 -0
  127. package/dist/cli/flow.d.ts.map +1 -0
  128. package/dist/cli/flow.js +345 -0
  129. package/dist/cli/flow.js.map +1 -0
  130. package/dist/cli/format.d.ts +12 -0
  131. package/dist/cli/format.d.ts.map +1 -0
  132. package/dist/cli/format.js +29 -0
  133. package/dist/cli/format.js.map +1 -0
  134. package/dist/cli/help.d.ts +14 -0
  135. package/dist/cli/help.d.ts.map +1 -0
  136. package/dist/cli/help.js +31 -0
  137. package/dist/cli/help.js.map +1 -0
  138. package/dist/cli/parse.d.ts +24 -0
  139. package/dist/cli/parse.d.ts.map +1 -0
  140. package/dist/cli/parse.js +165 -0
  141. package/dist/cli/parse.js.map +1 -0
  142. package/dist/cli/register.d.ts +73 -0
  143. package/dist/cli/register.d.ts.map +1 -0
  144. package/dist/cli/register.js +105 -0
  145. package/dist/cli/register.js.map +1 -0
  146. package/dist/cli/tokenize.d.ts +9 -0
  147. package/dist/cli/tokenize.d.ts.map +1 -0
  148. package/dist/cli/tokenize.js +80 -0
  149. package/dist/cli/tokenize.js.map +1 -0
  150. package/dist/core2/snapshot.d.ts.map +1 -1
  151. package/dist/core2/snapshot.js +22 -0
  152. package/dist/core2/snapshot.js.map +1 -1
  153. package/dist/flow/agents.d.ts +2 -0
  154. package/dist/flow/agents.d.ts.map +1 -1
  155. package/dist/flow/agents.js +2 -0
  156. package/dist/flow/agents.js.map +1 -1
  157. package/dist/flow/executor.d.ts.map +1 -1
  158. package/dist/flow/executor.js +1 -0
  159. package/dist/flow/executor.js.map +1 -1
  160. package/dist/flow/flow-args.d.ts.map +1 -1
  161. package/dist/flow/flow-args.js +1 -0
  162. package/dist/flow/flow-args.js.map +1 -1
  163. package/dist/index.d.ts +1 -0
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +159 -214
  166. package/dist/index.js.map +1 -1
  167. package/dist/steering/flow-prompt.js +2 -2
  168. package/dist/steering/flow-prompt.js.map +1 -1
  169. package/dist/steering/sliding-prompt.d.ts.map +1 -1
  170. package/dist/steering/sliding-prompt.js +9 -20
  171. package/dist/steering/sliding-prompt.js.map +1 -1
  172. package/dist/tools/ask-user.d.ts +1 -4
  173. package/dist/tools/ask-user.d.ts.map +1 -1
  174. package/dist/tools/ask-user.js +7 -33
  175. package/dist/tools/ask-user.js.map +1 -1
  176. package/dist/tools/trace.d.ts +12 -6
  177. package/dist/tools/trace.d.ts.map +1 -1
  178. package/dist/tools/trace.js +157 -163
  179. package/dist/tools/trace.js.map +1 -1
  180. package/dist/tools/web-ops.d.ts +40 -0
  181. package/dist/tools/web-ops.d.ts.map +1 -1
  182. package/dist/tools/web-ops.js +2 -2
  183. package/dist/tools/web-ops.js.map +1 -1
  184. package/package.json +1 -1
@@ -0,0 +1,252 @@
1
+ /**
2
+ * batch — bash-style CLI tool.
3
+ *
4
+ * Replaces the legacy batch mega-schema with a simple cmd string
5
+ * that uses subcommands and flags.
6
+ */
7
+ import { Type } from "@sinclair/typebox";
8
+ import { tokenize } from "./tokenize.js";
9
+ import { splitChain } from "./chain.js";
10
+ import { parseCommand, CliError } from "./parse.js";
11
+ import { renderHelp } from "./help.js";
12
+ import { formatChainedOutput } from "./format.js";
13
+ import { READ_FLAGS, WRITE_FLAGS, EDIT_FLAGS, DELETE_FLAGS, PATCH_FLAGS, BASH_FLAGS, RG_FLAGS, WEB_FLAGS, POLL_FLAGS, } from "./flags/index.js";
14
+ import { runReadSubcommand, runWriteSubcommand, runEditSubcommand, runDeleteSubcommand, runPatchSubcommand, runBashSubcommand, runRgSubcommand, runWebSubcommand, runPollSubcommand, } from "./exec/index.js";
15
+ // ---------------------------------------------------------------------------
16
+ // Schema
17
+ // ---------------------------------------------------------------------------
18
+ export const BatchCliParams = Type.Object({
19
+ cmd: Type.String({
20
+ description: "batch command string, e.g. 'batch read src/index.ts' or 'batch write -c \"hello\" file.txt'",
21
+ }),
22
+ cwd: Type.Optional(Type.String({
23
+ description: "Working directory override. Default: current session cwd.",
24
+ })),
25
+ });
26
+ // ---------------------------------------------------------------------------
27
+ // Constants
28
+ // ---------------------------------------------------------------------------
29
+ export const BATCH_CLI_DESCRIPTION = "Multi-op executor — NOT a shell. Subcommands: `read` • `write` • `edit` • `delete` • `patch` • `bash` • `rg` • `web` • `poll`. Pass a single [cmd] string of the form `batch <subcommand> <flags> <args>`. There is no `ls`/`cd`/`git`; the `bash` subcommand is the ONLY way to run shell. File/shell ops run first; web after. Chain with `;` (sequential) or `&&` (conditional). For read-only work, prefer `batch_read` (lighter, no write tools). Pass [cmd]: \"help\" for the man page.";
30
+ export const BATCH_CLI_SNIPPET = "Batch: file ops + bash + web in one call via CLI";
31
+ export const BATCH_CLI_GUIDELINES = [
32
+ "**This is a structured command, NOT a shell.** There is no `ls`, `cd`, `git`, or arbitrary command. The only operations available are the documented subcommands (`read` • `write` • `edit` • `delete` • `patch` • `bash` • `rg` • `web` • `poll`). To run shell, use `batch bash <cmd>`.",
33
+ "Use `batch read <paths>` for files. Add `:N` or `:N-M` for line ranges.",
34
+ "Use `batch write -c <content> <path>` to write files.",
35
+ "Use `batch edit -f <oldText> -r <newText> <path>` for targeted edits. Repeat -f/-r for multi-edit.",
36
+ "Use `batch delete <path>` to remove files.",
37
+ "Use `batch patch -c <patch_text>` to apply patch.",
38
+ "Use `batch bash <command>` for shell commands. Chain with ; and &&.",
39
+ "Use `batch rg -q <pattern> <path>` for ripgrep.",
40
+ "Use `batch web search -q <query>` or `batch web fetch -u <url>` for web ops.",
41
+ "Use `batch poll -i <id>` to check pending bash commands.",
42
+ "Pass `cmd: \"help\"` or `--help` for the man page.",
43
+ ];
44
+ // ---------------------------------------------------------------------------
45
+ // Help text
46
+ // ---------------------------------------------------------------------------
47
+ const subcommands = [
48
+ {
49
+ name: "read",
50
+ description: "Read file contents. Paths may include :N or :N-M line ranges.",
51
+ flags: {
52
+ start: { short: "s", type: "number", description: "1-indexed start line" },
53
+ limit: { short: "l", type: "number", description: "Maximum lines to read" },
54
+ end: { short: "e", type: "number", description: "End line (used with -s)" },
55
+ },
56
+ },
57
+ {
58
+ name: "write",
59
+ description: "Write content to file(s).",
60
+ flags: {
61
+ content: { short: "c", type: "string", description: "File content (required)" },
62
+ },
63
+ },
64
+ {
65
+ name: "edit",
66
+ description: "Targeted file edit using --find/--replace pairs.",
67
+ flags: {
68
+ find: { short: "f", type: "string", description: "Exact text to find (oldText). Repeatable." },
69
+ replace: { short: "r", type: "string", description: "Replacement text (newText). Repeatable." },
70
+ append: { short: "a", type: "boolean", description: "Append instead of replace" },
71
+ "all-occurrences": { short: "A", type: "boolean", description: "Replace all occurrences instead of requiring unique match" },
72
+ },
73
+ },
74
+ {
75
+ name: "delete",
76
+ description: "Delete file(s).",
77
+ flags: {},
78
+ },
79
+ {
80
+ name: "patch",
81
+ description: "Apply a patch.",
82
+ flags: {
83
+ content: { short: "c", type: "string", description: "Patch text (required)" },
84
+ },
85
+ },
86
+ {
87
+ name: "bash",
88
+ description: "Execute a shell command.",
89
+ flags: {
90
+ id: { short: "i", type: "string", description: "Unique ID for this bash operation (auto-generated if omitted)" },
91
+ timeout: { short: "t", type: "number", description: "Timeout in ms" },
92
+ cwd: { short: "h", type: "string", description: "Working directory override for this command" },
93
+ },
94
+ },
95
+ {
96
+ name: "rg",
97
+ description: "Search with ripgrep.",
98
+ flags: {
99
+ query: { short: "q", type: "string", description: "Search pattern (required)" },
100
+ "ignore-case": { short: "i", type: "boolean", description: "Ignore case" },
101
+ "files-only": { short: "l", type: "boolean", description: "Return filenames only" },
102
+ type: { short: "t", type: "string", description: "Type filter (e.g., ts, js)" },
103
+ "max-count": { short: "n", type: "number", description: "Max matches per file" },
104
+ "ignore-level": { short: "u", type: "number", description: "Ignore level (0-3)" },
105
+ },
106
+ },
107
+ {
108
+ name: "web",
109
+ description: "Web operations: search or fetch.",
110
+ flags: {
111
+ query: { short: "q", type: "string", description: "Search query (for web search)" },
112
+ url: { short: "u", type: "string", description: "URL to fetch (for web fetch)" },
113
+ format: { short: "f", type: "string", description: "Output format for fetch: markdown, text, html" },
114
+ },
115
+ },
116
+ {
117
+ name: "poll",
118
+ description: "Poll pending bash commands by ID.",
119
+ flags: {
120
+ id: { short: "i", type: "string", description: "Bash operation ID to poll (required, repeatable)" },
121
+ },
122
+ },
123
+ ];
124
+ export const BATCH_HELP = renderHelp("batch", "Multi-op executor. File/shell ops ([read] [write] [edit] [delete] [patch] [bash] [rg]) execute first; web ([search] [fetch]) runs after. Supports chaining with ; and &&.", subcommands);
125
+ // ---------------------------------------------------------------------------
126
+ // Dispatch
127
+ // ---------------------------------------------------------------------------
128
+ async function dispatchSubcommand(subcommand, parsed, cwd, bashTracker, sessionManager, signal) {
129
+ switch (subcommand) {
130
+ case "read":
131
+ return runReadSubcommand(parsed, cwd, signal);
132
+ case "write":
133
+ return runWriteSubcommand(parsed, cwd, signal);
134
+ case "edit":
135
+ return runEditSubcommand(parsed, cwd, signal);
136
+ case "delete":
137
+ return runDeleteSubcommand(parsed, cwd, signal);
138
+ case "patch":
139
+ return runPatchSubcommand(parsed, cwd, signal);
140
+ case "bash":
141
+ return runBashSubcommand(parsed, cwd, bashTracker, signal);
142
+ case "rg":
143
+ return runRgSubcommand(parsed, cwd, signal);
144
+ case "web":
145
+ return runWebSubcommand(parsed, cwd, sessionManager, signal);
146
+ case "poll":
147
+ return runPollSubcommand(parsed, cwd, bashTracker, signal);
148
+ default:
149
+ throw new CliError(`Unknown subcommand: ${subcommand}`, `Did you mean: ${subcommands.map((s) => s.name).join(", ")}? Run with --help for usage.`);
150
+ }
151
+ }
152
+ function getFlagSpec(subcommand) {
153
+ switch (subcommand) {
154
+ case "read": return READ_FLAGS;
155
+ case "write": return WRITE_FLAGS;
156
+ case "edit": return EDIT_FLAGS;
157
+ case "delete": return DELETE_FLAGS;
158
+ case "patch": return PATCH_FLAGS;
159
+ case "bash": return BASH_FLAGS;
160
+ case "rg": return RG_FLAGS;
161
+ case "web": return WEB_FLAGS;
162
+ case "poll": return POLL_FLAGS;
163
+ default: return {};
164
+ }
165
+ }
166
+ // ---------------------------------------------------------------------------
167
+ // Main entry
168
+ // ---------------------------------------------------------------------------
169
+ export async function runBatchCli(cmd, cwd, bashTracker, sessionManager, signal) {
170
+ const trimmed = cmd.trim();
171
+ if (trimmed.length === 0) {
172
+ return { text: BATCH_HELP, results: [], hasError: false };
173
+ }
174
+ const chain = splitChain(trimmed);
175
+ const ops = [];
176
+ let previousFailed = false;
177
+ const allResults = [];
178
+ for (const link of chain) {
179
+ if (link.kind === "and" && previousFailed) {
180
+ ops.push({ cmd: link.cmd, output: "", skipped: true });
181
+ continue;
182
+ }
183
+ let output = "";
184
+ let failed = false;
185
+ let error;
186
+ try {
187
+ const tokens = tokenize(link.cmd);
188
+ // Remove leading "batch" if present (the model may include it)
189
+ if (tokens[0] === "batch") {
190
+ tokens.shift();
191
+ }
192
+ if (tokens.length === 0) {
193
+ output = BATCH_HELP;
194
+ }
195
+ else {
196
+ const subcommand = tokens[0];
197
+ if (subcommand === "help" || subcommand === "--help" || subcommand === "-h") {
198
+ output = BATCH_HELP;
199
+ }
200
+ else {
201
+ const RECOGNIZED_SUBS = new Set(["read", "write", "edit", "delete", "patch", "bash", "rg", "web", "poll"]);
202
+ let parsed;
203
+ let result;
204
+ if (!RECOGNIZED_SUBS.has(subcommand)) {
205
+ // Defer to dispatchSubcommand's default branch for a clear "Unknown subcommand" error.
206
+ result = await dispatchSubcommand(subcommand, { flags: {}, positionals: tokens.slice(1) }, cwd, bashTracker, sessionManager, signal);
207
+ }
208
+ else {
209
+ const flagSpec = getFlagSpec(subcommand);
210
+ try {
211
+ parsed = parseCommand(tokens, flagSpec);
212
+ }
213
+ catch (err) {
214
+ if (err instanceof CliError && err.message.startsWith("Unknown flag")) {
215
+ const validFlags = Object.keys(flagSpec).map((n) => `--${n}`).join(", ");
216
+ throw new CliError(err.message, `\`${subcommand}\` supports: ${validFlags}. Run [cmd]: \"help\" for the man page.`);
217
+ }
218
+ throw err;
219
+ }
220
+ result = await dispatchSubcommand(parsed.subcommand, parsed, cwd, bashTracker, sessionManager, signal);
221
+ }
222
+ output = result.output;
223
+ allResults.push(...result.results);
224
+ if (result.failed) {
225
+ failed = true;
226
+ error = `${result.error ?? "operation failed"}\nTIP: This is not a shell. Valid subcommands: read, write, edit, delete, patch, bash, rg, web, poll. Run [cmd]: \"help\" for the man page.`;
227
+ }
228
+ }
229
+ }
230
+ }
231
+ catch (err) {
232
+ failed = true;
233
+ if (err instanceof CliError) {
234
+ const baseError = err.hint ? `${err.message} (hint: ${err.hint})` : err.message;
235
+ error = `${baseError}\nTIP: This is not a shell. Valid subcommands: read, write, edit, delete, patch, bash, rg, web, poll. Run [cmd]: \"help\" for the man page.`;
236
+ }
237
+ else {
238
+ error = `internal error: ${err instanceof Error ? err.message : String(err)}`;
239
+ }
240
+ }
241
+ ops.push({ cmd: link.cmd, output, error, failed, skipped: false });
242
+ if (failed) {
243
+ previousFailed = true;
244
+ }
245
+ else {
246
+ previousFailed = false;
247
+ }
248
+ }
249
+ const hasError = ops.some((op) => op.error !== undefined || op.skipped || op.failed);
250
+ return { text: formatChainedOutput(ops), results: allResults, hasError };
251
+ }
252
+ //# sourceMappingURL=batch.js.map
@@ -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,11 @@
1
+ import type { BashProcessTracker } from "../../batch/batch-bash.js";
2
+ export declare function runBashSubcommand(parsed: {
3
+ flags: Record<string, unknown>;
4
+ positionals: string[];
5
+ }, cwd: string, bashTracker: BashProcessTracker | undefined, signal?: AbortSignal): Promise<{
6
+ output: string;
7
+ results: import("../../batch/constants.js").OpResult[];
8
+ error?: string;
9
+ failed: boolean;
10
+ }>;
11
+ //# 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,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;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,CA8DtH"}
@@ -0,0 +1,63 @@
1
+ import { executeBatchBash, generateBashId } from "../../batch/batch-bash.js";
2
+ import { CliError } from "../parse.js";
3
+ export async function runBashSubcommand(parsed, cwd, bashTracker, signal) {
4
+ if (parsed.positionals.length === 0) {
5
+ throw new CliError("bash requires a command string.", "Usage: batch bash [flags] <command>");
6
+ }
7
+ const command = parsed.positionals.join(" ");
8
+ const id = typeof parsed.flags.id === "string" ? parsed.flags.id : generateBashId();
9
+ const timeout = typeof parsed.flags.timeout === "number" ? parsed.flags.timeout : undefined;
10
+ const workingDir = typeof parsed.flags.cwd === "string" ? parsed.flags.cwd : undefined;
11
+ if (!bashTracker) {
12
+ return {
13
+ output: "Bash tracker not available.",
14
+ results: [{
15
+ op: "bash",
16
+ path: "bash",
17
+ status: "error",
18
+ id,
19
+ command,
20
+ error: "Bash tracker not available.",
21
+ }],
22
+ error: "Bash tracker not available.",
23
+ failed: true,
24
+ };
25
+ }
26
+ const normalizedBashOps = [{
27
+ i: id,
28
+ c: command,
29
+ t: timeout,
30
+ h: workingDir,
31
+ }];
32
+ const bashOutput = await executeBatchBash(normalizedBashOps, cwd, bashTracker, signal);
33
+ const bashLines = [];
34
+ const results = bashOutput;
35
+ for (const r of bashOutput) {
36
+ if (r.status === "ok") {
37
+ bashLines.push(`\n--- bash [${r.id}] exit ${r.exitCode} ---`);
38
+ if (r.timingTier)
39
+ bashLines.push(`[Execution time: ${r.timingTier}]`);
40
+ if (r.stdout?.trim())
41
+ bashLines.push(r.stdout.trimEnd());
42
+ }
43
+ else if (r.status === "pending") {
44
+ bashLines.push(`\n--- bash [${r.id}] pending ---`);
45
+ if (r.stdout?.trim())
46
+ bashLines.push(`[partial output]\n${r.stdout.trimEnd()}`);
47
+ bashLines.push(`[Use batch_bash_poll with i: ["${r.id}"] to check results]`);
48
+ }
49
+ else {
50
+ bashLines.push(`\n--- bash [${r.id}] error ---`);
51
+ if (r.timingTier)
52
+ bashLines.push(`[Execution time: ${r.timingTier}]`);
53
+ if (r.stdout?.trim())
54
+ bashLines.push(r.stdout.trimEnd());
55
+ if (r.stderr?.trim())
56
+ bashLines.push(`[stderr]\n${r.stderr.trimEnd()}`);
57
+ }
58
+ }
59
+ const output = bashLines.join("\n");
60
+ const failed = bashOutput.some((r) => r.status === "error");
61
+ return { output, results, failed };
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,10 @@
1
+ export declare function runDeleteSubcommand(parsed: {
2
+ flags: Record<string, unknown>;
3
+ positionals: string[];
4
+ }, cwd: string, signal?: AbortSignal): Promise<{
5
+ output: string;
6
+ results: import("../../batch/constants.js").OpResult[];
7
+ error?: string;
8
+ failed: boolean;
9
+ }>;
10
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/delete.ts"],"names":[],"mappings":"AAIA,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;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,CAyBtH"}
@@ -0,0 +1,21 @@
1
+ import { executeOperations } from "../../batch/execute.js";
2
+ import { CliError } from "../parse.js";
3
+ export async function runDeleteSubcommand(parsed, cwd, signal) {
4
+ if (parsed.positionals.length === 0) {
5
+ throw new CliError("delete requires at least one path.", "Usage: batch delete <path> ...");
6
+ }
7
+ const ops = parsed.positionals.map((path) => ({
8
+ o: "delete",
9
+ p: path,
10
+ }));
11
+ const { contentText, results } = await executeOperations(ops, cwd, signal, {
12
+ readOptions: { truncate: false, toolName: "batch" },
13
+ includeLimitWarnings: false,
14
+ });
15
+ const failed = results.some((r) => r.status === "error");
16
+ const error = failed
17
+ ? (results.find((r) => r.status === "error")?.error ?? "operation failed")
18
+ : undefined;
19
+ return { output: contentText, results, error, failed };
20
+ }
21
+ //# 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;AAEvC,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,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"}
@@ -0,0 +1,10 @@
1
+ export declare function runEditSubcommand(parsed: {
2
+ flags: Record<string, unknown>;
3
+ positionals: string[];
4
+ }, cwd: string, signal?: AbortSignal): Promise<{
5
+ output: string;
6
+ results: import("../../batch/constants.js").OpResult[];
7
+ error?: string;
8
+ failed: boolean;
9
+ }>;
10
+ //# sourceMappingURL=edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/cli/exec/edit.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,GACnB,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,CA2DtH"}