brass-runtime 1.13.8 → 1.15.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 (49) hide show
  1. package/README.md +6 -3
  2. package/dist/agent/cli/main.cjs +44 -43
  3. package/dist/agent/cli/main.js +5 -4
  4. package/dist/agent/cli/main.mjs +5 -4
  5. package/dist/agent/index.cjs +4 -3
  6. package/dist/agent/index.d.ts +1 -1
  7. package/dist/agent/index.js +3 -2
  8. package/dist/agent/index.mjs +3 -2
  9. package/dist/{chunk-3R7ZYRK2.mjs → chunk-3QMOKAS5.js} +9 -7
  10. package/dist/{chunk-ATHSSDUF.js → chunk-4NHES7VK.mjs} +113 -31
  11. package/dist/chunk-AR22SXML.js +1043 -0
  12. package/dist/chunk-BDF4AMWX.mjs +3773 -0
  13. package/dist/chunk-BDYEENHT.js +224 -0
  14. package/dist/chunk-BMH5AV44.js +3773 -0
  15. package/dist/chunk-ELOOF35R.mjs +131 -0
  16. package/dist/chunk-JFPU5GQI.mjs +1043 -0
  17. package/dist/{chunk-INZBKOHY.js → chunk-K6M7MDZ4.mjs} +9 -7
  18. package/dist/chunk-MS34J5LY.cjs +224 -0
  19. package/dist/{chunk-XNOTJSMZ.mjs → chunk-PPUXIH5R.js} +113 -31
  20. package/dist/chunk-R3R2FVLG.cjs +131 -0
  21. package/dist/{chunk-ZTDK2DLG.cjs → chunk-STVLQ3XD.cjs} +169 -87
  22. package/dist/chunk-TGIFUAK4.cjs +3773 -0
  23. package/dist/chunk-TO7IKXYT.js +131 -0
  24. package/dist/chunk-UMAZLXAB.mjs +224 -0
  25. package/dist/{chunk-XDINDYNA.cjs → chunk-VEZNF5GZ.cjs} +136 -134
  26. package/dist/chunk-XPZNXSVN.cjs +1043 -0
  27. package/dist/core/index.cjs +216 -0
  28. package/dist/core/index.d.ts +673 -0
  29. package/dist/core/index.js +216 -0
  30. package/dist/core/index.mjs +216 -0
  31. package/dist/{effect-ISvXPLgc.d.ts → effect-CMOQKX8y.d.ts} +202 -31
  32. package/dist/http/index.cjs +3177 -187
  33. package/dist/http/index.d.ts +1692 -9
  34. package/dist/http/index.js +3164 -174
  35. package/dist/http/index.mjs +3164 -174
  36. package/dist/index.cjs +936 -219
  37. package/dist/index.d.ts +313 -36
  38. package/dist/index.js +830 -113
  39. package/dist/index.mjs +830 -113
  40. package/dist/{stream-BvukHxCv.d.ts → stream-FQm9h4Mg.d.ts} +12 -4
  41. package/dist/tracing-DNT9jEbr.d.ts +106 -0
  42. package/package.json +11 -3
  43. package/wasm/pkg/brass_runtime_wasm_engine.d.ts +95 -16
  44. package/wasm/pkg/brass_runtime_wasm_engine.js +715 -15
  45. package/wasm/pkg/brass_runtime_wasm_engine_bg.wasm +0 -0
  46. package/wasm/pkg/brass_runtime_wasm_engine_bg.wasm.d.ts +78 -7
  47. package/dist/chunk-2P4PD6D7.cjs +0 -2557
  48. package/dist/chunk-7F2R7A2V.mjs +0 -2557
  49. package/dist/chunk-L6KKKM66.js +0 -2557
package/README.md CHANGED
@@ -30,6 +30,9 @@ If you like ZIO’s separation between `zio-core`, `zio-streams`, and `zio-http`
30
30
  - Structured `Scope`s for resource safety
31
31
  - ZStream-style streams with backpressure
32
32
 
33
+ For new code that only needs the stable runtime surface, prefer
34
+ `brass-runtime/core`. The package root remains broad for compatibility.
35
+
33
36
  ---
34
37
 
35
38
  ## Install
@@ -90,16 +93,16 @@ Example:
90
93
 
91
94
  ```ts
92
95
  import { Runtime, toPromise } from "brass-runtime";
93
- import { httpClientStream } from "brass-runtime/http";
96
+ import { httpClient } from "brass-runtime/http";
94
97
 
95
98
  type Post = { id: number; title: string; body: string };
96
99
 
97
100
  const runtime = new Runtime({ env: {} });
98
101
 
99
- const client = httpClientStream({ baseUrl: "https://jsonplaceholder.typicode.com" });
102
+ const client = httpClient({ baseUrl: "https://jsonplaceholder.typicode.com" });
100
103
 
101
104
  const res = await toPromise(client.getJson<Post>("/posts/1"), runtime.env);
102
- console.log(res.status, res.value.title);
105
+ console.log(res.status, res.body.title);
103
106
  ```
104
107
 
105
108
  ---
@@ -17,13 +17,14 @@
17
17
 
18
18
 
19
19
 
20
- var _chunkXDINDYNAcjs = require('../../chunk-XDINDYNA.cjs');
20
+ var _chunkVEZNF5GZcjs = require('../../chunk-VEZNF5GZ.cjs');
21
+ require('../../chunk-R3R2FVLG.cjs');
21
22
 
22
23
 
23
24
 
24
25
 
25
26
 
26
- var _chunk2P4PD6D7cjs = require('../../chunk-2P4PD6D7.cjs');
27
+ var _chunkTGIFUAK4cjs = require('../../chunk-TGIFUAK4.cjs');
27
28
 
28
29
  // src/agent/cli/approvals.ts
29
30
  var dynamicImport = new Function("specifier", "return import(specifier)");
@@ -39,7 +40,7 @@ var answerToResponse = (answer, request) => {
39
40
  return { type: "rejected", reason: `Unrecognized approval answer: ${answer}` };
40
41
  };
41
42
  var makeCliApprovalService = (options = {}) => ({
42
- request: (request) => _chunk2P4PD6D7cjs.async.call(void 0, (_env, cb) => {
43
+ request: (request) => _chunkTGIFUAK4cjs.asyncEffect.call(void 0, (_env, cb) => {
43
44
  let closed = false;
44
45
  let rl;
45
46
  dynamicImport("node:readline/promises").then(({ createInterface }) => {
@@ -51,7 +52,7 @@ var makeCliApprovalService = (options = {}) => ({
51
52
  _optionalChain([output, 'optionalAccess', _ => _.write, 'optionalCall', _2 => _2(`
52
53
  Approval required (${request.risk})
53
54
  `)]);
54
- _optionalChain([output, 'optionalAccess', _3 => _3.write, 'optionalCall', _4 => _4(`Action: ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, request.action)}
55
+ _optionalChain([output, 'optionalAccess', _3 => _3.write, 'optionalCall', _4 => _4(`Action: ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, request.action)}
55
56
  `)]);
56
57
  _optionalChain([output, 'optionalAccess', _5 => _5.write, 'optionalCall', _6 => _6(`Reason: ${request.reason}
57
58
  `)]);
@@ -60,14 +61,14 @@ Approval required (${request.risk})
60
61
  if (answer === void 0 || closed) return;
61
62
  closed = true;
62
63
  _optionalChain([rl, 'optionalAccess', _7 => _7.close, 'optionalCall', _8 => _8()]);
63
- cb(_chunk2P4PD6D7cjs.Exit.succeed(answerToResponse(answer, request)));
64
+ cb(_chunkTGIFUAK4cjs.Exit.succeed(answerToResponse(answer, request)));
64
65
  }).catch((cause) => {
65
66
  if (closed) return;
66
67
  closed = true;
67
68
  _optionalChain([rl, 'optionalAccess', _9 => _9.close, 'optionalCall', _10 => _10()]);
68
69
  cb(
69
- _chunk2P4PD6D7cjs.Exit.failCause(
70
- _chunk2P4PD6D7cjs.Cause.fail({
70
+ _chunkTGIFUAK4cjs.Exit.failCause(
71
+ _chunkTGIFUAK4cjs.Cause.fail({
71
72
  _tag: "AgentLoopError",
72
73
  message: `Approval prompt failed: ${String(cause)}`
73
74
  })
@@ -290,7 +291,7 @@ var newestVsix = (extensionDir) => {
290
291
  var push = (checks, check) => {
291
292
  checks.push(check);
292
293
  };
293
- var runAgentDoctor = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
294
+ var runAgentDoctor = async (options) => {
294
295
  const cwd = _path.resolve.call(void 0, options.cwd);
295
296
  const checks = [];
296
297
  const repoRoot = _nullishCoalesce(findPackageRoot(cwd, "brass-runtime"), () => ( findPackageRoot(process.cwd(), "brass-runtime")));
@@ -877,7 +878,7 @@ var nextStepsForProfile = (profile) => {
877
878
  }
878
879
  return steps;
879
880
  };
880
- var writeInitFile = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
881
+ var writeInitFile = async (options) => {
881
882
  const path = _path.resolve.call(void 0, options.cwd, options.relativePath);
882
883
  const exists = _fs.existsSync.call(void 0, path);
883
884
  const status = exists ? options.force ? "overwritten" : "skipped" : "created";
@@ -892,7 +893,7 @@ var writeInitFile = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
892
893
  bytes: Buffer.byteLength(options.content, "utf8")
893
894
  };
894
895
  };
895
- var initializeAgentWorkspace = _chunk2P4PD6D7cjs.async.call(void 0, options) => {
896
+ var initializeAgentWorkspace = async (options) => {
896
897
  const cwd = _path.resolve.call(void 0, options.cwd);
897
898
  const profile = _nullishCoalesce(options.profile, () => ( "default"));
898
899
  const force = _nullishCoalesce(options.force, () => ( false));
@@ -964,7 +965,7 @@ var printAgentInitResult = (result) => {
964
965
 
965
966
  // src/agent/cli/main.ts
966
967
  var dynamicImport2 = new Function("specifier", "return import(specifier)");
967
- var readPatchFile = _chunk2P4PD6D7cjs.async.call(void 0, cwd, patchFile) => {
968
+ var readPatchFile = async (cwd, patchFile) => {
968
969
  const nodePath = await dynamicImport2("node:path");
969
970
  const nodeFs = await dynamicImport2("node:fs/promises");
970
971
  return nodeFs.readFile(nodePath.resolve(cwd, patchFile), "utf8");
@@ -1098,7 +1099,7 @@ var parseCliArgs = (argv) => {
1098
1099
  }
1099
1100
  if (arg === "--preset" || arg.startsWith("--preset=")) {
1100
1101
  const [value, nextIndex] = readFlagValue(argv, index, "--preset");
1101
- if (!_chunkXDINDYNAcjs.isAgentPreset.call(void 0, value)) {
1102
+ if (!_chunkVEZNF5GZcjs.isAgentPreset.call(void 0, value)) {
1102
1103
  throw new Error("--preset requires one of: fix-tests, inspect, typecheck, lint");
1103
1104
  }
1104
1105
  preset = value;
@@ -1274,7 +1275,7 @@ var parseBatchGoal = (value, path) => {
1274
1275
  if (cwd !== void 0 && typeof cwd !== "string") throw new Error(`${path}.cwd must be a string.`);
1275
1276
  if (patchFile !== void 0 && typeof patchFile !== "string") throw new Error(`${path}.patchFile must be a string.`);
1276
1277
  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))) {
1278
+ if (preset !== void 0 && (typeof preset !== "string" || !_chunkVEZNF5GZcjs.isAgentPreset.call(void 0, preset))) {
1278
1279
  throw new Error(`${path}.preset must be one of: fix-tests, inspect, typecheck, lint.`);
1279
1280
  }
1280
1281
  if (mode !== void 0 && (typeof mode !== "string" || !isAgentMode(mode))) {
@@ -1301,7 +1302,7 @@ var parseBatchGoalsJson = (value) => {
1301
1302
  if (!rawGoals) throw new Error("Batch file must be a JSON array or an object with a goals array.");
1302
1303
  return rawGoals.map((goal, index) => parseBatchGoal(goal, `goals[${index}]`));
1303
1304
  };
1304
- var readBatchFile = _chunk2P4PD6D7cjs.async.call(void 0, cwd, batchFile) => {
1305
+ var readBatchFile = async (cwd, batchFile) => {
1305
1306
  const nodePath = await dynamicImport2("node:path");
1306
1307
  const nodeFs = await dynamicImport2("node:fs/promises");
1307
1308
  const path = nodePath.isAbsolute(batchFile) ? batchFile : nodePath.resolve(cwd, batchFile);
@@ -1318,7 +1319,7 @@ var readBatchFile = _chunk2P4PD6D7cjs.async.call(void 0, cwd, batchFile) => {
1318
1319
  var resolveBatchGoalText = (item, fallbackPatchFile) => {
1319
1320
  if (typeof item === "string") return item;
1320
1321
  if (item.goal) return item.goal;
1321
- if (item.preset) return _chunkXDINDYNAcjs.goalForAgentPreset.call(void 0, item.preset);
1322
+ if (item.preset) return _chunkVEZNF5GZcjs.goalForAgentPreset.call(void 0, item.preset);
1322
1323
  if (_nullishCoalesce(item.patchFile, () => ( fallbackPatchFile))) return "apply supplied patch";
1323
1324
  return "";
1324
1325
  };
@@ -1344,8 +1345,8 @@ var resolveBatchRuns = (items, parsed, config) => items.map((item, index) => {
1344
1345
  ...saveRunDir ? { saveRunDir } : {}
1345
1346
  };
1346
1347
  });
1347
- var resolveParsedConfig = _chunk2P4PD6D7cjs.async.call(void 0, parsed) => {
1348
- const workspaceDiscovery = _chunkXDINDYNAcjs.discoverNodeWorkspaceRoot.call(void 0, parsed.cwd, {
1348
+ var resolveParsedConfig = async (parsed) => {
1349
+ const workspaceDiscovery = _chunkVEZNF5GZcjs.discoverNodeWorkspaceRoot.call(void 0, parsed.cwd, {
1349
1350
  enabled: parsed.discoverWorkspace
1350
1351
  });
1351
1352
  const cwdResolved = workspaceDiscovery.cwd;
@@ -1353,7 +1354,7 @@ var resolveParsedConfig = _chunk2P4PD6D7cjs.async.call(void 0, parsed) => {
1353
1354
  ...parsed,
1354
1355
  cwd: cwdResolved
1355
1356
  };
1356
- const loaded = await _chunkXDINDYNAcjs.loadNodeAgentConfig.call(void 0, {
1357
+ const loaded = await _chunkVEZNF5GZcjs.loadNodeAgentConfig.call(void 0, {
1357
1358
  cwd: cwdResolved,
1358
1359
  configPath: parsed.configPath,
1359
1360
  noConfig: parsed.noConfig
@@ -1369,7 +1370,7 @@ var resolveParsedConfig = _chunk2P4PD6D7cjs.async.call(void 0, parsed) => {
1369
1370
  const batchRuns = resolveBatchRuns(batchItems, parsedAtWorkspace, loaded.config);
1370
1371
  return {
1371
1372
  ...parsedAtWorkspace,
1372
- goalText: parsed.goalText || (parsed.preset ? _chunkXDINDYNAcjs.goalForAgentPreset.call(void 0, parsed.preset) : parsed.patchFile ? "apply supplied patch" : parsed.goalText),
1373
+ goalText: parsed.goalText || (parsed.preset ? _chunkVEZNF5GZcjs.goalForAgentPreset.call(void 0, parsed.preset) : parsed.patchFile ? "apply supplied patch" : parsed.goalText),
1373
1374
  mode: parsed.modeSpecified ? parsed.mode : parsed.preset === "inspect" ? "read-only" : _nullishCoalesce(loaded.config.mode, () => ( parsed.mode)),
1374
1375
  approval: parsed.approvalSpecified ? parsed.approval : _nullishCoalesce(loaded.config.approval, () => ( parsed.approval)),
1375
1376
  config: loaded.config,
@@ -1493,7 +1494,7 @@ var envByName = (name) => name ? process.env[name] : void 0;
1493
1494
  var makeGoogleLLMFromEnv = (config) => {
1494
1495
  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
1496
  if (!apiKey) return void 0;
1496
- return _chunkXDINDYNAcjs.makeGoogleGenerativeAILLM.call(void 0, {
1497
+ return _chunkVEZNF5GZcjs.makeGoogleGenerativeAILLM.call(void 0, {
1497
1498
  apiKey,
1498
1499
  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
1500
  apiVersion: _nullishCoalesce(_nullishCoalesce(process.env.BRASS_GOOGLE_API_VERSION, () => ( _optionalChain([config, 'optionalAccess', _41 => _41.apiVersion]))), () => ( "v1beta")),
@@ -1511,12 +1512,12 @@ var makeOpenAICompatibleLLMFromEnv = (config) => {
1511
1512
  const apiKey = _nullishCoalesce(envByName(_optionalChain([config, 'optionalAccess', _50 => _50.apiKeyEnv])), () => ( process.env.BRASS_LLM_API_KEY));
1512
1513
  const model = _nullishCoalesce(_nullishCoalesce(process.env.BRASS_LLM_MODEL, () => ( _optionalChain([config, 'optionalAccess', _51 => _51.model]))), () => ( "gpt-4.1"));
1513
1514
  if (!endpoint || !apiKey) return void 0;
1514
- return _chunkXDINDYNAcjs.makeOpenAICompatibleLLM.call(void 0, { endpoint, apiKey, model });
1515
+ return _chunkVEZNF5GZcjs.makeOpenAICompatibleLLM.call(void 0, { endpoint, apiKey, model });
1515
1516
  };
1516
1517
  var makeLLMFromEnv = (config) => {
1517
1518
  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
1519
  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 });
1520
+ if (provider === "fake") return _chunkVEZNF5GZcjs.makeFakeLLM.call(void 0, { content: fakeResponse });
1520
1521
  if (provider === "google" || provider === "gemini") {
1521
1522
  const google = makeGoogleLLMFromEnv(config);
1522
1523
  if (!google) {
@@ -1538,7 +1539,7 @@ var makeLLMFromEnv = (config) => {
1538
1539
  if (provider) {
1539
1540
  throw new Error(`Unsupported LLM provider: ${provider}`);
1540
1541
  }
1541
- return _nullishCoalesce(_nullishCoalesce(makeGoogleLLMFromEnv(config), () => ( makeOpenAICompatibleLLMFromEnv(config))), () => ( _chunkXDINDYNAcjs.makeFakeLLM.call(void 0, { content: fakeResponse })));
1542
+ return _nullishCoalesce(_nullishCoalesce(makeGoogleLLMFromEnv(config), () => ( makeOpenAICompatibleLLMFromEnv(config))), () => ( _chunkVEZNF5GZcjs.makeFakeLLM.call(void 0, { content: fakeResponse })));
1542
1543
  };
1543
1544
  var parseApprovalModeFromEnv = () => {
1544
1545
  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 +1562,9 @@ var makeApprovalServiceFromCli = (parsed) => {
1561
1562
  const mode = resolveApprovalMode(parsed);
1562
1563
  switch (mode) {
1563
1564
  case "approve":
1564
- return _chunkXDINDYNAcjs.autoApproveApprovals;
1565
+ return _chunkVEZNF5GZcjs.autoApproveApprovals;
1565
1566
  case "deny":
1566
- return _chunkXDINDYNAcjs.makeAutoDenyApprovals.call(void 0, "Approval rejected because the CLI is running without interactive input. Use --yes to auto-approve.");
1567
+ return _chunkVEZNF5GZcjs.makeAutoDenyApprovals.call(void 0, "Approval rejected because the CLI is running without interactive input. Use --yes to auto-approve.");
1567
1568
  case "interactive":
1568
1569
  return makeCliApprovalService();
1569
1570
  }
@@ -1695,32 +1696,32 @@ var createHumanEventSink = (configPath) => ({
1695
1696
  console.log("");
1696
1697
  break;
1697
1698
  case "agent.action.started":
1698
- console.log(`\u2192 ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)}`);
1699
+ console.log(`\u2192 ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)}`);
1699
1700
  break;
1700
1701
  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)}`);
1702
+ const status = _chunkVEZNF5GZcjs.observationStatus.call(void 0, event.observation);
1703
+ console.log(`${statusIcon2(status)} ${_chunkVEZNF5GZcjs.summarizeAgentObservation.call(void 0, event.observation)} ${formatDuration(event.durationMs)}`);
1703
1704
  break;
1704
1705
  }
1705
1706
  case "agent.action.failed":
1706
1707
  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)}`);
1708
+ console.log(`\u2717 ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)} failed with ${event.error._tag} ${formatDuration(event.durationMs)}`);
1708
1709
  }
1709
1710
  break;
1710
1711
  case "agent.tool.timeout":
1711
- console.log(`! ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)} timed out after ${event.timeoutMs}ms`);
1712
+ console.log(`! ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)} timed out after ${event.timeoutMs}ms`);
1712
1713
  break;
1713
1714
  case "agent.permission.denied":
1714
- console.log(`\u2717 ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)} denied: ${event.reason}`);
1715
+ console.log(`\u2717 ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)} denied: ${event.reason}`);
1715
1716
  break;
1716
1717
  case "agent.approval.requested":
1717
- console.log(`? approval required for ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)} (${event.risk})`);
1718
+ console.log(`? approval required for ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)} (${event.risk})`);
1718
1719
  break;
1719
1720
  case "agent.approval.resolved":
1720
1721
  if (event.approved) {
1721
- console.log(`\u2713 approval granted for ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)}`);
1722
+ console.log(`\u2713 approval granted for ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)}`);
1722
1723
  } else {
1723
- console.log(`\u2717 approval rejected for ${_chunkXDINDYNAcjs.summarizeAgentAction.call(void 0, event.action)}${event.reason ? `: ${event.reason}` : ""}`);
1724
+ console.log(`\u2717 approval rejected for ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)}${event.reason ? `: ${event.reason}` : ""}`);
1724
1725
  }
1725
1726
  break;
1726
1727
  case "agent.patch.applied":
@@ -1748,7 +1749,7 @@ var createProtocolEventSink = (options = {}) => ({
1748
1749
  });
1749
1750
  var safeFilePart = (value) => value.toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "run";
1750
1751
  var markdownEscape = (value) => value.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
1751
- var writeRunArtifacts = _chunk2P4PD6D7cjs.async.call(void 0, state, outputDir, options) => {
1752
+ var writeRunArtifacts = async (state, outputDir, options) => {
1752
1753
  const nodePath = await dynamicImport2("node:path");
1753
1754
  const nodeFs = await dynamicImport2("node:fs/promises");
1754
1755
  const dir = nodePath.isAbsolute(outputDir) ? outputDir : nodePath.resolve(state.goal.cwd, outputDir);
@@ -1825,13 +1826,13 @@ var printHumanFinalSummary = (state) => {
1825
1826
  };
1826
1827
  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
1828
  var makeAgentEnv = (parsed, events) => {
1828
- const shell = _chunkXDINDYNAcjs.NodeShell;
1829
+ const shell = _chunkVEZNF5GZcjs.NodeShell;
1829
1830
  return {
1830
1831
  shell,
1831
- fs: _chunkXDINDYNAcjs.makeNodeFileSystem.call(void 0, shell),
1832
- patch: _chunkXDINDYNAcjs.makeNodePatchService.call(void 0, shell),
1832
+ fs: _chunkVEZNF5GZcjs.makeNodeFileSystem.call(void 0, shell),
1833
+ patch: _chunkVEZNF5GZcjs.makeNodePatchService.call(void 0, shell),
1833
1834
  llm: makeLLMFromEnv(parsed.config.llm),
1834
- permissions: _chunkXDINDYNAcjs.makeConfiguredPermissions.call(void 0, parsed.config.permissions),
1835
+ permissions: _chunkVEZNF5GZcjs.makeConfiguredPermissions.call(void 0, parsed.config.permissions),
1835
1836
  approvals: makeApprovalServiceFromCli(parsed),
1836
1837
  ...events ? { events } : {},
1837
1838
  ...parsed.config.tools ? { toolPolicies: parsed.config.tools } : {}
@@ -1846,12 +1847,12 @@ var singleRunFromParsed = (parsed) => ({
1846
1847
  ...parsed.patchFile ? { patchFile: parsed.patchFile } : {},
1847
1848
  ...parsed.saveRunDir ? { saveRunDir: parsed.saveRunDir } : {}
1848
1849
  });
1849
- var runCliAgent = _chunk2P4PD6D7cjs.async.call(void 0, parsed, run, compactOptions, events) => {
1850
+ var runCliAgent = async (parsed, run, compactOptions, events) => {
1850
1851
  const env = makeAgentEnv(parsed, events);
1851
- const runtime = new (0, _chunk2P4PD6D7cjs.Runtime)({ env });
1852
+ const runtime = new (0, _chunkTGIFUAK4cjs.Runtime)({ env });
1852
1853
  const initialPatch = run.patchFile ? await readPatchFile(run.cwd, run.patchFile) : void 0;
1853
1854
  const state = await runtime.toPromise(
1854
- _chunkXDINDYNAcjs.runAgent.call(void 0, runtime, {
1855
+ _chunkVEZNF5GZcjs.runAgent.call(void 0, runtime, {
1855
1856
  id: `agent-${Date.now()}-${run.index + 1}`,
1856
1857
  cwd: run.cwd,
1857
1858
  text: run.goalText,
@@ -1919,7 +1920,7 @@ var printWorkspaceWhere = (parsed) => {
1919
1920
  if (result.configPath) console.log(`config: ${result.configPath}`);
1920
1921
  if (result.envFiles.length > 0) console.log(`env: ${result.envFiles.join(", ")}`);
1921
1922
  };
1922
- var main = _chunk2P4PD6D7cjs.async.call(void 0, ) => {
1923
+ var main = async () => {
1923
1924
  const parsed = await resolveParsedConfig(parseCliArgs(process.argv.slice(2)));
1924
1925
  const isBatch = parsed.batchRuns.length > 0;
1925
1926
  if (parsed.showHelp) {
@@ -17,13 +17,14 @@ import {
17
17
  runAgent,
18
18
  summarizeAgentAction,
19
19
  summarizeAgentObservation
20
- } from "../../chunk-INZBKOHY.js";
20
+ } from "../../chunk-3QMOKAS5.js";
21
+ import "../../chunk-TO7IKXYT.js";
21
22
  import {
22
23
  Cause,
23
24
  Exit,
24
25
  Runtime,
25
- async
26
- } from "../../chunk-L6KKKM66.js";
26
+ asyncEffect
27
+ } from "../../chunk-BMH5AV44.js";
27
28
 
28
29
  // src/agent/cli/approvals.ts
29
30
  var dynamicImport = new Function("specifier", "return import(specifier)");
@@ -39,7 +40,7 @@ var answerToResponse = (answer, request) => {
39
40
  return { type: "rejected", reason: `Unrecognized approval answer: ${answer}` };
40
41
  };
41
42
  var makeCliApprovalService = (options = {}) => ({
42
- request: (request) => async((_env, cb) => {
43
+ request: (request) => asyncEffect((_env, cb) => {
43
44
  let closed = false;
44
45
  let rl;
45
46
  dynamicImport("node:readline/promises").then(({ createInterface }) => {
@@ -17,13 +17,14 @@ import {
17
17
  runAgent,
18
18
  summarizeAgentAction,
19
19
  summarizeAgentObservation
20
- } from "../../chunk-3R7ZYRK2.mjs";
20
+ } from "../../chunk-K6M7MDZ4.mjs";
21
+ import "../../chunk-ELOOF35R.mjs";
21
22
  import {
22
23
  Cause,
23
24
  Exit,
24
25
  Runtime,
25
- async
26
- } from "../../chunk-7F2R7A2V.mjs";
26
+ asyncEffect
27
+ } from "../../chunk-BDF4AMWX.mjs";
27
28
 
28
29
  // src/agent/cli/approvals.ts
29
30
  var dynamicImport = new Function("specifier", "return import(specifier)");
@@ -39,7 +40,7 @@ var answerToResponse = (answer, request) => {
39
40
  return { type: "rejected", reason: `Unrecognized approval answer: ${answer}` };
40
41
  };
41
42
  var makeCliApprovalService = (options = {}) => ({
42
- request: (request) => async((_env, cb) => {
43
+ request: (request) => asyncEffect((_env, cb) => {
43
44
  let closed = false;
44
45
  let rl;
45
46
  dynamicImport("node:readline/promises").then(({ createInterface }) => {
@@ -73,8 +73,9 @@
73
73
 
74
74
 
75
75
 
76
- var _chunkXDINDYNAcjs = require('../chunk-XDINDYNA.cjs');
77
- require('../chunk-2P4PD6D7.cjs');
76
+ var _chunkVEZNF5GZcjs = require('../chunk-VEZNF5GZ.cjs');
77
+ require('../chunk-R3R2FVLG.cjs');
78
+ require('../chunk-TGIFUAK4.cjs');
78
79
 
79
80
 
80
81
 
@@ -150,4 +151,4 @@ require('../chunk-2P4PD6D7.cjs');
150
151
 
151
152
 
152
153
 
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;
154
+ exports.AGENT_CONFIG_FILE_NAMES = _chunkVEZNF5GZcjs.AGENT_CONFIG_FILE_NAMES; exports.NodeShell = _chunkVEZNF5GZcjs.NodeShell; exports.PROJECT_LOCKFILE_PROBES = _chunkVEZNF5GZcjs.PROJECT_LOCKFILE_PROBES; exports.PROJECT_PROFILE_PROBES = _chunkVEZNF5GZcjs.PROJECT_PROFILE_PROBES; exports.autoApproveApprovals = _chunkVEZNF5GZcjs.autoApproveApprovals; exports.canAutoRollback = _chunkVEZNF5GZcjs.canAutoRollback; exports.canRequestPatchRepair = _chunkVEZNF5GZcjs.canRequestPatchRepair; exports.commandForScript = _chunkVEZNF5GZcjs.commandForScript; exports.decideNextAction = _chunkVEZNF5GZcjs.decideNextAction; exports.defaultPermissions = _chunkVEZNF5GZcjs.defaultPermissions; exports.deriveContextSearchQueries = _chunkVEZNF5GZcjs.deriveContextSearchQueries; exports.describeCommandDiscovery = _chunkVEZNF5GZcjs.describeCommandDiscovery; exports.describeContextDiscovery = _chunkVEZNF5GZcjs.describeContextDiscovery; exports.describeLanguagePolicy = _chunkVEZNF5GZcjs.describeLanguagePolicy; exports.describePatchQuality = _chunkVEZNF5GZcjs.describePatchQuality; exports.describeProjectProfile = _chunkVEZNF5GZcjs.describeProjectProfile; exports.describeRollbackSafety = _chunkVEZNF5GZcjs.describeRollbackSafety; exports.discoverNodeWorkspaceRoot = _chunkVEZNF5GZcjs.discoverNodeWorkspaceRoot; exports.discoverPackageManager = _chunkVEZNF5GZcjs.discoverPackageManager; exports.discoverProjectProfile = _chunkVEZNF5GZcjs.discoverProjectProfile; exports.discoverValidationCommands = _chunkVEZNF5GZcjs.discoverValidationCommands; exports.emitAgentEvent = _chunkVEZNF5GZcjs.emitAgentEvent; exports.emitAgentEvents = _chunkVEZNF5GZcjs.emitAgentEvents; exports.errorEventFor = _chunkVEZNF5GZcjs.errorEventFor; exports.extractLikelyFilePaths = _chunkVEZNF5GZcjs.extractLikelyFilePaths; exports.extractPatchPaths = _chunkVEZNF5GZcjs.extractPatchPaths; exports.extractUnifiedDiff = _chunkVEZNF5GZcjs.extractUnifiedDiff; exports.goalForAgentPreset = _chunkVEZNF5GZcjs.goalForAgentPreset; exports.inferUserLanguage = _chunkVEZNF5GZcjs.inferUserLanguage; exports.initialAgentState = _chunkVEZNF5GZcjs.initialAgentState; exports.invokeAction = _chunkVEZNF5GZcjs.invokeAction; exports.isAgentConfigApprovalMode = _chunkVEZNF5GZcjs.isAgentConfigApprovalMode; exports.isAgentConfigLLMProvider = _chunkVEZNF5GZcjs.isAgentConfigLLMProvider; exports.isAgentConfigMode = _chunkVEZNF5GZcjs.isAgentConfigMode; exports.isAgentPreset = _chunkVEZNF5GZcjs.isAgentPreset; exports.isRedactionEnabled = _chunkVEZNF5GZcjs.isRedactionEnabled; exports.isTerminal = _chunkVEZNF5GZcjs.isTerminal; exports.latestUnappliedPatch = _chunkVEZNF5GZcjs.latestUnappliedPatch; exports.loadNodeAgentConfig = _chunkVEZNF5GZcjs.loadNodeAgentConfig; exports.makeAutoDenyApprovals = _chunkVEZNF5GZcjs.makeAutoDenyApprovals; exports.makeConfiguredPermissions = _chunkVEZNF5GZcjs.makeConfiguredPermissions; exports.makeFakeLLM = _chunkVEZNF5GZcjs.makeFakeLLM; exports.makeGoogleGenerativeAILLM = _chunkVEZNF5GZcjs.makeGoogleGenerativeAILLM; exports.makeNodeFileSystem = _chunkVEZNF5GZcjs.makeNodeFileSystem; exports.makeNodePatchService = _chunkVEZNF5GZcjs.makeNodePatchService; exports.makeOpenAICompatibleLLM = _chunkVEZNF5GZcjs.makeOpenAICompatibleLLM; exports.nextContextDiscoveryAction = _chunkVEZNF5GZcjs.nextContextDiscoveryAction; exports.nextProjectProbeAction = _chunkVEZNF5GZcjs.nextProjectProbeAction; exports.nextUnrunValidationCommand = _chunkVEZNF5GZcjs.nextUnrunValidationCommand; exports.nowMillis = _chunkVEZNF5GZcjs.nowMillis; exports.observationEventFor = _chunkVEZNF5GZcjs.observationEventFor; exports.observationStatus = _chunkVEZNF5GZcjs.observationStatus; exports.parseProjectPackageJson = _chunkVEZNF5GZcjs.parseProjectPackageJson; exports.patchQualitySummary = _chunkVEZNF5GZcjs.patchQualitySummary; exports.patchRepairAttemptsUsed = _chunkVEZNF5GZcjs.patchRepairAttemptsUsed; exports.patchValidationStatus = _chunkVEZNF5GZcjs.patchValidationStatus; exports.projectProfileProbePending = _chunkVEZNF5GZcjs.projectProfileProbePending; exports.redactText = _chunkVEZNF5GZcjs.redactText; exports.reduceAgentState = _chunkVEZNF5GZcjs.reduceAgentState; exports.responseLanguageName = _chunkVEZNF5GZcjs.responseLanguageName; exports.retry = _chunkVEZNF5GZcjs.retry; exports.rollbackSafetySummary = _chunkVEZNF5GZcjs.rollbackSafetySummary; exports.runAgent = _chunkVEZNF5GZcjs.runAgent; exports.runStatusFor = _chunkVEZNF5GZcjs.runStatusFor; exports.shouldContinueRollbackStack = _chunkVEZNF5GZcjs.shouldContinueRollbackStack; exports.sleep = _chunkVEZNF5GZcjs.sleep; exports.spanishLike = _chunkVEZNF5GZcjs.spanishLike; exports.splitCommand = _chunkVEZNF5GZcjs.splitCommand; exports.summarizeAgentAction = _chunkVEZNF5GZcjs.summarizeAgentAction; exports.summarizeAgentObservation = _chunkVEZNF5GZcjs.summarizeAgentObservation; exports.summarizeContextDiscovery = _chunkVEZNF5GZcjs.summarizeContextDiscovery; exports.timeout = _chunkVEZNF5GZcjs.timeout; exports.unappliedPatchStack = _chunkVEZNF5GZcjs.unappliedPatchStack; exports.workspaceValidationStatus = _chunkVEZNF5GZcjs.workspaceValidationStatus;
@@ -1,4 +1,4 @@
1
- import { A as Async, a3 as Runtime, S as Scope } from '../effect-ISvXPLgc.js';
1
+ import { A as Async, aa as Runtime, S as Scope } from '../effect-CMOQKX8y.js';
2
2
 
3
3
  type AgentMode = "read-only" | "propose" | "write" | "autonomous";
4
4
  type AgentPackageManager = "npm" | "pnpm" | "yarn" | "bun";
@@ -73,8 +73,9 @@ import {
73
73
  timeout,
74
74
  unappliedPatchStack,
75
75
  workspaceValidationStatus
76
- } from "../chunk-INZBKOHY.js";
77
- import "../chunk-L6KKKM66.js";
76
+ } from "../chunk-3QMOKAS5.js";
77
+ import "../chunk-TO7IKXYT.js";
78
+ import "../chunk-BMH5AV44.js";
78
79
  export {
79
80
  AGENT_CONFIG_FILE_NAMES,
80
81
  NodeShell,
@@ -73,8 +73,9 @@ import {
73
73
  timeout,
74
74
  unappliedPatchStack,
75
75
  workspaceValidationStatus
76
- } from "../chunk-3R7ZYRK2.mjs";
77
- import "../chunk-7F2R7A2V.mjs";
76
+ } from "../chunk-K6M7MDZ4.mjs";
77
+ import "../chunk-ELOOF35R.mjs";
78
+ import "../chunk-BDF4AMWX.mjs";
78
79
  export {
79
80
  AGENT_CONFIG_FILE_NAMES,
80
81
  NodeShell,
@@ -1,7 +1,10 @@
1
+ import {
2
+ race
3
+ } from "./chunk-TO7IKXYT.js";
1
4
  import {
2
5
  Cause,
3
6
  Exit,
4
- async,
7
+ asyncEffect,
5
8
  asyncFail,
6
9
  asyncFlatMap,
7
10
  asyncFold,
@@ -9,9 +12,8 @@ import {
9
12
  asyncSucceed,
10
13
  asyncSync,
11
14
  fromPromiseAbortable,
12
- race,
13
15
  withScopeAsync
14
- } from "./chunk-7F2R7A2V.mjs";
16
+ } from "./chunk-BMH5AV44.js";
15
17
 
16
18
  // src/agent/core/state.ts
17
19
  var initialAgentState = (goal) => ({
@@ -1425,10 +1427,10 @@ var decideNextAction = (state) => {
1425
1427
  };
1426
1428
 
1427
1429
  // src/agent/core/events.ts
1428
- var nowMillis = () => async((_env, cb) => {
1430
+ var nowMillis = () => asyncEffect((_env, cb) => {
1429
1431
  cb({ _tag: "Success", value: Date.now() });
1430
1432
  });
1431
- var emitAgentEvent = (event) => async((env, cb) => {
1433
+ var emitAgentEvent = (event) => asyncEffect((env, cb) => {
1432
1434
  try {
1433
1435
  env.events?.emit(event);
1434
1436
  } catch {
@@ -1684,7 +1686,7 @@ var retry = (make, options) => {
1684
1686
  };
1685
1687
 
1686
1688
  // src/agent/tools/timeout.ts
1687
- var sleep = (ms) => async((_env, cb) => {
1689
+ var sleep = (ms) => asyncEffect((_env, cb) => {
1688
1690
  const id = setTimeout(() => cb({ _tag: "Success", value: void 0 }), ms);
1689
1691
  return () => clearTimeout(id);
1690
1692
  });
@@ -2124,7 +2126,7 @@ var chunkToString = (chunk) => {
2124
2126
  return typeof maybeToString === "function" ? maybeToString.call(chunk, "utf8") : String(chunk);
2125
2127
  };
2126
2128
  var NodeShell = {
2127
- exec: (command, options) => async((_env, cb) => {
2129
+ exec: (command, options) => asyncEffect((_env, cb) => {
2128
2130
  const [bin, ...args] = command;
2129
2131
  if (!bin) {
2130
2132
  cb(