brass-runtime 1.14.0 → 1.16.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 +410 -135
- package/dist/agent/cli/main.cjs +49 -43
- package/dist/agent/cli/main.js +11 -5
- package/dist/agent/cli/main.mjs +11 -5
- package/dist/agent/index.cjs +8 -3
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.js +7 -2
- package/dist/agent/index.mjs +7 -2
- package/dist/{chunk-BMRF4FN6.js → chunk-2WC63LJK.mjs} +68 -242
- package/dist/chunk-3RG5ZIWI.js +10 -0
- package/dist/chunk-45F7OKGT.cjs +104 -0
- package/dist/chunk-5YOQOXEQ.cjs +2491 -0
- package/dist/chunk-7HUOJA4W.cjs +493 -0
- package/dist/{chunk-4N2JEK4H.mjs → chunk-7LVI2GIN.js} +252 -495
- package/dist/chunk-7TL2LHQJ.js +2491 -0
- package/dist/chunk-7V4KY4RL.mjs +104 -0
- package/dist/chunk-7XOPAB5Q.js +2143 -0
- package/dist/chunk-CCKHV5BT.mjs +193 -0
- package/dist/chunk-CY33PGEX.mjs +1110 -0
- package/dist/chunk-DJQ7OMMB.cjs +144 -0
- package/dist/chunk-F5EUMJL7.mjs +2143 -0
- package/dist/chunk-FM4W4QPL.js +193 -0
- package/dist/chunk-G3XGCZDQ.js +131 -0
- package/dist/{chunk-JT7D6M5H.js → chunk-G6IQOE4P.mjs} +252 -495
- package/dist/chunk-GOV47PPB.mjs +552 -0
- package/dist/chunk-H55LI6WY.js +93 -0
- package/dist/chunk-IJT6RRQ5.cjs +93 -0
- package/dist/chunk-J3H54ZRV.mjs +131 -0
- package/dist/chunk-JF4XXPZ5.cjs +552 -0
- package/dist/chunk-JNFRRJYH.cjs +2143 -0
- package/dist/chunk-JX3LZQJH.cjs +354 -0
- package/dist/chunk-K2T3DV26.mjs +93 -0
- package/dist/chunk-KCPT2D6G.js +552 -0
- package/dist/chunk-MWXMNYJS.cjs +1110 -0
- package/dist/{chunk-XTMZTVIT.cjs → chunk-N6VHMOWB.cjs} +140 -134
- package/dist/{chunk-WJESVBWN.js → chunk-NC5SDRYE.js} +16 -10
- package/dist/chunk-NOYZIMUJ.mjs +144 -0
- package/dist/chunk-NYL4D7SK.cjs +131 -0
- package/dist/chunk-OBGZSXTJ.cjs +10 -0
- package/dist/{chunk-UWMMYKVK.mjs → chunk-OOGJ73B6.js} +68 -242
- package/dist/chunk-PNVFW245.js +144 -0
- package/dist/chunk-PRWCB3QL.mjs +2491 -0
- package/dist/chunk-QY5FKYEQ.js +1110 -0
- package/dist/chunk-ROJC3NBJ.js +104 -0
- package/dist/chunk-SPUEME2B.cjs +343 -0
- package/dist/chunk-TDVMADDN.js +343 -0
- package/dist/chunk-TVN5I4U6.cjs +193 -0
- package/dist/chunk-U5KWK3PX.mjs +343 -0
- package/dist/chunk-VFIUZG7J.mjs +354 -0
- package/dist/{chunk-BKBFSOGT.cjs → chunk-WQ5QNU5R.cjs} +460 -703
- package/dist/chunk-XDZOO4L5.js +354 -0
- package/dist/chunk-Y6FXYEAI.mjs +10 -0
- package/dist/{chunk-MQF7HZ7Y.mjs → chunk-ZGLD4TVZ.mjs} +16 -10
- package/dist/client-CtFmoDvM.d.ts +645 -0
- package/dist/core/index.cjs +284 -0
- package/dist/core/index.d.ts +567 -0
- package/dist/core/index.js +284 -0
- package/dist/core/index.mjs +284 -0
- package/dist/{effect-DM56H743.d.ts → effect-CGNl5Rqp.d.ts} +118 -11
- package/dist/effectRunner-3ZHAD3LE.cjs +8 -0
- package/dist/effectRunner-A4CHJXJI.js +8 -0
- package/dist/effectRunner-OPUF6QRN.mjs +8 -0
- package/dist/http/index.cjs +4130 -890
- package/dist/http/index.d.ts +2289 -219
- package/dist/http/index.js +4116 -876
- package/dist/http/index.mjs +4116 -876
- package/dist/http/testing.cjs +159 -0
- package/dist/http/testing.d.ts +42 -0
- package/dist/http/testing.js +159 -0
- package/dist/http/testing.mjs +159 -0
- package/dist/index.cjs +305 -1168
- package/dist/index.d.ts +9 -701
- package/dist/index.js +176 -1039
- package/dist/index.mjs +176 -1039
- package/dist/observability/index.cjs +677 -0
- package/dist/observability/index.d.ts +79 -0
- package/dist/observability/index.js +677 -0
- package/dist/observability/index.mjs +677 -0
- package/dist/schedule-Fque9Abz.d.ts +70 -0
- package/dist/schema/index.cjs +25 -0
- package/dist/schema/index.d.ts +177 -0
- package/dist/schema/index.js +25 -0
- package/dist/schema/index.mjs +25 -0
- package/dist/server-C8hDXA74.d.ts +674 -0
- package/dist/stream-dvSs0QS5.d.ts +74 -0
- package/dist/tracer-B5tRH9H7.d.ts +230 -0
- package/dist/tracing-Dt9S_6V8.d.ts +148 -0
- package/package.json +37 -3
- package/dist/chunk-SKVY72E5.cjs +0 -667
- package/dist/stream-Oqe6WeLE.d.ts +0 -173
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
+
var _chunkNYL4D7SKcjs = require('./chunk-NYL4D7SK.cjs');
|
|
3
4
|
|
|
4
5
|
|
|
6
|
+
var _chunkTVN5I4U6cjs = require('./chunk-TVN5I4U6.cjs');
|
|
5
7
|
|
|
6
8
|
|
|
9
|
+
var _chunkWQ5QNU5Rcjs = require('./chunk-WQ5QNU5R.cjs');
|
|
7
10
|
|
|
8
11
|
|
|
9
12
|
|
|
@@ -11,7 +14,10 @@
|
|
|
11
14
|
|
|
12
15
|
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
var _chunkDJQ7OMMBcjs = require('./chunk-DJQ7OMMB.cjs');
|
|
15
21
|
|
|
16
22
|
// src/agent/core/state.ts
|
|
17
23
|
var initialAgentState = (goal) => ({
|
|
@@ -1350,22 +1356,22 @@ var decideNextAction = (state) => {
|
|
|
1350
1356
|
const latest = state.observations.at(-1);
|
|
1351
1357
|
if (_optionalChain([latest, 'optionalAccess', _109 => _109.type]) === "agent.error") {
|
|
1352
1358
|
if (shouldRequestRepairAfterPatchError(state)) {
|
|
1353
|
-
return
|
|
1359
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, repairAction(state, "previous patch failed to apply"));
|
|
1354
1360
|
}
|
|
1355
|
-
return
|
|
1361
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "agent.finish", summary: buildErrorSummary(state) });
|
|
1356
1362
|
}
|
|
1357
1363
|
if (!hasObservation(state, "fs.fileRead")) {
|
|
1358
|
-
return
|
|
1364
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "fs.readFile", path: "package.json" });
|
|
1359
1365
|
}
|
|
1360
1366
|
const probeAction = nextProjectProbeAction(state);
|
|
1361
1367
|
if (probeAction) {
|
|
1362
|
-
return
|
|
1368
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, probeAction);
|
|
1363
1369
|
}
|
|
1364
1370
|
const suppliedPatch = _optionalChain([state, 'access', _110 => _110.goal, 'access', _111 => _111.initialPatch, 'optionalAccess', _112 => _112.trim, 'call', _113 => _113()]);
|
|
1365
1371
|
if (suppliedPatch) {
|
|
1366
1372
|
const action = initialPatchFlowAction(state, suppliedPatch);
|
|
1367
|
-
if (action) return
|
|
1368
|
-
return
|
|
1373
|
+
if (action) return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, action);
|
|
1374
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, {
|
|
1369
1375
|
type: "agent.finish",
|
|
1370
1376
|
summary: buildCompletionSummary(state, suppliedPatch)
|
|
1371
1377
|
});
|
|
@@ -1373,10 +1379,10 @@ var decideNextAction = (state) => {
|
|
|
1373
1379
|
const pendingLlmPatch = latestLlmPatchCandidate(state);
|
|
1374
1380
|
if (pendingLlmPatch) {
|
|
1375
1381
|
if (isWritableMode(state.goal.mode)) {
|
|
1376
|
-
return
|
|
1382
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "patch.apply", patch: pendingLlmPatch.patch });
|
|
1377
1383
|
}
|
|
1378
1384
|
if (state.goal.mode === "propose") {
|
|
1379
|
-
return
|
|
1385
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "patch.propose", patch: pendingLlmPatch.patch });
|
|
1380
1386
|
}
|
|
1381
1387
|
}
|
|
1382
1388
|
const planResponse = state.observations.find(
|
|
@@ -1384,10 +1390,10 @@ var decideNextAction = (state) => {
|
|
|
1384
1390
|
);
|
|
1385
1391
|
if (!planResponse) {
|
|
1386
1392
|
const validationAction = nextValidationActionBeforePlanning(state);
|
|
1387
|
-
if (validationAction) return
|
|
1393
|
+
if (validationAction) return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, validationAction);
|
|
1388
1394
|
const contextAction = nextContextDiscoveryAction(state);
|
|
1389
|
-
if (contextAction) return
|
|
1390
|
-
return
|
|
1395
|
+
if (contextAction) return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, contextAction);
|
|
1396
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, {
|
|
1391
1397
|
type: "llm.complete",
|
|
1392
1398
|
purpose: "plan",
|
|
1393
1399
|
prompt: buildPlanningPrompt(state)
|
|
@@ -1396,39 +1402,39 @@ var decideNextAction = (state) => {
|
|
|
1396
1402
|
if (isWritableMode(state.goal.mode)) {
|
|
1397
1403
|
if (shouldContinueRollbackStack(state)) {
|
|
1398
1404
|
const rollbackAction = automaticRollbackAction(state, "continuing rollback of generated patch stack");
|
|
1399
|
-
if (rollbackAction) return
|
|
1405
|
+
if (rollbackAction) return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, rollbackAction);
|
|
1400
1406
|
}
|
|
1401
1407
|
if (_optionalChain([latestWorkspaceChange, 'call', _114 => _114(state), 'optionalAccess', _115 => _115.type]) === "patch.rolledBack") {
|
|
1402
1408
|
const summary = rollbackSafetySummary(state);
|
|
1403
1409
|
if (summary.runValidationAfterRollback) {
|
|
1404
1410
|
const validationAction = nextValidationActionAfterLatestWorkspaceChange(state);
|
|
1405
|
-
if (validationAction) return
|
|
1411
|
+
if (validationAction) return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, validationAction);
|
|
1406
1412
|
}
|
|
1407
1413
|
}
|
|
1408
1414
|
if (_optionalChain([latestWorkspaceChange, 'call', _116 => _116(state), 'optionalAccess', _117 => _117.type]) === "patch.applied") {
|
|
1409
1415
|
const validationAction = nextValidationActionAfterPatch(state);
|
|
1410
|
-
if (validationAction) return
|
|
1416
|
+
if (validationAction) return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, validationAction);
|
|
1411
1417
|
if (shouldRequestRepairAfterValidation(state)) {
|
|
1412
|
-
return
|
|
1418
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, repairAction(state, "validation failed after applying the generated patch"));
|
|
1413
1419
|
}
|
|
1414
1420
|
if (shouldAutoRollbackAfterFinalValidationFailure(state)) {
|
|
1415
1421
|
const rollbackAction = automaticRollbackAction(state, "validation failed after generated patches and no repair attempts remain");
|
|
1416
|
-
if (rollbackAction) return
|
|
1422
|
+
if (rollbackAction) return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, rollbackAction);
|
|
1417
1423
|
}
|
|
1418
1424
|
}
|
|
1419
1425
|
}
|
|
1420
1426
|
const patch = latestExtractedPatch(state);
|
|
1421
|
-
return
|
|
1427
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, {
|
|
1422
1428
|
type: "agent.finish",
|
|
1423
1429
|
summary: buildCompletionSummary(state, patch)
|
|
1424
1430
|
});
|
|
1425
1431
|
};
|
|
1426
1432
|
|
|
1427
1433
|
// src/agent/core/events.ts
|
|
1428
|
-
var nowMillis = () =>
|
|
1434
|
+
var nowMillis = () => _chunkDJQ7OMMBcjs.asyncEffect.call(void 0, (_env, cb) => {
|
|
1429
1435
|
cb({ _tag: "Success", value: Date.now() });
|
|
1430
1436
|
});
|
|
1431
|
-
var emitAgentEvent = (event) =>
|
|
1437
|
+
var emitAgentEvent = (event) => _chunkDJQ7OMMBcjs.asyncEffect.call(void 0, (env, cb) => {
|
|
1432
1438
|
try {
|
|
1433
1439
|
_optionalChain([env, 'access', _118 => _118.events, 'optionalAccess', _119 => _119.emit, 'call', _120 => _120(event)]);
|
|
1434
1440
|
} catch (e5) {
|
|
@@ -1436,8 +1442,8 @@ var emitAgentEvent = (event) => _chunkBKBFSOGTcjs.async.call(void 0, (env, cb) =
|
|
|
1436
1442
|
cb({ _tag: "Success", value: void 0 });
|
|
1437
1443
|
});
|
|
1438
1444
|
var emitAgentEvents = (events) => events.reduce(
|
|
1439
|
-
(acc, event) =>
|
|
1440
|
-
|
|
1445
|
+
(acc, event) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, acc, () => emitAgentEvent(event)),
|
|
1446
|
+
_chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, void 0)
|
|
1441
1447
|
);
|
|
1442
1448
|
var summarizeAgentAction = (action) => {
|
|
1443
1449
|
switch (action.type) {
|
|
@@ -1549,7 +1555,7 @@ var observationEventFor = (state, observation, at) => {
|
|
|
1549
1555
|
var runStatusFor = (phase) => phase === "done" ? "done" : "failed";
|
|
1550
1556
|
|
|
1551
1557
|
// src/agent/tools/env.ts
|
|
1552
|
-
var service = (key) =>
|
|
1558
|
+
var service = (key) => _chunkDJQ7OMMBcjs.asyncSync.call(void 0, (env) => env[key]);
|
|
1553
1559
|
|
|
1554
1560
|
// src/agent/tools/path.ts
|
|
1555
1561
|
var isAbsoluteLike = (path) => path.startsWith("/") || /^[A-Za-z]:[\\/]/.test(path);
|
|
@@ -1575,48 +1581,48 @@ var normalizeWorkspaceRelativePath = (inputPath) => {
|
|
|
1575
1581
|
var resolveWorkspacePath = (cwd, inputPath) => {
|
|
1576
1582
|
const normalized = normalizeWorkspaceRelativePath(inputPath);
|
|
1577
1583
|
if (!normalized) {
|
|
1578
|
-
return
|
|
1584
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0, { _tag: "PathOutsideWorkspace", path: inputPath, cwd });
|
|
1579
1585
|
}
|
|
1580
|
-
return
|
|
1586
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, `${trimTrailingSlash(cwd)}/${normalized}`);
|
|
1581
1587
|
};
|
|
1582
1588
|
|
|
1583
1589
|
// src/agent/tools/actionToEffect.ts
|
|
1584
1590
|
var actionToEffect = (action, state) => {
|
|
1585
1591
|
switch (action.type) {
|
|
1586
1592
|
case "fs.readFile":
|
|
1587
|
-
return
|
|
1593
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1588
1594
|
resolveWorkspacePath(state.goal.cwd, action.path),
|
|
1589
|
-
(path) =>
|
|
1595
|
+
(path) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1590
1596
|
service("fs"),
|
|
1591
|
-
(fs) =>
|
|
1597
|
+
(fs) => _chunkDJQ7OMMBcjs.asyncMap.call(void 0,
|
|
1592
1598
|
fs.readFile(path),
|
|
1593
1599
|
(content) => ({ type: "fs.fileRead", path: action.path, content })
|
|
1594
1600
|
)
|
|
1595
1601
|
)
|
|
1596
1602
|
);
|
|
1597
1603
|
case "fs.exists":
|
|
1598
|
-
return
|
|
1604
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1599
1605
|
resolveWorkspacePath(state.goal.cwd, action.path),
|
|
1600
|
-
(path) =>
|
|
1606
|
+
(path) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1601
1607
|
service("fs"),
|
|
1602
|
-
(fs) =>
|
|
1608
|
+
(fs) => _chunkDJQ7OMMBcjs.asyncMap.call(void 0,
|
|
1603
1609
|
fs.exists(path),
|
|
1604
1610
|
(exists) => ({ type: "fs.exists", path: action.path, exists })
|
|
1605
1611
|
)
|
|
1606
1612
|
)
|
|
1607
1613
|
);
|
|
1608
1614
|
case "fs.searchText":
|
|
1609
|
-
return
|
|
1615
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1610
1616
|
service("fs"),
|
|
1611
|
-
(fs) =>
|
|
1617
|
+
(fs) => _chunkDJQ7OMMBcjs.asyncMap.call(void 0,
|
|
1612
1618
|
fs.searchText(state.goal.cwd, action.query, { globs: action.globs }),
|
|
1613
1619
|
(matches) => ({ type: "fs.searchResult", query: action.query, matches })
|
|
1614
1620
|
)
|
|
1615
1621
|
);
|
|
1616
1622
|
case "shell.exec":
|
|
1617
|
-
return
|
|
1623
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1618
1624
|
service("shell"),
|
|
1619
|
-
(shell) =>
|
|
1625
|
+
(shell) => _chunkDJQ7OMMBcjs.asyncMap.call(void 0,
|
|
1620
1626
|
shell.exec(action.command, { cwd: _nullishCoalesce(action.cwd, () => ( state.goal.cwd)) }),
|
|
1621
1627
|
(result) => ({
|
|
1622
1628
|
type: "shell.result",
|
|
@@ -1628,19 +1634,19 @@ var actionToEffect = (action, state) => {
|
|
|
1628
1634
|
)
|
|
1629
1635
|
);
|
|
1630
1636
|
case "llm.complete":
|
|
1631
|
-
return
|
|
1637
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1632
1638
|
service("llm"),
|
|
1633
|
-
(llm) =>
|
|
1639
|
+
(llm) => _chunkDJQ7OMMBcjs.asyncMap.call(void 0,
|
|
1634
1640
|
llm.complete({ purpose: action.purpose, prompt: action.prompt }),
|
|
1635
1641
|
(response) => ({ type: "llm.response", purpose: action.purpose, content: response.content })
|
|
1636
1642
|
)
|
|
1637
1643
|
);
|
|
1638
1644
|
case "patch.propose":
|
|
1639
|
-
return
|
|
1645
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "patch.proposed", patch: action.patch });
|
|
1640
1646
|
case "patch.apply":
|
|
1641
|
-
return
|
|
1647
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1642
1648
|
service("patch"),
|
|
1643
|
-
(patch) =>
|
|
1649
|
+
(patch) => _chunkDJQ7OMMBcjs.asyncMap.call(void 0,
|
|
1644
1650
|
patch.apply(state.goal.cwd, action.patch),
|
|
1645
1651
|
(result) => ({
|
|
1646
1652
|
type: "patch.applied",
|
|
@@ -1650,9 +1656,9 @@ var actionToEffect = (action, state) => {
|
|
|
1650
1656
|
)
|
|
1651
1657
|
);
|
|
1652
1658
|
case "patch.rollback":
|
|
1653
|
-
return
|
|
1659
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1654
1660
|
service("patch"),
|
|
1655
|
-
(patch) =>
|
|
1661
|
+
(patch) => _chunkDJQ7OMMBcjs.asyncMap.call(void 0,
|
|
1656
1662
|
patch.rollback(state.goal.cwd, action.patch),
|
|
1657
1663
|
(result) => ({
|
|
1658
1664
|
type: "patch.rolledBack",
|
|
@@ -1664,33 +1670,33 @@ var actionToEffect = (action, state) => {
|
|
|
1664
1670
|
)
|
|
1665
1671
|
);
|
|
1666
1672
|
case "agent.finish":
|
|
1667
|
-
return
|
|
1673
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "agent.done", summary: action.summary });
|
|
1668
1674
|
case "agent.fail":
|
|
1669
|
-
return
|
|
1675
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0, { _tag: "AgentLoopError", message: action.reason });
|
|
1670
1676
|
}
|
|
1671
1677
|
};
|
|
1672
1678
|
|
|
1673
1679
|
// src/agent/tools/retry.ts
|
|
1674
1680
|
var retry = (make, options) => {
|
|
1675
|
-
const loop = (remaining) =>
|
|
1681
|
+
const loop = (remaining) => _chunkDJQ7OMMBcjs.asyncFold.call(void 0,
|
|
1676
1682
|
make(),
|
|
1677
1683
|
(error) => {
|
|
1678
1684
|
if (remaining > 0 && options.while(error)) return loop(remaining - 1);
|
|
1679
|
-
return
|
|
1685
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0, error);
|
|
1680
1686
|
},
|
|
1681
|
-
(value) =>
|
|
1687
|
+
(value) => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, value)
|
|
1682
1688
|
);
|
|
1683
1689
|
return loop(options.times);
|
|
1684
1690
|
};
|
|
1685
1691
|
|
|
1686
1692
|
// src/agent/tools/timeout.ts
|
|
1687
|
-
var sleep = (ms) =>
|
|
1693
|
+
var sleep = (ms) => _chunkDJQ7OMMBcjs.asyncEffect.call(void 0, (_env, cb) => {
|
|
1688
1694
|
const id = setTimeout(() => cb({ _tag: "Success", value: void 0 }), ms);
|
|
1689
1695
|
return () => clearTimeout(id);
|
|
1690
1696
|
});
|
|
1691
|
-
var timeout = (effect, ms, scope) =>
|
|
1697
|
+
var timeout = (effect, ms, scope) => _chunkNYL4D7SKcjs.race.call(void 0,
|
|
1692
1698
|
effect,
|
|
1693
|
-
|
|
1699
|
+
_chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, sleep(ms), () => _chunkDJQ7OMMBcjs.asyncFail.call(void 0, { _tag: "ToolTimeout", timeoutMs: ms })),
|
|
1694
1700
|
scope
|
|
1695
1701
|
);
|
|
1696
1702
|
|
|
@@ -1724,7 +1730,7 @@ var configuredPolicyFor = (action, overrides) => {
|
|
|
1724
1730
|
retries: _optionalChain([override, 'optionalAccess', _123 => _123.retries]) !== void 0 ? Math.max(0, Math.floor(override.retries)) : base.retries
|
|
1725
1731
|
};
|
|
1726
1732
|
};
|
|
1727
|
-
var runAuthorizedAction = (action, state, scope) =>
|
|
1733
|
+
var runAuthorizedAction = (action, state, scope) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, _chunkDJQ7OMMBcjs.asyncSync.call(void 0, (env) => env.toolPolicies), (toolPolicies) => {
|
|
1728
1734
|
const policy = configuredPolicyFor(action, toolPolicies);
|
|
1729
1735
|
return retry(() => timeout(actionToEffect(action, state), policy.timeoutMs, scope), {
|
|
1730
1736
|
times: policy.retries,
|
|
@@ -1736,7 +1742,7 @@ var rejected = (action, reason) => ({
|
|
|
1736
1742
|
action,
|
|
1737
1743
|
reason
|
|
1738
1744
|
});
|
|
1739
|
-
var emitApprovalResolved = (action, state, approved, reason) =>
|
|
1745
|
+
var emitApprovalResolved = (action, state, approved, reason) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1740
1746
|
nowMillis(),
|
|
1741
1747
|
(at) => emitAgentEvent({
|
|
1742
1748
|
type: "agent.approval.resolved",
|
|
@@ -1750,9 +1756,9 @@ var emitApprovalResolved = (action, state, approved, reason) => _chunkBKBFSOGTcj
|
|
|
1750
1756
|
);
|
|
1751
1757
|
var requestApproval = (action, state, decision) => {
|
|
1752
1758
|
const defaultAnswer = _nullishCoalesce(decision.defaultAnswer, () => ( "reject"));
|
|
1753
|
-
return
|
|
1759
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1754
1760
|
nowMillis(),
|
|
1755
|
-
(at) =>
|
|
1761
|
+
(at) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1756
1762
|
emitAgentEvent({
|
|
1757
1763
|
type: "agent.approval.requested",
|
|
1758
1764
|
action,
|
|
@@ -1763,15 +1769,15 @@ var requestApproval = (action, state, decision) => {
|
|
|
1763
1769
|
defaultAnswer,
|
|
1764
1770
|
at
|
|
1765
1771
|
}),
|
|
1766
|
-
() =>
|
|
1772
|
+
() => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, service("approvals"), (approvals) => {
|
|
1767
1773
|
if (!approvals) {
|
|
1768
1774
|
const reason = "No approval service configured.";
|
|
1769
|
-
return
|
|
1775
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1770
1776
|
emitApprovalResolved(action, state, false, reason),
|
|
1771
|
-
() =>
|
|
1777
|
+
() => _chunkDJQ7OMMBcjs.asyncFail.call(void 0, rejected(action, reason))
|
|
1772
1778
|
);
|
|
1773
1779
|
}
|
|
1774
|
-
return
|
|
1780
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1775
1781
|
approvals.request({
|
|
1776
1782
|
action,
|
|
1777
1783
|
state,
|
|
@@ -1781,15 +1787,15 @@ var requestApproval = (action, state, decision) => {
|
|
|
1781
1787
|
}),
|
|
1782
1788
|
(response) => {
|
|
1783
1789
|
if (response.type === "approved") {
|
|
1784
|
-
return
|
|
1790
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1785
1791
|
emitApprovalResolved(action, state, true, void 0),
|
|
1786
|
-
() =>
|
|
1792
|
+
() => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, void 0)
|
|
1787
1793
|
);
|
|
1788
1794
|
}
|
|
1789
1795
|
const reason = _nullishCoalesce(response.reason, () => ( "Approval rejected."));
|
|
1790
|
-
return
|
|
1796
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1791
1797
|
emitApprovalResolved(action, state, false, reason),
|
|
1792
|
-
() =>
|
|
1798
|
+
() => _chunkDJQ7OMMBcjs.asyncFail.call(void 0, rejected(action, reason))
|
|
1793
1799
|
);
|
|
1794
1800
|
}
|
|
1795
1801
|
);
|
|
@@ -1797,18 +1803,18 @@ var requestApproval = (action, state, decision) => {
|
|
|
1797
1803
|
)
|
|
1798
1804
|
);
|
|
1799
1805
|
};
|
|
1800
|
-
var invokeAction = (action, state, scope) =>
|
|
1806
|
+
var invokeAction = (action, state, scope) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1801
1807
|
service("permissions"),
|
|
1802
|
-
(permissions) =>
|
|
1808
|
+
(permissions) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, permissions.check(action, state), (decision) => {
|
|
1803
1809
|
if (decision.type === "deny") {
|
|
1804
|
-
return
|
|
1810
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0, {
|
|
1805
1811
|
_tag: "PermissionDenied",
|
|
1806
1812
|
action,
|
|
1807
1813
|
reason: decision.reason
|
|
1808
1814
|
});
|
|
1809
1815
|
}
|
|
1810
1816
|
if (decision.type === "ask") {
|
|
1811
|
-
return
|
|
1817
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1812
1818
|
requestApproval(action, state, decision),
|
|
1813
1819
|
() => runAuthorizedAction(action, state, scope)
|
|
1814
1820
|
);
|
|
@@ -1818,9 +1824,9 @@ var invokeAction = (action, state, scope) => _chunkBKBFSOGTcjs.asyncFlatMap.call
|
|
|
1818
1824
|
);
|
|
1819
1825
|
|
|
1820
1826
|
// src/agent/core/runAgent.ts
|
|
1821
|
-
var executeAction = (action, state, scope) =>
|
|
1827
|
+
var executeAction = (action, state, scope) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1822
1828
|
nowMillis(),
|
|
1823
|
-
(startedAt) =>
|
|
1829
|
+
(startedAt) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1824
1830
|
emitAgentEvent({
|
|
1825
1831
|
type: "agent.action.started",
|
|
1826
1832
|
action,
|
|
@@ -1828,9 +1834,9 @@ var executeAction = (action, state, scope) => _chunkBKBFSOGTcjs.asyncFlatMap.cal
|
|
|
1828
1834
|
phase: state.phase,
|
|
1829
1835
|
at: startedAt
|
|
1830
1836
|
}),
|
|
1831
|
-
() =>
|
|
1837
|
+
() => _chunkDJQ7OMMBcjs.asyncFold.call(void 0,
|
|
1832
1838
|
invokeAction(action, state, scope),
|
|
1833
|
-
(error) =>
|
|
1839
|
+
(error) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, nowMillis(), (endedAt) => {
|
|
1834
1840
|
const specific = errorEventFor(action, state, error, endedAt);
|
|
1835
1841
|
const events = [
|
|
1836
1842
|
...specific ? [specific] : [],
|
|
@@ -1844,14 +1850,14 @@ var executeAction = (action, state, scope) => _chunkBKBFSOGTcjs.asyncFlatMap.cal
|
|
|
1844
1850
|
at: endedAt
|
|
1845
1851
|
}
|
|
1846
1852
|
];
|
|
1847
|
-
return
|
|
1853
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1848
1854
|
emitAgentEvents(events),
|
|
1849
|
-
() =>
|
|
1855
|
+
() => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "agent.error", error })
|
|
1850
1856
|
);
|
|
1851
1857
|
}),
|
|
1852
|
-
(observation) =>
|
|
1858
|
+
(observation) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1853
1859
|
nowMillis(),
|
|
1854
|
-
(endedAt) =>
|
|
1860
|
+
(endedAt) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1855
1861
|
emitAgentEvent({
|
|
1856
1862
|
type: "agent.action.completed",
|
|
1857
1863
|
action,
|
|
@@ -1861,13 +1867,13 @@ var executeAction = (action, state, scope) => _chunkBKBFSOGTcjs.asyncFlatMap.cal
|
|
|
1861
1867
|
durationMs: endedAt - startedAt,
|
|
1862
1868
|
at: endedAt
|
|
1863
1869
|
}),
|
|
1864
|
-
() =>
|
|
1870
|
+
() => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, observation)
|
|
1865
1871
|
)
|
|
1866
1872
|
)
|
|
1867
1873
|
)
|
|
1868
1874
|
)
|
|
1869
1875
|
);
|
|
1870
|
-
var recordObservation = (next, observation) =>
|
|
1876
|
+
var recordObservation = (next, observation) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, nowMillis(), (at) => {
|
|
1871
1877
|
const specific = observationEventFor(next, observation, at);
|
|
1872
1878
|
const events = [
|
|
1873
1879
|
{
|
|
@@ -1883,9 +1889,9 @@ var recordObservation = (next, observation) => _chunkBKBFSOGTcjs.asyncFlatMap.ca
|
|
|
1883
1889
|
});
|
|
1884
1890
|
var runLoop = (state, scope, runStartedAt) => {
|
|
1885
1891
|
if (isTerminal(state)) {
|
|
1886
|
-
return
|
|
1892
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1887
1893
|
nowMillis(),
|
|
1888
|
-
(at) =>
|
|
1894
|
+
(at) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1889
1895
|
emitAgentEvent({
|
|
1890
1896
|
type: "agent.run.completed",
|
|
1891
1897
|
goal: state.goal,
|
|
@@ -1895,26 +1901,26 @@ var runLoop = (state, scope, runStartedAt) => {
|
|
|
1895
1901
|
durationMs: at - runStartedAt,
|
|
1896
1902
|
at
|
|
1897
1903
|
}),
|
|
1898
|
-
() =>
|
|
1904
|
+
() => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, state)
|
|
1899
1905
|
)
|
|
1900
1906
|
);
|
|
1901
1907
|
}
|
|
1902
|
-
return
|
|
1908
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1903
1909
|
decideNextAction(state),
|
|
1904
|
-
(action) =>
|
|
1910
|
+
(action) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0, executeAction(action, state, scope), (observation) => {
|
|
1905
1911
|
const next = reduceAgentState(state, observation);
|
|
1906
|
-
return
|
|
1912
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1907
1913
|
recordObservation(next, observation),
|
|
1908
1914
|
() => runLoop(next, scope, runStartedAt)
|
|
1909
1915
|
);
|
|
1910
1916
|
})
|
|
1911
1917
|
);
|
|
1912
1918
|
};
|
|
1913
|
-
var runAgent = (runtime, goal) =>
|
|
1919
|
+
var runAgent = (runtime, goal) => _chunkTVN5I4U6cjs.withScopeAsync.call(void 0,
|
|
1914
1920
|
runtime,
|
|
1915
|
-
(scope) =>
|
|
1921
|
+
(scope) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1916
1922
|
nowMillis(),
|
|
1917
|
-
(startedAt) =>
|
|
1923
|
+
(startedAt) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
1918
1924
|
emitAgentEvent({ type: "agent.run.started", goal, at: startedAt }),
|
|
1919
1925
|
() => runLoop(initialAgentState(goal), scope, startedAt)
|
|
1920
1926
|
)
|
|
@@ -2064,45 +2070,45 @@ var makeConfiguredPermissions = (config = {}) => ({
|
|
|
2064
2070
|
switch (state.goal.mode) {
|
|
2065
2071
|
case "read-only": {
|
|
2066
2072
|
if (action.type === "fs.readFile" || action.type === "fs.exists" || action.type === "fs.searchText" || action.type === "llm.complete" || action.type === "agent.finish" || action.type === "agent.fail") {
|
|
2067
|
-
return
|
|
2073
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, allow());
|
|
2068
2074
|
}
|
|
2069
|
-
return
|
|
2075
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, deny(`Action ${action.type} is not allowed in read-only mode`));
|
|
2070
2076
|
}
|
|
2071
2077
|
case "propose": {
|
|
2072
2078
|
if (action.type === "shell.exec") {
|
|
2073
2079
|
const decision = shellDecisionFromConfig(action.command, config.shell);
|
|
2074
|
-
return
|
|
2080
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0,
|
|
2075
2081
|
_nullishCoalesce(decision, () => ( deny(`Command not whitelisted: ${action.command.join(" ")}`)))
|
|
2076
2082
|
);
|
|
2077
2083
|
}
|
|
2078
2084
|
if (action.type === "patch.apply" || action.type === "patch.rollback") {
|
|
2079
|
-
return
|
|
2085
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, deny(`${action.type} is not allowed in propose mode; use write mode or --apply.`));
|
|
2080
2086
|
}
|
|
2081
|
-
return
|
|
2087
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, allow());
|
|
2082
2088
|
}
|
|
2083
2089
|
case "write": {
|
|
2084
2090
|
if (action.type === "shell.exec") {
|
|
2085
2091
|
const decision = shellDecisionFromConfig(action.command, config.shell);
|
|
2086
|
-
return
|
|
2092
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0,
|
|
2087
2093
|
_nullishCoalesce(decision, () => ( deny(`Command not whitelisted: ${action.command.join(" ")}`)))
|
|
2088
2094
|
);
|
|
2089
2095
|
}
|
|
2090
2096
|
if (action.type === "patch.apply" || action.type === "patch.rollback") {
|
|
2091
|
-
return
|
|
2097
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, patchApplyDecisionFromConfig(action, config.patchApply));
|
|
2092
2098
|
}
|
|
2093
|
-
return
|
|
2099
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, allow());
|
|
2094
2100
|
}
|
|
2095
2101
|
case "autonomous": {
|
|
2096
2102
|
if (action.type === "patch.apply" || action.type === "patch.rollback") {
|
|
2097
|
-
return
|
|
2103
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, patchApplyDecisionFromConfig(action, config.patchApply));
|
|
2098
2104
|
}
|
|
2099
2105
|
if (action.type === "shell.exec") {
|
|
2100
2106
|
const decision = shellDecisionFromConfig(action.command, config.shell);
|
|
2101
|
-
return
|
|
2107
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0,
|
|
2102
2108
|
_nullishCoalesce(decision, () => ( ask(`Run non-whitelisted command: ${describeCommand(action)}`, "high", "reject")))
|
|
2103
2109
|
);
|
|
2104
2110
|
}
|
|
2105
|
-
return
|
|
2111
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, allow());
|
|
2106
2112
|
}
|
|
2107
2113
|
}
|
|
2108
2114
|
}
|
|
@@ -2111,10 +2117,10 @@ var defaultPermissions = makeConfiguredPermissions();
|
|
|
2111
2117
|
|
|
2112
2118
|
// src/agent/tools/approvals.ts
|
|
2113
2119
|
var autoApproveApprovals = {
|
|
2114
|
-
request: () =>
|
|
2120
|
+
request: () => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "approved" })
|
|
2115
2121
|
};
|
|
2116
2122
|
var makeAutoDenyApprovals = (reason = "Approval denied by non-interactive policy.") => ({
|
|
2117
|
-
request: () =>
|
|
2123
|
+
request: () => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { type: "rejected", reason })
|
|
2118
2124
|
});
|
|
2119
2125
|
|
|
2120
2126
|
// src/agent/node/nodeShell.ts
|
|
@@ -2124,12 +2130,12 @@ var chunkToString = (chunk) => {
|
|
|
2124
2130
|
return typeof maybeToString === "function" ? maybeToString.call(chunk, "utf8") : String(chunk);
|
|
2125
2131
|
};
|
|
2126
2132
|
var NodeShell = {
|
|
2127
|
-
exec: (command, options) =>
|
|
2133
|
+
exec: (command, options) => _chunkDJQ7OMMBcjs.asyncEffect.call(void 0, (_env, cb) => {
|
|
2128
2134
|
const [bin, ...args] = command;
|
|
2129
2135
|
if (!bin) {
|
|
2130
2136
|
cb(
|
|
2131
|
-
|
|
2132
|
-
|
|
2137
|
+
_chunkDJQ7OMMBcjs.Exit.failCause(
|
|
2138
|
+
_chunkDJQ7OMMBcjs.Cause.fail({
|
|
2133
2139
|
_tag: "ShellError",
|
|
2134
2140
|
operation: "exec",
|
|
2135
2141
|
command,
|
|
@@ -2160,8 +2166,8 @@ var NodeShell = {
|
|
|
2160
2166
|
if (done) return;
|
|
2161
2167
|
done = true;
|
|
2162
2168
|
cb(
|
|
2163
|
-
|
|
2164
|
-
|
|
2169
|
+
_chunkDJQ7OMMBcjs.Exit.failCause(
|
|
2170
|
+
_chunkDJQ7OMMBcjs.Cause.fail({
|
|
2165
2171
|
_tag: "ShellError",
|
|
2166
2172
|
operation: "exec",
|
|
2167
2173
|
command,
|
|
@@ -2174,7 +2180,7 @@ var NodeShell = {
|
|
|
2174
2180
|
if (done) return;
|
|
2175
2181
|
done = true;
|
|
2176
2182
|
cb(
|
|
2177
|
-
|
|
2183
|
+
_chunkDJQ7OMMBcjs.Exit.succeed({
|
|
2178
2184
|
exitCode: _nullishCoalesce(code, () => ( 1)),
|
|
2179
2185
|
stdout,
|
|
2180
2186
|
stderr
|
|
@@ -2190,8 +2196,8 @@ var NodeShell = {
|
|
|
2190
2196
|
if (done) return;
|
|
2191
2197
|
done = true;
|
|
2192
2198
|
cb(
|
|
2193
|
-
|
|
2194
|
-
|
|
2199
|
+
_chunkDJQ7OMMBcjs.Exit.failCause(
|
|
2200
|
+
_chunkDJQ7OMMBcjs.Cause.fail({
|
|
2195
2201
|
_tag: "ShellError",
|
|
2196
2202
|
operation: "exec",
|
|
2197
2203
|
command,
|
|
@@ -2215,15 +2221,15 @@ var parseRipgrep = (stdout) => stdout.split("\n").filter(Boolean).map((line) =>
|
|
|
2215
2221
|
return { path, line: Number(lineNo), text: rest.join(":") };
|
|
2216
2222
|
});
|
|
2217
2223
|
var makeNodeFileSystem = (shell) => ({
|
|
2218
|
-
readFile: (path) =>
|
|
2219
|
-
|
|
2224
|
+
readFile: (path) => _chunkWQ5QNU5Rcjs.fromPromiseAbortable.call(void 0,
|
|
2225
|
+
async (signal) => {
|
|
2220
2226
|
const { readFile } = await dynamicImport2("node:fs/promises");
|
|
2221
2227
|
return readFile(path, { encoding: "utf8", signal });
|
|
2222
2228
|
},
|
|
2223
2229
|
(cause) => ({ _tag: "FsError", operation: "readFile", cause })
|
|
2224
2230
|
),
|
|
2225
|
-
exists: (path) =>
|
|
2226
|
-
|
|
2231
|
+
exists: (path) => _chunkWQ5QNU5Rcjs.fromPromiseAbortable.call(void 0,
|
|
2232
|
+
async (signal) => {
|
|
2227
2233
|
if (signal.aborted) return false;
|
|
2228
2234
|
const { stat } = await dynamicImport2("node:fs/promises");
|
|
2229
2235
|
if (signal.aborted) return false;
|
|
@@ -2236,7 +2242,7 @@ var makeNodeFileSystem = (shell) => ({
|
|
|
2236
2242
|
},
|
|
2237
2243
|
(cause) => ({ _tag: "FsError", operation: "exists", cause })
|
|
2238
2244
|
),
|
|
2239
|
-
searchText: (cwd, query, options) =>
|
|
2245
|
+
searchText: (cwd, query, options) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
2240
2246
|
shell.exec(
|
|
2241
2247
|
[
|
|
2242
2248
|
"rg",
|
|
@@ -2256,27 +2262,27 @@ var makeNodeFileSystem = (shell) => ({
|
|
|
2256
2262
|
),
|
|
2257
2263
|
(result) => {
|
|
2258
2264
|
if (result.exitCode > 1) {
|
|
2259
|
-
return
|
|
2265
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0, {
|
|
2260
2266
|
_tag: "FsError",
|
|
2261
2267
|
operation: "searchText",
|
|
2262
2268
|
cause: result.stderr
|
|
2263
2269
|
});
|
|
2264
2270
|
}
|
|
2265
|
-
return
|
|
2271
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, parseRipgrep(result.stdout));
|
|
2266
2272
|
}
|
|
2267
2273
|
)
|
|
2268
2274
|
});
|
|
2269
2275
|
|
|
2270
2276
|
// src/agent/node/nodePatchService.ts
|
|
2271
2277
|
var validatePatchTargets = (cwd, paths) => paths.reduce(
|
|
2272
|
-
(acc, path) =>
|
|
2278
|
+
(acc, path) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
2273
2279
|
acc,
|
|
2274
|
-
(validated) =>
|
|
2280
|
+
(validated) => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
2275
2281
|
resolveWorkspacePath(cwd, path),
|
|
2276
|
-
() =>
|
|
2282
|
+
() => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, [...validated, path])
|
|
2277
2283
|
)
|
|
2278
2284
|
),
|
|
2279
|
-
|
|
2285
|
+
_chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, [])
|
|
2280
2286
|
);
|
|
2281
2287
|
var patchFailure = (operation, cause, patch) => ({
|
|
2282
2288
|
_tag: "PatchError",
|
|
@@ -2292,7 +2298,7 @@ var makeNodePatchService = (shell) => {
|
|
|
2292
2298
|
`;
|
|
2293
2299
|
const operation = reverse ? "rollback" : "apply";
|
|
2294
2300
|
if (!patch || !changedFiles.length) {
|
|
2295
|
-
return
|
|
2301
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0,
|
|
2296
2302
|
patchFailure("extract", "No unified diff with workspace-scoped paths was found.", rawPatch)
|
|
2297
2303
|
);
|
|
2298
2304
|
}
|
|
@@ -2313,13 +2319,13 @@ var makeNodePatchService = (shell) => {
|
|
|
2313
2319
|
"--whitespace=nowarn",
|
|
2314
2320
|
"-"
|
|
2315
2321
|
];
|
|
2316
|
-
return
|
|
2322
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
2317
2323
|
validatePatchTargets(cwd, changedFiles),
|
|
2318
|
-
() =>
|
|
2324
|
+
() => _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
2319
2325
|
shell.exec(checkArgs, { cwd, stdin }),
|
|
2320
2326
|
(checkResult) => {
|
|
2321
2327
|
if (checkResult.exitCode !== 0) {
|
|
2322
|
-
return
|
|
2328
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0,
|
|
2323
2329
|
patchFailure(
|
|
2324
2330
|
`${operation}.check`,
|
|
2325
2331
|
checkResult.stderr || checkResult.stdout || `git apply --check exited with ${checkResult.exitCode}`,
|
|
@@ -2327,11 +2333,11 @@ var makeNodePatchService = (shell) => {
|
|
|
2327
2333
|
)
|
|
2328
2334
|
);
|
|
2329
2335
|
}
|
|
2330
|
-
return
|
|
2336
|
+
return _chunkDJQ7OMMBcjs.asyncFlatMap.call(void 0,
|
|
2331
2337
|
shell.exec(applyArgs, { cwd, stdin }),
|
|
2332
2338
|
(applyResult) => {
|
|
2333
2339
|
if (applyResult.exitCode !== 0) {
|
|
2334
|
-
return
|
|
2340
|
+
return _chunkDJQ7OMMBcjs.asyncFail.call(void 0,
|
|
2335
2341
|
patchFailure(
|
|
2336
2342
|
operation,
|
|
2337
2343
|
applyResult.stderr || applyResult.stdout || `git apply exited with ${applyResult.exitCode}`,
|
|
@@ -2339,7 +2345,7 @@ var makeNodePatchService = (shell) => {
|
|
|
2339
2345
|
)
|
|
2340
2346
|
);
|
|
2341
2347
|
}
|
|
2342
|
-
return
|
|
2348
|
+
return _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, { changedFiles });
|
|
2343
2349
|
}
|
|
2344
2350
|
);
|
|
2345
2351
|
}
|
|
@@ -2554,7 +2560,7 @@ var validateAgentConfig = (config, sourcePath) => {
|
|
|
2554
2560
|
}
|
|
2555
2561
|
return config;
|
|
2556
2562
|
};
|
|
2557
|
-
var isFile =
|
|
2563
|
+
var isFile = async (path) => {
|
|
2558
2564
|
const { stat } = await dynamicImport3("node:fs/promises");
|
|
2559
2565
|
try {
|
|
2560
2566
|
return (await stat(path)).isFile();
|
|
@@ -2562,7 +2568,7 @@ var isFile = _chunkBKBFSOGTcjs.async.call(void 0, path) => {
|
|
|
2562
2568
|
return false;
|
|
2563
2569
|
}
|
|
2564
2570
|
};
|
|
2565
|
-
var findConfigPath =
|
|
2571
|
+
var findConfigPath = async (cwd) => {
|
|
2566
2572
|
const nodePath = await dynamicImport3("node:path");
|
|
2567
2573
|
let current = nodePath.resolve(cwd);
|
|
2568
2574
|
while (true) {
|
|
@@ -2575,7 +2581,7 @@ var findConfigPath = _chunkBKBFSOGTcjs.async.call(void 0, cwd) => {
|
|
|
2575
2581
|
current = parent;
|
|
2576
2582
|
}
|
|
2577
2583
|
};
|
|
2578
|
-
var readConfigFile =
|
|
2584
|
+
var readConfigFile = async (path) => {
|
|
2579
2585
|
const { readFile } = await dynamicImport3("node:fs/promises");
|
|
2580
2586
|
const raw = String(await readFile(path, "utf8")).replace(/^\uFEFF/, "");
|
|
2581
2587
|
try {
|
|
@@ -2587,7 +2593,7 @@ var readConfigFile = _chunkBKBFSOGTcjs.async.call(void 0, path) => {
|
|
|
2587
2593
|
throw error;
|
|
2588
2594
|
}
|
|
2589
2595
|
};
|
|
2590
|
-
var loadNodeAgentConfig =
|
|
2596
|
+
var loadNodeAgentConfig = async (options) => {
|
|
2591
2597
|
if (options.noConfig) return { config: {} };
|
|
2592
2598
|
const nodePath = await dynamicImport3("node:path");
|
|
2593
2599
|
if (options.configPath) {
|
|
@@ -2603,8 +2609,8 @@ var loadNodeAgentConfig = _chunkBKBFSOGTcjs.async.call(void 0, options) => {
|
|
|
2603
2609
|
// src/agent/llm/openAICompatible.ts
|
|
2604
2610
|
var extractText = (json) => _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([json, 'optionalAccess', _150 => _150.choices, 'optionalAccess', _151 => _151[0], 'optionalAccess', _152 => _152.message, 'optionalAccess', _153 => _153.content]), () => ( _optionalChain([json, 'optionalAccess', _154 => _154.output_text]))), () => ( _optionalChain([json, 'optionalAccess', _155 => _155.content, 'optionalAccess', _156 => _156[0], 'optionalAccess', _157 => _157.text]))), () => ( JSON.stringify(json)));
|
|
2605
2611
|
var makeOpenAICompatibleLLM = (config) => ({
|
|
2606
|
-
complete: (request) =>
|
|
2607
|
-
|
|
2612
|
+
complete: (request) => _chunkWQ5QNU5Rcjs.fromPromiseAbortable.call(void 0,
|
|
2613
|
+
async (signal) => {
|
|
2608
2614
|
const res = await fetch(config.endpoint, {
|
|
2609
2615
|
method: "POST",
|
|
2610
2616
|
signal,
|
|
@@ -2685,7 +2691,7 @@ var extractGoogleText = (json) => {
|
|
|
2685
2691
|
}
|
|
2686
2692
|
return JSON.stringify(json);
|
|
2687
2693
|
};
|
|
2688
|
-
var responseErrorMessage =
|
|
2694
|
+
var responseErrorMessage = async (res) => {
|
|
2689
2695
|
const raw = await res.text();
|
|
2690
2696
|
try {
|
|
2691
2697
|
const json = JSON.parse(raw);
|
|
@@ -2695,8 +2701,8 @@ var responseErrorMessage = _chunkBKBFSOGTcjs.async.call(void 0, res) => {
|
|
|
2695
2701
|
}
|
|
2696
2702
|
};
|
|
2697
2703
|
var makeGoogleGenerativeAILLM = (config) => ({
|
|
2698
|
-
complete: (request) =>
|
|
2699
|
-
|
|
2704
|
+
complete: (request) => _chunkWQ5QNU5Rcjs.fromPromiseAbortable.call(void 0,
|
|
2705
|
+
async (signal) => {
|
|
2700
2706
|
const res = await fetch(makeGenerateContentEndpoint(config), {
|
|
2701
2707
|
method: "POST",
|
|
2702
2708
|
signal,
|
|
@@ -2726,7 +2732,7 @@ var defaultContent = (request) => [
|
|
|
2726
2732
|
"You can also set BRASS_FAKE_LLM_RESPONSE to provide a deterministic offline response, including a fenced ```diff block."
|
|
2727
2733
|
].join("\n");
|
|
2728
2734
|
var makeFakeLLM = (options = {}) => ({
|
|
2729
|
-
complete: (request) =>
|
|
2735
|
+
complete: (request) => _chunkDJQ7OMMBcjs.asyncSucceed.call(void 0, {
|
|
2730
2736
|
content: typeof options.content === "function" ? options.content(request) : _nullishCoalesce(options.content, () => ( defaultContent(request)))
|
|
2731
2737
|
})
|
|
2732
2738
|
});
|