@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.
Files changed (177) hide show
  1. package/CHANGELOG.md +3771 -40
  2. package/README.md +135 -1311
  3. package/dist/additional-roots-VAWRQ625.js +32 -0
  4. package/dist/{app-MOXXWEOY.js → app-J7BVPSUH.js} +9648 -5509
  5. package/dist/app-J7BVPSUH.js.map +1 -0
  6. package/dist/chunk-2AAOF5B5.js +28 -0
  7. package/dist/chunk-2AAOF5B5.js.map +1 -0
  8. package/dist/chunk-32WBCUAN.js +660 -0
  9. package/dist/chunk-32WBCUAN.js.map +1 -0
  10. package/dist/chunk-4DKHLZRI.js +120 -0
  11. package/dist/chunk-4DKHLZRI.js.map +1 -0
  12. package/dist/{chunk-CAGOB2N4.js → chunk-62EEAUID.js} +6 -4
  13. package/dist/chunk-62EEAUID.js.map +1 -0
  14. package/dist/chunk-AHC7OU75.js +1124 -0
  15. package/dist/chunk-AHC7OU75.js.map +1 -0
  16. package/dist/{chunk-E75IPST5.js → chunk-AJZWLKLQ.js} +73 -70
  17. package/dist/chunk-AJZWLKLQ.js.map +1 -0
  18. package/dist/chunk-B5FC3MYZ.js +395 -0
  19. package/dist/chunk-B5FC3MYZ.js.map +1 -0
  20. package/dist/{chunk-KWHQ2XXL.js → chunk-DNFQTSMJ.js} +55 -13
  21. package/dist/chunk-DNFQTSMJ.js.map +1 -0
  22. package/dist/{chunk-J7MIZ5CA.js → chunk-E5WLQSKA.js} +719 -89
  23. package/dist/chunk-E5WLQSKA.js.map +1 -0
  24. package/dist/chunk-ECLC4CIJ.js +1181 -0
  25. package/dist/chunk-ECLC4CIJ.js.map +1 -0
  26. package/dist/chunk-EEX6QNXV.js +127 -0
  27. package/dist/chunk-EEX6QNXV.js.map +1 -0
  28. package/dist/chunk-EFXVSQ5J.js +931 -0
  29. package/dist/chunk-EFXVSQ5J.js.map +1 -0
  30. package/dist/{chunk-V4BOYR52.js → chunk-ENLB7NYV.js} +1304 -326
  31. package/dist/chunk-ENLB7NYV.js.map +1 -0
  32. package/dist/chunk-FPR7SKIE.js +6926 -0
  33. package/dist/chunk-FPR7SKIE.js.map +1 -0
  34. package/dist/{chunk-DGMQEI6Y.js → chunk-HFB74CLM.js} +30 -9
  35. package/dist/chunk-HFB74CLM.js.map +1 -0
  36. package/dist/{chunk-5RDRAO4B.js → chunk-HOZXKOE3.js} +37 -1
  37. package/dist/chunk-HOZXKOE3.js.map +1 -0
  38. package/dist/chunk-IDYWN37T.js +36 -0
  39. package/dist/chunk-IDYWN37T.js.map +1 -0
  40. package/dist/chunk-J4F2QLM2.js +273 -0
  41. package/dist/chunk-J4F2QLM2.js.map +1 -0
  42. package/dist/chunk-JGF5HLSI.js +1065 -0
  43. package/dist/chunk-JGF5HLSI.js.map +1 -0
  44. package/dist/{chunk-XIFFTATU.js → chunk-KDNWMKXV.js} +7166 -4237
  45. package/dist/chunk-KDNWMKXV.js.map +1 -0
  46. package/dist/chunk-KXAYUIKP.js +90 -0
  47. package/dist/chunk-KXAYUIKP.js.map +1 -0
  48. package/dist/{chunk-3U5IBM24.js → chunk-MEOB2DZA.js} +12 -2
  49. package/dist/chunk-MEOB2DZA.js.map +1 -0
  50. package/dist/{chunk-WKBO5R4O.js → chunk-MV5PQNIA.js} +2 -2
  51. package/dist/chunk-MV5PQNIA.js.map +1 -0
  52. package/dist/chunk-N2G4Q7ME.js +2672 -0
  53. package/dist/chunk-N2G4Q7ME.js.map +1 -0
  54. package/dist/chunk-OJBMDM5H.js +299 -0
  55. package/dist/chunk-OJBMDM5H.js.map +1 -0
  56. package/dist/{chunk-URLQAXTR.js → chunk-PTDC7ZUP.js} +2 -2
  57. package/dist/chunk-PTDC7ZUP.js.map +1 -0
  58. package/dist/{chunk-574C6MQR.js → chunk-REASC2QG.js} +173 -64
  59. package/dist/chunk-REASC2QG.js.map +1 -0
  60. package/dist/{chunk-7N4J557C.js → chunk-RT5SATF7.js} +1 -1
  61. package/dist/chunk-RT5SATF7.js.map +1 -0
  62. package/dist/chunk-SBTU5BEC.js +114 -0
  63. package/dist/chunk-SBTU5BEC.js.map +1 -0
  64. package/dist/{chunk-5KLVH3PY.js → chunk-SWPDKLNM.js} +5 -3
  65. package/dist/chunk-SWPDKLNM.js.map +1 -0
  66. package/dist/chunk-UCFJ43OS.js +520 -0
  67. package/dist/chunk-UCFJ43OS.js.map +1 -0
  68. package/dist/{chunk-VZQXX3WW.js → chunk-W7SLYS3M.js} +80 -16
  69. package/dist/chunk-W7SLYS3M.js.map +1 -0
  70. package/dist/{chunk-ANSJPYGI.js → chunk-WV3O5PGX.js} +3 -3
  71. package/dist/chunk-WV3O5PGX.js.map +1 -0
  72. package/dist/chunk-XHAO3K7I.js +18 -0
  73. package/dist/chunk-XHAO3K7I.js.map +1 -0
  74. package/dist/chunk-XJRJVXJR.js +1050 -0
  75. package/dist/chunk-XJRJVXJR.js.map +1 -0
  76. package/dist/chunk-YIL6HTJX.js +663 -0
  77. package/dist/chunk-YIL6HTJX.js.map +1 -0
  78. package/dist/{chunk-24AXE6SP.js → chunk-ZPSZZUWF.js} +1 -1
  79. package/dist/chunk-ZPSZZUWF.js.map +1 -0
  80. package/dist/{command-approvals-6Y57VCWZ.js → command-approvals-ZRY66LCW.js} +7 -5
  81. package/dist/context-C3RAP6K5.js +41 -0
  82. package/dist/{hook-approvals-CTUFKEJT.js → hook-approvals-DPQD5H65.js} +6 -5
  83. package/dist/index.js +947 -203
  84. package/dist/index.js.map +1 -1
  85. package/dist/{interactive-assets-CCAAWVKH.js → interactive-assets-73AQO5WP.js} +18 -9
  86. package/dist/interactive-assets-73AQO5WP.js.map +1 -0
  87. package/dist/job-runner.js +166 -111
  88. package/dist/job-runner.js.map +1 -1
  89. package/dist/job-supervisor.d.ts +2 -0
  90. package/dist/job-supervisor.js +121 -0
  91. package/dist/job-supervisor.js.map +1 -0
  92. package/dist/loader-DQNPDKOX.js +27 -0
  93. package/dist/{mcp-approvals-WNPH65BK.js → mcp-approvals-27LJYADQ.js} +6 -5
  94. package/dist/{mcp-config-YIJIES2C.js → mcp-config-GXSODNCM.js} +4 -3
  95. package/dist/memory-store-I6Z54VUN.js +51 -0
  96. package/dist/{model-window-store-YFVNXCIP.js → model-window-store-6VKXXTPJ.js} +9 -4
  97. package/dist/openai-compatible-IPUNBJ53.js +16 -0
  98. package/dist/permission-approvals-Q5IMFEZI.js +15 -0
  99. package/dist/permissions-7Y35X6HZ.js +62 -0
  100. package/dist/provider-approvals-5AGH3RVT.js +76 -0
  101. package/dist/sandbox-N2RY72GN.js +42 -0
  102. package/dist/{scrollback-LUKLIBVI.js → scrollback-GD76GNM4.js} +44 -26
  103. package/dist/scrollback-GD76GNM4.js.map +1 -0
  104. package/dist/sdk.d.ts +2739 -2069
  105. package/dist/sdk.js +77 -42
  106. package/dist/sdk.js.map +1 -1
  107. package/dist/settings-loader-KDBH45AQ.js +43 -0
  108. package/dist/settings-loader-KDBH45AQ.js.map +1 -0
  109. package/dist/{settings-removed-JWWPT4WA.js → settings-removed-3ATWJEF3.js} +2 -2
  110. package/dist/settings-removed-3ATWJEF3.js.map +1 -0
  111. package/dist/shell-selection-Z5WORZU4.js +31 -0
  112. package/dist/shell-selection-Z5WORZU4.js.map +1 -0
  113. package/package.json +25 -24
  114. package/dist/app-MOXXWEOY.js.map +0 -1
  115. package/dist/chunk-24AXE6SP.js.map +0 -1
  116. package/dist/chunk-3U5IBM24.js.map +0 -1
  117. package/dist/chunk-574C6MQR.js.map +0 -1
  118. package/dist/chunk-5GDZ22YP.js +0 -449
  119. package/dist/chunk-5GDZ22YP.js.map +0 -1
  120. package/dist/chunk-5KLVH3PY.js.map +0 -1
  121. package/dist/chunk-5RDRAO4B.js.map +0 -1
  122. package/dist/chunk-7N4J557C.js.map +0 -1
  123. package/dist/chunk-A7JLBK2Y.js +0 -3506
  124. package/dist/chunk-A7JLBK2Y.js.map +0 -1
  125. package/dist/chunk-ANSJPYGI.js.map +0 -1
  126. package/dist/chunk-BTZZUCLI.js +0 -264
  127. package/dist/chunk-BTZZUCLI.js.map +0 -1
  128. package/dist/chunk-C7D4NJ2D.js +0 -217
  129. package/dist/chunk-C7D4NJ2D.js.map +0 -1
  130. package/dist/chunk-CAGOB2N4.js.map +0 -1
  131. package/dist/chunk-DGMQEI6Y.js.map +0 -1
  132. package/dist/chunk-E75IPST5.js.map +0 -1
  133. package/dist/chunk-EYGD6X2T.js +0 -180
  134. package/dist/chunk-EYGD6X2T.js.map +0 -1
  135. package/dist/chunk-GTVB4HEM.js +0 -765
  136. package/dist/chunk-GTVB4HEM.js.map +0 -1
  137. package/dist/chunk-J7MIZ5CA.js.map +0 -1
  138. package/dist/chunk-KWHQ2XXL.js.map +0 -1
  139. package/dist/chunk-L6LK2QIQ.js +0 -657
  140. package/dist/chunk-L6LK2QIQ.js.map +0 -1
  141. package/dist/chunk-MAQXCUR4.js +0 -1007
  142. package/dist/chunk-MAQXCUR4.js.map +0 -1
  143. package/dist/chunk-S4XL7HOM.js +0 -402
  144. package/dist/chunk-S4XL7HOM.js.map +0 -1
  145. package/dist/chunk-URLQAXTR.js.map +0 -1
  146. package/dist/chunk-V4BOYR52.js.map +0 -1
  147. package/dist/chunk-VZQXX3WW.js.map +0 -1
  148. package/dist/chunk-WKBO5R4O.js.map +0 -1
  149. package/dist/chunk-XIFFTATU.js.map +0 -1
  150. package/dist/context-ZC5IFEAX.js +0 -25
  151. package/dist/interactive-assets-CCAAWVKH.js.map +0 -1
  152. package/dist/loader-4IDS2RIE.js +0 -15
  153. package/dist/openai-compatible-RHZUBHV6.js +0 -10
  154. package/dist/permission-approvals-76PVREFD.js +0 -14
  155. package/dist/permissions-CHCKTFQQ.js +0 -28
  156. package/dist/sandbox-CNVAQDA7.js +0 -23
  157. package/dist/scrollback-LUKLIBVI.js.map +0 -1
  158. package/dist/settings-loader-M2QP5TX2.js +0 -21
  159. package/dist/shell-selection-V6QAYXPX.js +0 -17
  160. package/patches/ink+6.8.0.patch +0 -13
  161. package/scripts/apply-ink-patch.mjs +0 -29
  162. package/scripts/ink-patch.mjs +0 -59
  163. package/scripts/verify-ink-patch.mjs +0 -11
  164. /package/dist/{command-approvals-6Y57VCWZ.js.map → additional-roots-VAWRQ625.js.map} +0 -0
  165. /package/dist/{context-ZC5IFEAX.js.map → command-approvals-ZRY66LCW.js.map} +0 -0
  166. /package/dist/{hook-approvals-CTUFKEJT.js.map → context-C3RAP6K5.js.map} +0 -0
  167. /package/dist/{loader-4IDS2RIE.js.map → hook-approvals-DPQD5H65.js.map} +0 -0
  168. /package/dist/{mcp-approvals-WNPH65BK.js.map → loader-DQNPDKOX.js.map} +0 -0
  169. /package/dist/{mcp-config-YIJIES2C.js.map → mcp-approvals-27LJYADQ.js.map} +0 -0
  170. /package/dist/{model-window-store-YFVNXCIP.js.map → mcp-config-GXSODNCM.js.map} +0 -0
  171. /package/dist/{openai-compatible-RHZUBHV6.js.map → memory-store-I6Z54VUN.js.map} +0 -0
  172. /package/dist/{permission-approvals-76PVREFD.js.map → model-window-store-6VKXXTPJ.js.map} +0 -0
  173. /package/dist/{permissions-CHCKTFQQ.js.map → openai-compatible-IPUNBJ53.js.map} +0 -0
  174. /package/dist/{sandbox-CNVAQDA7.js.map → permission-approvals-Q5IMFEZI.js.map} +0 -0
  175. /package/dist/{settings-loader-M2QP5TX2.js.map → permissions-7Y35X6HZ.js.map} +0 -0
  176. /package/dist/{settings-removed-JWWPT4WA.js.map → provider-approvals-5AGH3RVT.js.map} +0 -0
  177. /package/dist/{shell-selection-V6QAYXPX.js.map → sandbox-N2RY72GN.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letrquan/book",
3
- "version": "0.2.0",
3
+ "version": "0.4.0-beta.0",
4
4
  "description": "AI coding agent CLI with rich TUI",
5
5
  "type": "module",
6
6
  "license": "PolyForm-Small-Business-1.0.0",
@@ -24,18 +24,14 @@
24
24
  "agent"
25
25
  ],
26
26
  "engines": {
27
- "node": ">=22.13.0"
27
+ "node": ">=22.19.0"
28
28
  },
29
29
  "packageManager": "npm@11.16.0",
30
30
  "files": [
31
31
  "dist",
32
32
  "README.md",
33
33
  "CHANGELOG.md",
34
- "LICENSE",
35
- "patches/ink+6.8.0.patch",
36
- "scripts/apply-ink-patch.mjs",
37
- "scripts/ink-patch.mjs",
38
- "scripts/verify-ink-patch.mjs"
34
+ "LICENSE"
39
35
  ],
40
36
  "publishConfig": {
41
37
  "access": "public"
@@ -58,8 +54,7 @@
58
54
  "scripts": {
59
55
  "build": "tsup",
60
56
  "dev": "tsx src/index.ts",
61
- "postinstall": "node scripts/apply-ink-patch.mjs",
62
- "typecheck": "tsc --noEmit",
57
+ "typecheck": "tsc --noEmit && tsc -p tsconfig.scripts.json",
63
58
  "pretest": "npm run build",
64
59
  "test": "npm run test:unit && npm run test:contract && npm run test:integration",
65
60
  "test:unit": "vitest run --config vitest.unit.config.ts",
@@ -68,22 +63,24 @@
68
63
  "test:watch": "vitest",
69
64
  "test:coverage": "vitest run --coverage --config vitest.coverage.config.ts",
70
65
  "bench:ui": "node scripts/run-ui-benchmark.mjs",
71
- "verify:ink-patch": "node scripts/verify-ink-patch.mjs",
66
+ "verify:ink": "tsx scripts/verify-ink.ts",
72
67
  "bench:runtime": "tsx src/tui/__benchmarks__/runtime.bench.ts",
73
68
  "eval:edit": "tsx scripts/edit-eval.ts",
74
69
  "eval:compact": "tsx scripts/compact-eval.ts",
70
+ "eval:compact-replay": "tsx scripts/compact-replay.ts",
71
+ "eval:memory": "tsx scripts/memory-eval.ts",
75
72
  "eval:skills": "tsx scripts/skill-eval.ts",
76
73
  "eval:review": "tsx scripts/review-eval.ts",
77
- "apply:ink-patch": "node scripts/apply-ink-patch.mjs",
74
+ "eval:prompt": "tsx scripts/prompt-eval.ts",
78
75
  "lint": "eslint src/ --ext .ts,.tsx --max-warnings 0",
79
- "format": "prettier --write \"src/**/*.{ts,tsx}\"",
80
- "format:check": "prettier --check \"{src,scripts}/**/*.{ts,tsx}\" \"*.config.ts\"",
76
+ "format": "prettier --write \"{src,scripts}/**/*.{ts,tsx}\" \"*.config.ts\" \"*.md\" \"docs/**/*.md\"",
77
+ "format:check": "prettier --check \"{src,scripts}/**/*.{ts,tsx}\" \"*.config.ts\" \"*.md\" \"docs/**/*.md\"",
81
78
  "architecture:check": "tsx scripts/check-architecture.ts",
82
79
  "deadcode:check": "knip",
83
80
  "deadcode:report": "knip --reporter markdown --no-exit-code",
84
81
  "deadcode:json": "knip --reporter json --no-exit-code",
85
- "audit:prod": "npm audit --omit=dev --audit-level=high",
86
- "audit:all": "npm audit --audit-level=high",
82
+ "audit:prod": "tsx scripts/audit-gate.ts --omit=dev",
83
+ "audit:all": "tsx scripts/audit-gate.ts",
87
84
  "version:check": "tsx scripts/verify-release.ts",
88
85
  "package:smoke": "npm run build && tsx scripts/package-smoke.ts",
89
86
  "release:check": "npm run version:check && npm run audit:all && npm run package:smoke",
@@ -94,26 +91,28 @@
94
91
  "@modelcontextprotocol/sdk": "^1.30.0",
95
92
  "commander": "15.0.0",
96
93
  "cross-spawn": "^7.0.6",
97
- "fast-glob": "^3.3.0",
98
94
  "fuse.js": "^7.5.0",
99
95
  "htmlparser2": "^12.0.0",
100
96
  "ignore": "^7.0.6",
101
- "ink": "6.8.0",
97
+ "ink": "7.1.1",
102
98
  "ink-text-input": "^6.0.0",
103
99
  "marked": "^18.0.9",
100
+ "picomatch": "^4.0.7",
104
101
  "react": "^19.2.8",
102
+ "tinyglobby": "^0.2.17",
105
103
  "turndown": "^7.2.4",
106
- "undici": "^6.28.0",
107
- "zod": "3.25.76"
104
+ "undici": "^8.11.2",
105
+ "zod": "4.6.5"
108
106
  },
109
107
  "devDependencies": {
110
108
  "@eslint/js": "^10.0.1",
111
109
  "@types/cross-spawn": "^6.0.6",
112
110
  "@types/node": "^26.2.0",
111
+ "@types/picomatch": "^4.0.3",
113
112
  "@types/react": "^19.2.18",
114
113
  "@types/turndown": "^5.0.6",
115
- "@typescript-eslint/eslint-plugin": "8.67.0",
116
- "@typescript-eslint/parser": "8.67.0",
114
+ "@typescript-eslint/eslint-plugin": "8.71.0",
115
+ "@typescript-eslint/parser": "8.71.0",
117
116
  "@vitest/coverage-v8": "^4.1.9",
118
117
  "@xterm/headless": "^6.0.0",
119
118
  "eslint": "^10.8.1",
@@ -122,18 +121,20 @@
122
121
  "ink-testing-library": "^4.0.0",
123
122
  "knip": "^6.32.2",
124
123
  "node-pty": "^1.1.0",
125
- "patch-package": "^8.0.1",
126
124
  "prettier": "^3.9.6",
125
+ "sharp": "^0.35.4",
127
126
  "tinybench": "^6.1.3",
128
127
  "tsup": "^8.5.0",
129
128
  "tsx": "^4.23.12",
130
129
  "typescript": "5.9.3",
131
- "vitest": "^4.1.9"
130
+ "vitest": "^4.1.11"
132
131
  },
133
132
  "overrides": {
134
133
  "postcss": "8.5.26",
134
+ "sharp": "$sharp",
135
135
  "adm-zip": "^0.6.0",
136
- "fast-uri": "^3.1.7"
136
+ "fast-uri": "^3.1.7",
137
+ "esbuild": "0.28.1"
137
138
  },
138
139
  "allowScripts": {
139
140
  "esbuild@0.27.7": true,