brass-runtime 1.13.7 → 1.14.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 (37) hide show
  1. package/README.md +231 -55
  2. package/dist/agent/cli/main.cjs +43 -43
  3. package/dist/agent/cli/main.js +2 -2
  4. package/dist/agent/cli/main.mjs +2 -2
  5. package/dist/agent/index.cjs +3 -3
  6. package/dist/agent/index.d.ts +1 -1
  7. package/dist/agent/index.js +2 -2
  8. package/dist/agent/index.mjs +2 -2
  9. package/dist/chunk-4N2JEK4H.mjs +3897 -0
  10. package/dist/chunk-BKBFSOGT.cjs +3897 -0
  11. package/dist/{chunk-XNOTJSMZ.mjs → chunk-BMRF4FN6.js} +268 -8
  12. package/dist/chunk-JT7D6M5H.js +3897 -0
  13. package/dist/{chunk-3R7ZYRK2.mjs → chunk-MQF7HZ7Y.mjs} +1 -1
  14. package/dist/chunk-SKVY72E5.cjs +667 -0
  15. package/dist/{chunk-ATHSSDUF.js → chunk-UWMMYKVK.mjs} +268 -8
  16. package/dist/{chunk-INZBKOHY.js → chunk-WJESVBWN.js} +1 -1
  17. package/dist/{chunk-XDINDYNA.cjs → chunk-XTMZTVIT.cjs} +134 -134
  18. package/dist/{effect-ISvXPLgc.d.ts → effect-DM56H743.d.ts} +191 -21
  19. package/dist/http/index.cjs +808 -140
  20. package/dist/http/index.d.ts +181 -8
  21. package/dist/http/index.js +793 -125
  22. package/dist/http/index.mjs +793 -125
  23. package/dist/index.cjs +1785 -137
  24. package/dist/index.d.ts +979 -36
  25. package/dist/index.js +1675 -27
  26. package/dist/index.mjs +1675 -27
  27. package/dist/stream-Oqe6WeLE.d.ts +173 -0
  28. package/package.json +1 -1
  29. package/wasm/pkg/brass_runtime_wasm_engine.d.ts +95 -16
  30. package/wasm/pkg/brass_runtime_wasm_engine.js +715 -15
  31. package/wasm/pkg/brass_runtime_wasm_engine_bg.wasm +0 -0
  32. package/wasm/pkg/brass_runtime_wasm_engine_bg.wasm.d.ts +78 -7
  33. package/dist/chunk-2P4PD6D7.cjs +0 -2557
  34. package/dist/chunk-7F2R7A2V.mjs +0 -2557
  35. package/dist/chunk-L6KKKM66.js +0 -2557
  36. package/dist/chunk-ZTDK2DLG.cjs +0 -407
  37. package/dist/stream-BvukHxCv.d.ts +0 -66
package/README.md CHANGED
@@ -1,58 +1,234 @@
1
- # Documentation
1
+ # 🛠️ brass-runtime — Mini ZIO-like runtime in TypeScript
2
+
3
+ A small experimental runtime inspired by **ZIO 2**, implemented in vanilla TypeScript and intentionally built without using `Promise` / `async`/`await` as the **primary semantic primitive**.
4
+
5
+ `brass-runtime` is the foundation: it provides an effect system, fibers, scheduler, scopes, and streams.
6
+ Higher-level modules (HTTP, streaming utilities, integrations) are built **on top of the runtime**, not baked into it.
7
+
8
+ > You can still interop with the outside world (timers, fetch, Node APIs) via explicit, cancellable bridges such as `fromPromiseAbortable`.
9
+
10
+ ---
11
+
12
+ ## Philosophy
13
+
14
+ - **Effects are values** — lazy, composable, referentially transparent
15
+ - **Async is explicit** — no hidden Promise semantics
16
+ - **Concurrency is structured** — fibers, scopes, finalizers
17
+ - **Side effects are interpreted** — not executed eagerly
18
+ - **Higher-level APIs are libraries, not magic**
19
+
20
+ If you like ZIO’s separation between `zio-core`, `zio-streams`, and `zio-http`, this project follows the same spirit.
21
+
22
+ ---
23
+
24
+ ## Core concepts
25
+
26
+ - Sync core effect: `Effect<R, E, A>` and `Exit<E, A>`
27
+ - Algebraic async representation: `Async<R, E, A>`
28
+ - Cooperative `Scheduler` (observable / testable)
29
+ - Lightweight `Fiber`s with interruption & finalizers
30
+ - Structured `Scope`s for resource safety
31
+ - ZStream-style streams with backpressure
32
+
33
+ ---
34
+
35
+ ## Install
36
+
37
+ ```bash
38
+ npm i brass-runtime
39
+ ```
40
+
41
+ ---
42
+
43
+ ## Quick start
44
+
45
+ ### Run an effect
46
+
47
+ ```ts
48
+ import { Runtime, succeed, toPromise } from "brass-runtime";
49
+
50
+ const runtime = new Runtime({ env: {} });
51
+
52
+ const value = await toPromise(succeed(123), runtime.env);
53
+ console.log(value); // 123
54
+ ```
55
+
56
+ ### Structured concurrency with Scope
57
+
58
+ ```ts
59
+ import { Runtime, withScope } from "brass-runtime";
60
+
61
+ const runtime = new Runtime({ env: {} });
62
+
63
+ withScope(runtime, (scope) => {
64
+ const f = scope.fork(/* Async effect */);
65
+ // later...
66
+ scope.close(); // interrupts child fibers + runs finalizers
67
+ });
68
+ ```
69
+
70
+ > `toPromise` is just a convenience bridge for examples/DX. The runtime semantics remain explicit.
71
+
72
+ ---
73
+
74
+ ## Modules built on top of brass-runtime
75
+
76
+ These are optional layers, implemented using the runtime primitives.
77
+
78
+ ### 🌐 HTTP client (brass-http layer)
79
+
80
+ A ZIO-style HTTP client built on top of fibers and `Async`.
81
+
82
+ - Lazy & cancelable HTTP requests
83
+ - Explicit wire/content separation
84
+ - Middleware-friendly (logging, retry, timeout, etc.)
85
+ - Integrated with fiber interruption via `AbortController`
86
+
87
+ 👉 **Docs:** [HTTP module](./docs/http.md)
88
+
89
+ Example:
90
+
91
+ ```ts
92
+ import { Runtime, toPromise } from "brass-runtime";
93
+ import { httpClientStream } from "brass-runtime/http";
94
+
95
+ type Post = { id: number; title: string; body: string };
96
+
97
+ const runtime = new Runtime({ env: {} });
98
+
99
+ const client = httpClientStream({ baseUrl: "https://jsonplaceholder.typicode.com" });
100
+
101
+ const res = await toPromise(client.getJson<Post>("/posts/1"), runtime.env);
102
+ console.log(res.status, res.value.title);
103
+ ```
104
+
105
+ ---
106
+
107
+ ### 🤖 Brass Agent (experimental)
108
+
109
+ A CLI-first coding agent built on top of the runtime. Brass Agent is currently experimental: it can inspect a workspace, discover validation commands, gather bounded context, ask an LLM for a patch, apply/rollback patches through explicit policies, and expose a thin VS Code extension over the CLI protocol.
2
110
 
3
111
  Start here:
4
112
 
5
- - **[Getting started](./getting-started.md)** — installation, first effects, and running examples
6
- - **[Architecture](./ARCHITECTURE.md)** — how the runtime is structured
7
- - **[Cancellation & interruption](./cancellation.md)** — interruption semantics, scopes, and cancellable `Async`
8
- - **[Observability](./observability.md)** — hooks, events, sinks, and tracing
9
- - **[HTTP client](./http.md)** — ZIO-style HTTP built on brass-runtime
10
- - **[Modules overview](./modules.md)** — map of core modules and where things live
11
- - **[Agent module boundaries](./agent-boundaries.md)** — rules for keeping `brass-agent` isolated from the core runtime
12
- - **[Brass Agent install and configure](./agent-install-and-configure.md)** — end-to-end local setup for CLI, config, providers, and VS Code
13
-
14
- - [Agent LLM adapters](./agent-llm-adapters.md)
15
- - [Agent env files](./agent-env-files.md)
16
- - [Agent global usage and workspace discovery](./agent-global-usage.md)
17
- - [Agent apply mode](./agent-apply-mode.md)
18
- - [Brass Agent CLI](./agent-cli.md)
19
- - [Agent init](./agent-init.md)
20
- - [Agent observability](./agent-observability.md)
21
- - [Agent approvals](./agent-approvals.md)
22
- - [Agent config and policy files](./agent-config.md)
23
- - [Agent project command discovery](./agent-project-commands.md)
24
- - [Agent project intelligence](./agent-project-intelligence.md)
25
- - [Declarative optimized planning roadmap](./agent-declarative-optimized-planning.md)
26
- - [Agent context discovery](./agent-context-discovery.md)
27
- - [Agent patch quality loop](./agent-patch-quality-loop.md)
28
- - [Agent automatic rollback safety](./agent-rollback-safety.md)
29
- - [Agent DX surfaces](./agent-dx.md)
30
-
31
- - [VS Code patch preview](./agent-vscode-patch-preview.md)
32
- - [VS Code enhanced diff preview](./agent-vscode-diff-preview.md)
33
- - [VS Code run history](./agent-vscode-run-history.md)
34
- - [VS Code batch runner](./agent-vscode-batch-runner.md)
35
- - [VS Code UX](./agent-vscode-ux.md)
36
- - [VS Code Project dashboard](./agent-vscode-project-dashboard.md)
37
- - [VS Code Chat layout / focus mode](./agent-vscode-chat-layout.md)
38
- - [Copilot-like VS Code DX](./agent-copilot-like-dx.md)
39
- - [Chat sessions and slash commands](./agent-chat-sessions.md)
40
- - [Agent follow-up context](./agent-follow-up-context.md)
41
- - [VS Code code actions](./agent-vscode-code-actions.md)
42
- - [VS Code problems-aware chat](./agent-vscode-problems.md)
43
- - [VS Code inline assist](./agent-vscode-inline-assist.md)
44
- - [Agent release readiness](./agent-release-readiness.md)
45
- - [VS Code local install](./agent-vscode-install.md)
46
- - [VS Code auto-discovery](./agent-vscode-auto-discovery.md)
47
- - [VS Code model setup](./agent-vscode-model-setup.md)
48
- - [Agent local install and doctor](./agent-local-install.md)
49
- - [Agent local tests](./agent-local-tests.md)
50
-
51
- - [Agent rollback patches](./agent-rollback.md)
52
- - [Agent redaction](./agent-redaction.md)
53
- - [Agent run artifacts](./agent-run-artifacts.md)
54
- - [Agent CI mode](./agent-ci.md)
55
- - [Agent presets](./agent-presets.md)
56
- - [Agent batch runs](./agent-batch.md)
57
- - [VS Code full clean and reinstall](./agent-vscode-clean-install.md)
58
- - [Agent language and workspace setup UX](agent-language-workspace-ux.md)
113
+ - [Install and configure Brass Agent](./docs/agent-install-and-configure.md)
114
+ - [Declarative optimized planning roadmap](./docs/agent-declarative-optimized-planning.md)
115
+ - [Brass Agent CLI](./docs/agent-cli.md)
116
+ - [Project intelligence](./docs/agent-project-intelligence.md)
117
+ - [Global usage and workspace discovery](./docs/agent-global-usage.md)
118
+ - [VS Code local install](./docs/agent-vscode-install.md)
119
+ - [VS Code auto-discovery](./docs/agent-vscode-auto-discovery.md)
120
+ - [VS Code model setup](./docs/agent-vscode-model-setup.md)
121
+ - [VS Code chat layout / focus mode](./docs/agent-vscode-chat-layout.md)
122
+
123
+ ```bash
124
+ npm run agent:vscode:install
125
+ # then open any repo in VS Code and use Brass Agent -> Chat
126
+
127
+ npm run build
128
+ npm run agent:link
129
+ brass-agent --where
130
+ brass-agent --doctor
131
+ brass-agent --init
132
+ brass-agent --preset inspect
133
+ ```
134
+
135
+ ---
136
+
137
+ ### 🌊 Streams (ZStream-like)
138
+
139
+ Pull-based, resource-aware streams with backpressure.
140
+
141
+ - `ZStream<R, E, A>`
142
+ - `Pull` semantics
143
+ - Bounded buffers
144
+ - Deterministic resource cleanup
145
+
146
+ Examples:
147
+
148
+ - `src/examples/fromPromise.ts`
149
+ - `src/examples/mergeStreamSync.ts`
150
+
151
+ ---
152
+
153
+ ## Docs
154
+
155
+ - [Getting Started](./docs/getting-started.md)
156
+ - [Architecture](./docs/ARCHITECTURE.md)
157
+ - [Cancellation & Interruption](./docs/cancellation.md)
158
+ - [Observability: Hooks & Tracing](./docs/observability.md)
159
+ - [HTTP module](./docs/http.md)
160
+ - [Modules overview](./docs/modules.md)
161
+ - [Install and configure Brass Agent](./docs/agent-install-and-configure.md)
162
+ - [Declarative optimized planning roadmap](./docs/agent-declarative-optimized-planning.md)
163
+
164
+ ---
165
+
166
+ ## What’s new (recent changes)
167
+
168
+ - Stream buffering with backpressure (`buffer`)
169
+ - Abortable async integration (`fromPromiseAbortable`)
170
+ - Fiber-safe `toPromise` for examples & DX
171
+ - HTTP client module built on top of the runtime
172
+
173
+ ---
174
+
175
+ ## Features (status)
176
+
177
+ ### Runtime (core)
178
+
179
+ - [x] Sync core: `Effect`
180
+ - [x] Async algebra: `Async`
181
+ - [x] Cooperative `Scheduler`
182
+ - [x] Fibers with interruption & finalizers
183
+ - [x] Structured `Scope`
184
+ - [x] Resource safety (`acquireRelease`)
185
+
186
+ ### Concurrency & Streams
187
+
188
+ - [x] `race`, `zipPar`, `collectAllPar`
189
+ - [x] ZStream-like core
190
+ - [x] Bounded buffers & backpressure
191
+ - [x] Stream merge / zip
192
+ - [x] Hubs / Broadcast
193
+ - [x] Pipelines (`ZPipeline`-style)
194
+
195
+ ### Libraries
196
+
197
+ - [x] HTTP client
198
+ - [ ] Retry / timeout middleware
199
+ - [ ] Logging / metrics layers
200
+
201
+ ---
202
+
203
+ ## Design notes
204
+
205
+ - **No hidden Promises**: async is always modeled explicitly
206
+ - **Deterministic execution**: scheduler is observable & testable
207
+ - **Resource safety is structural**: scopes guarantee cleanup
208
+ - **Libraries compose via functions**: middleware, not inheritance
209
+
210
+ ---
211
+
212
+ ## Contributing
213
+
214
+ - Runtime invariants matter — avoid sneaking Promises into semantics
215
+ - Prefer libraries on top of the runtime over changes in the core
216
+ - Small, focused PRs are welcome (your repo may enforce PR-only changes)
217
+
218
+ ---
219
+
220
+ ## License
221
+
222
+ MIT License © 2025
223
+
224
+ ## Brass Agent local smoke tests
225
+
226
+ Run local smoke tests without CI or a real LLM provider:
227
+
228
+ ```bash
229
+ npm run agent:test:local
230
+ ```
231
+
232
+ This builds the project and runs a fake-LLM smoke test against the `brass-agent` CLI.
233
+
234
+ See also: [Agent language and workspace setup UX](docs/agent-language-workspace-ux.md).
@@ -17,13 +17,13 @@
17
17
 
18
18
 
19
19
 
20
- var _chunkXDINDYNAcjs = require('../../chunk-XDINDYNA.cjs');
20
+ var _chunkXTMZTVITcjs = require('../../chunk-XTMZTVIT.cjs');
21
21
 
22
22
 
23
23
 
24
24
 
25
25
 
26
- var _chunk2P4PD6D7cjs = require('../../chunk-2P4PD6D7.cjs');
26
+ var _chunkBKBFSOGTcjs = require('../../chunk-BKBFSOGT.cjs');
27
27
 
28
28
  // src/agent/cli/approvals.ts
29
29
  var dynamicImport = new Function("specifier", "return import(specifier)");
@@ -39,7 +39,7 @@ var answerToResponse = (answer, request) => {
39
39
  return { type: "rejected", reason: `Unrecognized approval answer: ${answer}` };
40
40
  };
41
41
  var makeCliApprovalService = (options = {}) => ({
42
- request: (request) => _chunk2P4PD6D7cjs.async.call(void 0, (_env, cb) => {
42
+ request: (request) => _chunkBKBFSOGTcjs.async.call(void 0, (_env, cb) => {
43
43
  let closed = false;
44
44
  let rl;
45
45
  dynamicImport("node:readline/promises").then(({ createInterface }) => {
@@ -51,7 +51,7 @@ var makeCliApprovalService = (options = {}) => ({
51
51
  _optionalChain([output, 'optionalAccess', _ => _.write, 'optionalCall', _2 => _2(`
52
52
  Approval required (${request.risk})
53
53
  `)]);
54
- _optionalChain([output, 'optionalAccess', _3 => _3.write, 'optionalCall', _4 => _4(`Action: ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, request.action)}
54
+ _optionalChain([output, 'optionalAccess', _3 => _3.write, 'optionalCall', _4 => _4(`Action: ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, request.action)}
55
55
  `)]);
56
56
  _optionalChain([output, 'optionalAccess', _5 => _5.write, 'optionalCall', _6 => _6(`Reason: ${request.reason}
57
57
  `)]);
@@ -60,14 +60,14 @@ Approval required (${request.risk})
60
60
  if (answer === void 0 || closed) return;
61
61
  closed = true;
62
62
  _optionalChain([rl, 'optionalAccess', _7 => _7.close, 'optionalCall', _8 => _8()]);
63
- cb(_chunk2P4PD6D7cjs.Exit.succeed(answerToResponse(answer, request)));
63
+ cb(_chunkBKBFSOGTcjs.Exit.succeed(answerToResponse(answer, request)));
64
64
  }).catch((cause) => {
65
65
  if (closed) return;
66
66
  closed = true;
67
67
  _optionalChain([rl, 'optionalAccess', _9 => _9.close, 'optionalCall', _10 => _10()]);
68
68
  cb(
69
- _chunk2P4PD6D7cjs.Exit.failCause(
70
- _chunk2P4PD6D7cjs.Cause.fail({
69
+ _chunkBKBFSOGTcjs.Exit.failCause(
70
+ _chunkBKBFSOGTcjs.Cause.fail({
71
71
  _tag: "AgentLoopError",
72
72
  message: `Approval prompt failed: ${String(cause)}`
73
73
  })
@@ -290,7 +290,7 @@ var newestVsix = (extensionDir) => {
290
290
  var push = (checks, check) => {
291
291
  checks.push(check);
292
292
  };
293
- var runAgentDoctor = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
293
+ var runAgentDoctor = _chunkBKBFSOGTcjs.async.call(void 0, options) => {
294
294
  const cwd = _path.resolve.call(void 0, options.cwd);
295
295
  const checks = [];
296
296
  const repoRoot = _nullishCoalesce(findPackageRoot(cwd, "brass-runtime"), () => ( findPackageRoot(process.cwd(), "brass-runtime")));
@@ -877,7 +877,7 @@ var nextStepsForProfile = (profile) => {
877
877
  }
878
878
  return steps;
879
879
  };
880
- var writeInitFile = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
880
+ var writeInitFile = _chunkBKBFSOGTcjs.async.call(void 0, options) => {
881
881
  const path = _path.resolve.call(void 0, options.cwd, options.relativePath);
882
882
  const exists = _fs.existsSync.call(void 0, path);
883
883
  const status = exists ? options.force ? "overwritten" : "skipped" : "created";
@@ -892,7 +892,7 @@ var writeInitFile = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
892
892
  bytes: Buffer.byteLength(options.content, "utf8")
893
893
  };
894
894
  };
895
- var initializeAgentWorkspace = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
895
+ var initializeAgentWorkspace = _chunkBKBFSOGTcjs.async.call(void 0, options) => {
896
896
  const cwd = _path.resolve.call(void 0, options.cwd);
897
897
  const profile = _nullishCoalesce(options.profile, () => ( "default"));
898
898
  const force = _nullishCoalesce(options.force, () => ( false));
@@ -964,7 +964,7 @@ var printAgentInitResult = (result) => {
964
964
 
965
965
  // src/agent/cli/main.ts
966
966
  var dynamicImport2 = new Function("specifier", "return import(specifier)");
967
- var readPatchFile = _chunk2P4PD6D7cjs.async.call(void 0, cwd, patchFile) => {
967
+ var readPatchFile = _chunkBKBFSOGTcjs.async.call(void 0, cwd, patchFile) => {
968
968
  const nodePath = await dynamicImport2("node:path");
969
969
  const nodeFs = await dynamicImport2("node:fs/promises");
970
970
  return nodeFs.readFile(nodePath.resolve(cwd, patchFile), "utf8");
@@ -1098,7 +1098,7 @@ var parseCliArgs = (argv) => {
1098
1098
  }
1099
1099
  if (arg === "--preset" || arg.startsWith("--preset=")) {
1100
1100
  const [value, nextIndex] = readFlagValue(argv, index, "--preset");
1101
- if (!_chunkXDINDYNAcjs.isAgentPreset.call(void 0, value)) {
1101
+ if (!_chunkXTMZTVITcjs.isAgentPreset.call(void 0, value)) {
1102
1102
  throw new Error("--preset requires one of: fix-tests, inspect, typecheck, lint");
1103
1103
  }
1104
1104
  preset = value;
@@ -1274,7 +1274,7 @@ var parseBatchGoal = (value, path) => {
1274
1274
  if (cwd !== void 0 && typeof cwd !== "string") throw new Error(`${path}.cwd must be a string.`);
1275
1275
  if (patchFile !== void 0 && typeof patchFile !== "string") throw new Error(`${path}.patchFile must be a string.`);
1276
1276
  if (saveRunDir !== void 0 && typeof saveRunDir !== "string") throw new Error(`${path}.saveRunDir must be a string.`);
1277
- if (preset !== void 0 && (typeof preset !== "string" || !_chunkXDINDYNAcjs.isAgentPreset.call(void 0, preset))) {
1277
+ if (preset !== void 0 && (typeof preset !== "string" || !_chunkXTMZTVITcjs.isAgentPreset.call(void 0, preset))) {
1278
1278
  throw new Error(`${path}.preset must be one of: fix-tests, inspect, typecheck, lint.`);
1279
1279
  }
1280
1280
  if (mode !== void 0 && (typeof mode !== "string" || !isAgentMode(mode))) {
@@ -1301,7 +1301,7 @@ var parseBatchGoalsJson = (value) => {
1301
1301
  if (!rawGoals) throw new Error("Batch file must be a JSON array or an object with a goals array.");
1302
1302
  return rawGoals.map((goal, index) => parseBatchGoal(goal, `goals[${index}]`));
1303
1303
  };
1304
- var readBatchFile = _chunk2P4PD6D7cjs.async.call(void 0, cwd, batchFile) => {
1304
+ var readBatchFile = _chunkBKBFSOGTcjs.async.call(void 0, cwd, batchFile) => {
1305
1305
  const nodePath = await dynamicImport2("node:path");
1306
1306
  const nodeFs = await dynamicImport2("node:fs/promises");
1307
1307
  const path = nodePath.isAbsolute(batchFile) ? batchFile : nodePath.resolve(cwd, batchFile);
@@ -1318,7 +1318,7 @@ var readBatchFile = _chunk2P4PD6D7cjs.async.call(void 0, cwd, batchFile) => {
1318
1318
  var resolveBatchGoalText = (item, fallbackPatchFile) => {
1319
1319
  if (typeof item === "string") return item;
1320
1320
  if (item.goal) return item.goal;
1321
- if (item.preset) return _chunkXDINDYNAcjs.goalForAgentPreset.call(void 0, item.preset);
1321
+ if (item.preset) return _chunkXTMZTVITcjs.goalForAgentPreset.call(void 0, item.preset);
1322
1322
  if (_nullishCoalesce(item.patchFile, () => ( fallbackPatchFile))) return "apply supplied patch";
1323
1323
  return "";
1324
1324
  };
@@ -1344,8 +1344,8 @@ var resolveBatchRuns = (items, parsed, config) => items.map((item, index) => {
1344
1344
  ...saveRunDir ? { saveRunDir } : {}
1345
1345
  };
1346
1346
  });
1347
- var resolveParsedConfig = _chunk2P4PD6D7cjs.async.call(void 0, parsed) => {
1348
- const workspaceDiscovery = _chunkXDINDYNAcjs.discoverNodeWorkspaceRoot.call(void 0, parsed.cwd, {
1347
+ var resolveParsedConfig = _chunkBKBFSOGTcjs.async.call(void 0, parsed) => {
1348
+ const workspaceDiscovery = _chunkXTMZTVITcjs.discoverNodeWorkspaceRoot.call(void 0, parsed.cwd, {
1349
1349
  enabled: parsed.discoverWorkspace
1350
1350
  });
1351
1351
  const cwdResolved = workspaceDiscovery.cwd;
@@ -1353,7 +1353,7 @@ var resolveParsedConfig = _chunk2P4PD6D7cjs.async.call(void 0, parsed) => {
1353
1353
  ...parsed,
1354
1354
  cwd: cwdResolved
1355
1355
  };
1356
- const loaded = await _chunkXDINDYNAcjs.loadNodeAgentConfig.call(void 0, {
1356
+ const loaded = await _chunkXTMZTVITcjs.loadNodeAgentConfig.call(void 0, {
1357
1357
  cwd: cwdResolved,
1358
1358
  configPath: parsed.configPath,
1359
1359
  noConfig: parsed.noConfig
@@ -1369,7 +1369,7 @@ var resolveParsedConfig = _chunk2P4PD6D7cjs.async.call(void 0, parsed) => {
1369
1369
  const batchRuns = resolveBatchRuns(batchItems, parsedAtWorkspace, loaded.config);
1370
1370
  return {
1371
1371
  ...parsedAtWorkspace,
1372
- goalText: parsed.goalText || (parsed.preset ? _chunkXDINDYNAcjs.goalForAgentPreset.call(void 0, parsed.preset) : parsed.patchFile ? "apply supplied patch" : parsed.goalText),
1372
+ goalText: parsed.goalText || (parsed.preset ? _chunkXTMZTVITcjs.goalForAgentPreset.call(void 0, parsed.preset) : parsed.patchFile ? "apply supplied patch" : parsed.goalText),
1373
1373
  mode: parsed.modeSpecified ? parsed.mode : parsed.preset === "inspect" ? "read-only" : _nullishCoalesce(loaded.config.mode, () => ( parsed.mode)),
1374
1374
  approval: parsed.approvalSpecified ? parsed.approval : _nullishCoalesce(loaded.config.approval, () => ( parsed.approval)),
1375
1375
  config: loaded.config,
@@ -1493,7 +1493,7 @@ var envByName = (name) => name ? process.env[name] : void 0;
1493
1493
  var makeGoogleLLMFromEnv = (config) => {
1494
1494
  const apiKey = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(envByName(_optionalChain([config, 'optionalAccess', _39 => _39.apiKeyEnv])), () => ( process.env.BRASS_GOOGLE_API_KEY)), () => ( process.env.GOOGLE_API_KEY)), () => ( process.env.GEMINI_API_KEY));
1495
1495
  if (!apiKey) return void 0;
1496
- return _chunkXDINDYNAcjs.makeGoogleGenerativeAILLM.call(void 0, {
1496
+ return _chunkXTMZTVITcjs.makeGoogleGenerativeAILLM.call(void 0, {
1497
1497
  apiKey,
1498
1498
  model: _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(process.env.BRASS_GOOGLE_MODEL, () => ( process.env.BRASS_LLM_MODEL)), () => ( _optionalChain([config, 'optionalAccess', _40 => _40.model]))), () => ( "gemini-2.5-flash")),
1499
1499
  apiVersion: _nullishCoalesce(_nullishCoalesce(process.env.BRASS_GOOGLE_API_VERSION, () => ( _optionalChain([config, 'optionalAccess', _41 => _41.apiVersion]))), () => ( "v1beta")),
@@ -1511,12 +1511,12 @@ var makeOpenAICompatibleLLMFromEnv = (config) => {
1511
1511
  const apiKey = _nullishCoalesce(envByName(_optionalChain([config, 'optionalAccess', _50 => _50.apiKeyEnv])), () => ( process.env.BRASS_LLM_API_KEY));
1512
1512
  const model = _nullishCoalesce(_nullishCoalesce(process.env.BRASS_LLM_MODEL, () => ( _optionalChain([config, 'optionalAccess', _51 => _51.model]))), () => ( "gpt-4.1"));
1513
1513
  if (!endpoint || !apiKey) return void 0;
1514
- return _chunkXDINDYNAcjs.makeOpenAICompatibleLLM.call(void 0, { endpoint, apiKey, model });
1514
+ return _chunkXTMZTVITcjs.makeOpenAICompatibleLLM.call(void 0, { endpoint, apiKey, model });
1515
1515
  };
1516
1516
  var makeLLMFromEnv = (config) => {
1517
1517
  const provider = _optionalChain([(_nullishCoalesce(process.env.BRASS_LLM_PROVIDER, () => ( _optionalChain([config, 'optionalAccess', _52 => _52.provider])))), 'optionalAccess', _53 => _53.trim, 'call', _54 => _54(), 'access', _55 => _55.toLowerCase, 'call', _56 => _56()]);
1518
1518
  const fakeResponse = _nullishCoalesce(process.env.BRASS_FAKE_LLM_RESPONSE, () => ( _optionalChain([config, 'optionalAccess', _57 => _57.fakeResponse])));
1519
- if (provider === "fake") return _chunkXDINDYNAcjs.makeFakeLLM.call(void 0, { content: fakeResponse });
1519
+ if (provider === "fake") return _chunkXTMZTVITcjs.makeFakeLLM.call(void 0, { content: fakeResponse });
1520
1520
  if (provider === "google" || provider === "gemini") {
1521
1521
  const google = makeGoogleLLMFromEnv(config);
1522
1522
  if (!google) {
@@ -1538,7 +1538,7 @@ var makeLLMFromEnv = (config) => {
1538
1538
  if (provider) {
1539
1539
  throw new Error(`Unsupported LLM provider: ${provider}`);
1540
1540
  }
1541
- return _nullishCoalesce(_nullishCoalesce(makeGoogleLLMFromEnv(config), () => ( makeOpenAICompatibleLLMFromEnv(config))), () => ( _chunkXDINDYNAcjs.makeFakeLLM.call(void 0, { content: fakeResponse })));
1541
+ return _nullishCoalesce(_nullishCoalesce(makeGoogleLLMFromEnv(config), () => ( makeOpenAICompatibleLLMFromEnv(config))), () => ( _chunkXTMZTVITcjs.makeFakeLLM.call(void 0, { content: fakeResponse })));
1542
1542
  };
1543
1543
  var parseApprovalModeFromEnv = () => {
1544
1544
  const raw = _optionalChain([process, 'access', _58 => _58.env, 'access', _59 => _59.BRASS_AGENT_APPROVAL, 'optionalAccess', _60 => _60.trim, 'call', _61 => _61(), 'access', _62 => _62.toLowerCase, 'call', _63 => _63()]);
@@ -1561,9 +1561,9 @@ var makeApprovalServiceFromCli = (parsed) => {
1561
1561
  const mode = resolveApprovalMode(parsed);
1562
1562
  switch (mode) {
1563
1563
  case "approve":
1564
- return _chunkXDINDYNAcjs.autoApproveApprovals;
1564
+ return _chunkXTMZTVITcjs.autoApproveApprovals;
1565
1565
  case "deny":
1566
- return _chunkXDINDYNAcjs.makeAutoDenyApprovals.call(void 0, "Approval rejected because the CLI is running without interactive input. Use --yes to auto-approve.");
1566
+ return _chunkXTMZTVITcjs.makeAutoDenyApprovals.call(void 0, "Approval rejected because the CLI is running without interactive input. Use --yes to auto-approve.");
1567
1567
  case "interactive":
1568
1568
  return makeCliApprovalService();
1569
1569
  }
@@ -1695,32 +1695,32 @@ var createHumanEventSink = (configPath) => ({
1695
1695
  console.log("");
1696
1696
  break;
1697
1697
  case "agent.action.started":
1698
- console.log(`\u2192 ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)}`);
1698
+ console.log(`\u2192 ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, event.action)}`);
1699
1699
  break;
1700
1700
  case "agent.action.completed": {
1701
- const status = _chunkXDINDYNAcjs.observationStatus.call(void 0, event.observation);
1702
- console.log(`${statusIcon2(status)} ${_chunkXDINDYNAcjs.summarizeAgentObservation.call(void 0, event.observation)} ${formatDuration(event.durationMs)}`);
1701
+ const status = _chunkXTMZTVITcjs.observationStatus.call(void 0, event.observation);
1702
+ console.log(`${statusIcon2(status)} ${_chunkXTMZTVITcjs.summarizeAgentObservation.call(void 0, event.observation)} ${formatDuration(event.durationMs)}`);
1703
1703
  break;
1704
1704
  }
1705
1705
  case "agent.action.failed":
1706
1706
  if (event.error._tag !== "ToolTimeout" && event.error._tag !== "PermissionDenied" && event.error._tag !== "ApprovalRejected") {
1707
- console.log(`\u2717 ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)} failed with ${event.error._tag} ${formatDuration(event.durationMs)}`);
1707
+ console.log(`\u2717 ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, event.action)} failed with ${event.error._tag} ${formatDuration(event.durationMs)}`);
1708
1708
  }
1709
1709
  break;
1710
1710
  case "agent.tool.timeout":
1711
- console.log(`! ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)} timed out after ${event.timeoutMs}ms`);
1711
+ console.log(`! ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, event.action)} timed out after ${event.timeoutMs}ms`);
1712
1712
  break;
1713
1713
  case "agent.permission.denied":
1714
- console.log(`\u2717 ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)} denied: ${event.reason}`);
1714
+ console.log(`\u2717 ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, event.action)} denied: ${event.reason}`);
1715
1715
  break;
1716
1716
  case "agent.approval.requested":
1717
- console.log(`? approval required for ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)} (${event.risk})`);
1717
+ console.log(`? approval required for ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, event.action)} (${event.risk})`);
1718
1718
  break;
1719
1719
  case "agent.approval.resolved":
1720
1720
  if (event.approved) {
1721
- console.log(`\u2713 approval granted for ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)}`);
1721
+ console.log(`\u2713 approval granted for ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, event.action)}`);
1722
1722
  } else {
1723
- console.log(`\u2717 approval rejected for ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)}${event.reason ? `: ${event.reason}` : ""}`);
1723
+ console.log(`\u2717 approval rejected for ${_chunkXTMZTVITcjs.summarizeAgentAction.call(void 0, event.action)}${event.reason ? `: ${event.reason}` : ""}`);
1724
1724
  }
1725
1725
  break;
1726
1726
  case "agent.patch.applied":
@@ -1748,7 +1748,7 @@ var createProtocolEventSink = (options = {}) => ({
1748
1748
  });
1749
1749
  var safeFilePart = (value) => value.toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "run";
1750
1750
  var markdownEscape = (value) => value.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
1751
- var writeRunArtifacts = _chunk2P4PD6D7cjs.async.call(void 0, state, outputDir, options) => {
1751
+ var writeRunArtifacts = _chunkBKBFSOGTcjs.async.call(void 0, state, outputDir, options) => {
1752
1752
  const nodePath = await dynamicImport2("node:path");
1753
1753
  const nodeFs = await dynamicImport2("node:fs/promises");
1754
1754
  const dir = nodePath.isAbsolute(outputDir) ? outputDir : nodePath.resolve(state.goal.cwd, outputDir);
@@ -1825,13 +1825,13 @@ var printHumanFinalSummary = (state) => {
1825
1825
  };
1826
1826
  var makeEventsSink = (parsed, compactOptions) => parsed.output === "human" ? createHumanEventSink(parsed.resolvedConfigPath) : parsed.output === "events-json" ? createJsonEventSink(compactOptions) : parsed.output === "protocol-json" ? createProtocolEventSink(compactOptions) : void 0;
1827
1827
  var makeAgentEnv = (parsed, events) => {
1828
- const shell = _chunkXDINDYNAcjs.NodeShell;
1828
+ const shell = _chunkXTMZTVITcjs.NodeShell;
1829
1829
  return {
1830
1830
  shell,
1831
- fs: _chunkXDINDYNAcjs.makeNodeFileSystem.call(void 0, shell),
1832
- patch: _chunkXDINDYNAcjs.makeNodePatchService.call(void 0, shell),
1831
+ fs: _chunkXTMZTVITcjs.makeNodeFileSystem.call(void 0, shell),
1832
+ patch: _chunkXTMZTVITcjs.makeNodePatchService.call(void 0, shell),
1833
1833
  llm: makeLLMFromEnv(parsed.config.llm),
1834
- permissions: _chunkXDINDYNAcjs.makeConfiguredPermissions.call(void 0, parsed.config.permissions),
1834
+ permissions: _chunkXTMZTVITcjs.makeConfiguredPermissions.call(void 0, parsed.config.permissions),
1835
1835
  approvals: makeApprovalServiceFromCli(parsed),
1836
1836
  ...events ? { events } : {},
1837
1837
  ...parsed.config.tools ? { toolPolicies: parsed.config.tools } : {}
@@ -1846,12 +1846,12 @@ var singleRunFromParsed = (parsed) => ({
1846
1846
  ...parsed.patchFile ? { patchFile: parsed.patchFile } : {},
1847
1847
  ...parsed.saveRunDir ? { saveRunDir: parsed.saveRunDir } : {}
1848
1848
  });
1849
- var runCliAgent = _chunk2P4PD6D7cjs.async.call(void 0, parsed, run, compactOptions, events) => {
1849
+ var runCliAgent = _chunkBKBFSOGTcjs.async.call(void 0, parsed, run, compactOptions, events) => {
1850
1850
  const env = makeAgentEnv(parsed, events);
1851
- const runtime = new (0, _chunk2P4PD6D7cjs.Runtime)({ env });
1851
+ const runtime = new (0, _chunkBKBFSOGTcjs.Runtime)({ env });
1852
1852
  const initialPatch = run.patchFile ? await readPatchFile(run.cwd, run.patchFile) : void 0;
1853
1853
  const state = await runtime.toPromise(
1854
- _chunkXDINDYNAcjs.runAgent.call(void 0, runtime, {
1854
+ _chunkXTMZTVITcjs.runAgent.call(void 0, runtime, {
1855
1855
  id: `agent-${Date.now()}-${run.index + 1}`,
1856
1856
  cwd: run.cwd,
1857
1857
  text: run.goalText,
@@ -1919,7 +1919,7 @@ var printWorkspaceWhere = (parsed) => {
1919
1919
  if (result.configPath) console.log(`config: ${result.configPath}`);
1920
1920
  if (result.envFiles.length > 0) console.log(`env: ${result.envFiles.join(", ")}`);
1921
1921
  };
1922
- var main = _chunk2P4PD6D7cjs.async.call(void 0, ) => {
1922
+ var main = _chunkBKBFSOGTcjs.async.call(void 0, ) => {
1923
1923
  const parsed = await resolveParsedConfig(parseCliArgs(process.argv.slice(2)));
1924
1924
  const isBatch = parsed.batchRuns.length > 0;
1925
1925
  if (parsed.showHelp) {
@@ -17,13 +17,13 @@ import {
17
17
  runAgent,
18
18
  summarizeAgentAction,
19
19
  summarizeAgentObservation
20
- } from "../../chunk-INZBKOHY.js";
20
+ } from "../../chunk-WJESVBWN.js";
21
21
  import {
22
22
  Cause,
23
23
  Exit,
24
24
  Runtime,
25
25
  async
26
- } from "../../chunk-L6KKKM66.js";
26
+ } from "../../chunk-JT7D6M5H.js";
27
27
 
28
28
  // src/agent/cli/approvals.ts
29
29
  var dynamicImport = new Function("specifier", "return import(specifier)");
@@ -17,13 +17,13 @@ import {
17
17
  runAgent,
18
18
  summarizeAgentAction,
19
19
  summarizeAgentObservation
20
- } from "../../chunk-3R7ZYRK2.mjs";
20
+ } from "../../chunk-MQF7HZ7Y.mjs";
21
21
  import {
22
22
  Cause,
23
23
  Exit,
24
24
  Runtime,
25
25
  async
26
- } from "../../chunk-7F2R7A2V.mjs";
26
+ } from "../../chunk-4N2JEK4H.mjs";
27
27
 
28
28
  // src/agent/cli/approvals.ts
29
29
  var dynamicImport = new Function("specifier", "return import(specifier)");
@@ -73,8 +73,8 @@
73
73
 
74
74
 
75
75
 
76
- var _chunkXDINDYNAcjs = require('../chunk-XDINDYNA.cjs');
77
- require('../chunk-2P4PD6D7.cjs');
76
+ var _chunkXTMZTVITcjs = require('../chunk-XTMZTVIT.cjs');
77
+ require('../chunk-BKBFSOGT.cjs');
78
78
 
79
79
 
80
80
 
@@ -150,4 +150,4 @@ require('../chunk-2P4PD6D7.cjs');
150
150
 
151
151
 
152
152
 
153
- exports.AGENT_CONFIG_FILE_NAMES = _chunkXDINDYNAcjs.AGENT_CONFIG_FILE_NAMES; exports.NodeShell = _chunkXDINDYNAcjs.NodeShell; exports.PROJECT_LOCKFILE_PROBES = _chunkXDINDYNAcjs.PROJECT_LOCKFILE_PROBES; exports.PROJECT_PROFILE_PROBES = _chunkXDINDYNAcjs.PROJECT_PROFILE_PROBES; exports.autoApproveApprovals = _chunkXDINDYNAcjs.autoApproveApprovals; exports.canAutoRollback = _chunkXDINDYNAcjs.canAutoRollback; exports.canRequestPatchRepair = _chunkXDINDYNAcjs.canRequestPatchRepair; exports.commandForScript = _chunkXDINDYNAcjs.commandForScript; exports.decideNextAction = _chunkXDINDYNAcjs.decideNextAction; exports.defaultPermissions = _chunkXDINDYNAcjs.defaultPermissions; exports.deriveContextSearchQueries = _chunkXDINDYNAcjs.deriveContextSearchQueries; exports.describeCommandDiscovery = _chunkXDINDYNAcjs.describeCommandDiscovery; exports.describeContextDiscovery = _chunkXDINDYNAcjs.describeContextDiscovery; exports.describeLanguagePolicy = _chunkXDINDYNAcjs.describeLanguagePolicy; exports.describePatchQuality = _chunkXDINDYNAcjs.describePatchQuality; exports.describeProjectProfile = _chunkXDINDYNAcjs.describeProjectProfile; exports.describeRollbackSafety = _chunkXDINDYNAcjs.describeRollbackSafety; exports.discoverNodeWorkspaceRoot = _chunkXDINDYNAcjs.discoverNodeWorkspaceRoot; exports.discoverPackageManager = _chunkXDINDYNAcjs.discoverPackageManager; exports.discoverProjectProfile = _chunkXDINDYNAcjs.discoverProjectProfile; exports.discoverValidationCommands = _chunkXDINDYNAcjs.discoverValidationCommands; exports.emitAgentEvent = _chunkXDINDYNAcjs.emitAgentEvent; exports.emitAgentEvents = _chunkXDINDYNAcjs.emitAgentEvents; exports.errorEventFor = _chunkXDINDYNAcjs.errorEventFor; exports.extractLikelyFilePaths = _chunkXDINDYNAcjs.extractLikelyFilePaths; exports.extractPatchPaths = _chunkXDINDYNAcjs.extractPatchPaths; exports.extractUnifiedDiff = _chunkXDINDYNAcjs.extractUnifiedDiff; exports.goalForAgentPreset = _chunkXDINDYNAcjs.goalForAgentPreset; exports.inferUserLanguage = _chunkXDINDYNAcjs.inferUserLanguage; exports.initialAgentState = _chunkXDINDYNAcjs.initialAgentState; exports.invokeAction = _chunkXDINDYNAcjs.invokeAction; exports.isAgentConfigApprovalMode = _chunkXDINDYNAcjs.isAgentConfigApprovalMode; exports.isAgentConfigLLMProvider = _chunkXDINDYNAcjs.isAgentConfigLLMProvider; exports.isAgentConfigMode = _chunkXDINDYNAcjs.isAgentConfigMode; exports.isAgentPreset = _chunkXDINDYNAcjs.isAgentPreset; exports.isRedactionEnabled = _chunkXDINDYNAcjs.isRedactionEnabled; exports.isTerminal = _chunkXDINDYNAcjs.isTerminal; exports.latestUnappliedPatch = _chunkXDINDYNAcjs.latestUnappliedPatch; exports.loadNodeAgentConfig = _chunkXDINDYNAcjs.loadNodeAgentConfig; exports.makeAutoDenyApprovals = _chunkXDINDYNAcjs.makeAutoDenyApprovals; exports.makeConfiguredPermissions = _chunkXDINDYNAcjs.makeConfiguredPermissions; exports.makeFakeLLM = _chunkXDINDYNAcjs.makeFakeLLM; exports.makeGoogleGenerativeAILLM = _chunkXDINDYNAcjs.makeGoogleGenerativeAILLM; exports.makeNodeFileSystem = _chunkXDINDYNAcjs.makeNodeFileSystem; exports.makeNodePatchService = _chunkXDINDYNAcjs.makeNodePatchService; exports.makeOpenAICompatibleLLM = _chunkXDINDYNAcjs.makeOpenAICompatibleLLM; exports.nextContextDiscoveryAction = _chunkXDINDYNAcjs.nextContextDiscoveryAction; exports.nextProjectProbeAction = _chunkXDINDYNAcjs.nextProjectProbeAction; exports.nextUnrunValidationCommand = _chunkXDINDYNAcjs.nextUnrunValidationCommand; exports.nowMillis = _chunkXDINDYNAcjs.nowMillis; exports.observationEventFor = _chunkXDINDYNAcjs.observationEventFor; exports.observationStatus = _chunkXDINDYNAcjs.observationStatus; exports.parseProjectPackageJson = _chunkXDINDYNAcjs.parseProjectPackageJson; exports.patchQualitySummary = _chunkXDINDYNAcjs.patchQualitySummary; exports.patchRepairAttemptsUsed = _chunkXDINDYNAcjs.patchRepairAttemptsUsed; exports.patchValidationStatus = _chunkXDINDYNAcjs.patchValidationStatus; exports.projectProfileProbePending = _chunkXDINDYNAcjs.projectProfileProbePending; exports.redactText = _chunkXDINDYNAcjs.redactText; exports.reduceAgentState = _chunkXDINDYNAcjs.reduceAgentState; exports.responseLanguageName = _chunkXDINDYNAcjs.responseLanguageName; exports.retry = _chunkXDINDYNAcjs.retry; exports.rollbackSafetySummary = _chunkXDINDYNAcjs.rollbackSafetySummary; exports.runAgent = _chunkXDINDYNAcjs.runAgent; exports.runStatusFor = _chunkXDINDYNAcjs.runStatusFor; exports.shouldContinueRollbackStack = _chunkXDINDYNAcjs.shouldContinueRollbackStack; exports.sleep = _chunkXDINDYNAcjs.sleep; exports.spanishLike = _chunkXDINDYNAcjs.spanishLike; exports.splitCommand = _chunkXDINDYNAcjs.splitCommand; exports.summarizeAgentAction = _chunkXDINDYNAcjs.summarizeAgentAction; exports.summarizeAgentObservation = _chunkXDINDYNAcjs.summarizeAgentObservation; exports.summarizeContextDiscovery = _chunkXDINDYNAcjs.summarizeContextDiscovery; exports.timeout = _chunkXDINDYNAcjs.timeout; exports.unappliedPatchStack = _chunkXDINDYNAcjs.unappliedPatchStack; exports.workspaceValidationStatus = _chunkXDINDYNAcjs.workspaceValidationStatus;
153
+ exports.AGENT_CONFIG_FILE_NAMES = _chunkXTMZTVITcjs.AGENT_CONFIG_FILE_NAMES; exports.NodeShell = _chunkXTMZTVITcjs.NodeShell; exports.PROJECT_LOCKFILE_PROBES = _chunkXTMZTVITcjs.PROJECT_LOCKFILE_PROBES; exports.PROJECT_PROFILE_PROBES = _chunkXTMZTVITcjs.PROJECT_PROFILE_PROBES; exports.autoApproveApprovals = _chunkXTMZTVITcjs.autoApproveApprovals; exports.canAutoRollback = _chunkXTMZTVITcjs.canAutoRollback; exports.canRequestPatchRepair = _chunkXTMZTVITcjs.canRequestPatchRepair; exports.commandForScript = _chunkXTMZTVITcjs.commandForScript; exports.decideNextAction = _chunkXTMZTVITcjs.decideNextAction; exports.defaultPermissions = _chunkXTMZTVITcjs.defaultPermissions; exports.deriveContextSearchQueries = _chunkXTMZTVITcjs.deriveContextSearchQueries; exports.describeCommandDiscovery = _chunkXTMZTVITcjs.describeCommandDiscovery; exports.describeContextDiscovery = _chunkXTMZTVITcjs.describeContextDiscovery; exports.describeLanguagePolicy = _chunkXTMZTVITcjs.describeLanguagePolicy; exports.describePatchQuality = _chunkXTMZTVITcjs.describePatchQuality; exports.describeProjectProfile = _chunkXTMZTVITcjs.describeProjectProfile; exports.describeRollbackSafety = _chunkXTMZTVITcjs.describeRollbackSafety; exports.discoverNodeWorkspaceRoot = _chunkXTMZTVITcjs.discoverNodeWorkspaceRoot; exports.discoverPackageManager = _chunkXTMZTVITcjs.discoverPackageManager; exports.discoverProjectProfile = _chunkXTMZTVITcjs.discoverProjectProfile; exports.discoverValidationCommands = _chunkXTMZTVITcjs.discoverValidationCommands; exports.emitAgentEvent = _chunkXTMZTVITcjs.emitAgentEvent; exports.emitAgentEvents = _chunkXTMZTVITcjs.emitAgentEvents; exports.errorEventFor = _chunkXTMZTVITcjs.errorEventFor; exports.extractLikelyFilePaths = _chunkXTMZTVITcjs.extractLikelyFilePaths; exports.extractPatchPaths = _chunkXTMZTVITcjs.extractPatchPaths; exports.extractUnifiedDiff = _chunkXTMZTVITcjs.extractUnifiedDiff; exports.goalForAgentPreset = _chunkXTMZTVITcjs.goalForAgentPreset; exports.inferUserLanguage = _chunkXTMZTVITcjs.inferUserLanguage; exports.initialAgentState = _chunkXTMZTVITcjs.initialAgentState; exports.invokeAction = _chunkXTMZTVITcjs.invokeAction; exports.isAgentConfigApprovalMode = _chunkXTMZTVITcjs.isAgentConfigApprovalMode; exports.isAgentConfigLLMProvider = _chunkXTMZTVITcjs.isAgentConfigLLMProvider; exports.isAgentConfigMode = _chunkXTMZTVITcjs.isAgentConfigMode; exports.isAgentPreset = _chunkXTMZTVITcjs.isAgentPreset; exports.isRedactionEnabled = _chunkXTMZTVITcjs.isRedactionEnabled; exports.isTerminal = _chunkXTMZTVITcjs.isTerminal; exports.latestUnappliedPatch = _chunkXTMZTVITcjs.latestUnappliedPatch; exports.loadNodeAgentConfig = _chunkXTMZTVITcjs.loadNodeAgentConfig; exports.makeAutoDenyApprovals = _chunkXTMZTVITcjs.makeAutoDenyApprovals; exports.makeConfiguredPermissions = _chunkXTMZTVITcjs.makeConfiguredPermissions; exports.makeFakeLLM = _chunkXTMZTVITcjs.makeFakeLLM; exports.makeGoogleGenerativeAILLM = _chunkXTMZTVITcjs.makeGoogleGenerativeAILLM; exports.makeNodeFileSystem = _chunkXTMZTVITcjs.makeNodeFileSystem; exports.makeNodePatchService = _chunkXTMZTVITcjs.makeNodePatchService; exports.makeOpenAICompatibleLLM = _chunkXTMZTVITcjs.makeOpenAICompatibleLLM; exports.nextContextDiscoveryAction = _chunkXTMZTVITcjs.nextContextDiscoveryAction; exports.nextProjectProbeAction = _chunkXTMZTVITcjs.nextProjectProbeAction; exports.nextUnrunValidationCommand = _chunkXTMZTVITcjs.nextUnrunValidationCommand; exports.nowMillis = _chunkXTMZTVITcjs.nowMillis; exports.observationEventFor = _chunkXTMZTVITcjs.observationEventFor; exports.observationStatus = _chunkXTMZTVITcjs.observationStatus; exports.parseProjectPackageJson = _chunkXTMZTVITcjs.parseProjectPackageJson; exports.patchQualitySummary = _chunkXTMZTVITcjs.patchQualitySummary; exports.patchRepairAttemptsUsed = _chunkXTMZTVITcjs.patchRepairAttemptsUsed; exports.patchValidationStatus = _chunkXTMZTVITcjs.patchValidationStatus; exports.projectProfileProbePending = _chunkXTMZTVITcjs.projectProfileProbePending; exports.redactText = _chunkXTMZTVITcjs.redactText; exports.reduceAgentState = _chunkXTMZTVITcjs.reduceAgentState; exports.responseLanguageName = _chunkXTMZTVITcjs.responseLanguageName; exports.retry = _chunkXTMZTVITcjs.retry; exports.rollbackSafetySummary = _chunkXTMZTVITcjs.rollbackSafetySummary; exports.runAgent = _chunkXTMZTVITcjs.runAgent; exports.runStatusFor = _chunkXTMZTVITcjs.runStatusFor; exports.shouldContinueRollbackStack = _chunkXTMZTVITcjs.shouldContinueRollbackStack; exports.sleep = _chunkXTMZTVITcjs.sleep; exports.spanishLike = _chunkXTMZTVITcjs.spanishLike; exports.splitCommand = _chunkXTMZTVITcjs.splitCommand; exports.summarizeAgentAction = _chunkXTMZTVITcjs.summarizeAgentAction; exports.summarizeAgentObservation = _chunkXTMZTVITcjs.summarizeAgentObservation; exports.summarizeContextDiscovery = _chunkXTMZTVITcjs.summarizeContextDiscovery; exports.timeout = _chunkXTMZTVITcjs.timeout; exports.unappliedPatchStack = _chunkXTMZTVITcjs.unappliedPatchStack; exports.workspaceValidationStatus = _chunkXTMZTVITcjs.workspaceValidationStatus;