@knowzai/cli 0.1.0 → 0.2.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 (321) hide show
  1. package/assets/portable/.env.example +3 -0
  2. package/assets/portable/docker-compose.yml +18 -0
  3. package/assets/portable/releases.json +22 -0
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/base-command.d.ts +21 -2
  6. package/dist/base-command.d.ts.map +1 -1
  7. package/dist/base-command.js +47 -4
  8. package/dist/base-command.js.map +1 -1
  9. package/dist/commands/ask.d.ts.map +1 -1
  10. package/dist/commands/ask.js +5 -1
  11. package/dist/commands/ask.js.map +1 -1
  12. package/dist/commands/auth/status.d.ts +1 -1
  13. package/dist/commands/auth/status.d.ts.map +1 -1
  14. package/dist/commands/auth/status.js +4 -0
  15. package/dist/commands/auth/status.js.map +1 -1
  16. package/dist/commands/chat.d.ts +5 -0
  17. package/dist/commands/chat.d.ts.map +1 -1
  18. package/dist/commands/chat.js +32 -13
  19. package/dist/commands/chat.js.map +1 -1
  20. package/dist/commands/config/get.d.ts.map +1 -1
  21. package/dist/commands/config/get.js +3 -1
  22. package/dist/commands/config/get.js.map +1 -1
  23. package/dist/commands/config/list.d.ts.map +1 -1
  24. package/dist/commands/config/list.js +12 -4
  25. package/dist/commands/config/list.js.map +1 -1
  26. package/dist/commands/doctor.js +1 -1
  27. package/dist/commands/doctor.js.map +1 -1
  28. package/dist/commands/export.d.ts +27 -0
  29. package/dist/commands/export.d.ts.map +1 -0
  30. package/dist/commands/export.js +155 -0
  31. package/dist/commands/export.js.map +1 -0
  32. package/dist/commands/import.d.ts +27 -0
  33. package/dist/commands/import.d.ts.map +1 -0
  34. package/dist/commands/import.js +124 -0
  35. package/dist/commands/import.js.map +1 -0
  36. package/dist/commands/index/scan.d.ts.map +1 -1
  37. package/dist/commands/index/scan.js +24 -5
  38. package/dist/commands/index/scan.js.map +1 -1
  39. package/dist/commands/knowledge/amend.d.ts +1 -0
  40. package/dist/commands/knowledge/amend.d.ts.map +1 -1
  41. package/dist/commands/knowledge/amend.js +11 -2
  42. package/dist/commands/knowledge/amend.js.map +1 -1
  43. package/dist/commands/knowledge/attach.d.ts +19 -0
  44. package/dist/commands/knowledge/attach.d.ts.map +1 -0
  45. package/dist/commands/knowledge/attach.js +51 -0
  46. package/dist/commands/knowledge/attach.js.map +1 -0
  47. package/dist/commands/knowledge/create.d.ts +9 -1
  48. package/dist/commands/knowledge/create.d.ts.map +1 -1
  49. package/dist/commands/knowledge/create.js +26 -4
  50. package/dist/commands/knowledge/create.js.map +1 -1
  51. package/dist/commands/knowledge/update.d.ts +1 -0
  52. package/dist/commands/knowledge/update.d.ts.map +1 -1
  53. package/dist/commands/knowledge/update.js +4 -1
  54. package/dist/commands/knowledge/update.js.map +1 -1
  55. package/dist/commands/login.d.ts +19 -3
  56. package/dist/commands/login.d.ts.map +1 -1
  57. package/dist/commands/login.js +113 -64
  58. package/dist/commands/login.js.map +1 -1
  59. package/dist/commands/logout.d.ts +2 -0
  60. package/dist/commands/logout.d.ts.map +1 -1
  61. package/dist/commands/logout.js +35 -1
  62. package/dist/commands/logout.js.map +1 -1
  63. package/dist/commands/mcp/serve.d.ts +16 -0
  64. package/dist/commands/mcp/serve.d.ts.map +1 -0
  65. package/dist/commands/mcp/serve.js +50 -0
  66. package/dist/commands/mcp/serve.js.map +1 -0
  67. package/dist/commands/menu.d.ts.map +1 -1
  68. package/dist/commands/menu.js +39 -3
  69. package/dist/commands/menu.js.map +1 -1
  70. package/dist/commands/peer/accept-fingerprint.d.ts +17 -0
  71. package/dist/commands/peer/accept-fingerprint.d.ts.map +1 -0
  72. package/dist/commands/peer/accept-fingerprint.js +35 -0
  73. package/dist/commands/peer/accept-fingerprint.js.map +1 -0
  74. package/dist/commands/peer/add.d.ts +22 -0
  75. package/dist/commands/peer/add.d.ts.map +1 -0
  76. package/dist/commands/peer/add.js +44 -0
  77. package/dist/commands/peer/add.js.map +1 -0
  78. package/dist/commands/peer/cancel.d.ts +13 -0
  79. package/dist/commands/peer/cancel.d.ts.map +1 -0
  80. package/dist/commands/peer/cancel.js +20 -0
  81. package/dist/commands/peer/cancel.js.map +1 -0
  82. package/dist/commands/peer/link.d.ts +16 -0
  83. package/dist/commands/peer/link.d.ts.map +1 -0
  84. package/dist/commands/peer/link.js +32 -0
  85. package/dist/commands/peer/link.js.map +1 -0
  86. package/dist/commands/peer/links.d.ts +12 -0
  87. package/dist/commands/peer/links.d.ts.map +1 -0
  88. package/dist/commands/peer/links.js +25 -0
  89. package/dist/commands/peer/links.js.map +1 -0
  90. package/dist/commands/peer/list.d.ts +10 -0
  91. package/dist/commands/peer/list.d.ts.map +1 -0
  92. package/dist/commands/peer/list.js +22 -0
  93. package/dist/commands/peer/list.js.map +1 -0
  94. package/dist/commands/peer/pull.d.ts +19 -0
  95. package/dist/commands/peer/pull.d.ts.map +1 -0
  96. package/dist/commands/peer/pull.js +30 -0
  97. package/dist/commands/peer/pull.js.map +1 -0
  98. package/dist/commands/peer/push.d.ts +19 -0
  99. package/dist/commands/peer/push.d.ts.map +1 -0
  100. package/dist/commands/peer/push.js +30 -0
  101. package/dist/commands/peer/push.js.map +1 -0
  102. package/dist/commands/peer/remove.d.ts +12 -0
  103. package/dist/commands/peer/remove.d.ts.map +1 -0
  104. package/dist/commands/peer/remove.js +19 -0
  105. package/dist/commands/peer/remove.js.map +1 -0
  106. package/dist/commands/peer/rotate-key.d.ts +14 -0
  107. package/dist/commands/peer/rotate-key.d.ts.map +1 -0
  108. package/dist/commands/peer/rotate-key.js +26 -0
  109. package/dist/commands/peer/rotate-key.js.map +1 -0
  110. package/dist/commands/peer/run.d.ts +13 -0
  111. package/dist/commands/peer/run.d.ts.map +1 -0
  112. package/dist/commands/peer/run.js +31 -0
  113. package/dist/commands/peer/run.js.map +1 -0
  114. package/dist/commands/peer/runs.d.ts +15 -0
  115. package/dist/commands/peer/runs.d.ts.map +1 -0
  116. package/dist/commands/peer/runs.js +32 -0
  117. package/dist/commands/peer/runs.js.map +1 -0
  118. package/dist/commands/peer/test.d.ts +13 -0
  119. package/dist/commands/peer/test.d.ts.map +1 -0
  120. package/dist/commands/peer/test.js +30 -0
  121. package/dist/commands/peer/test.js.map +1 -0
  122. package/dist/commands/peer/unlink.d.ts +13 -0
  123. package/dist/commands/peer/unlink.d.ts.map +1 -0
  124. package/dist/commands/peer/unlink.js +20 -0
  125. package/dist/commands/peer/unlink.js.map +1 -0
  126. package/dist/commands/pg/status.d.ts.map +1 -1
  127. package/dist/commands/pg/status.js +6 -3
  128. package/dist/commands/pg/status.js.map +1 -1
  129. package/dist/commands/pg/up.d.ts.map +1 -1
  130. package/dist/commands/pg/up.js +9 -4
  131. package/dist/commands/pg/up.js.map +1 -1
  132. package/dist/commands/platform/status.d.ts.map +1 -1
  133. package/dist/commands/platform/status.js +4 -4
  134. package/dist/commands/platform/status.js.map +1 -1
  135. package/dist/commands/profile/purge.d.ts +20 -0
  136. package/dist/commands/profile/purge.d.ts.map +1 -0
  137. package/dist/commands/profile/purge.js +43 -0
  138. package/dist/commands/profile/purge.js.map +1 -0
  139. package/dist/commands/repo/context.d.ts.map +1 -1
  140. package/dist/commands/repo/context.js +3 -1
  141. package/dist/commands/repo/context.js.map +1 -1
  142. package/dist/commands/repo/graph.d.ts +3 -6
  143. package/dist/commands/repo/graph.d.ts.map +1 -1
  144. package/dist/commands/repo/graph.js +24 -40
  145. package/dist/commands/repo/graph.js.map +1 -1
  146. package/dist/commands/repo/index/index.d.ts +1 -0
  147. package/dist/commands/repo/index/index.d.ts.map +1 -1
  148. package/dist/commands/repo/index/index.js +100 -12
  149. package/dist/commands/repo/index/index.js.map +1 -1
  150. package/dist/commands/repo/search.d.ts.map +1 -1
  151. package/dist/commands/repo/search.js +2 -0
  152. package/dist/commands/repo/search.js.map +1 -1
  153. package/dist/commands/repo/setup.d.ts +9 -2
  154. package/dist/commands/repo/setup.d.ts.map +1 -1
  155. package/dist/commands/repo/setup.js +84 -8
  156. package/dist/commands/repo/setup.js.map +1 -1
  157. package/dist/commands/status.d.ts +4 -0
  158. package/dist/commands/status.d.ts.map +1 -1
  159. package/dist/commands/status.js +21 -3
  160. package/dist/commands/status.js.map +1 -1
  161. package/dist/commands/transfer.d.ts +30 -0
  162. package/dist/commands/transfer.d.ts.map +1 -0
  163. package/dist/commands/transfer.js +140 -0
  164. package/dist/commands/transfer.js.map +1 -0
  165. package/dist/commands/tui.js +1 -1
  166. package/dist/commands/tui.js.map +1 -1
  167. package/dist/commands/up.d.ts +5 -2
  168. package/dist/commands/up.d.ts.map +1 -1
  169. package/dist/commands/up.js +41 -12
  170. package/dist/commands/up.js.map +1 -1
  171. package/dist/lib/attach.d.ts +48 -0
  172. package/dist/lib/attach.d.ts.map +1 -0
  173. package/dist/lib/attach.js +91 -0
  174. package/dist/lib/attach.js.map +1 -0
  175. package/dist/lib/chat-render.d.ts +39 -0
  176. package/dist/lib/chat-render.d.ts.map +1 -0
  177. package/dist/lib/chat-render.js +77 -0
  178. package/dist/lib/chat-render.js.map +1 -0
  179. package/dist/lib/cmek-guard.d.ts +52 -0
  180. package/dist/lib/cmek-guard.d.ts.map +1 -0
  181. package/dist/lib/cmek-guard.js +73 -0
  182. package/dist/lib/cmek-guard.js.map +1 -0
  183. package/dist/lib/content.d.ts +7 -0
  184. package/dist/lib/content.d.ts.map +1 -1
  185. package/dist/lib/content.js +9 -2
  186. package/dist/lib/content.js.map +1 -1
  187. package/dist/lib/credential-purge.d.ts +52 -0
  188. package/dist/lib/credential-purge.d.ts.map +1 -0
  189. package/dist/lib/credential-purge.js +37 -0
  190. package/dist/lib/credential-purge.js.map +1 -0
  191. package/dist/lib/ingest.d.ts.map +1 -1
  192. package/dist/lib/ingest.js +7 -3
  193. package/dist/lib/ingest.js.map +1 -1
  194. package/dist/lib/local-mcp-server.d.ts +82 -0
  195. package/dist/lib/local-mcp-server.d.ts.map +1 -0
  196. package/dist/lib/local-mcp-server.js +252 -0
  197. package/dist/lib/local-mcp-server.js.map +1 -0
  198. package/dist/lib/local-mcp-stdio.d.ts +8 -0
  199. package/dist/lib/local-mcp-stdio.d.ts.map +1 -0
  200. package/dist/lib/local-mcp-stdio.js +50 -0
  201. package/dist/lib/local-mcp-stdio.js.map +1 -0
  202. package/dist/lib/login-guided.d.ts +20 -0
  203. package/dist/lib/login-guided.d.ts.map +1 -0
  204. package/dist/lib/login-guided.js +89 -0
  205. package/dist/lib/login-guided.js.map +1 -0
  206. package/dist/lib/login.d.ts +58 -12
  207. package/dist/lib/login.d.ts.map +1 -1
  208. package/dist/lib/login.js +170 -12
  209. package/dist/lib/login.js.map +1 -1
  210. package/dist/lib/onboarding.d.ts +56 -0
  211. package/dist/lib/onboarding.d.ts.map +1 -0
  212. package/dist/lib/onboarding.js +67 -0
  213. package/dist/lib/onboarding.js.map +1 -0
  214. package/dist/lib/peer-command.d.ts +51 -0
  215. package/dist/lib/peer-command.d.ts.map +1 -0
  216. package/dist/lib/peer-command.js +120 -0
  217. package/dist/lib/peer-command.js.map +1 -0
  218. package/dist/lib/peer-support.d.ts +67 -0
  219. package/dist/lib/peer-support.d.ts.map +1 -0
  220. package/dist/lib/peer-support.js +154 -0
  221. package/dist/lib/peer-support.js.map +1 -0
  222. package/dist/lib/platform-frontdoor-runtime.d.ts.map +1 -1
  223. package/dist/lib/platform-frontdoor-runtime.js +4 -0
  224. package/dist/lib/platform-frontdoor-runtime.js.map +1 -1
  225. package/dist/lib/platform-frontdoor.d.ts +18 -2
  226. package/dist/lib/platform-frontdoor.d.ts.map +1 -1
  227. package/dist/lib/platform-frontdoor.js +148 -9
  228. package/dist/lib/platform-frontdoor.js.map +1 -1
  229. package/dist/lib/platform-lifecycle.d.ts +7 -0
  230. package/dist/lib/platform-lifecycle.d.ts.map +1 -1
  231. package/dist/lib/platform-lifecycle.js +14 -3
  232. package/dist/lib/platform-lifecycle.js.map +1 -1
  233. package/dist/lib/platform-onboarding.d.ts +1 -0
  234. package/dist/lib/platform-onboarding.d.ts.map +1 -1
  235. package/dist/lib/platform-onboarding.js +13 -2
  236. package/dist/lib/platform-onboarding.js.map +1 -1
  237. package/dist/lib/platform-profile-purge.d.ts +1 -1
  238. package/dist/lib/platform-profile-purge.d.ts.map +1 -1
  239. package/dist/lib/platform-profile-purge.js +2 -1
  240. package/dist/lib/platform-profile-purge.js.map +1 -1
  241. package/dist/lib/platform-provider-prompt.d.ts +4 -0
  242. package/dist/lib/platform-provider-prompt.d.ts.map +1 -1
  243. package/dist/lib/platform-provider-prompt.js +4 -0
  244. package/dist/lib/platform-provider-prompt.js.map +1 -1
  245. package/dist/lib/platform-release-manifest.d.ts +14 -0
  246. package/dist/lib/platform-release-manifest.d.ts.map +1 -1
  247. package/dist/lib/platform-release-manifest.js +24 -0
  248. package/dist/lib/platform-release-manifest.js.map +1 -1
  249. package/dist/lib/portability-shared.d.ts +49 -0
  250. package/dist/lib/portability-shared.d.ts.map +1 -0
  251. package/dist/lib/portability-shared.js +220 -0
  252. package/dist/lib/portability-shared.js.map +1 -0
  253. package/dist/lib/project-mcp-config.d.ts +14 -0
  254. package/dist/lib/project-mcp-config.d.ts.map +1 -0
  255. package/dist/lib/project-mcp-config.js +78 -0
  256. package/dist/lib/project-mcp-config.js.map +1 -0
  257. package/dist/lib/release-package-graph.d.ts +154 -0
  258. package/dist/lib/release-package-graph.d.ts.map +1 -0
  259. package/dist/lib/release-package-graph.js +249 -0
  260. package/dist/lib/release-package-graph.js.map +1 -0
  261. package/dist/lib/repo-binding.d.ts +7 -2
  262. package/dist/lib/repo-binding.d.ts.map +1 -1
  263. package/dist/lib/repo-binding.js +131 -18
  264. package/dist/lib/repo-binding.js.map +1 -1
  265. package/dist/lib/repo-command-support.d.ts +3 -1
  266. package/dist/lib/repo-command-support.d.ts.map +1 -1
  267. package/dist/lib/repo-command-support.js.map +1 -1
  268. package/dist/lib/repo-local-mcp-backend.d.ts +65 -0
  269. package/dist/lib/repo-local-mcp-backend.d.ts.map +1 -0
  270. package/dist/lib/repo-local-mcp-backend.js +288 -0
  271. package/dist/lib/repo-local-mcp-backend.js.map +1 -0
  272. package/dist/lib/repo-local-mcp-runtime.d.ts +17 -0
  273. package/dist/lib/repo-local-mcp-runtime.d.ts.map +1 -0
  274. package/dist/lib/repo-local-mcp-runtime.js +136 -0
  275. package/dist/lib/repo-local-mcp-runtime.js.map +1 -0
  276. package/dist/lib/repo-scope-migration.d.ts +4 -0
  277. package/dist/lib/repo-scope-migration.d.ts.map +1 -0
  278. package/dist/lib/repo-scope-migration.js +55 -0
  279. package/dist/lib/repo-scope-migration.js.map +1 -0
  280. package/dist/lib/repo-scope.d.ts +9 -0
  281. package/dist/lib/repo-scope.d.ts.map +1 -0
  282. package/dist/lib/repo-scope.js +15 -0
  283. package/dist/lib/repo-scope.js.map +1 -0
  284. package/dist/lib/safe-file.d.ts +141 -0
  285. package/dist/lib/safe-file.d.ts.map +1 -0
  286. package/dist/lib/safe-file.js +296 -0
  287. package/dist/lib/safe-file.js.map +1 -0
  288. package/dist/lib/setup-console.d.ts +1 -1
  289. package/dist/lib/setup-console.d.ts.map +1 -1
  290. package/dist/lib/setup-console.js +3 -1
  291. package/dist/lib/setup-console.js.map +1 -1
  292. package/dist/lib/setup-page.d.ts.map +1 -1
  293. package/dist/lib/setup-page.js +18 -6
  294. package/dist/lib/setup-page.js.map +1 -1
  295. package/dist/lib/setup-plan.d.ts +2 -1
  296. package/dist/lib/setup-plan.d.ts.map +1 -1
  297. package/dist/lib/setup-plan.js +9 -2
  298. package/dist/lib/setup-plan.js.map +1 -1
  299. package/dist/lib/setup-server.d.ts.map +1 -1
  300. package/dist/lib/setup-server.js +13 -3
  301. package/dist/lib/setup-server.js.map +1 -1
  302. package/dist/lib/sso-login.d.ts +42 -0
  303. package/dist/lib/sso-login.d.ts.map +1 -0
  304. package/dist/lib/sso-login.js +135 -0
  305. package/dist/lib/sso-login.js.map +1 -0
  306. package/dist/lib/transfer.d.ts +80 -0
  307. package/dist/lib/transfer.d.ts.map +1 -0
  308. package/dist/lib/transfer.js +173 -0
  309. package/dist/lib/transfer.js.map +1 -0
  310. package/dist/lib/tui.d.ts +0 -6
  311. package/dist/lib/tui.d.ts.map +1 -1
  312. package/dist/lib/tui.js +6 -1
  313. package/dist/lib/tui.js.map +1 -1
  314. package/dist/lib/ui.js +1 -1
  315. package/dist/lib/ui.js.map +1 -1
  316. package/dist/menu/run.d.ts +7 -0
  317. package/dist/menu/run.d.ts.map +1 -1
  318. package/dist/menu/run.js +38 -2
  319. package/dist/menu/run.js.map +1 -1
  320. package/oclif.manifest.json +3400 -1361
  321. package/package.json +15 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-scope.d.ts","sourceRoot":"","sources":["../../src/lib/repo-scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,KAAK,oBAAoB,GAAG;IAC1B,wBAAwB,IAAI,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IACvE,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChD,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,WAAW,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,15 @@
1
+ import { ExitCode, KnowzError } from '@knowzai/core';
2
+ export async function assertRepoScopeReady(store, binding) {
3
+ const pending = await store.getPendingScopeMigration();
4
+ if (pending) {
5
+ const expected = binding.vaultId === pending.oldVaultId ? pending.newVaultId : pending.oldVaultId;
6
+ throw new KnowzError(`Repository scope migration is incomplete (binding=${binding.vaultId}, other=${expected}). ` +
7
+ 'Rerun `knowz repo setup --vault <hosted>` before serving, indexing, or searching.', ExitCode.Usage);
8
+ }
9
+ const inventory = await store.scopeInventory();
10
+ const foreign = inventory.vaultIds.filter((vaultId) => vaultId !== binding.vaultId);
11
+ if (foreign.length > 0 || inventory.unscopedItemCount > 0) {
12
+ throw new KnowzError('Repository binding/store scope mismatch. Re-run repository setup or rebuild the local index.', ExitCode.Usage);
13
+ }
14
+ }
15
+ //# sourceMappingURL=repo-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-scope.js","sourceRoot":"","sources":["../../src/lib/repo-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AASrD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAA2B,EAC3B,OAAmD;IAEnD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACvD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAClG,MAAM,IAAI,UAAU,CAClB,qDAAqD,OAAO,CAAC,OAAO,WAAW,QAAQ,KAAK;YAC1F,mFAAmF,EACrF,QAAQ,CAAC,KAAK,CACf,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,UAAU,CAClB,8FAA8F,EAC9F,QAAQ,CAAC,KAAK,CACf,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,141 @@
1
+ import { type Stats } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ /**
4
+ * CLI_SecurityReleaseReadiness H7 — one shared gate for every path the CLI reads
5
+ * on the user's behalf and then ships somewhere durable.
6
+ *
7
+ * Four file-consuming surfaces existed with four different (or absent) checks:
8
+ * `knowledge attach` only asked "is this a regular file?", `knowledge create
9
+ * --file` and `ingest add` asked nothing at all, and `index scan` skipped
10
+ * dotfiles during a directory WALK but happily indexed one named directly.
11
+ * So `knowz ingest add ~/.ssh/id_rsa` or `knowz knowledge create k --file .env`
12
+ * uploaded credentials to the cloud, and a symlink planted in a shared
13
+ * checkout could redirect an otherwise-innocent path at anything readable.
14
+ *
15
+ * Three enforcements, applied uniformly:
16
+ *
17
+ * 1. DENIED PATHS — well-known credential files, matched on the RESOLVED path
18
+ * so a symlink or `..` cannot route around the list.
19
+ * 2. SYMLINKS — rejected outright (`lstat`, not `stat`). A symlink is the
20
+ * mechanism by which a path the user vetted becomes a path they did not.
21
+ * 3. BOUNDED SIZE — a hard ceiling, so a multi-gigabyte or pseudo-infinite file
22
+ * cannot be read into memory in one `readFileSync`.
23
+ *
24
+ * A check that only inspects a PATH is advisory: between the `lstat` that
25
+ * approved it and the `readFileSync` that consumed it, the path can be replaced
26
+ * with a symlink to anything readable. So the reading surfaces do not re-resolve
27
+ * the path at all — `openSafeFile`/`readSafeFile` open ONCE with `O_NOFOLLOW`,
28
+ * `fstat` that descriptor, and consume that same descriptor. The file that was
29
+ * judged is the file that is read. (Same shape as the indexer's own read loop,
30
+ * `packages/indexer/src/indexer.ts`.)
31
+ *
32
+ * This gate fails CLOSED and deliberately ships no override flag: nothing in the
33
+ * established UX depends on ingesting a credential file, and an `--allow-secrets`
34
+ * escape hatch would be a permanent invitation to do exactly the thing the gate
35
+ * exists to prevent. Users who genuinely need a secret file in a vault can copy
36
+ * it to a non-denied path, which is an explicit, auditable act.
37
+ */
38
+ /**
39
+ * Ceiling for paths read WHOLE into memory (`readFileSync`) — knowledge
40
+ * `--file`, `ingest add`, `index scan`. Matches the indexer's own `maxFileBytes`
41
+ * so the three text surfaces agree on what "too big to hold" means.
42
+ */
43
+ export declare const MAX_SAFE_TEXT_BYTES = 1000000;
44
+ /**
45
+ * Ceiling for paths STREAMED to the cloud (`knowledge attach`). The uploader
46
+ * reads at the server-dictated chunk size, so this is not a memory bound — it is
47
+ * a sanity ceiling that stops a runaway or pseudo-infinite file (a device node
48
+ * that stats as huge, a sparse multi-terabyte file) from becoming an unbounded
49
+ * upload. Deliberately far above any real attachment.
50
+ */
51
+ export declare const MAX_SAFE_UPLOAD_BYTES: number;
52
+ /** Back-compat alias for the in-memory ceiling. */
53
+ export declare const MAX_SAFE_FILE_BYTES = 1000000;
54
+ export interface SafeFileOptions {
55
+ /** Override the size ceiling (bytes). */
56
+ maxBytes?: number;
57
+ /** Label used in the error message, e.g. `knowledge attach`. */
58
+ operation?: string;
59
+ }
60
+ export interface SafeFileRejection {
61
+ path: string;
62
+ reason: string;
63
+ }
64
+ /**
65
+ * Classify one path. Returns a rejection reason, or undefined when the path is
66
+ * safe to read. Never throws — callers aggregate so every offender is named.
67
+ */
68
+ export declare function checkSafeFile(path: string, opts?: SafeFileOptions): SafeFileRejection | undefined;
69
+ /**
70
+ * Gate a batch of paths. Throws a single `KnowzError` naming EVERY offender and
71
+ * why, so a user with ten files does not discover the problems one run at a time.
72
+ *
73
+ * This is the BATCH pre-flight — it reports every offender before any work
74
+ * starts. It is not, on its own, the thing that makes a read safe: a path
75
+ * approved here can be swapped before it is consumed. Every surface that then
76
+ * READS the bytes must go through `openSafeFile`/`readSafeFile`.
77
+ */
78
+ export declare function assertSafeFiles(paths: readonly string[], opts?: SafeFileOptions): void;
79
+ /** An open, policy-approved descriptor. The caller owns closing `fd`. */
80
+ export interface SafeFileHandle {
81
+ /** Open descriptor, already judged. Read from THIS — never re-open the path. */
82
+ fd: number;
83
+ /** `fstat` of the open descriptor, so size/mtime describe the judged file. */
84
+ stat: Stats;
85
+ /** The resolved path the descriptor was opened from (for messages only). */
86
+ path: string;
87
+ }
88
+ /** True only when Node can bind policy to the opened final path component. */
89
+ export declare function supportsRaceResistantSafeOpen(platform?: NodeJS.Platform): boolean;
90
+ /**
91
+ * Open a path under the full policy and hand back the OPEN DESCRIPTOR.
92
+ *
93
+ * The name policy is applied to the resolved path first (cheap, and it keeps
94
+ * the credential list authoritative), then the file is opened exactly once with
95
+ * `O_NOFOLLOW` and judged by `fstat` on that descriptor. Nothing after this
96
+ * point re-resolves the path, so there is no window in which the approved file
97
+ * and the consumed file can differ.
98
+ *
99
+ * Throws the same `KnowzError` shape as `assertSafeFiles`. The caller MUST
100
+ * `closeSync(handle.fd)`; `readSafeFile` does that for you.
101
+ */
102
+ export declare function openSafeFile(path: string, opts?: SafeFileOptions): SafeFileHandle;
103
+ /** Content plus the `fstat` of the descriptor it was read from. */
104
+ export interface SafeFileContent {
105
+ content: string;
106
+ stat: Stats;
107
+ path: string;
108
+ }
109
+ /**
110
+ * Read a whole file under the policy, from the descriptor that was judged.
111
+ *
112
+ * Returns the `fstat` alongside the content so callers that record size/mtime
113
+ * (e.g. `ingest add`'s file state) describe the bytes they actually read rather
114
+ * than whatever a later `statSync` of the path would report.
115
+ */
116
+ export declare function readSafeFile(path: string, opts?: SafeFileOptions): SafeFileContent;
117
+ /**
118
+ * Re-run the open-time policy and immediately release the descriptor.
119
+ *
120
+ * A last-moment re-judgement for surfaces that can only hand a PATH to whatever
121
+ * consumes the bytes. It catches a swap that happened after the batch
122
+ * pre-flight, but it does NOT close the race — the consumer still re-opens the
123
+ * name afterwards. Prefer `openSafeFile` and pass the descriptor along;
124
+ * `knowledge attach` does exactly that (`lib/attach.ts` → `FilesApi.upload`'s
125
+ * `fd`). Reach for this only where handing a descriptor over is impossible.
126
+ */
127
+ export declare function assertSafeFileAtOpen(path: string, opts?: SafeFileOptions): Stats;
128
+ /**
129
+ * Directory-walk predicate for `index scan`: the same policy, expressed as a
130
+ * skip decision rather than an error, because a walk over a large tree should
131
+ * step over a denied file instead of aborting the whole scan.
132
+ */
133
+ export declare function isSafeToIndex(path: string): boolean;
134
+ /** Exposed for tests and for callers that want to explain the policy. */
135
+ export declare const SAFE_FILE_POLICY: {
136
+ readonly deniedBasenames: Set<string>;
137
+ readonly deniedExtensions: Set<string>;
138
+ readonly deniedDirectorySegments: Set<string>;
139
+ readonly homeDir: typeof homedir;
140
+ };
141
+ //# sourceMappingURL=safe-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-file.d.ts","sourceRoot":"","sources":["../../src/lib/safe-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,KAAK,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,UAAY,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAyB,CAAC;AAE5D,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,UAAsB,CAAC;AA8CvD,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AA6CD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,iBAAiB,GAAG,SAAS,CA0BrG;AAYD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI,CAI1F;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,8EAA8E;IAC9E,IAAI,EAAE,KAAK,CAAC;IACZ,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;CACd;AASD,8EAA8E;AAC9E,wBAAgB,6BAA6B,CAAC,QAAQ,kBAAmB,GAAG,OAAO,CAElF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,cAAc,CAwCrF;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,eAAe,CAOtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,KAAK,CAIpF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,yEAAyE;AACzE,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC"}
@@ -0,0 +1,296 @@
1
+ import { closeSync, constants as fsConstants, fstatSync, lstatSync, openSync, readFileSync, realpathSync, } from 'node:fs';
2
+ import { basename, isAbsolute, resolve, sep } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { ExitCode, KnowzError } from '@knowzai/core';
5
+ /**
6
+ * CLI_SecurityReleaseReadiness H7 — one shared gate for every path the CLI reads
7
+ * on the user's behalf and then ships somewhere durable.
8
+ *
9
+ * Four file-consuming surfaces existed with four different (or absent) checks:
10
+ * `knowledge attach` only asked "is this a regular file?", `knowledge create
11
+ * --file` and `ingest add` asked nothing at all, and `index scan` skipped
12
+ * dotfiles during a directory WALK but happily indexed one named directly.
13
+ * So `knowz ingest add ~/.ssh/id_rsa` or `knowz knowledge create k --file .env`
14
+ * uploaded credentials to the cloud, and a symlink planted in a shared
15
+ * checkout could redirect an otherwise-innocent path at anything readable.
16
+ *
17
+ * Three enforcements, applied uniformly:
18
+ *
19
+ * 1. DENIED PATHS — well-known credential files, matched on the RESOLVED path
20
+ * so a symlink or `..` cannot route around the list.
21
+ * 2. SYMLINKS — rejected outright (`lstat`, not `stat`). A symlink is the
22
+ * mechanism by which a path the user vetted becomes a path they did not.
23
+ * 3. BOUNDED SIZE — a hard ceiling, so a multi-gigabyte or pseudo-infinite file
24
+ * cannot be read into memory in one `readFileSync`.
25
+ *
26
+ * A check that only inspects a PATH is advisory: between the `lstat` that
27
+ * approved it and the `readFileSync` that consumed it, the path can be replaced
28
+ * with a symlink to anything readable. So the reading surfaces do not re-resolve
29
+ * the path at all — `openSafeFile`/`readSafeFile` open ONCE with `O_NOFOLLOW`,
30
+ * `fstat` that descriptor, and consume that same descriptor. The file that was
31
+ * judged is the file that is read. (Same shape as the indexer's own read loop,
32
+ * `packages/indexer/src/indexer.ts`.)
33
+ *
34
+ * This gate fails CLOSED and deliberately ships no override flag: nothing in the
35
+ * established UX depends on ingesting a credential file, and an `--allow-secrets`
36
+ * escape hatch would be a permanent invitation to do exactly the thing the gate
37
+ * exists to prevent. Users who genuinely need a secret file in a vault can copy
38
+ * it to a non-denied path, which is an explicit, auditable act.
39
+ */
40
+ /**
41
+ * Ceiling for paths read WHOLE into memory (`readFileSync`) — knowledge
42
+ * `--file`, `ingest add`, `index scan`. Matches the indexer's own `maxFileBytes`
43
+ * so the three text surfaces agree on what "too big to hold" means.
44
+ */
45
+ export const MAX_SAFE_TEXT_BYTES = 1_000_000;
46
+ /**
47
+ * Ceiling for paths STREAMED to the cloud (`knowledge attach`). The uploader
48
+ * reads at the server-dictated chunk size, so this is not a memory bound — it is
49
+ * a sanity ceiling that stops a runaway or pseudo-infinite file (a device node
50
+ * that stats as huge, a sparse multi-terabyte file) from becoming an unbounded
51
+ * upload. Deliberately far above any real attachment.
52
+ */
53
+ export const MAX_SAFE_UPLOAD_BYTES = 2 * 1024 * 1024 * 1024;
54
+ /** Back-compat alias for the in-memory ceiling. */
55
+ export const MAX_SAFE_FILE_BYTES = MAX_SAFE_TEXT_BYTES;
56
+ /**
57
+ * Exact basenames that are credential material by convention. Matched
58
+ * case-insensitively on the resolved path's final segment.
59
+ */
60
+ const DENIED_BASENAMES = new Set([
61
+ '.env',
62
+ '.envrc',
63
+ '.netrc',
64
+ '_netrc',
65
+ '.pgpass',
66
+ '.npmrc',
67
+ '.yarnrc',
68
+ '.git-credentials',
69
+ '.htpasswd',
70
+ 'credentials',
71
+ 'credentials.json',
72
+ 'id_rsa',
73
+ 'id_dsa',
74
+ 'id_ecdsa',
75
+ 'id_ed25519',
76
+ 'known_hosts',
77
+ 'authorized_keys',
78
+ 'secring.gpg',
79
+ 'shadow',
80
+ 'terraform.tfstate',
81
+ ]);
82
+ /** Extensions that carry private-key or certificate material. */
83
+ const DENIED_EXTENSIONS = new Set(['pem', 'key', 'p12', 'pfx', 'jks', 'keystore', 'asc', 'ppk']);
84
+ /**
85
+ * Directory segments whose contents are credential stores. Matched as a full
86
+ * path segment on the resolved path, so `./my.aws/notes.md` is unaffected.
87
+ */
88
+ const DENIED_DIRECTORY_SEGMENTS = new Set([
89
+ '.ssh',
90
+ '.gnupg',
91
+ '.aws',
92
+ '.azure',
93
+ '.kube',
94
+ '.docker',
95
+ '.knowz',
96
+ ]);
97
+ function deniedReason(resolvedPath) {
98
+ const name = basename(resolvedPath).toLowerCase();
99
+ if (DENIED_BASENAMES.has(name))
100
+ return `"${basename(resolvedPath)}" is a well-known credential file`;
101
+ if (/^secrets?\./i.test(name))
102
+ return `"${basename(resolvedPath)}" is a secret file`;
103
+ // EVERY `.env.*` is denied — `.env.local`, `.env.production`, and the
104
+ // "template" spellings alike. The redaction policy (`lib/redact.ts`) already
105
+ // treats the whole family as sensitive, and a per-name allowlist is exactly
106
+ // the wrong shape here: `.env.example` files routinely accumulate real values
107
+ // as people edit in place, and one allowed spelling is all an attacker needs
108
+ // (`cp .env .env.sample`). Uniformity is the property worth having; a genuine
109
+ // template can be copied to a non-`.env` name, which is an explicit act.
110
+ if (name.startsWith('.env.'))
111
+ return `"${basename(resolvedPath)}" is an environment secret file`;
112
+ const ext = name.includes('.') ? name.slice(name.lastIndexOf('.') + 1) : '';
113
+ if (ext && DENIED_EXTENSIONS.has(ext))
114
+ return `".${ext}" files carry private-key or certificate material`;
115
+ const segments = resolvedPath.split(sep).slice(0, -1);
116
+ for (const segment of segments) {
117
+ if (DENIED_DIRECTORY_SEGMENTS.has(segment.toLowerCase())) {
118
+ return `it lives under a credential directory ("${segment}")`;
119
+ }
120
+ }
121
+ return undefined;
122
+ }
123
+ /**
124
+ * Resolve a path for policy checks WITHOUT following the final symlink — the
125
+ * link itself is rejected, so `realpath` is only used to normalise `..` and
126
+ * intermediate links for the denied-path match.
127
+ */
128
+ function policyPath(path) {
129
+ const absolute = isAbsolute(path) ? path : resolve(process.cwd(), path);
130
+ try {
131
+ // realpath the PARENT so intermediate symlinks are normalised while the
132
+ // final component stays exactly what the user named.
133
+ const parent = resolve(absolute, '..');
134
+ return resolve(realpathSync(parent), basename(absolute));
135
+ }
136
+ catch {
137
+ return absolute;
138
+ }
139
+ }
140
+ /**
141
+ * Classify one path. Returns a rejection reason, or undefined when the path is
142
+ * safe to read. Never throws — callers aggregate so every offender is named.
143
+ */
144
+ export function checkSafeFile(path, opts = {}) {
145
+ const maxBytes = opts.maxBytes ?? MAX_SAFE_TEXT_BYTES;
146
+ const resolved = policyPath(path);
147
+ let stat;
148
+ try {
149
+ stat = lstatSync(resolved);
150
+ }
151
+ catch {
152
+ return { path, reason: 'it does not exist or is not readable' };
153
+ }
154
+ if (stat.isSymbolicLink()) {
155
+ return {
156
+ path,
157
+ reason: 'it is a symbolic link (a link can point somewhere you did not intend; pass the real path)',
158
+ };
159
+ }
160
+ if (!stat.isFile())
161
+ return { path, reason: 'it is not a regular file' };
162
+ const denied = deniedReason(resolved);
163
+ if (denied)
164
+ return { path, reason: denied };
165
+ if (stat.size > maxBytes) {
166
+ return { path, reason: `it is ${stat.size} bytes, over the ${maxBytes}-byte limit for a single file` };
167
+ }
168
+ return undefined;
169
+ }
170
+ /** One message shape for every refusal, whether it names one path or ten. */
171
+ function refusal(rejections, opts) {
172
+ const operation = opts.operation ? `${opts.operation}: ` : '';
173
+ const detail = rejections.map((r) => ` ${r.path} — ${r.reason}`).join('\n');
174
+ return new KnowzError(`${operation}refusing to read ${rejections.length} path(s):\n${detail}`, ExitCode.Usage);
175
+ }
176
+ /**
177
+ * Gate a batch of paths. Throws a single `KnowzError` naming EVERY offender and
178
+ * why, so a user with ten files does not discover the problems one run at a time.
179
+ *
180
+ * This is the BATCH pre-flight — it reports every offender before any work
181
+ * starts. It is not, on its own, the thing that makes a read safe: a path
182
+ * approved here can be swapped before it is consumed. Every surface that then
183
+ * READS the bytes must go through `openSafeFile`/`readSafeFile`.
184
+ */
185
+ export function assertSafeFiles(paths, opts = {}) {
186
+ const rejections = paths.map((p) => checkSafeFile(p, opts)).filter((r) => Boolean(r));
187
+ if (!rejections.length)
188
+ return;
189
+ throw refusal(rejections, opts);
190
+ }
191
+ /**
192
+ * `O_NOFOLLOW` makes the kernel refuse to open a symlink at all, which closes
193
+ * the check-then-open race for the final path component. Windows has no such
194
+ * flag; there `checkSafeFile`'s `lstat` remains the (advisory) symlink guard.
195
+ */
196
+ const O_NOFOLLOW = fsConstants.O_NOFOLLOW ?? 0;
197
+ /** True only when Node can bind policy to the opened final path component. */
198
+ export function supportsRaceResistantSafeOpen(platform = process.platform) {
199
+ return platform !== 'win32' && O_NOFOLLOW !== 0;
200
+ }
201
+ /**
202
+ * Open a path under the full policy and hand back the OPEN DESCRIPTOR.
203
+ *
204
+ * The name policy is applied to the resolved path first (cheap, and it keeps
205
+ * the credential list authoritative), then the file is opened exactly once with
206
+ * `O_NOFOLLOW` and judged by `fstat` on that descriptor. Nothing after this
207
+ * point re-resolves the path, so there is no window in which the approved file
208
+ * and the consumed file can differ.
209
+ *
210
+ * Throws the same `KnowzError` shape as `assertSafeFiles`. The caller MUST
211
+ * `closeSync(handle.fd)`; `readSafeFile` does that for you.
212
+ */
213
+ export function openSafeFile(path, opts = {}) {
214
+ const maxBytes = opts.maxBytes ?? MAX_SAFE_TEXT_BYTES;
215
+ const resolved = policyPath(path);
216
+ const denied = deniedReason(resolved);
217
+ if (denied)
218
+ throw refusal([{ path, reason: denied }], opts);
219
+ let fd;
220
+ try {
221
+ fd = openSync(resolved, fsConstants.O_RDONLY | O_NOFOLLOW);
222
+ }
223
+ catch (e) {
224
+ const code = e.code;
225
+ // ELOOP (Linux/macOS) / EMLINK (some BSDs) is O_NOFOLLOW refusing a symlink.
226
+ if (code === 'ELOOP' || code === 'EMLINK') {
227
+ throw refusal([{ path, reason: 'it is a symbolic link (a link can point somewhere you did not intend; pass the real path)' }], opts);
228
+ }
229
+ if (code === 'EISDIR')
230
+ throw refusal([{ path, reason: 'it is not a regular file' }], opts);
231
+ throw refusal([{ path, reason: 'it does not exist or is not readable' }], opts);
232
+ }
233
+ try {
234
+ const stat = fstatSync(fd);
235
+ // A symlink cannot reach here on a platform with O_NOFOLLOW; on one without
236
+ // it, `fstat` still catches the non-regular targets that matter (device
237
+ // nodes, FIFOs, directories).
238
+ if (!stat.isFile())
239
+ throw refusal([{ path, reason: 'it is not a regular file' }], opts);
240
+ if (stat.size > maxBytes) {
241
+ throw refusal([{ path, reason: `it is ${stat.size} bytes, over the ${maxBytes}-byte limit for a single file` }], opts);
242
+ }
243
+ return { fd, stat, path: resolved };
244
+ }
245
+ catch (e) {
246
+ closeSync(fd);
247
+ throw e;
248
+ }
249
+ }
250
+ /**
251
+ * Read a whole file under the policy, from the descriptor that was judged.
252
+ *
253
+ * Returns the `fstat` alongside the content so callers that record size/mtime
254
+ * (e.g. `ingest add`'s file state) describe the bytes they actually read rather
255
+ * than whatever a later `statSync` of the path would report.
256
+ */
257
+ export function readSafeFile(path, opts = {}) {
258
+ const handle = openSafeFile(path, opts);
259
+ try {
260
+ return { content: readFileSync(handle.fd, 'utf8'), stat: handle.stat, path: handle.path };
261
+ }
262
+ finally {
263
+ closeSync(handle.fd);
264
+ }
265
+ }
266
+ /**
267
+ * Re-run the open-time policy and immediately release the descriptor.
268
+ *
269
+ * A last-moment re-judgement for surfaces that can only hand a PATH to whatever
270
+ * consumes the bytes. It catches a swap that happened after the batch
271
+ * pre-flight, but it does NOT close the race — the consumer still re-opens the
272
+ * name afterwards. Prefer `openSafeFile` and pass the descriptor along;
273
+ * `knowledge attach` does exactly that (`lib/attach.ts` → `FilesApi.upload`'s
274
+ * `fd`). Reach for this only where handing a descriptor over is impossible.
275
+ */
276
+ export function assertSafeFileAtOpen(path, opts = {}) {
277
+ const handle = openSafeFile(path, opts);
278
+ closeSync(handle.fd);
279
+ return handle.stat;
280
+ }
281
+ /**
282
+ * Directory-walk predicate for `index scan`: the same policy, expressed as a
283
+ * skip decision rather than an error, because a walk over a large tree should
284
+ * step over a denied file instead of aborting the whole scan.
285
+ */
286
+ export function isSafeToIndex(path) {
287
+ return checkSafeFile(path) === undefined;
288
+ }
289
+ /** Exposed for tests and for callers that want to explain the policy. */
290
+ export const SAFE_FILE_POLICY = {
291
+ deniedBasenames: DENIED_BASENAMES,
292
+ deniedExtensions: DENIED_EXTENSIONS,
293
+ deniedDirectorySegments: DENIED_DIRECTORY_SEGMENTS,
294
+ homeDir: homedir,
295
+ };
296
+ //# sourceMappingURL=safe-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-file.js","sourceRoot":"","sources":["../../src/lib/safe-file.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export interface SetupConsoleOptions {
25
25
  mcp: boolean;
26
26
  publicSite: boolean;
27
27
  }>;
28
- imageMode?: 'build' | 'pull';
28
+ imageMode?: 'build' | 'pull' | 'preloaded';
29
29
  account?: {
30
30
  name: string;
31
31
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-console.d.ts","sourceRoot":"","sources":["../../src/lib/setup-console.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAQrE,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EACL,cAAc,EACd,cAAc,EAEd,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtF,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnD;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB,GAClD,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAsDD,8FAA8F;AAC9F,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,EAC5B,YAAY,GAAE,wBAA6B,GAC1C,OAAO,CAAC,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA+G5C"}
1
+ {"version":3,"file":"setup-console.d.ts","sourceRoot":"","sources":["../../src/lib/setup-console.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAQrE,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EACL,cAAc,EACd,cAAc,EAEd,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;IAC3C,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtF,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnD;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB,GAClD,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAsDD,8FAA8F;AAC9F,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,EAC5B,YAAY,GAAE,wBAA6B,GAC1C,OAAO,CAAC,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAiH5C"}
@@ -107,7 +107,9 @@ export async function launchSetupConsole(options, dependencies = {}) {
107
107
  ports,
108
108
  storage: detectedState?.storage,
109
109
  components,
110
- imageMode: options.imageMode ?? (detectedState?.imageMode === 'build' ? 'build' : 'pull'),
110
+ // §2026-08-31 R-U4: straight seed a detected preloaded (possibly air-gapped)
111
+ // stack must never be silently coerced to pulling. Explicit flag still wins.
112
+ imageMode: options.imageMode ?? detectedState?.imageMode ?? 'pull',
111
113
  account: options.account,
112
114
  };
113
115
  const formSchema = deriveSetupFormSchema(loadRequiredEnvByPreset(), FIELD_MAP);
@@ -1 +1 @@
1
- {"version":3,"file":"setup-console.js","sourceRoot":"","sources":["../../src/lib/setup-console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAsB,MAAM,uBAAuB,CAAC;AAE9G,OAAO,EAAE,qBAAqB,EAAkB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,GAIjB,MAAM,mBAAmB,CAAC;AA6B3B,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,aAAqB,EACrB,UAAmC,UAAU,CAAC,KAAK;IAEnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE;QACtE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;QACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAiD,CAAC;IAClF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;IAClC,IAAI,MAAM,EAAE,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACtD,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,SAAkB;IACpD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACnH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAA2B,CAAC;QAC3F,IAAI,MAAM,EAAE,aAAa,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAC1E,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YAClD,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YACzF,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjB,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAU,EAAE,CACxD,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3G,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAU,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvG,0EAA0E;QAC1E,+CAA+C;QAC/C,OAAO;YACL,aAAa,EAAE,CAAC;YAChB,IAAI;YACJ,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;YACvF,QAAQ,EAAE,QAAqC;YAC/C,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO;YACjE,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACxD,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI;gBACnB,EAAE,EAAE,SAAS;gBACb,eAAe,EAAE,MAAM;gBACvB,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,MAAM;aACtB;YACD,KAAK,EAAE;gBACL,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;gBAClC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;gBAClC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;gBAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC;aACjD;YACD,WAAW,EAAE;gBACX,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,uBAAuB,CAAC;gBAC1D,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,uBAAuB,CAAC;gBAC1D,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,uBAAuB,CAAC;gBAC1D,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,uBAAuB,CAAC;aACzE;YACD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS;gBACzE,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS;gBACjD,CAAC,CAAC,MAAM,CAAC,UAAU;gBACnB,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACvG,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;SACxE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA4B,EAC5B,eAAyC,EAAE;IAE3C,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,SAAS,IAAI,cAAc,CAAC,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,cAAc,CAAC;IAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,IAAI,gBAAgB,CAAC;IACjE,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,IAAI,WAAW,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;IACrC,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG;QACZ,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI;QAC5D,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI;QAC5D,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI;QAC5D,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,IAAI,aAAa,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI;KAClF,CAAC;IACF,MAAM,UAAU,GAAG;QACjB,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,aAAa,EAAE,UAAU,EAAE,GAAG,IAAI,IAAI;QACtE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,IAAI,aAAa,EAAE,UAAU,EAAE,UAAU,IAAI,KAAK;KAC7F,CAAC;IACF,MAAM,YAAY,GAAuB;QACvC,IAAI;QACJ,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,wBAAwB;QAC9E,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,aAAa,EAAE,QAAQ;QACrD,KAAK;QACL,OAAO,EAAE,aAAa,EAAE,OAAO;QAC/B,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC,aAAa,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACzF,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;IACF,MAAM,UAAU,GAAG,qBAAqB,CAAC,uBAAuB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,sBAAsB,CAAC;IACzF,IAAI,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,8BAA8B,IAAI,aAAa,CAAC;IACxH,CAAC;IACD,MAAM,OAAO,GAAoB;QAC/B,KAAK;QACL,UAAU;QACV,YAAY;QACZ,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa;QACjC,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAC3B,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,EACzD,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAC9B;QACD,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;YACtC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAClB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;YACjB,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,KAAK,CAAC,eAAe;gBACnB,OAAO,CAAC,eAAe,KAAK,IAAI;oBAChC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,CAAC;YAC9C,OAAO,YAAY,CACjB,KAAK,EACL,2BAA2B,CAAC;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,qBAAqB,EAAE,KAAK;gBAC5B,gBAAgB,EAAE,IAAI;gBACtB,IAAI,EAAE,YAAY;aACnB,CAAC,CACH,CAAC;QACJ,CAAC;QACD,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC;QACtD,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAChD,eAAe,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE;gBACpD,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,iBAAiB;gBACzB,WAAW,EAAE,OAAO;gBACpB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAChE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC5D,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;QACD,qBAAqB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,wBAAwB,CAAC,UAAU,CAAC;QAC3E,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAChD,WAAW,EAAE;YACX,MAAM,EAAE,oBAAoB,KAAK,CAAC,GAAG,EAAE;YACvC,MAAM,EAAE,oBAAoB,KAAK,CAAC,GAAG,EAAE;YACvC,MAAM,EAAE,oBAAoB,KAAK,CAAC,GAAG,EAAE;YACvC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;SAC1F;QACD,kBAAkB,EAAE,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO;QACzE,aAAa,EAAE,YAAY,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CACzE,oBAAoB,KAAK,CAAC,GAAG,EAAE,EAC/B,aAAa,CACd,CAAC;KACH,CAAC;IACF,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,iCAAiC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QAC5C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"setup-console.js","sourceRoot":"","sources":["../../src/lib/setup-console.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup-page.d.ts","sourceRoot":"","sources":["../../src/lib/setup-page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AA0CD,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAsmBxD"}
1
+ {"version":3,"file":"setup-page.d.ts","sourceRoot":"","sources":["../../src/lib/setup-page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AAGvF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AA0CD,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAinBxD"}