@letrquan/book 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +2747 -40
  2. package/README.md +132 -1311
  3. package/dist/additional-roots-H7UNAEHS.js +31 -0
  4. package/dist/{app-MOXXWEOY.js → app-GE4OHJOC.js} +5740 -4045
  5. package/dist/app-GE4OHJOC.js.map +1 -0
  6. package/dist/{chunk-5GDZ22YP.js → chunk-224FJZLH.js} +99 -108
  7. package/dist/chunk-224FJZLH.js.map +1 -0
  8. package/dist/chunk-2AAOF5B5.js +28 -0
  9. package/dist/chunk-2AAOF5B5.js.map +1 -0
  10. package/dist/{chunk-CAGOB2N4.js → chunk-4AS7LKKQ.js} +6 -4
  11. package/dist/chunk-4AS7LKKQ.js.map +1 -0
  12. package/dist/chunk-525CAZPY.js +120 -0
  13. package/dist/chunk-525CAZPY.js.map +1 -0
  14. package/dist/{chunk-URLQAXTR.js → chunk-56SIEMDX.js} +2 -2
  15. package/dist/chunk-56SIEMDX.js.map +1 -0
  16. package/dist/{chunk-XIFFTATU.js → chunk-5YHTKWJN.js} +5420 -4031
  17. package/dist/chunk-5YHTKWJN.js.map +1 -0
  18. package/dist/chunk-62QL5QUP.js +283 -0
  19. package/dist/chunk-62QL5QUP.js.map +1 -0
  20. package/dist/{chunk-KWHQ2XXL.js → chunk-67UZEWWF.js} +3 -3
  21. package/dist/chunk-67UZEWWF.js.map +1 -0
  22. package/dist/chunk-6OQQOMZR.js +785 -0
  23. package/dist/chunk-6OQQOMZR.js.map +1 -0
  24. package/dist/{chunk-GTVB4HEM.js → chunk-AQEQX4FF.js} +344 -315
  25. package/dist/chunk-AQEQX4FF.js.map +1 -0
  26. package/dist/chunk-C7ADUNPR.js +273 -0
  27. package/dist/chunk-C7ADUNPR.js.map +1 -0
  28. package/dist/{chunk-E75IPST5.js → chunk-EFJ2NH6E.js} +12 -58
  29. package/dist/chunk-EFJ2NH6E.js.map +1 -0
  30. package/dist/{chunk-5KLVH3PY.js → chunk-HQI7NYGX.js} +5 -3
  31. package/dist/chunk-HQI7NYGX.js.map +1 -0
  32. package/dist/chunk-IME7R2UI.js +6541 -0
  33. package/dist/chunk-IME7R2UI.js.map +1 -0
  34. package/dist/chunk-J4F2QLM2.js +273 -0
  35. package/dist/chunk-J4F2QLM2.js.map +1 -0
  36. package/dist/{chunk-MAQXCUR4.js → chunk-J62VZYOB.js} +444 -112
  37. package/dist/chunk-J62VZYOB.js.map +1 -0
  38. package/dist/chunk-JTPOI3KU.js +826 -0
  39. package/dist/chunk-JTPOI3KU.js.map +1 -0
  40. package/dist/{chunk-WKBO5R4O.js → chunk-KBQS35OV.js} +2 -2
  41. package/dist/chunk-KBQS35OV.js.map +1 -0
  42. package/dist/chunk-KXAYUIKP.js +90 -0
  43. package/dist/chunk-KXAYUIKP.js.map +1 -0
  44. package/dist/{chunk-VZQXX3WW.js → chunk-QYBD22H5.js} +1 -1
  45. package/dist/chunk-QYBD22H5.js.map +1 -0
  46. package/dist/{chunk-V4BOYR52.js → chunk-RFJ6Q6LE.js} +763 -198
  47. package/dist/chunk-RFJ6Q6LE.js.map +1 -0
  48. package/dist/{chunk-7N4J557C.js → chunk-RT5SATF7.js} +1 -1
  49. package/dist/chunk-RT5SATF7.js.map +1 -0
  50. package/dist/{chunk-C7D4NJ2D.js → chunk-S4JMID4G.js} +68 -26
  51. package/dist/chunk-S4JMID4G.js.map +1 -0
  52. package/dist/{chunk-ANSJPYGI.js → chunk-SOW4WRQP.js} +3 -3
  53. package/dist/chunk-SOW4WRQP.js.map +1 -0
  54. package/dist/{chunk-J7MIZ5CA.js → chunk-TLX3H2CL.js} +518 -79
  55. package/dist/chunk-TLX3H2CL.js.map +1 -0
  56. package/dist/{chunk-DGMQEI6Y.js → chunk-VPNLCMVR.js} +22 -9
  57. package/dist/chunk-VPNLCMVR.js.map +1 -0
  58. package/dist/{chunk-BTZZUCLI.js → chunk-W3XFHEF4.js} +173 -29
  59. package/dist/chunk-W3XFHEF4.js.map +1 -0
  60. package/dist/{chunk-574C6MQR.js → chunk-X4NJT436.js} +130 -60
  61. package/dist/chunk-X4NJT436.js.map +1 -0
  62. package/dist/chunk-X66I2NQO.js +137 -0
  63. package/dist/chunk-X66I2NQO.js.map +1 -0
  64. package/dist/chunk-XHAO3K7I.js +18 -0
  65. package/dist/chunk-XHAO3K7I.js.map +1 -0
  66. package/dist/{chunk-3U5IBM24.js → chunk-Y2VHN7TC.js} +2 -2
  67. package/dist/chunk-Y2VHN7TC.js.map +1 -0
  68. package/dist/chunk-YC6W4EJH.js +947 -0
  69. package/dist/chunk-YC6W4EJH.js.map +1 -0
  70. package/dist/{chunk-24AXE6SP.js → chunk-ZPSZZUWF.js} +1 -1
  71. package/dist/chunk-ZPSZZUWF.js.map +1 -0
  72. package/dist/{command-approvals-6Y57VCWZ.js → command-approvals-VBIU6BLM.js} +6 -5
  73. package/dist/context-CBOBDY5Q.js +38 -0
  74. package/dist/{hook-approvals-CTUFKEJT.js → hook-approvals-ZVT4V7IM.js} +5 -5
  75. package/dist/index.js +996 -155
  76. package/dist/index.js.map +1 -1
  77. package/dist/{interactive-assets-CCAAWVKH.js → interactive-assets-T4I4SEHU.js} +13 -9
  78. package/dist/interactive-assets-T4I4SEHU.js.map +1 -0
  79. package/dist/job-runner.js +159 -111
  80. package/dist/job-runner.js.map +1 -1
  81. package/dist/job-supervisor.d.ts +2 -0
  82. package/dist/job-supervisor.js +112 -0
  83. package/dist/job-supervisor.js.map +1 -0
  84. package/dist/loader-S77OVTHH.js +18 -0
  85. package/dist/{mcp-approvals-WNPH65BK.js → mcp-approvals-HJ2VDYMC.js} +5 -5
  86. package/dist/{mcp-config-YIJIES2C.js → mcp-config-RNB5LEVE.js} +3 -3
  87. package/dist/memory-store-DZUT5HUH.js +75 -0
  88. package/dist/{model-window-store-YFVNXCIP.js → model-window-store-MTSQ5JDJ.js} +8 -4
  89. package/dist/openai-compatible-2OB54YST.js +14 -0
  90. package/dist/{permission-approvals-76PVREFD.js → permission-approvals-YLV6UC5W.js} +5 -5
  91. package/dist/permissions-DHOKF3W2.js +45 -0
  92. package/dist/sandbox-WRYTZH3D.js +41 -0
  93. package/dist/{scrollback-LUKLIBVI.js → scrollback-35ME2GFX.js} +32 -22
  94. package/dist/scrollback-35ME2GFX.js.map +1 -0
  95. package/dist/sdk.d.ts +2219 -2361
  96. package/dist/sdk.js +53 -38
  97. package/dist/sdk.js.map +1 -1
  98. package/dist/settings-loader-JUNPGAAM.js +35 -0
  99. package/dist/settings-loader-JUNPGAAM.js.map +1 -0
  100. package/dist/{shell-selection-V6QAYXPX.js → shell-selection-CDHGJ4GC.js} +2 -2
  101. package/dist/shell-selection-CDHGJ4GC.js.map +1 -0
  102. package/package.json +23 -22
  103. package/dist/app-MOXXWEOY.js.map +0 -1
  104. package/dist/chunk-24AXE6SP.js.map +0 -1
  105. package/dist/chunk-3U5IBM24.js.map +0 -1
  106. package/dist/chunk-574C6MQR.js.map +0 -1
  107. package/dist/chunk-5GDZ22YP.js.map +0 -1
  108. package/dist/chunk-5KLVH3PY.js.map +0 -1
  109. package/dist/chunk-7N4J557C.js.map +0 -1
  110. package/dist/chunk-A7JLBK2Y.js +0 -3506
  111. package/dist/chunk-A7JLBK2Y.js.map +0 -1
  112. package/dist/chunk-ANSJPYGI.js.map +0 -1
  113. package/dist/chunk-BTZZUCLI.js.map +0 -1
  114. package/dist/chunk-C7D4NJ2D.js.map +0 -1
  115. package/dist/chunk-CAGOB2N4.js.map +0 -1
  116. package/dist/chunk-DGMQEI6Y.js.map +0 -1
  117. package/dist/chunk-E75IPST5.js.map +0 -1
  118. package/dist/chunk-EYGD6X2T.js +0 -180
  119. package/dist/chunk-EYGD6X2T.js.map +0 -1
  120. package/dist/chunk-GTVB4HEM.js.map +0 -1
  121. package/dist/chunk-J7MIZ5CA.js.map +0 -1
  122. package/dist/chunk-KWHQ2XXL.js.map +0 -1
  123. package/dist/chunk-L6LK2QIQ.js +0 -657
  124. package/dist/chunk-L6LK2QIQ.js.map +0 -1
  125. package/dist/chunk-MAQXCUR4.js.map +0 -1
  126. package/dist/chunk-S4XL7HOM.js +0 -402
  127. package/dist/chunk-S4XL7HOM.js.map +0 -1
  128. package/dist/chunk-URLQAXTR.js.map +0 -1
  129. package/dist/chunk-V4BOYR52.js.map +0 -1
  130. package/dist/chunk-VZQXX3WW.js.map +0 -1
  131. package/dist/chunk-WKBO5R4O.js.map +0 -1
  132. package/dist/chunk-XIFFTATU.js.map +0 -1
  133. package/dist/context-ZC5IFEAX.js +0 -25
  134. package/dist/interactive-assets-CCAAWVKH.js.map +0 -1
  135. package/dist/loader-4IDS2RIE.js +0 -15
  136. package/dist/openai-compatible-RHZUBHV6.js +0 -10
  137. package/dist/permissions-CHCKTFQQ.js +0 -28
  138. package/dist/sandbox-CNVAQDA7.js +0 -23
  139. package/dist/scrollback-LUKLIBVI.js.map +0 -1
  140. package/dist/settings-loader-M2QP5TX2.js +0 -21
  141. package/patches/ink+6.8.0.patch +0 -13
  142. package/scripts/apply-ink-patch.mjs +0 -29
  143. package/scripts/ink-patch.mjs +0 -59
  144. package/scripts/verify-ink-patch.mjs +0 -11
  145. /package/dist/{command-approvals-6Y57VCWZ.js.map → additional-roots-H7UNAEHS.js.map} +0 -0
  146. /package/dist/{context-ZC5IFEAX.js.map → command-approvals-VBIU6BLM.js.map} +0 -0
  147. /package/dist/{hook-approvals-CTUFKEJT.js.map → context-CBOBDY5Q.js.map} +0 -0
  148. /package/dist/{loader-4IDS2RIE.js.map → hook-approvals-ZVT4V7IM.js.map} +0 -0
  149. /package/dist/{mcp-approvals-WNPH65BK.js.map → loader-S77OVTHH.js.map} +0 -0
  150. /package/dist/{mcp-config-YIJIES2C.js.map → mcp-approvals-HJ2VDYMC.js.map} +0 -0
  151. /package/dist/{model-window-store-YFVNXCIP.js.map → mcp-config-RNB5LEVE.js.map} +0 -0
  152. /package/dist/{openai-compatible-RHZUBHV6.js.map → memory-store-DZUT5HUH.js.map} +0 -0
  153. /package/dist/{permission-approvals-76PVREFD.js.map → model-window-store-MTSQ5JDJ.js.map} +0 -0
  154. /package/dist/{permissions-CHCKTFQQ.js.map → openai-compatible-2OB54YST.js.map} +0 -0
  155. /package/dist/{sandbox-CNVAQDA7.js.map → permission-approvals-YLV6UC5W.js.map} +0 -0
  156. /package/dist/{settings-loader-M2QP5TX2.js.map → permissions-DHOKF3W2.js.map} +0 -0
  157. /package/dist/{shell-selection-V6QAYXPX.js.map → sandbox-WRYTZH3D.js.map} +0 -0
@@ -1,25 +0,0 @@
1
- import {
2
- AgentContextCache,
3
- buildMessages,
4
- buildSystemPrompt,
5
- buildSystemPromptZones
6
- } from "./chunk-A7JLBK2Y.js";
7
- import "./chunk-KWHQ2XXL.js";
8
- import "./chunk-VZQXX3WW.js";
9
- import "./chunk-E75IPST5.js";
10
- import "./chunk-5KLVH3PY.js";
11
- import "./chunk-5GDZ22YP.js";
12
- import "./chunk-BTZZUCLI.js";
13
- import "./chunk-WKBO5R4O.js";
14
- import "./chunk-ANSJPYGI.js";
15
- import "./chunk-DGMQEI6Y.js";
16
- import "./chunk-5RDRAO4B.js";
17
- import "./chunk-574C6MQR.js";
18
- import "./chunk-24AXE6SP.js";
19
- export {
20
- AgentContextCache,
21
- buildMessages,
22
- buildSystemPrompt,
23
- buildSystemPromptZones
24
- };
25
- //# sourceMappingURL=context-ZC5IFEAX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tui/interactive-assets.ts"],"sourcesContent":["import { discoverCommands } from '../commands/loader.js';\r\nimport { discoverSkills, type Skill } from '../skills.js';\r\nimport type { SlashCommand } from '../types/commands.js';\r\nimport type { AgentConfig } from '../types/runtime.js';\r\nimport { listCustomThemes, resolveTheme, type ResolvedTheme } from './theme.js';\r\n\r\nexport interface InteractiveAssets {\r\n commands: SlashCommand[];\r\n skills: Skill[];\r\n customThemes: string[];\r\n initialTheme: ResolvedTheme | null;\r\n}\r\n\r\n/** Load filesystem-backed UI metadata before React begins rendering. */\r\nexport function loadInteractiveAssets(\r\n config: Pick<AgentConfig, 'workspace' | 'settings'>,\r\n): InteractiveAssets {\r\n return {\r\n commands: discoverCommands(config.workspace),\r\n skills: discoverSkills(config.workspace, config.settings.skills.overrides, {\r\n executionOverrides: config.settings.skills.execution,\r\n enabled: config.settings.skills.enabled,\r\n }),\r\n customThemes: listCustomThemes(config.workspace),\r\n initialTheme: resolveTheme(config.workspace, config.settings.theme ?? 'apple'),\r\n };\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;AAcO,SAAS,sBACd,QACmB;AACnB,SAAO;AAAA,IACL,UAAU,iBAAiB,OAAO,SAAS;AAAA,IAC3C,QAAQ,eAAe,OAAO,WAAW,OAAO,SAAS,OAAO,WAAW;AAAA,MACzE,oBAAoB,OAAO,SAAS,OAAO;AAAA,MAC3C,SAAS,OAAO,SAAS,OAAO;AAAA,IAClC,CAAC;AAAA,IACD,cAAc,iBAAiB,OAAO,SAAS;AAAA,IAC/C,cAAc,aAAa,OAAO,WAAW,OAAO,SAAS,SAAS,OAAO;AAAA,EAC/E;AACF;","names":[]}
@@ -1,15 +0,0 @@
1
- import {
2
- discoverCommands,
3
- generateCommandListing,
4
- resolveCommandBody
5
- } from "./chunk-E75IPST5.js";
6
- import "./chunk-5KLVH3PY.js";
7
- import "./chunk-DGMQEI6Y.js";
8
- import "./chunk-574C6MQR.js";
9
- import "./chunk-24AXE6SP.js";
10
- export {
11
- discoverCommands,
12
- generateCommandListing,
13
- resolveCommandBody
14
- };
15
- //# sourceMappingURL=loader-4IDS2RIE.js.map
@@ -1,10 +0,0 @@
1
- import {
2
- chatCompletionStream,
3
- convertTools
4
- } from "./chunk-GTVB4HEM.js";
5
- import "./chunk-7N4J557C.js";
6
- export {
7
- chatCompletionStream,
8
- convertTools
9
- };
10
- //# sourceMappingURL=openai-compatible-RHZUBHV6.js.map
@@ -1,28 +0,0 @@
1
- import {
2
- evaluatePermission,
3
- evaluatePermissionDetail,
4
- hasAdjudicationPolicy,
5
- parseRule,
6
- permissionResultOf,
7
- permissionRuleForToolCall,
8
- permissionRuleLadder,
9
- permissionRuleMatchesCall,
10
- permissionRuleOf,
11
- primaryArgForRule
12
- } from "./chunk-MAQXCUR4.js";
13
- import "./chunk-5GDZ22YP.js";
14
- import "./chunk-EYGD6X2T.js";
15
- import "./chunk-24AXE6SP.js";
16
- export {
17
- evaluatePermission,
18
- evaluatePermissionDetail,
19
- hasAdjudicationPolicy,
20
- parseRule,
21
- permissionResultOf,
22
- permissionRuleForToolCall,
23
- permissionRuleLadder,
24
- permissionRuleMatchesCall,
25
- permissionRuleOf,
26
- primaryArgForRule
27
- };
28
- //# sourceMappingURL=permissions-CHCKTFQQ.js.map
@@ -1,23 +0,0 @@
1
- import {
2
- buildSandboxExecution,
3
- createSandbox,
4
- hasDomainPolicy,
5
- matchesExcludedCommand,
6
- sandboxBackendAvailable,
7
- sandboxCoverage,
8
- sandboxPolicySummary,
9
- unbindablePaths,
10
- unsandboxedRefusalMessage
11
- } from "./chunk-EYGD6X2T.js";
12
- export {
13
- buildSandboxExecution,
14
- createSandbox,
15
- hasDomainPolicy,
16
- matchesExcludedCommand,
17
- sandboxBackendAvailable,
18
- sandboxCoverage,
19
- sandboxPolicySummary,
20
- unbindablePaths,
21
- unsandboxedRefusalMessage
22
- };
23
- //# sourceMappingURL=sandbox-CNVAQDA7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/scrollback.ts"],"sourcesContent":["import { createInterface } from 'node:readline/promises';\r\nimport type { AgentConfig, PermissionMode } from '../types/runtime.js';\r\nimport type { AgentLoopCallbacks } from '../types/providers.js';\r\nimport type { Message } from '../types/messages.js';\r\nimport type { ToolCall, ToolResult } from '../types/tools.js';\r\nimport { runAgentLoop } from '../agent/loop.js';\r\nimport { createDefaultRegistry, type ToolRegistry } from '../tools/registry.js';\r\nimport { getPrimaryArg } from '../tools/primary-arg.js';\r\nimport { toolResultErrorMessage, toolResultSucceeded } from '../tools/result.js';\r\n\r\nexport interface ScrollbackOptions {\r\n mode: PermissionMode;\r\n input?: NodeJS.ReadableStream;\r\n output?: { write: (s: string) => boolean | void };\r\n readPrompt?: () => Promise<string | null>;\r\n runLoop?: typeof runAgentLoop;\r\n registry?: ToolRegistry;\r\n}\r\n\r\nexport function formatToolCall(call: ToolCall): string {\r\n const primary = getPrimaryArg(call.arguments);\r\n return `\\n[tool] ${call.name}${primary ? ` ${primary}` : ''}\\n`;\r\n}\r\n\r\nexport function formatToolResult(result: ToolResult, call?: ToolCall): string {\r\n const success = toolResultSucceeded(result);\r\n const label = success ? '[OK]' : '[ERR]';\r\n const name = call?.name ?? 'tool';\r\n const primary = call ? getPrimaryArg(call.arguments) : '';\r\n const detail = success ? result.content : (toolResultErrorMessage(result) ?? '');\r\n return `${label} ${name}${primary ? ` ${primary}` : ''}${detail ? `\\n${detail.trimEnd()}` : ''}\\n`;\r\n}\r\n\r\nexport async function runScrollbackSession(\r\n config: AgentConfig,\r\n options: ScrollbackOptions,\r\n): Promise<Message[]> {\r\n const output = options.output ?? process.stdout;\r\n const registry =\r\n options.registry ?? createDefaultRegistry({ agents: config.settings.agents.mode !== 'off' });\r\n const runLoop = options.runLoop ?? runAgentLoop;\r\n const history: Message[] = [];\r\n const toolCalls = new Map<string, ToolCall>();\r\n const close = createPromptReader(options);\r\n\r\n output.write('Book scrollback mode. Terminal scrollback owns history. Type /exit to quit.\\n\\n');\r\n\r\n try {\r\n while (true) {\r\n const prompt = await close.read('You> ');\r\n if (prompt === null) break;\r\n const trimmed = prompt.trim();\r\n if (!trimmed) continue;\r\n if (trimmed === '/exit') break;\r\n if (trimmed === '/clear') {\r\n history.length = 0;\r\n output.write('[cleared]\\n');\r\n continue;\r\n }\r\n\r\n output.write('\\nBook\\n');\r\n const updated = await runLoop(\r\n config,\r\n registry,\r\n prompt,\r\n history,\r\n {\r\n onText: (text) => output.write(text),\r\n onReasoning: (text) => output.write(`\\n[thinking] ${text}\\n`),\r\n onToolCall: (call) => {\r\n toolCalls.set(call.id, call);\r\n output.write(formatToolCall(call));\r\n },\r\n onToolResult: (result) =>\r\n output.write(formatToolResult(result, toolCalls.get(result.toolCallId))),\r\n onError: (error) => output.write(`\\n[error] ${error}\\n`),\r\n onTurnStart: (turn) => {\r\n if (turn > 1) output.write(`\\nBook turn ${turn}\\n`);\r\n },\r\n onDone: () => output.write('\\n'),\r\n onPermissionRequired: (call) => askPermission(call, close.read, output),\r\n onUsage: () => {},\r\n } satisfies AgentLoopCallbacks,\r\n options.mode,\r\n );\r\n\r\n history.length = 0;\r\n history.push(...updated);\r\n output.write('\\n');\r\n }\r\n } finally {\r\n close.close();\r\n }\r\n\r\n return history;\r\n}\r\n\r\nfunction createPromptReader(options: ScrollbackOptions): {\r\n read: (prompt?: string) => Promise<string | null>;\r\n close: () => void;\r\n} {\r\n if (options.readPrompt)\r\n return { read: () => options.readPrompt?.() ?? Promise.resolve(null), close: () => {} };\r\n\r\n const rl = createInterface({\r\n input: options.input ?? process.stdin,\r\n output: process.stdout,\r\n });\r\n\r\n return {\r\n read: (prompt = 'You> ') => rl.question(prompt),\r\n close: () => rl.close(),\r\n };\r\n}\r\n\r\nasync function askPermission(\r\n call: ToolCall,\r\n read: (prompt?: string) => Promise<string | null>,\r\n output: { write: (s: string) => boolean | void },\r\n): Promise<'allow' | 'deny' | 'always'> {\r\n output.write(\r\n `[permission] ${call.name}${getPrimaryArg(call.arguments) ? ` ${getPrimaryArg(call.arguments)}` : ''}\\nAllow? [y]es/[n]o/[a]lways: `,\r\n );\r\n const answer = (await read(''))?.trim().toLowerCase();\r\n if (answer === 'a' || answer === 'always') return 'always';\r\n if (answer === 'y' || answer === 'yes') return 'allow';\r\n return 'deny';\r\n}\r\n"],"mappings":"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","names":[]}
@@ -1,21 +0,0 @@
1
- import {
2
- loadSettingsFile,
3
- mergeSettings,
4
- migrateLegacyPermissions,
5
- resolveSettings,
6
- settingsLayerPaths
7
- } from "./chunk-BTZZUCLI.js";
8
- import "./chunk-WKBO5R4O.js";
9
- import "./chunk-ANSJPYGI.js";
10
- import "./chunk-DGMQEI6Y.js";
11
- import "./chunk-5RDRAO4B.js";
12
- import "./chunk-574C6MQR.js";
13
- import "./chunk-24AXE6SP.js";
14
- export {
15
- loadSettingsFile,
16
- mergeSettings,
17
- migrateLegacyPermissions,
18
- resolveSettings,
19
- settingsLayerPaths
20
- };
21
- //# sourceMappingURL=settings-loader-M2QP5TX2.js.map
@@ -1,13 +0,0 @@
1
- diff --git a/node_modules/ink/build/log-update.js b/node_modules/ink/build/log-update.js
2
- index 73e297d..06c1a22 100644
3
- --- a/node_modules/ink/build/log-update.js
4
- +++ b/node_modules/ink/build/log-update.js
5
- @@ -161,7 +161,7 @@ const createIncremental = (stream, { showCursor = false } = {}) => {
6
- buffer.push(ansiEscapes.eraseLines(previousVisible - visibleCount + extraSlot), ansiEscapes.cursorUp(visibleCount));
7
- }
8
- else {
9
- - buffer.push(ansiEscapes.cursorUp(previousVisible - 1));
10
- + buffer.push(ansiEscapes.cursorUp(previousLines.length - 1));
11
- }
12
- for (let i = 0; i < visibleCount; i++) {
13
- const isLastLine = i === visibleCount - 1;
@@ -1,29 +0,0 @@
1
- import { createRequire } from 'node:module';
2
- import { spawnSync } from 'node:child_process';
3
- import {
4
- assertInkVersionMatchesPatch,
5
- assertRendererPatchApplied,
6
- resolveInkPatch,
7
- } from './ink-patch.mjs';
8
-
9
- const patch = resolveInkPatch();
10
- if (!patch) process.exit(0);
11
-
12
- const require = createRequire(import.meta.url);
13
- let patchPackagePath;
14
- try {
15
- patchPackagePath = require.resolve('patch-package');
16
- } catch {
17
- // Production tarballs do not include devDependencies; their install must remain usable.
18
- process.exit(0);
19
- }
20
-
21
- // Checked before patch-package runs, because patch-package itself only warns on a version
22
- // mismatch and applies the patch regardless.
23
- assertInkVersionMatchesPatch(patch);
24
-
25
- const result = spawnSync(process.execPath, [patchPackagePath], { stdio: 'inherit' });
26
- if (result.error) throw result.error;
27
- if (result.status !== 0) process.exit(result.status ?? 1);
28
-
29
- assertRendererPatchApplied(patch);
@@ -1,59 +0,0 @@
1
- import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
- import { createRequire } from 'node:module';
3
- import { dirname, join } from 'node:path';
4
-
5
- const require = createRequire(import.meta.url);
6
-
7
- /** The single renderer line the patch rewrites — see patches/ink+6.8.0.patch. */
8
- export const PATCHED_RENDERER_CALL = 'ansiEscapes.cursorUp(previousLines.length - 1)';
9
-
10
- /**
11
- * Locate the ink renderer patch and the ink install it targets, or undefined when either is
12
- * absent — production tarballs ship neither the patches directory nor a resolvable dev tree.
13
- */
14
- export function resolveInkPatch(root = process.cwd()) {
15
- const patchesDir = join(root, 'patches');
16
- if (!existsSync(patchesDir)) return undefined;
17
-
18
- const patchFile = readdirSync(patchesDir).find(
19
- (name) => name.startsWith('ink+') && name.endsWith('.patch'),
20
- );
21
- if (!patchFile) return undefined;
22
-
23
- let buildDir;
24
- try {
25
- buildDir = dirname(require.resolve('ink'));
26
- } catch {
27
- return undefined;
28
- }
29
-
30
- return {
31
- patchPath: join(patchesDir, patchFile),
32
- patchFile,
33
- patchedVersion: patchFile.slice('ink+'.length, -'.patch'.length),
34
- installedVersion: JSON.parse(readFileSync(join(buildDir, '..', 'package.json'), 'utf8'))
35
- .version,
36
- logUpdatePath: join(buildDir, 'log-update.js'),
37
- };
38
- }
39
-
40
- /**
41
- * patch-package matches patches by package name alone, so `ink+6.8.0.patch` still applies to a
42
- * later ink and downgrades the version mismatch to a warning. Pin the version so a bump fails
43
- * instead of silently grafting the 6.8 renderer fix onto a renderer it was never written for.
44
- */
45
- export function assertInkVersionMatchesPatch({ patchFile, patchedVersion, installedVersion }) {
46
- if (installedVersion === patchedVersion) return;
47
- throw new Error(
48
- `Ink renderer patch targets ink@${patchedVersion} but ink@${installedVersion} is installed.\n` +
49
- `patch-package only warns about this and applies the patch anyway.\n` +
50
- `Re-verify TUI rendering against ink@${installedVersion}, then run \`npx patch-package ink\` ` +
51
- `to retarget ${patchFile}.`,
52
- );
53
- }
54
-
55
- export function assertRendererPatchApplied({ patchedVersion, logUpdatePath }) {
56
- const source = readFileSync(logUpdatePath, 'utf8');
57
- if (source.includes(PATCHED_RENDERER_CALL)) return;
58
- throw new Error(`Ink ${patchedVersion} renderer patch is missing from ${logUpdatePath}`);
59
- }
@@ -1,11 +0,0 @@
1
- import {
2
- assertInkVersionMatchesPatch,
3
- assertRendererPatchApplied,
4
- resolveInkPatch,
5
- } from './ink-patch.mjs';
6
-
7
- const patch = resolveInkPatch();
8
- if (!patch) throw new Error('No ink renderer patch found in patches/');
9
-
10
- assertInkVersionMatchesPatch(patch);
11
- assertRendererPatchApplied(patch);