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