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.
- package/README.md +6 -3
- package/dist/agent/cli/main.cjs +44 -43
- package/dist/agent/cli/main.js +5 -4
- package/dist/agent/cli/main.mjs +5 -4
- package/dist/agent/index.cjs +4 -3
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.js +3 -2
- package/dist/agent/index.mjs +3 -2
- package/dist/{chunk-3R7ZYRK2.mjs → chunk-3QMOKAS5.js} +9 -7
- package/dist/{chunk-ATHSSDUF.js → chunk-4NHES7VK.mjs} +113 -31
- package/dist/chunk-AR22SXML.js +1043 -0
- package/dist/chunk-BDF4AMWX.mjs +3773 -0
- package/dist/chunk-BDYEENHT.js +224 -0
- package/dist/chunk-BMH5AV44.js +3773 -0
- package/dist/chunk-ELOOF35R.mjs +131 -0
- package/dist/chunk-JFPU5GQI.mjs +1043 -0
- package/dist/{chunk-INZBKOHY.js → chunk-K6M7MDZ4.mjs} +9 -7
- package/dist/chunk-MS34J5LY.cjs +224 -0
- package/dist/{chunk-XNOTJSMZ.mjs → chunk-PPUXIH5R.js} +113 -31
- package/dist/chunk-R3R2FVLG.cjs +131 -0
- package/dist/{chunk-ZTDK2DLG.cjs → chunk-STVLQ3XD.cjs} +169 -87
- package/dist/chunk-TGIFUAK4.cjs +3773 -0
- package/dist/chunk-TO7IKXYT.js +131 -0
- package/dist/chunk-UMAZLXAB.mjs +224 -0
- package/dist/{chunk-XDINDYNA.cjs → chunk-VEZNF5GZ.cjs} +136 -134
- package/dist/chunk-XPZNXSVN.cjs +1043 -0
- package/dist/core/index.cjs +216 -0
- package/dist/core/index.d.ts +673 -0
- package/dist/core/index.js +216 -0
- package/dist/core/index.mjs +216 -0
- package/dist/{effect-ISvXPLgc.d.ts → effect-CMOQKX8y.d.ts} +202 -31
- package/dist/http/index.cjs +3177 -187
- package/dist/http/index.d.ts +1692 -9
- package/dist/http/index.js +3164 -174
- package/dist/http/index.mjs +3164 -174
- package/dist/index.cjs +936 -219
- package/dist/index.d.ts +313 -36
- package/dist/index.js +830 -113
- package/dist/index.mjs +830 -113
- package/dist/{stream-BvukHxCv.d.ts → stream-FQm9h4Mg.d.ts} +12 -4
- package/dist/tracing-DNT9jEbr.d.ts +106 -0
- package/package.json +11 -3
- package/wasm/pkg/brass_runtime_wasm_engine.d.ts +95 -16
- package/wasm/pkg/brass_runtime_wasm_engine.js +715 -15
- package/wasm/pkg/brass_runtime_wasm_engine_bg.wasm +0 -0
- package/wasm/pkg/brass_runtime_wasm_engine_bg.wasm.d.ts +78 -7
- package/dist/chunk-2P4PD6D7.cjs +0 -2557
- package/dist/chunk-7F2R7A2V.mjs +0 -2557
- 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 {
|
|
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 =
|
|
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.
|
|
105
|
+
console.log(res.status, res.body.title);
|
|
103
106
|
```
|
|
104
107
|
|
|
105
108
|
---
|
package/dist/agent/cli/main.cjs
CHANGED
|
@@ -17,13 +17,14 @@
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _chunkVEZNF5GZcjs = require('../../chunk-VEZNF5GZ.cjs');
|
|
21
|
+
require('../../chunk-R3R2FVLG.cjs');
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
|
|
26
|
-
var
|
|
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) =>
|
|
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: ${
|
|
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(
|
|
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
|
-
|
|
70
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 (!
|
|
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" || !
|
|
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 =
|
|
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
|
|
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 =
|
|
1348
|
-
const workspaceDiscovery =
|
|
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
|
|
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 ?
|
|
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
|
|
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
|
|
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
|
|
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))), () => (
|
|
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
|
|
1565
|
+
return _chunkVEZNF5GZcjs.autoApproveApprovals;
|
|
1565
1566
|
case "deny":
|
|
1566
|
-
return
|
|
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 ${
|
|
1699
|
+
console.log(`\u2192 ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)}`);
|
|
1699
1700
|
break;
|
|
1700
1701
|
case "agent.action.completed": {
|
|
1701
|
-
const status =
|
|
1702
|
-
console.log(`${statusIcon2(status)} ${
|
|
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 ${
|
|
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(`! ${
|
|
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 ${
|
|
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 ${
|
|
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 ${
|
|
1722
|
+
console.log(`\u2713 approval granted for ${_chunkVEZNF5GZcjs.summarizeAgentAction.call(void 0, event.action)}`);
|
|
1722
1723
|
} else {
|
|
1723
|
-
console.log(`\u2717 approval rejected for ${
|
|
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 =
|
|
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 =
|
|
1829
|
+
const shell = _chunkVEZNF5GZcjs.NodeShell;
|
|
1829
1830
|
return {
|
|
1830
1831
|
shell,
|
|
1831
|
-
fs:
|
|
1832
|
-
patch:
|
|
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:
|
|
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 =
|
|
1850
|
+
var runCliAgent = async (parsed, run, compactOptions, events) => {
|
|
1850
1851
|
const env = makeAgentEnv(parsed, events);
|
|
1851
|
-
const runtime = new (0,
|
|
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
|
-
|
|
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 =
|
|
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) {
|
package/dist/agent/cli/main.js
CHANGED
|
@@ -17,13 +17,14 @@ import {
|
|
|
17
17
|
runAgent,
|
|
18
18
|
summarizeAgentAction,
|
|
19
19
|
summarizeAgentObservation
|
|
20
|
-
} from "../../chunk-
|
|
20
|
+
} from "../../chunk-3QMOKAS5.js";
|
|
21
|
+
import "../../chunk-TO7IKXYT.js";
|
|
21
22
|
import {
|
|
22
23
|
Cause,
|
|
23
24
|
Exit,
|
|
24
25
|
Runtime,
|
|
25
|
-
|
|
26
|
-
} from "../../chunk-
|
|
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) =>
|
|
43
|
+
request: (request) => asyncEffect((_env, cb) => {
|
|
43
44
|
let closed = false;
|
|
44
45
|
let rl;
|
|
45
46
|
dynamicImport("node:readline/promises").then(({ createInterface }) => {
|
package/dist/agent/cli/main.mjs
CHANGED
|
@@ -17,13 +17,14 @@ import {
|
|
|
17
17
|
runAgent,
|
|
18
18
|
summarizeAgentAction,
|
|
19
19
|
summarizeAgentObservation
|
|
20
|
-
} from "../../chunk-
|
|
20
|
+
} from "../../chunk-K6M7MDZ4.mjs";
|
|
21
|
+
import "../../chunk-ELOOF35R.mjs";
|
|
21
22
|
import {
|
|
22
23
|
Cause,
|
|
23
24
|
Exit,
|
|
24
25
|
Runtime,
|
|
25
|
-
|
|
26
|
-
} from "../../chunk-
|
|
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) =>
|
|
43
|
+
request: (request) => asyncEffect((_env, cb) => {
|
|
43
44
|
let closed = false;
|
|
44
45
|
let rl;
|
|
45
46
|
dynamicImport("node:readline/promises").then(({ createInterface }) => {
|
package/dist/agent/index.cjs
CHANGED
|
@@ -73,8 +73,9 @@
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
|
|
76
|
-
var
|
|
77
|
-
require('../chunk-
|
|
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 =
|
|
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;
|
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as Async,
|
|
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";
|
package/dist/agent/index.js
CHANGED
|
@@ -73,8 +73,9 @@ import {
|
|
|
73
73
|
timeout,
|
|
74
74
|
unappliedPatchStack,
|
|
75
75
|
workspaceValidationStatus
|
|
76
|
-
} from "../chunk-
|
|
77
|
-
import "../chunk-
|
|
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,
|
package/dist/agent/index.mjs
CHANGED
|
@@ -73,8 +73,9 @@ import {
|
|
|
73
73
|
timeout,
|
|
74
74
|
unappliedPatchStack,
|
|
75
75
|
workspaceValidationStatus
|
|
76
|
-
} from "../chunk-
|
|
77
|
-
import "../chunk-
|
|
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
|
-
|
|
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-
|
|
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 = () =>
|
|
1430
|
+
var nowMillis = () => asyncEffect((_env, cb) => {
|
|
1429
1431
|
cb({ _tag: "Success", value: Date.now() });
|
|
1430
1432
|
});
|
|
1431
|
-
var emitAgentEvent = (event) =>
|
|
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) =>
|
|
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) =>
|
|
2129
|
+
exec: (command, options) => asyncEffect((_env, cb) => {
|
|
2128
2130
|
const [bin, ...args] = command;
|
|
2129
2131
|
if (!bin) {
|
|
2130
2132
|
cb(
|