@letrquan/book 0.2.0 → 0.4.0-beta.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/CHANGELOG.md +3771 -40
- package/README.md +135 -1311
- package/dist/additional-roots-VAWRQ625.js +32 -0
- package/dist/{app-MOXXWEOY.js → app-J7BVPSUH.js} +9648 -5509
- package/dist/app-J7BVPSUH.js.map +1 -0
- package/dist/chunk-2AAOF5B5.js +28 -0
- package/dist/chunk-2AAOF5B5.js.map +1 -0
- package/dist/chunk-32WBCUAN.js +660 -0
- package/dist/chunk-32WBCUAN.js.map +1 -0
- package/dist/chunk-4DKHLZRI.js +120 -0
- package/dist/chunk-4DKHLZRI.js.map +1 -0
- package/dist/{chunk-CAGOB2N4.js → chunk-62EEAUID.js} +6 -4
- package/dist/chunk-62EEAUID.js.map +1 -0
- package/dist/chunk-AHC7OU75.js +1124 -0
- package/dist/chunk-AHC7OU75.js.map +1 -0
- package/dist/{chunk-E75IPST5.js → chunk-AJZWLKLQ.js} +73 -70
- package/dist/chunk-AJZWLKLQ.js.map +1 -0
- package/dist/chunk-B5FC3MYZ.js +395 -0
- package/dist/chunk-B5FC3MYZ.js.map +1 -0
- package/dist/{chunk-KWHQ2XXL.js → chunk-DNFQTSMJ.js} +55 -13
- package/dist/chunk-DNFQTSMJ.js.map +1 -0
- package/dist/{chunk-J7MIZ5CA.js → chunk-E5WLQSKA.js} +719 -89
- package/dist/chunk-E5WLQSKA.js.map +1 -0
- package/dist/chunk-ECLC4CIJ.js +1181 -0
- package/dist/chunk-ECLC4CIJ.js.map +1 -0
- package/dist/chunk-EEX6QNXV.js +127 -0
- package/dist/chunk-EEX6QNXV.js.map +1 -0
- package/dist/chunk-EFXVSQ5J.js +931 -0
- package/dist/chunk-EFXVSQ5J.js.map +1 -0
- package/dist/{chunk-V4BOYR52.js → chunk-ENLB7NYV.js} +1304 -326
- package/dist/chunk-ENLB7NYV.js.map +1 -0
- package/dist/chunk-FPR7SKIE.js +6926 -0
- package/dist/chunk-FPR7SKIE.js.map +1 -0
- package/dist/{chunk-DGMQEI6Y.js → chunk-HFB74CLM.js} +30 -9
- package/dist/chunk-HFB74CLM.js.map +1 -0
- package/dist/{chunk-5RDRAO4B.js → chunk-HOZXKOE3.js} +37 -1
- package/dist/chunk-HOZXKOE3.js.map +1 -0
- package/dist/chunk-IDYWN37T.js +36 -0
- package/dist/chunk-IDYWN37T.js.map +1 -0
- package/dist/chunk-J4F2QLM2.js +273 -0
- package/dist/chunk-J4F2QLM2.js.map +1 -0
- package/dist/chunk-JGF5HLSI.js +1065 -0
- package/dist/chunk-JGF5HLSI.js.map +1 -0
- package/dist/{chunk-XIFFTATU.js → chunk-KDNWMKXV.js} +7166 -4237
- package/dist/chunk-KDNWMKXV.js.map +1 -0
- package/dist/chunk-KXAYUIKP.js +90 -0
- package/dist/chunk-KXAYUIKP.js.map +1 -0
- package/dist/{chunk-3U5IBM24.js → chunk-MEOB2DZA.js} +12 -2
- package/dist/chunk-MEOB2DZA.js.map +1 -0
- package/dist/{chunk-WKBO5R4O.js → chunk-MV5PQNIA.js} +2 -2
- package/dist/chunk-MV5PQNIA.js.map +1 -0
- package/dist/chunk-N2G4Q7ME.js +2672 -0
- package/dist/chunk-N2G4Q7ME.js.map +1 -0
- package/dist/chunk-OJBMDM5H.js +299 -0
- package/dist/chunk-OJBMDM5H.js.map +1 -0
- package/dist/{chunk-URLQAXTR.js → chunk-PTDC7ZUP.js} +2 -2
- package/dist/chunk-PTDC7ZUP.js.map +1 -0
- package/dist/{chunk-574C6MQR.js → chunk-REASC2QG.js} +173 -64
- package/dist/chunk-REASC2QG.js.map +1 -0
- package/dist/{chunk-7N4J557C.js → chunk-RT5SATF7.js} +1 -1
- package/dist/chunk-RT5SATF7.js.map +1 -0
- package/dist/chunk-SBTU5BEC.js +114 -0
- package/dist/chunk-SBTU5BEC.js.map +1 -0
- package/dist/{chunk-5KLVH3PY.js → chunk-SWPDKLNM.js} +5 -3
- package/dist/chunk-SWPDKLNM.js.map +1 -0
- package/dist/chunk-UCFJ43OS.js +520 -0
- package/dist/chunk-UCFJ43OS.js.map +1 -0
- package/dist/{chunk-VZQXX3WW.js → chunk-W7SLYS3M.js} +80 -16
- package/dist/chunk-W7SLYS3M.js.map +1 -0
- package/dist/{chunk-ANSJPYGI.js → chunk-WV3O5PGX.js} +3 -3
- package/dist/chunk-WV3O5PGX.js.map +1 -0
- package/dist/chunk-XHAO3K7I.js +18 -0
- package/dist/chunk-XHAO3K7I.js.map +1 -0
- package/dist/chunk-XJRJVXJR.js +1050 -0
- package/dist/chunk-XJRJVXJR.js.map +1 -0
- package/dist/chunk-YIL6HTJX.js +663 -0
- package/dist/chunk-YIL6HTJX.js.map +1 -0
- package/dist/{chunk-24AXE6SP.js → chunk-ZPSZZUWF.js} +1 -1
- package/dist/chunk-ZPSZZUWF.js.map +1 -0
- package/dist/{command-approvals-6Y57VCWZ.js → command-approvals-ZRY66LCW.js} +7 -5
- package/dist/context-C3RAP6K5.js +41 -0
- package/dist/{hook-approvals-CTUFKEJT.js → hook-approvals-DPQD5H65.js} +6 -5
- package/dist/index.js +947 -203
- package/dist/index.js.map +1 -1
- package/dist/{interactive-assets-CCAAWVKH.js → interactive-assets-73AQO5WP.js} +18 -9
- package/dist/interactive-assets-73AQO5WP.js.map +1 -0
- package/dist/job-runner.js +166 -111
- package/dist/job-runner.js.map +1 -1
- package/dist/job-supervisor.d.ts +2 -0
- package/dist/job-supervisor.js +121 -0
- package/dist/job-supervisor.js.map +1 -0
- package/dist/loader-DQNPDKOX.js +27 -0
- package/dist/{mcp-approvals-WNPH65BK.js → mcp-approvals-27LJYADQ.js} +6 -5
- package/dist/{mcp-config-YIJIES2C.js → mcp-config-GXSODNCM.js} +4 -3
- package/dist/memory-store-I6Z54VUN.js +51 -0
- package/dist/{model-window-store-YFVNXCIP.js → model-window-store-6VKXXTPJ.js} +9 -4
- package/dist/openai-compatible-IPUNBJ53.js +16 -0
- package/dist/permission-approvals-Q5IMFEZI.js +15 -0
- package/dist/permissions-7Y35X6HZ.js +62 -0
- package/dist/provider-approvals-5AGH3RVT.js +76 -0
- package/dist/sandbox-N2RY72GN.js +42 -0
- package/dist/{scrollback-LUKLIBVI.js → scrollback-GD76GNM4.js} +44 -26
- package/dist/scrollback-GD76GNM4.js.map +1 -0
- package/dist/sdk.d.ts +2739 -2069
- package/dist/sdk.js +77 -42
- package/dist/sdk.js.map +1 -1
- package/dist/settings-loader-KDBH45AQ.js +43 -0
- package/dist/settings-loader-KDBH45AQ.js.map +1 -0
- package/dist/{settings-removed-JWWPT4WA.js → settings-removed-3ATWJEF3.js} +2 -2
- package/dist/settings-removed-3ATWJEF3.js.map +1 -0
- package/dist/shell-selection-Z5WORZU4.js +31 -0
- package/dist/shell-selection-Z5WORZU4.js.map +1 -0
- package/package.json +25 -24
- package/dist/app-MOXXWEOY.js.map +0 -1
- package/dist/chunk-24AXE6SP.js.map +0 -1
- package/dist/chunk-3U5IBM24.js.map +0 -1
- package/dist/chunk-574C6MQR.js.map +0 -1
- package/dist/chunk-5GDZ22YP.js +0 -449
- package/dist/chunk-5GDZ22YP.js.map +0 -1
- package/dist/chunk-5KLVH3PY.js.map +0 -1
- package/dist/chunk-5RDRAO4B.js.map +0 -1
- package/dist/chunk-7N4J557C.js.map +0 -1
- package/dist/chunk-A7JLBK2Y.js +0 -3506
- package/dist/chunk-A7JLBK2Y.js.map +0 -1
- package/dist/chunk-ANSJPYGI.js.map +0 -1
- package/dist/chunk-BTZZUCLI.js +0 -264
- package/dist/chunk-BTZZUCLI.js.map +0 -1
- package/dist/chunk-C7D4NJ2D.js +0 -217
- package/dist/chunk-C7D4NJ2D.js.map +0 -1
- package/dist/chunk-CAGOB2N4.js.map +0 -1
- package/dist/chunk-DGMQEI6Y.js.map +0 -1
- package/dist/chunk-E75IPST5.js.map +0 -1
- package/dist/chunk-EYGD6X2T.js +0 -180
- package/dist/chunk-EYGD6X2T.js.map +0 -1
- package/dist/chunk-GTVB4HEM.js +0 -765
- package/dist/chunk-GTVB4HEM.js.map +0 -1
- package/dist/chunk-J7MIZ5CA.js.map +0 -1
- package/dist/chunk-KWHQ2XXL.js.map +0 -1
- package/dist/chunk-L6LK2QIQ.js +0 -657
- package/dist/chunk-L6LK2QIQ.js.map +0 -1
- package/dist/chunk-MAQXCUR4.js +0 -1007
- package/dist/chunk-MAQXCUR4.js.map +0 -1
- package/dist/chunk-S4XL7HOM.js +0 -402
- package/dist/chunk-S4XL7HOM.js.map +0 -1
- package/dist/chunk-URLQAXTR.js.map +0 -1
- package/dist/chunk-V4BOYR52.js.map +0 -1
- package/dist/chunk-VZQXX3WW.js.map +0 -1
- package/dist/chunk-WKBO5R4O.js.map +0 -1
- package/dist/chunk-XIFFTATU.js.map +0 -1
- package/dist/context-ZC5IFEAX.js +0 -25
- package/dist/interactive-assets-CCAAWVKH.js.map +0 -1
- package/dist/loader-4IDS2RIE.js +0 -15
- package/dist/openai-compatible-RHZUBHV6.js +0 -10
- package/dist/permission-approvals-76PVREFD.js +0 -14
- package/dist/permissions-CHCKTFQQ.js +0 -28
- package/dist/sandbox-CNVAQDA7.js +0 -23
- package/dist/scrollback-LUKLIBVI.js.map +0 -1
- package/dist/settings-loader-M2QP5TX2.js +0 -21
- package/dist/shell-selection-V6QAYXPX.js +0 -17
- package/patches/ink+6.8.0.patch +0 -13
- package/scripts/apply-ink-patch.mjs +0 -29
- package/scripts/ink-patch.mjs +0 -59
- package/scripts/verify-ink-patch.mjs +0 -11
- /package/dist/{command-approvals-6Y57VCWZ.js.map → additional-roots-VAWRQ625.js.map} +0 -0
- /package/dist/{context-ZC5IFEAX.js.map → command-approvals-ZRY66LCW.js.map} +0 -0
- /package/dist/{hook-approvals-CTUFKEJT.js.map → context-C3RAP6K5.js.map} +0 -0
- /package/dist/{loader-4IDS2RIE.js.map → hook-approvals-DPQD5H65.js.map} +0 -0
- /package/dist/{mcp-approvals-WNPH65BK.js.map → loader-DQNPDKOX.js.map} +0 -0
- /package/dist/{mcp-config-YIJIES2C.js.map → mcp-approvals-27LJYADQ.js.map} +0 -0
- /package/dist/{model-window-store-YFVNXCIP.js.map → mcp-config-GXSODNCM.js.map} +0 -0
- /package/dist/{openai-compatible-RHZUBHV6.js.map → memory-store-I6Z54VUN.js.map} +0 -0
- /package/dist/{permission-approvals-76PVREFD.js.map → model-window-store-6VKXXTPJ.js.map} +0 -0
- /package/dist/{permissions-CHCKTFQQ.js.map → openai-compatible-IPUNBJ53.js.map} +0 -0
- /package/dist/{sandbox-CNVAQDA7.js.map → permission-approvals-Q5IMFEZI.js.map} +0 -0
- /package/dist/{settings-loader-M2QP5TX2.js.map → permissions-7Y35X6HZ.js.map} +0 -0
- /package/dist/{settings-removed-JWWPT4WA.js.map → provider-approvals-5AGH3RVT.js.map} +0 -0
- /package/dist/{shell-selection-V6QAYXPX.js.map → sandbox-N2RY72GN.js.map} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
collectSkippedCommandNotices,
|
|
3
|
+
discoverCommands,
|
|
4
|
+
generateCommandListing,
|
|
5
|
+
inspectCommands,
|
|
6
|
+
resolveCommandBody
|
|
7
|
+
} from "./chunk-AJZWLKLQ.js";
|
|
8
|
+
import "./chunk-KXAYUIKP.js";
|
|
9
|
+
import "./chunk-SWPDKLNM.js";
|
|
10
|
+
import "./chunk-2AAOF5B5.js";
|
|
11
|
+
import "./chunk-XHAO3K7I.js";
|
|
12
|
+
import "./chunk-SBTU5BEC.js";
|
|
13
|
+
import "./chunk-YIL6HTJX.js";
|
|
14
|
+
import "./chunk-EEX6QNXV.js";
|
|
15
|
+
import "./chunk-WV3O5PGX.js";
|
|
16
|
+
import "./chunk-HFB74CLM.js";
|
|
17
|
+
import "./chunk-REASC2QG.js";
|
|
18
|
+
import "./chunk-IDYWN37T.js";
|
|
19
|
+
import "./chunk-ZPSZZUWF.js";
|
|
20
|
+
export {
|
|
21
|
+
collectSkippedCommandNotices,
|
|
22
|
+
discoverCommands,
|
|
23
|
+
generateCommandListing,
|
|
24
|
+
inspectCommands,
|
|
25
|
+
resolveCommandBody
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=loader-DQNPDKOX.js.map
|
|
@@ -4,10 +4,11 @@ import {
|
|
|
4
4
|
mcpServersToRecord,
|
|
5
5
|
partitionMcpServersByApproval,
|
|
6
6
|
persistMcpProjectServerChoice
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-PTDC7ZUP.js";
|
|
8
|
+
import "./chunk-HFB74CLM.js";
|
|
9
|
+
import "./chunk-REASC2QG.js";
|
|
10
|
+
import "./chunk-IDYWN37T.js";
|
|
11
|
+
import "./chunk-ZPSZZUWF.js";
|
|
11
12
|
export {
|
|
12
13
|
evaluateMcpServerApproval,
|
|
13
14
|
mcpServerFingerprint,
|
|
@@ -15,4 +16,4 @@ export {
|
|
|
15
16
|
partitionMcpServersByApproval,
|
|
16
17
|
persistMcpProjectServerChoice
|
|
17
18
|
};
|
|
18
|
-
//# sourceMappingURL=mcp-approvals-
|
|
19
|
+
//# sourceMappingURL=mcp-approvals-27LJYADQ.js.map
|
|
@@ -4,8 +4,9 @@ import {
|
|
|
4
4
|
isValidMcpServerName,
|
|
5
5
|
loadMcpConfig,
|
|
6
6
|
resolveMcpServerList
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-MEOB2DZA.js";
|
|
8
|
+
import "./chunk-EEX6QNXV.js";
|
|
9
|
+
import "./chunk-ZPSZZUWF.js";
|
|
9
10
|
export {
|
|
10
11
|
consoleMcpDiagnosticSink,
|
|
11
12
|
formatMcpServerCommand,
|
|
@@ -13,4 +14,4 @@ export {
|
|
|
13
14
|
loadMcpConfig,
|
|
14
15
|
resolveMcpServerList
|
|
15
16
|
};
|
|
16
|
-
//# sourceMappingURL=mcp-config-
|
|
17
|
+
//# sourceMappingURL=mcp-config-GXSODNCM.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_MAX_INDEX_LINES,
|
|
3
|
+
MAX_INDEX_BYTES,
|
|
4
|
+
deleteMemoryEntry,
|
|
5
|
+
findGitRoot,
|
|
6
|
+
findLegacyMemoryBackup,
|
|
7
|
+
getMemoryHealth,
|
|
8
|
+
getNewestMemoryWriteTime,
|
|
9
|
+
getProjectMemoryDir,
|
|
10
|
+
legacyBackupNotice,
|
|
11
|
+
listMemoryFiles,
|
|
12
|
+
loadMemoryContext,
|
|
13
|
+
memoryFileForSlug,
|
|
14
|
+
memoryWriteScope,
|
|
15
|
+
migrateLegacyMemoryDir,
|
|
16
|
+
migrateLegacyMemoryFormat,
|
|
17
|
+
sanitizeMemorySlug,
|
|
18
|
+
shortenAtWord,
|
|
19
|
+
slugifyWorkspace
|
|
20
|
+
} from "./chunk-EFXVSQ5J.js";
|
|
21
|
+
import "./chunk-KXAYUIKP.js";
|
|
22
|
+
import "./chunk-SBTU5BEC.js";
|
|
23
|
+
import "./chunk-OJBMDM5H.js";
|
|
24
|
+
import "./chunk-YIL6HTJX.js";
|
|
25
|
+
import "./chunk-EEX6QNXV.js";
|
|
26
|
+
import "./chunk-WV3O5PGX.js";
|
|
27
|
+
import "./chunk-HFB74CLM.js";
|
|
28
|
+
import "./chunk-REASC2QG.js";
|
|
29
|
+
import "./chunk-IDYWN37T.js";
|
|
30
|
+
import "./chunk-ZPSZZUWF.js";
|
|
31
|
+
export {
|
|
32
|
+
DEFAULT_MAX_INDEX_LINES,
|
|
33
|
+
MAX_INDEX_BYTES,
|
|
34
|
+
deleteMemoryEntry,
|
|
35
|
+
findGitRoot,
|
|
36
|
+
findLegacyMemoryBackup,
|
|
37
|
+
getMemoryHealth,
|
|
38
|
+
getNewestMemoryWriteTime,
|
|
39
|
+
getProjectMemoryDir,
|
|
40
|
+
legacyBackupNotice,
|
|
41
|
+
listMemoryFiles,
|
|
42
|
+
loadMemoryContext,
|
|
43
|
+
memoryFileForSlug,
|
|
44
|
+
memoryWriteScope,
|
|
45
|
+
migrateLegacyMemoryDir,
|
|
46
|
+
migrateLegacyMemoryFormat,
|
|
47
|
+
sanitizeMemorySlug,
|
|
48
|
+
shortenAtWord,
|
|
49
|
+
slugifyWorkspace
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=memory-store-I6Z54VUN.js.map
|
|
@@ -6,12 +6,15 @@ import {
|
|
|
6
6
|
MemoryModelWindowStore,
|
|
7
7
|
createModelWindowStore,
|
|
8
8
|
defaultModelWindowStorePath,
|
|
9
|
+
learnedModelWindowEntrySchema,
|
|
10
|
+
looseModelWindowStoreSchema,
|
|
9
11
|
ratchetModelWindow,
|
|
10
12
|
readModelWindowStore,
|
|
11
13
|
writeModelWindowStore
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-62EEAUID.js";
|
|
15
|
+
import "./chunk-REASC2QG.js";
|
|
16
|
+
import "./chunk-IDYWN37T.js";
|
|
17
|
+
import "./chunk-ZPSZZUWF.js";
|
|
15
18
|
export {
|
|
16
19
|
FileModelWindowStore,
|
|
17
20
|
LEARNED_WINDOW_SAFETY_MARGIN,
|
|
@@ -20,8 +23,10 @@ export {
|
|
|
20
23
|
MemoryModelWindowStore,
|
|
21
24
|
createModelWindowStore,
|
|
22
25
|
defaultModelWindowStorePath,
|
|
26
|
+
learnedModelWindowEntrySchema,
|
|
27
|
+
looseModelWindowStoreSchema,
|
|
23
28
|
ratchetModelWindow,
|
|
24
29
|
readModelWindowStore,
|
|
25
30
|
writeModelWindowStore
|
|
26
31
|
};
|
|
27
|
-
//# sourceMappingURL=model-window-store-
|
|
32
|
+
//# sourceMappingURL=model-window-store-6VKXXTPJ.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
chatCompletionStream,
|
|
3
|
+
convertTools,
|
|
4
|
+
parseCompatibleUsage
|
|
5
|
+
} from "./chunk-AHC7OU75.js";
|
|
6
|
+
import "./chunk-2AAOF5B5.js";
|
|
7
|
+
import "./chunk-RT5SATF7.js";
|
|
8
|
+
import "./chunk-OJBMDM5H.js";
|
|
9
|
+
import "./chunk-IDYWN37T.js";
|
|
10
|
+
import "./chunk-ZPSZZUWF.js";
|
|
11
|
+
export {
|
|
12
|
+
chatCompletionStream,
|
|
13
|
+
convertTools,
|
|
14
|
+
parseCompatibleUsage
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=openai-compatible-IPUNBJ53.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
evaluateProjectAllowRule,
|
|
3
|
+
partitionProjectAllowRules,
|
|
4
|
+
persistProjectAllowRuleChoice
|
|
5
|
+
} from "./chunk-MV5PQNIA.js";
|
|
6
|
+
import "./chunk-HFB74CLM.js";
|
|
7
|
+
import "./chunk-REASC2QG.js";
|
|
8
|
+
import "./chunk-IDYWN37T.js";
|
|
9
|
+
import "./chunk-ZPSZZUWF.js";
|
|
10
|
+
export {
|
|
11
|
+
evaluateProjectAllowRule,
|
|
12
|
+
partitionProjectAllowRules,
|
|
13
|
+
persistProjectAllowRuleChoice
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=permission-approvals-Q5IMFEZI.js.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ALWAYS_ALLOWED_TOOLS,
|
|
3
|
+
WORKSPACE_READ_JUDGING_MODES,
|
|
4
|
+
WORKSPACE_READ_ONLY_GIT_TOOLS,
|
|
5
|
+
WORKSPACE_READ_REFUSAL_MODES,
|
|
6
|
+
WORKSPACE_READ_TOOLS,
|
|
7
|
+
evaluatePermission,
|
|
8
|
+
evaluatePermissionDetail,
|
|
9
|
+
hasAdjudicationPolicy,
|
|
10
|
+
hasBashAdjudicationPolicy,
|
|
11
|
+
memoryTargetSpellings,
|
|
12
|
+
missingRuleReason,
|
|
13
|
+
parseRule,
|
|
14
|
+
permissionReasonOf,
|
|
15
|
+
permissionResultOf,
|
|
16
|
+
permissionRuleForToolCall,
|
|
17
|
+
permissionRuleLadder,
|
|
18
|
+
permissionRuleMatchesCall,
|
|
19
|
+
permissionRuleOf,
|
|
20
|
+
primaryArgForRule
|
|
21
|
+
} from "./chunk-N2G4Q7ME.js";
|
|
22
|
+
import "./chunk-XJRJVXJR.js";
|
|
23
|
+
import "./chunk-UCFJ43OS.js";
|
|
24
|
+
import "./chunk-HOZXKOE3.js";
|
|
25
|
+
import "./chunk-EFXVSQ5J.js";
|
|
26
|
+
import "./chunk-62EEAUID.js";
|
|
27
|
+
import "./chunk-KXAYUIKP.js";
|
|
28
|
+
import "./chunk-W7SLYS3M.js";
|
|
29
|
+
import "./chunk-SBTU5BEC.js";
|
|
30
|
+
import "./chunk-4DKHLZRI.js";
|
|
31
|
+
import "./chunk-OJBMDM5H.js";
|
|
32
|
+
import "./chunk-YIL6HTJX.js";
|
|
33
|
+
import "./chunk-EEX6QNXV.js";
|
|
34
|
+
import "./chunk-MV5PQNIA.js";
|
|
35
|
+
import "./chunk-B5FC3MYZ.js";
|
|
36
|
+
import "./chunk-WV3O5PGX.js";
|
|
37
|
+
import "./chunk-HFB74CLM.js";
|
|
38
|
+
import "./chunk-REASC2QG.js";
|
|
39
|
+
import "./chunk-IDYWN37T.js";
|
|
40
|
+
import "./chunk-ZPSZZUWF.js";
|
|
41
|
+
export {
|
|
42
|
+
ALWAYS_ALLOWED_TOOLS,
|
|
43
|
+
WORKSPACE_READ_JUDGING_MODES,
|
|
44
|
+
WORKSPACE_READ_ONLY_GIT_TOOLS,
|
|
45
|
+
WORKSPACE_READ_REFUSAL_MODES,
|
|
46
|
+
WORKSPACE_READ_TOOLS,
|
|
47
|
+
evaluatePermission,
|
|
48
|
+
evaluatePermissionDetail,
|
|
49
|
+
hasAdjudicationPolicy,
|
|
50
|
+
hasBashAdjudicationPolicy,
|
|
51
|
+
memoryTargetSpellings,
|
|
52
|
+
missingRuleReason,
|
|
53
|
+
parseRule,
|
|
54
|
+
permissionReasonOf,
|
|
55
|
+
permissionResultOf,
|
|
56
|
+
permissionRuleForToolCall,
|
|
57
|
+
permissionRuleLadder,
|
|
58
|
+
permissionRuleMatchesCall,
|
|
59
|
+
permissionRuleOf,
|
|
60
|
+
primaryArgForRule
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=permissions-7Y35X6HZ.js.map
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LEGACY_BASE_URL_ID,
|
|
3
|
+
MODEL_SELECTION_KEYS,
|
|
4
|
+
PROVIDER_CONNECTION_KEYS,
|
|
5
|
+
WorkspaceProviderRefusalError,
|
|
6
|
+
createWorkspaceProviderGate,
|
|
7
|
+
declaredProviderIds,
|
|
8
|
+
describeApiKeyDeclaration,
|
|
9
|
+
describeDroppedOverride,
|
|
10
|
+
describeLegacyBaseUrl,
|
|
11
|
+
describeOrigin,
|
|
12
|
+
describeReservedProvider,
|
|
13
|
+
describeUnaffectedSelection,
|
|
14
|
+
describeWithheldSelection,
|
|
15
|
+
describeWorkspaceProvider,
|
|
16
|
+
droppedProviderOverrides,
|
|
17
|
+
emptyWorkspaceProviderPartition,
|
|
18
|
+
environmentModelSelections,
|
|
19
|
+
evaluateLegacyBaseUrl,
|
|
20
|
+
legacyBaseUrlFingerprint,
|
|
21
|
+
modelSelectionsOf,
|
|
22
|
+
partitionWorkspaceProviders,
|
|
23
|
+
persistWorkspaceProviderChoice,
|
|
24
|
+
profileModelKey,
|
|
25
|
+
profileOfModelKey,
|
|
26
|
+
providerIdsOf,
|
|
27
|
+
providerPrefixOf,
|
|
28
|
+
unaffectedModelSelections,
|
|
29
|
+
withEnvironmentSelections,
|
|
30
|
+
withheldModelSelections,
|
|
31
|
+
withheldProviderIds,
|
|
32
|
+
withoutWorkspaceProviderOverrides,
|
|
33
|
+
workspaceProviderFingerprint,
|
|
34
|
+
workspaceProviderRefusal
|
|
35
|
+
} from "./chunk-B5FC3MYZ.js";
|
|
36
|
+
import "./chunk-WV3O5PGX.js";
|
|
37
|
+
import "./chunk-HFB74CLM.js";
|
|
38
|
+
import "./chunk-REASC2QG.js";
|
|
39
|
+
import "./chunk-IDYWN37T.js";
|
|
40
|
+
import "./chunk-ZPSZZUWF.js";
|
|
41
|
+
export {
|
|
42
|
+
LEGACY_BASE_URL_ID,
|
|
43
|
+
MODEL_SELECTION_KEYS,
|
|
44
|
+
PROVIDER_CONNECTION_KEYS,
|
|
45
|
+
WorkspaceProviderRefusalError,
|
|
46
|
+
createWorkspaceProviderGate,
|
|
47
|
+
declaredProviderIds,
|
|
48
|
+
describeApiKeyDeclaration,
|
|
49
|
+
describeDroppedOverride,
|
|
50
|
+
describeLegacyBaseUrl,
|
|
51
|
+
describeOrigin,
|
|
52
|
+
describeReservedProvider,
|
|
53
|
+
describeUnaffectedSelection,
|
|
54
|
+
describeWithheldSelection,
|
|
55
|
+
describeWorkspaceProvider,
|
|
56
|
+
droppedProviderOverrides,
|
|
57
|
+
emptyWorkspaceProviderPartition,
|
|
58
|
+
environmentModelSelections,
|
|
59
|
+
evaluateLegacyBaseUrl,
|
|
60
|
+
legacyBaseUrlFingerprint,
|
|
61
|
+
modelSelectionsOf,
|
|
62
|
+
partitionWorkspaceProviders,
|
|
63
|
+
persistWorkspaceProviderChoice,
|
|
64
|
+
profileModelKey,
|
|
65
|
+
profileOfModelKey,
|
|
66
|
+
providerIdsOf,
|
|
67
|
+
providerPrefixOf,
|
|
68
|
+
unaffectedModelSelections,
|
|
69
|
+
withEnvironmentSelections,
|
|
70
|
+
withheldModelSelections,
|
|
71
|
+
withheldProviderIds,
|
|
72
|
+
withoutWorkspaceProviderOverrides,
|
|
73
|
+
workspaceProviderFingerprint,
|
|
74
|
+
workspaceProviderRefusal
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=provider-approvals-5AGH3RVT.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildSandboxExecution,
|
|
3
|
+
createSandbox,
|
|
4
|
+
decideSandboxExecution,
|
|
5
|
+
describeControlPathRefusal,
|
|
6
|
+
hasDomainPolicy,
|
|
7
|
+
matchesExcludedCommand,
|
|
8
|
+
protectedWorkspacePaths,
|
|
9
|
+
readCoreHooksPaths,
|
|
10
|
+
readGitConfigIncludes,
|
|
11
|
+
realSandboxHost,
|
|
12
|
+
sandboxBackendAvailable,
|
|
13
|
+
sandboxCoverage,
|
|
14
|
+
sandboxPolicySummary,
|
|
15
|
+
unbindablePaths,
|
|
16
|
+
unsandboxedRefusalMessage,
|
|
17
|
+
withGitConfigReadOnlyNotice
|
|
18
|
+
} from "./chunk-XJRJVXJR.js";
|
|
19
|
+
import "./chunk-OJBMDM5H.js";
|
|
20
|
+
import "./chunk-YIL6HTJX.js";
|
|
21
|
+
import "./chunk-EEX6QNXV.js";
|
|
22
|
+
import "./chunk-IDYWN37T.js";
|
|
23
|
+
import "./chunk-ZPSZZUWF.js";
|
|
24
|
+
export {
|
|
25
|
+
buildSandboxExecution,
|
|
26
|
+
createSandbox,
|
|
27
|
+
decideSandboxExecution,
|
|
28
|
+
describeControlPathRefusal,
|
|
29
|
+
hasDomainPolicy,
|
|
30
|
+
matchesExcludedCommand,
|
|
31
|
+
protectedWorkspacePaths,
|
|
32
|
+
readCoreHooksPaths,
|
|
33
|
+
readGitConfigIncludes,
|
|
34
|
+
realSandboxHost,
|
|
35
|
+
sandboxBackendAvailable,
|
|
36
|
+
sandboxCoverage,
|
|
37
|
+
sandboxPolicySummary,
|
|
38
|
+
unbindablePaths,
|
|
39
|
+
unsandboxedRefusalMessage,
|
|
40
|
+
withGitConfigReadOnlyNotice
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=sandbox-N2RY72GN.js.map
|
|
@@ -1,31 +1,44 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createDefaultRegistry,
|
|
3
3
|
runAgentLoop
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-KDNWMKXV.js";
|
|
5
|
+
import "./chunk-FPR7SKIE.js";
|
|
6
|
+
import {
|
|
7
|
+
permissionRuleForToolCall
|
|
8
|
+
} from "./chunk-N2G4Q7ME.js";
|
|
9
|
+
import "./chunk-XJRJVXJR.js";
|
|
10
|
+
import "./chunk-AHC7OU75.js";
|
|
11
|
+
import "./chunk-DNFQTSMJ.js";
|
|
12
|
+
import "./chunk-UCFJ43OS.js";
|
|
13
|
+
import "./chunk-HOZXKOE3.js";
|
|
14
|
+
import "./chunk-EFXVSQ5J.js";
|
|
15
|
+
import "./chunk-62EEAUID.js";
|
|
16
|
+
import "./chunk-AJZWLKLQ.js";
|
|
17
|
+
import "./chunk-KXAYUIKP.js";
|
|
18
|
+
import "./chunk-SWPDKLNM.js";
|
|
19
|
+
import "./chunk-2AAOF5B5.js";
|
|
20
|
+
import "./chunk-MEOB2DZA.js";
|
|
21
|
+
import "./chunk-W7SLYS3M.js";
|
|
22
|
+
import "./chunk-JGF5HLSI.js";
|
|
23
|
+
import "./chunk-32WBCUAN.js";
|
|
24
|
+
import "./chunk-RT5SATF7.js";
|
|
25
|
+
import "./chunk-XHAO3K7I.js";
|
|
26
|
+
import "./chunk-SBTU5BEC.js";
|
|
27
|
+
import "./chunk-4DKHLZRI.js";
|
|
28
|
+
import "./chunk-OJBMDM5H.js";
|
|
12
29
|
import {
|
|
13
30
|
getPrimaryArg,
|
|
14
31
|
toolResultErrorMessage,
|
|
15
32
|
toolResultSucceeded
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-5RDRAO4B.js";
|
|
26
|
-
import "./chunk-CAGOB2N4.js";
|
|
27
|
-
import "./chunk-574C6MQR.js";
|
|
28
|
-
import "./chunk-24AXE6SP.js";
|
|
33
|
+
} from "./chunk-YIL6HTJX.js";
|
|
34
|
+
import "./chunk-EEX6QNXV.js";
|
|
35
|
+
import "./chunk-MV5PQNIA.js";
|
|
36
|
+
import "./chunk-B5FC3MYZ.js";
|
|
37
|
+
import "./chunk-WV3O5PGX.js";
|
|
38
|
+
import "./chunk-HFB74CLM.js";
|
|
39
|
+
import "./chunk-REASC2QG.js";
|
|
40
|
+
import "./chunk-IDYWN37T.js";
|
|
41
|
+
import "./chunk-ZPSZZUWF.js";
|
|
29
42
|
|
|
30
43
|
// src/cli/scrollback.ts
|
|
31
44
|
import { createInterface } from "readline/promises";
|
|
@@ -94,7 +107,9 @@ Book turn ${turn}
|
|
|
94
107
|
onUsage: () => {
|
|
95
108
|
}
|
|
96
109
|
},
|
|
97
|
-
options.mode
|
|
110
|
+
options.mode,
|
|
111
|
+
// The line is what the user typed, so its `$name` tokens invoke skills.
|
|
112
|
+
{ typedText: prompt }
|
|
98
113
|
);
|
|
99
114
|
history.length = 0;
|
|
100
115
|
history.push(...updated);
|
|
@@ -119,12 +134,15 @@ function createPromptReader(options) {
|
|
|
119
134
|
};
|
|
120
135
|
}
|
|
121
136
|
async function askPermission(call, read, output) {
|
|
137
|
+
const canRemember = permissionRuleForToolCall(call) !== void 0;
|
|
122
138
|
output.write(
|
|
123
139
|
`[permission] ${call.name}${getPrimaryArg(call.arguments) ? ` ${getPrimaryArg(call.arguments)}` : ""}
|
|
124
|
-
Allow? [y]es/[n]o/[a]lways: `
|
|
140
|
+
Allow? [y]es/[n]o${canRemember ? "/[a]lways" : ""}: `
|
|
125
141
|
);
|
|
126
|
-
const
|
|
127
|
-
if (
|
|
142
|
+
const line = await read("");
|
|
143
|
+
if (line === null) return { result: "deny", reason: "no_approver" };
|
|
144
|
+
const answer = line.trim().toLowerCase();
|
|
145
|
+
if (canRemember && (answer === "a" || answer === "always")) return "always";
|
|
128
146
|
if (answer === "y" || answer === "yes") return "allow";
|
|
129
147
|
return "deny";
|
|
130
148
|
}
|
|
@@ -133,4 +151,4 @@ export {
|
|
|
133
151
|
formatToolResult,
|
|
134
152
|
runScrollbackSession
|
|
135
153
|
};
|
|
136
|
-
//# sourceMappingURL=scrollback-
|
|
154
|
+
//# sourceMappingURL=scrollback-GD76GNM4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/scrollback.ts"],"sourcesContent":["import { createInterface } from 'node:readline/promises';\nimport type { AgentConfig, PermissionMode } from '../types/runtime.js';\nimport type { AgentLoopCallbacks } from '../types/providers.js';\nimport type { Message } from '../types/messages.js';\nimport type { PermissionDecision, PermissionResult, ToolCall, ToolResult } from '../types/tools.js';\nimport { runAgentLoop } from '../agent/loop.js';\nimport { createDefaultRegistry, type ToolRegistry } from '../tools/registry.js';\nimport { getPrimaryArg } from '../tools/primary-arg.js';\nimport { permissionRuleForToolCall } from '../permissions.js';\nimport { toolResultErrorMessage, toolResultSucceeded } from '../tools/result.js';\n\nexport interface ScrollbackOptions {\n mode: PermissionMode;\n input?: NodeJS.ReadableStream;\n output?: { write: (s: string) => boolean | void };\n readPrompt?: () => Promise<string | null>;\n runLoop?: typeof runAgentLoop;\n registry?: ToolRegistry;\n}\n\nexport function formatToolCall(call: ToolCall): string {\n const primary = getPrimaryArg(call.arguments);\n return `\\n[tool] ${call.name}${primary ? ` ${primary}` : ''}\\n`;\n}\n\nexport function formatToolResult(result: ToolResult, call?: ToolCall): string {\n const success = toolResultSucceeded(result);\n const label = success ? '[OK]' : '[ERR]';\n const name = call?.name ?? 'tool';\n const primary = call ? getPrimaryArg(call.arguments) : '';\n const detail = success ? result.content : (toolResultErrorMessage(result) ?? '');\n return `${label} ${name}${primary ? ` ${primary}` : ''}${detail ? `\\n${detail.trimEnd()}` : ''}\\n`;\n}\n\nexport async function runScrollbackSession(\n config: AgentConfig,\n options: ScrollbackOptions,\n): Promise<Message[]> {\n const output = options.output ?? process.stdout;\n const registry =\n options.registry ?? createDefaultRegistry({ agents: config.settings.agents.mode !== 'off' });\n const runLoop = options.runLoop ?? runAgentLoop;\n const history: Message[] = [];\n const toolCalls = new Map<string, ToolCall>();\n const close = createPromptReader(options);\n\n output.write('Book scrollback mode. Terminal scrollback owns history. Type /exit to quit.\\n\\n');\n\n try {\n while (true) {\n const prompt = await close.read('You> ');\n if (prompt === null) break;\n const trimmed = prompt.trim();\n if (!trimmed) continue;\n if (trimmed === '/exit') break;\n if (trimmed === '/clear') {\n history.length = 0;\n output.write('[cleared]\\n');\n continue;\n }\n\n output.write('\\nBook\\n');\n const updated = await runLoop(\n config,\n registry,\n prompt,\n history,\n {\n onText: (text) => output.write(text),\n onReasoning: (text) => output.write(`\\n[thinking] ${text}\\n`),\n onToolCall: (call) => {\n toolCalls.set(call.id, call);\n output.write(formatToolCall(call));\n },\n onToolResult: (result) =>\n output.write(formatToolResult(result, toolCalls.get(result.toolCallId))),\n onError: (error) => output.write(`\\n[error] ${error}\\n`),\n onTurnStart: (turn) => {\n if (turn > 1) output.write(`\\nBook turn ${turn}\\n`);\n },\n onDone: () => output.write('\\n'),\n onPermissionRequired: (call) => askPermission(call, close.read, output),\n onUsage: () => {},\n } satisfies AgentLoopCallbacks,\n options.mode,\n // The line is what the user typed, so its `$name` tokens invoke skills.\n { typedText: prompt },\n );\n\n history.length = 0;\n history.push(...updated);\n output.write('\\n');\n }\n } finally {\n close.close();\n }\n\n return history;\n}\n\nfunction createPromptReader(options: ScrollbackOptions): {\n read: (prompt?: string) => Promise<string | null>;\n close: () => void;\n} {\n if (options.readPrompt)\n return { read: () => options.readPrompt?.() ?? Promise.resolve(null), close: () => {} };\n\n const rl = createInterface({\n input: options.input ?? process.stdin,\n output: process.stdout,\n });\n\n return {\n read: (prompt = 'You> ') => rl.question(prompt),\n close: () => rl.close(),\n };\n}\n\nasync function askPermission(\n call: ToolCall,\n read: (prompt?: string) => Promise<string | null>,\n output: { write: (s: string) => boolean | void },\n): Promise<PermissionResult | PermissionDecision> {\n // \"Always\" is offered only when the call has a rule to save, as on the Ink card: a Bash command\n // holding `*` or spanning lines has none (#521), and neither has an argument holding `*` or `?`.\n const canRemember = permissionRuleForToolCall(call) !== undefined;\n output.write(\n `[permission] ${call.name}${getPrimaryArg(call.arguments) ? ` ${getPrimaryArg(call.arguments)}` : ''}\\nAllow? [y]es/[n]o${canRemember ? '/[a]lways' : ''}: `,\n );\n const line = await read('');\n // The input closed: nobody is left to answer, which is not a person saying no (#264).\n if (line === null) return { result: 'deny', reason: 'no_approver' };\n const answer = line.trim().toLowerCase();\n // Where it is not offered, `a` is no answer, and an unrecognized answer is a no.\n if (canRemember && (answer === 'a' || answer === 'always')) return 'always';\n if (answer === 'y' || answer === 'yes') return 'allow';\n return 'deny';\n}\n"],"mappings":"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","names":[]}
|