@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,249 @@
1
+ /**
2
+ * Release package-graph contract (CLI_SecurityReleaseReadiness H1 + H2).
3
+ *
4
+ * H1 — the release/CI workflows must address the CLI package by its CANONICAL
5
+ * published name, read from `packages/cli/package.json`. A stale `--filter`
6
+ * (e.g. the pre-rename `@knowz/cli`) makes every build/publish step a silent
7
+ * no-op: pnpm exits 0 having matched zero projects, so a release can "succeed"
8
+ * without ever building, packing, or publishing the CLI.
9
+ *
10
+ * H2 — `@knowzai/cli` depends on seven sibling workspace packages via
11
+ * `workspace:*`. Publishing only the CLI produces an UNINSTALLABLE package: the
12
+ * `workspace:*` specifiers are rewritten to the siblings' own (unstamped)
13
+ * versions, which were never published. The whole runtime graph must therefore
14
+ * be stamped to one version and published in dependency order, and a
15
+ * pack/install smoke must prove resolution with no `workspace:` leakage.
16
+ *
17
+ * This module is pure (filesystem reads only) so both the CI scripts and the
18
+ * unit tests drive exactly the same logic.
19
+ */
20
+ import { readFileSync, readdirSync, existsSync } from 'node:fs';
21
+ import { join } from 'node:path';
22
+ /** Directory name, under `packages/`, of the package that ships the `knowz` bin. */
23
+ export const CLI_PACKAGE_DIR = 'cli';
24
+ /** Dependency fields that describe what an installed consumer must be able to resolve. */
25
+ const RUNTIME_DEPENDENCY_FIELDS = ['dependencies', 'optionalDependencies'];
26
+ function readManifest(path) {
27
+ return JSON.parse(readFileSync(path, 'utf8'));
28
+ }
29
+ /** Read every `packages/*` manifest that declares a name. */
30
+ export function readWorkspacePackages(packagesDir) {
31
+ const packages = [];
32
+ for (const dir of readdirSync(packagesDir).sort()) {
33
+ const path = join(packagesDir, dir);
34
+ const manifestPath = join(path, 'package.json');
35
+ if (!existsSync(manifestPath))
36
+ continue;
37
+ const manifest = readManifest(manifestPath);
38
+ if (typeof manifest.name !== 'string' || !manifest.name)
39
+ continue;
40
+ packages.push({ name: manifest.name, dir, path, manifest });
41
+ }
42
+ return packages;
43
+ }
44
+ /**
45
+ * The one true CLI package name. Everything else (workflow filters, publish
46
+ * order, install smoke) is derived from this rather than hardcoded, so a future
47
+ * rename cannot leave a workflow silently addressing a package that no longer
48
+ * exists.
49
+ */
50
+ export function canonicalCliPackageName(packagesDir) {
51
+ const manifest = readManifest(join(packagesDir, CLI_PACKAGE_DIR, 'package.json'));
52
+ if (typeof manifest.name !== 'string' || !manifest.name) {
53
+ throw new Error(`packages/${CLI_PACKAGE_DIR}/package.json does not declare a name`);
54
+ }
55
+ return manifest.name;
56
+ }
57
+ /** The npm scope shared by every internal package, derived from the CLI name. */
58
+ export function canonicalScope(cliPackageName) {
59
+ const scope = cliPackageName.startsWith('@') ? cliPackageName.split('/')[0] : undefined;
60
+ if (!scope)
61
+ throw new Error(`CLI package name is not scoped: ${cliPackageName}`);
62
+ return scope;
63
+ }
64
+ /** Internal (workspace-resident) runtime dependencies declared by one manifest. */
65
+ export function internalRuntimeDependencies(manifest, internalNames) {
66
+ const found = new Set();
67
+ for (const field of RUNTIME_DEPENDENCY_FIELDS) {
68
+ for (const name of Object.keys(manifest[field] ?? {})) {
69
+ if (internalNames.has(name))
70
+ found.add(name);
71
+ }
72
+ }
73
+ return [...found].sort();
74
+ }
75
+ /**
76
+ * Dependency-ordered publish plan for the runtime graph reachable from `rootName`.
77
+ * Dependencies always precede their dependents, so each `npm publish` lands only
78
+ * after everything it declares is already resolvable on the registry.
79
+ */
80
+ export function resolvePublishOrder(packages, rootName) {
81
+ const byName = new Map(packages.map((p) => [p.name, p]));
82
+ const internalNames = new Set(byName.keys());
83
+ if (!byName.has(rootName)) {
84
+ throw new Error(`Root package ${rootName} is not a workspace package`);
85
+ }
86
+ const order = [];
87
+ const done = new Set();
88
+ const onStack = new Set();
89
+ const visit = (name, trail) => {
90
+ if (done.has(name))
91
+ return;
92
+ if (onStack.has(name)) {
93
+ throw new Error(`Cyclic internal dependency: ${[...trail, name].join(' -> ')}`);
94
+ }
95
+ const pkg = byName.get(name);
96
+ if (!pkg)
97
+ throw new Error(`Internal dependency ${name} has no workspace package`);
98
+ onStack.add(name);
99
+ for (const dep of internalRuntimeDependencies(pkg.manifest, internalNames)) {
100
+ visit(dep, [...trail, name]);
101
+ }
102
+ onStack.delete(name);
103
+ done.add(name);
104
+ order.push(pkg);
105
+ };
106
+ visit(rootName, []);
107
+ return order;
108
+ }
109
+ /**
110
+ * Every `pnpm --filter <@scope/name>` use in a workflow. Both `--filter x` and
111
+ * `--filter=x` spellings are recognised; unscoped filters (paths, globs) are
112
+ * ignored because only the scoped package identity is under contract here.
113
+ */
114
+ export function findWorkflowPackageFilters(source) {
115
+ const uses = [];
116
+ const lines = source.split(/\r?\n/);
117
+ const pattern = /--filter[= ]+(@[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*)/g;
118
+ lines.forEach((line, index) => {
119
+ for (const match of line.matchAll(pattern)) {
120
+ uses.push({ line: index + 1, filter: match[1] });
121
+ }
122
+ });
123
+ return uses;
124
+ }
125
+ /**
126
+ * VERIFY H1 — fail when any workflow filter diverges from the canonical package
127
+ * identity. Returns human-readable failures (empty ⇒ pass) so both the CI script
128
+ * and the unit test can assert on the same values.
129
+ */
130
+ export function assertCanonicalWorkflowFilters(workflows, knownPackageNames) {
131
+ const failures = [];
132
+ const canonicalCli = [...knownPackageNames].find((name) => name.endsWith('/cli'));
133
+ for (const workflow of workflows) {
134
+ for (const use of findWorkflowPackageFilters(workflow.source)) {
135
+ if (knownPackageNames.has(use.filter) && (!canonicalCli || use.filter === canonicalCli))
136
+ continue;
137
+ failures.push(`${workflow.path}:${use.line}: --filter ${use.filter} diverges from the canonical CLI package ` +
138
+ `${canonicalCli ?? '(unknown)'}.`);
139
+ }
140
+ }
141
+ return failures;
142
+ }
143
+ /**
144
+ * VERIFY H1 (stronger half) — the workflows must actually address the canonical
145
+ * CLI package somewhere, so a filter that is simply deleted is caught too.
146
+ */
147
+ export function assertCliPackageIsAddressed(workflows, cliPackageName) {
148
+ const addressed = workflows.some((workflow) => findWorkflowPackageFilters(workflow.source).some((use) => use.filter === cliPackageName));
149
+ return addressed
150
+ ? []
151
+ : [`${workflows.map((workflow) => workflow.path).join(', ')}: never addresses the canonical CLI package ${cliPackageName}`];
152
+ }
153
+ /**
154
+ * VERIFY H2 — a manifest that is about to be packed/published must not leak a
155
+ * `workspace:` specifier, and every internal dependency must be pinned to the
156
+ * exact release version (they are published together, so a range would let a
157
+ * consumer resolve a sibling from a different release).
158
+ */
159
+ export function assertPublishableManifest(manifest, opts) {
160
+ const failures = [];
161
+ if (manifest.version !== opts.version) {
162
+ failures.push(`${opts.label}: version is ${manifest.version ?? '(none)'}, expected ${opts.version}`);
163
+ }
164
+ for (const field of RUNTIME_DEPENDENCY_FIELDS) {
165
+ for (const [name, range] of Object.entries(manifest[field] ?? {})) {
166
+ if (range.startsWith('workspace:')) {
167
+ failures.push(`${opts.label}: ${field}.${name} still uses the unpublishable specifier "${range}"`);
168
+ continue;
169
+ }
170
+ if (opts.internalNames.has(name) && range !== opts.version) {
171
+ failures.push(`${opts.label}: ${field}.${name} is "${range}", expected the co-released version ${opts.version}`);
172
+ }
173
+ }
174
+ }
175
+ return failures;
176
+ }
177
+ /** A semver prerelease is anything with a `-` pre-release segment (`1.2.3-rc.1`). */
178
+ export function isPrereleaseVersion(version) {
179
+ // Strip build metadata first — `1.2.3+build-1` has a hyphen but is a release.
180
+ const core = version.split('+')[0] ?? version;
181
+ return core.includes('-');
182
+ }
183
+ /**
184
+ * Decide the npm dist-tag for a publish run, and REFUSE rather than guess.
185
+ *
186
+ * npm's default when no `--tag` is given is `latest`, which is the tag `npm
187
+ * install @knowzai/cli` resolves. Publishing `1.2.3-rc.1` with that default
188
+ * hands every user of the plain install command an unreleased build — and the
189
+ * only way back is to re-point `latest` at the previous version by hand.
190
+ *
191
+ * A release version keeps `latest`. A prerelease MUST name its own tag: the
192
+ * caller is the one that knows whether this is an `rc`, a `next`, or a `canary`,
193
+ * and a default here would just reintroduce the same silent choice one layer
194
+ * down. So a prerelease with no tag is an error, not a fallback.
195
+ */
196
+ export function resolveDistTag(opts) {
197
+ if (opts.tag)
198
+ return opts.tag;
199
+ if (isPrereleaseVersion(opts.version)) {
200
+ throw new Error(`${opts.version} is a prerelease: pass an explicit --tag (e.g. --tag next). ` +
201
+ 'Publishing it without one would move the "latest" dist-tag and ship a prerelease ' +
202
+ 'to everyone running `npm install @knowzai/cli`.');
203
+ }
204
+ return 'latest';
205
+ }
206
+ /**
207
+ * H2 (resumability) — decide whether one package still needs publishing.
208
+ *
209
+ * A publish run is not atomic: eight packages go out one at a time, and a
210
+ * network blip, an OTP timeout, or a rate limit can strand the run halfway.
211
+ * Re-running used to be impossible — npm rejects a republish of an existing
212
+ * `name@version` with E403, so the retry died on the first already-published
213
+ * package and the remaining ones stayed unpublished. Recovering meant bumping
214
+ * every version for no reason.
215
+ *
216
+ * So an exact `name@version` that is ALREADY on the registry is not an error:
217
+ * it is work that is already done. It is verified against the same contract a
218
+ * fresh publish must satisfy (no `workspace:` leakage, internal deps pinned to
219
+ * the release version) and then skipped. A published copy that does NOT satisfy
220
+ * that contract is the one case that must stop the run — silently accepting it
221
+ * would ship a graph whose consumers cannot resolve.
222
+ *
223
+ * Pure so the script and the tests exercise identical logic; the caller owns the
224
+ * registry lookup and passes `null` for "not published".
225
+ */
226
+ export function decidePublishStep(opts) {
227
+ const target = `${opts.name}@${opts.version}`;
228
+ if (!opts.registryManifest) {
229
+ return { action: 'publish', reason: `${target} is not on the registry`, failures: [] };
230
+ }
231
+ const failures = [];
232
+ if (opts.registryManifest.name !== opts.name) {
233
+ failures.push(`${target}: registry returned a manifest for ${opts.registryManifest.name ?? '(unnamed)'}`);
234
+ }
235
+ failures.push(...assertPublishableManifest(opts.registryManifest, {
236
+ version: opts.version,
237
+ internalNames: opts.internalNames,
238
+ label: target,
239
+ }));
240
+ if (failures.length > 0) {
241
+ return {
242
+ action: 'fail',
243
+ reason: `${target} is already published but does not match this release`,
244
+ failures,
245
+ };
246
+ }
247
+ return { action: 'skip', reason: `${target} is already published and verified`, failures: [] };
248
+ }
249
+ //# sourceMappingURL=release-package-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-package-graph.js","sourceRoot":"","sources":["../../src/lib/release-package-graph.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,9 @@ export interface RepoBinding {
13
13
  version: 1;
14
14
  repoRoot: string;
15
15
  profile: string;
16
- apiUrl: string;
16
+ apiUrl?: string;
17
17
  vaultId: string;
18
+ scopeKind: 'local' | 'hosted';
18
19
  vaultName?: string;
19
20
  dbPath: string;
20
21
  graphPath: string;
@@ -33,8 +34,9 @@ export interface FoundRepoBinding {
33
34
  export interface RepoBindingInput {
34
35
  repoRoot: string;
35
36
  profile: string;
36
- apiUrl: string;
37
+ apiUrl?: string;
37
38
  vaultId: string;
39
+ scopeKind?: 'local' | 'hosted';
38
40
  vaultName?: string;
39
41
  dbPath?: string;
40
42
  graphPath?: string;
@@ -45,6 +47,9 @@ export declare function repoBindingPath(repoRoot: string): string;
45
47
  export declare function normalizeRepoRoot(path?: string): string;
46
48
  export declare function defaultRepoBinding(input: RepoBindingInput): RepoBinding;
47
49
  export declare function resolveRepoPath(binding: Pick<RepoBinding, 'repoRoot'>, path: string): string;
50
+ export declare function resolveConfinedRepoPath(repoRoot: string, candidate: string, opts?: {
51
+ allowMissingLeaf?: boolean;
52
+ }): string;
48
53
  export declare function saveRepoBinding(binding: RepoBinding): void;
49
54
  export declare function loadRepoBinding(path?: string): RepoBinding;
50
55
  export declare function findRepoBinding(path?: string): FoundRepoBinding | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"repo-binding.d.ts","sourceRoot":"","sources":["../../src/lib/repo-binding.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,qBAAqB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,SAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAmBvE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAI1D;AAED,wBAAgB,eAAe,CAAC,IAAI,SAAM,GAAG,WAAW,CAMvD;AAED,wBAAgB,eAAe,CAAC,IAAI,SAAM,GAAG,gBAAgB,GAAG,SAAS,CAaxE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,qBAAqB,EAC5B,GAAG,SAA2B,GAC7B,WAAW,CAMb;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAU7E"}
1
+ {"version":3,"file":"repo-binding.d.ts","sourceRoot":"","sources":["../../src/lib/repo-binding.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAQ3D,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,qBAAqB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,SAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAoBvE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5F;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CA0BR;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAkB1D;AAED,wBAAgB,eAAe,CAAC,IAAI,SAAM,GAAG,WAAW,CAMvD;AAED,wBAAgB,eAAe,CAAC,IAAI,SAAM,GAAG,gBAAgB,GAAG,SAAS,CAqBxE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,qBAAqB,EAC5B,GAAG,SAA2B,GAC7B,WAAW,CAMb;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAW7E"}
@@ -1,9 +1,16 @@
1
- import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
2
- import { dirname, isAbsolute, join, resolve } from 'node:path';
1
+ import { closeSync, constants as fsConstants, existsSync, fstatSync, lstatSync, mkdirSync, openSync, readFileSync, realpathSync, renameSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
3
4
  import { ExitCode, KnowzError } from '@knowzai/core';
4
5
  export const REPO_BINDING_VERSION = 1;
5
6
  export const DEFAULT_REPO_DB_PATH = '.knowz/knowz.sqlite';
6
7
  export const DEFAULT_REPO_GRAPH_PATH = '.knowz/graph.json';
8
+ const MAX_BINDING_BYTES = 64 * 1024;
9
+ const O_NOFOLLOW = fsConstants.O_NOFOLLOW ?? 0;
10
+ const KNOWN_BINDING_KEYS = new Set([
11
+ 'version', 'repoRoot', 'profile', 'apiUrl', 'vaultId', 'scopeKind', 'vaultName',
12
+ 'dbPath', 'graphPath', 'sync', 'index', 'createdAt', 'updatedAt',
13
+ ]);
7
14
  export function repoBindingPath(repoRoot) {
8
15
  return join(repoRoot, '.knowz', 'repo.json');
9
16
  }
@@ -13,7 +20,7 @@ export function normalizeRepoRoot(path = '.') {
13
20
  throw new KnowzError(`Path not found: ${root}`, ExitCode.NotFound);
14
21
  }
15
22
  const st = statSync(root);
16
- return st.isDirectory() ? root : dirname(root);
23
+ return realpathSync(st.isDirectory() ? root : dirname(root));
17
24
  }
18
25
  export function defaultRepoBinding(input) {
19
26
  const repoRoot = normalizeRepoRoot(input.repoRoot);
@@ -22,13 +29,14 @@ export function defaultRepoBinding(input) {
22
29
  version: REPO_BINDING_VERSION,
23
30
  repoRoot,
24
31
  profile: input.profile,
25
- apiUrl: input.apiUrl,
32
+ ...(input.apiUrl ? { apiUrl: input.apiUrl } : {}),
26
33
  vaultId: input.vaultId,
34
+ scopeKind: input.scopeKind ?? 'hosted',
27
35
  ...(input.vaultName ? { vaultName: input.vaultName } : {}),
28
36
  dbPath: input.dbPath ?? DEFAULT_REPO_DB_PATH,
29
37
  graphPath: input.graphPath ?? DEFAULT_REPO_GRAPH_PATH,
30
38
  sync: {
31
- enabled: input.syncEnabled ?? false,
39
+ enabled: input.scopeKind === 'local' ? false : (input.syncEnabled ?? false),
32
40
  },
33
41
  index: {},
34
42
  createdAt: now,
@@ -36,12 +44,56 @@ export function defaultRepoBinding(input) {
36
44
  };
37
45
  }
38
46
  export function resolveRepoPath(binding, path) {
39
- return isAbsolute(path) ? path : join(binding.repoRoot, path);
47
+ return resolveConfinedRepoPath(binding.repoRoot, path, { allowMissingLeaf: true });
48
+ }
49
+ export function resolveConfinedRepoPath(repoRoot, candidate, opts = {}) {
50
+ if (isAbsolute(candidate)) {
51
+ throw new KnowzError(`Absolute path is not allowed in a repo binding: ${candidate}`, ExitCode.Usage);
52
+ }
53
+ const root = realpathSync(repoRoot);
54
+ const target = resolve(root, candidate);
55
+ assertInside(root, target);
56
+ const parts = relative(root, target).split(sep).filter(Boolean);
57
+ let current = root;
58
+ for (let index = 0; index < parts.length; index++) {
59
+ current = join(current, parts[index]);
60
+ if (!existsSync(current)) {
61
+ // The closest existing ancestor has already been canonicalized and
62
+ // confined. Callers that create a path must re-run this check at open.
63
+ if (opts.allowMissingLeaf)
64
+ return target;
65
+ throw new KnowzError(`Repo path does not exist: ${candidate}`, ExitCode.NotFound);
66
+ }
67
+ const stat = lstatSync(current);
68
+ if (stat.isSymbolicLink() && index === parts.length - 1) {
69
+ throw new KnowzError(`Unsafe symbolic link in repo path: ${candidate}`, ExitCode.Usage);
70
+ }
71
+ const canonical = realpathSync(current);
72
+ assertInside(root, canonical);
73
+ }
74
+ return target;
40
75
  }
41
76
  export function saveRepoBinding(binding) {
42
77
  const path = repoBindingPath(binding.repoRoot);
43
78
  mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
44
- writeFileSync(path, `${JSON.stringify(binding, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
79
+ if (existsSync(path) && lstatSync(path).isSymbolicLink()) {
80
+ throw new KnowzError(`Unsafe symbolic link at ${path}`, ExitCode.Usage);
81
+ }
82
+ const temp = join(dirname(path), `.repo.json.${randomUUID()}.tmp`);
83
+ try {
84
+ const fd = openSync(temp, fsConstants.O_WRONLY | fsConstants.O_CREAT | fsConstants.O_EXCL, 0o600);
85
+ try {
86
+ writeFileSync(fd, `${JSON.stringify(binding, null, 2)}\n`, 'utf8');
87
+ }
88
+ finally {
89
+ closeSync(fd);
90
+ }
91
+ renameSync(temp, path);
92
+ }
93
+ finally {
94
+ if (existsSync(temp))
95
+ unlinkSync(temp);
96
+ }
45
97
  }
46
98
  export function loadRepoBinding(path = '.') {
47
99
  const found = findRepoBinding(path);
@@ -53,10 +105,18 @@ export function loadRepoBinding(path = '.') {
53
105
  export function findRepoBinding(path = '.') {
54
106
  let current = normalizeExistingStart(path);
55
107
  for (;;) {
108
+ if (existsSync(current) && lstatSync(current).isSymbolicLink()) {
109
+ throw new KnowzError(`Unsafe symbolic link in repository path: ${current}`, ExitCode.Usage);
110
+ }
56
111
  const bindingPath = repoBindingPath(current);
57
112
  if (existsSync(bindingPath)) {
58
- const binding = parseBinding(bindingPath);
59
- const repoRoot = current;
113
+ const knowzDirectory = dirname(bindingPath);
114
+ const knowzStat = lstatSync(knowzDirectory);
115
+ if (knowzStat.isSymbolicLink() || !knowzStat.isDirectory()) {
116
+ throw new KnowzError(`Unsafe symbolic link in repository binding path: ${knowzDirectory}`, ExitCode.Usage);
117
+ }
118
+ const repoRoot = realpathSync(current);
119
+ const binding = parseBinding(bindingPath, repoRoot);
60
120
  return { repoRoot, bindingPath, binding: { ...binding, repoRoot } };
61
121
  }
62
122
  const parent = dirname(current);
@@ -74,8 +134,9 @@ export function updateRepoBindingIndex(binding, index, now = new Date().toISOStr
74
134
  }
75
135
  export function equivalentRepoBinding(a, b) {
76
136
  return (a.profile === b.profile &&
77
- a.apiUrl === b.apiUrl &&
137
+ (a.apiUrl ?? '') === (b.apiUrl ?? '') &&
78
138
  a.vaultId === b.vaultId &&
139
+ a.scopeKind === b.scopeKind &&
79
140
  (a.vaultName ?? '') === (b.vaultName ?? '') &&
80
141
  a.dbPath === b.dbPath &&
81
142
  a.graphPath === b.graphPath &&
@@ -85,43 +146,95 @@ function normalizeExistingStart(path) {
85
146
  const start = resolve(path);
86
147
  if (!existsSync(start))
87
148
  return start;
88
- const st = statSync(start);
149
+ const st = lstatSync(start);
150
+ if (st.isSymbolicLink()) {
151
+ throw new KnowzError(`Unsafe symbolic link in repository path: ${start}`, ExitCode.Usage);
152
+ }
89
153
  return st.isDirectory() ? start : dirname(start);
90
154
  }
91
- function parseBinding(path) {
155
+ function parseBinding(path, authoritativeRepoRoot) {
92
156
  let parsed;
157
+ let fd;
93
158
  try {
94
- parsed = JSON.parse(readFileSync(path, 'utf8'));
159
+ if (lstatSync(path).isSymbolicLink()) {
160
+ throw new KnowzError(`Unsafe symbolic link at ${path}`, ExitCode.Usage);
161
+ }
162
+ fd = openSync(path, fsConstants.O_RDONLY | O_NOFOLLOW);
163
+ const stat = fstatSync(fd);
164
+ if (!stat.isFile())
165
+ throw new KnowzError(`Invalid Knowz repo binding at ${path}`, ExitCode.Usage);
166
+ if (stat.size > MAX_BINDING_BYTES) {
167
+ throw new KnowzError(`Knowz repo binding exceeds 64 KiB at ${path}`, ExitCode.Usage);
168
+ }
169
+ parsed = JSON.parse(readFileSync(fd, 'utf8'));
95
170
  }
96
171
  catch (err) {
172
+ if (err instanceof KnowzError)
173
+ throw err;
97
174
  throw new KnowzError(`Invalid Knowz repo binding at ${path}`, ExitCode.Usage, { cause: err });
98
175
  }
176
+ finally {
177
+ if (fd !== undefined)
178
+ closeSync(fd);
179
+ }
99
180
  if (!parsed || typeof parsed !== 'object') {
100
181
  throw new KnowzError(`Invalid Knowz repo binding at ${path}`, ExitCode.Usage);
101
182
  }
102
183
  const b = parsed;
184
+ validateUnknownBindingExtensions(parsed, authoritativeRepoRoot);
185
+ const scopeKind = b.scopeKind === undefined ? 'hosted' : b.scopeKind;
103
186
  if (b.version !== REPO_BINDING_VERSION ||
104
- typeof b.repoRoot !== 'string' ||
105
187
  typeof b.profile !== 'string' ||
106
- typeof b.apiUrl !== 'string' ||
188
+ (scopeKind === 'hosted' && typeof b.apiUrl !== 'string') ||
189
+ (scopeKind !== 'hosted' && scopeKind !== 'local') ||
107
190
  typeof b.vaultId !== 'string' ||
108
191
  typeof b.dbPath !== 'string' ||
109
192
  typeof b.graphPath !== 'string') {
110
193
  throw new KnowzError(`Invalid Knowz repo binding at ${path}`, ExitCode.Usage);
111
194
  }
112
195
  return {
196
+ ...parsed,
113
197
  version: REPO_BINDING_VERSION,
114
- repoRoot: b.repoRoot,
198
+ repoRoot: authoritativeRepoRoot,
115
199
  profile: b.profile,
116
- apiUrl: b.apiUrl,
200
+ ...(typeof b.apiUrl === 'string' ? { apiUrl: b.apiUrl } : {}),
117
201
  vaultId: b.vaultId,
202
+ scopeKind,
118
203
  ...(typeof b.vaultName === 'string' ? { vaultName: b.vaultName } : {}),
119
204
  dbPath: b.dbPath,
120
205
  graphPath: b.graphPath,
121
- sync: { enabled: Boolean(b.sync?.enabled) },
206
+ sync: { enabled: scopeKind === 'local' ? false : Boolean(b.sync?.enabled) },
122
207
  index: b.index ?? {},
123
208
  createdAt: b.createdAt ?? new Date(0).toISOString(),
124
209
  updatedAt: b.updatedAt ?? new Date(0).toISOString(),
125
210
  };
126
211
  }
212
+ function validateUnknownBindingExtensions(value, repoRoot) {
213
+ const visit = (candidate, key) => {
214
+ if (typeof candidate === 'string' && /(?:path|file|dir|root)$/i.test(key)) {
215
+ resolveConfinedRepoPath(repoRoot, candidate, { allowMissingLeaf: true });
216
+ return;
217
+ }
218
+ if (!candidate || typeof candidate !== 'object')
219
+ return;
220
+ if (Array.isArray(candidate)) {
221
+ for (const entry of candidate)
222
+ visit(entry, key);
223
+ return;
224
+ }
225
+ for (const [nestedKey, nestedValue] of Object.entries(candidate)) {
226
+ visit(nestedValue, nestedKey);
227
+ }
228
+ };
229
+ for (const [key, candidate] of Object.entries(value)) {
230
+ if (!KNOWN_BINDING_KEYS.has(key))
231
+ visit(candidate, key);
232
+ }
233
+ }
234
+ function assertInside(root, target) {
235
+ const rel = relative(root, target);
236
+ if (rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {
237
+ throw new KnowzError(`Path resolves outside repository root: ${target}`, ExitCode.Usage);
238
+ }
239
+ }
127
240
  //# sourceMappingURL=repo-binding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-binding.js","sourceRoot":"","sources":["../../src/lib/repo-binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-binding.js","sourceRoot":"","sources":["../../src/lib/repo-binding.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { RepoBinding, FoundRepoBinding } from './repo-binding.js';
2
2
  export declare function requireRepoBinding(found: FoundRepoBinding | undefined): RepoBinding;
3
- export declare function buildHostedMcpCommand(binding: Pick<RepoBinding, 'apiUrl' | 'vaultId'>): string;
3
+ export declare function buildHostedMcpCommand(binding: Pick<RepoBinding, 'vaultId'> & {
4
+ apiUrl: string;
5
+ }): string;
4
6
  export declare function installRepoHooks(settingsPath: string, opts: {
5
7
  binding: RepoBinding;
6
8
  dbPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"repo-command-support.d.ts","sourceRoot":"","sources":["../../src/lib/repo-command-support.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,WAAW,CAKnF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG,MAAM,CAc9F;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAWpC;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAChF,MAAM,CAoBR"}
1
+ {"version":3,"file":"repo-command-support.d.ts","sourceRoot":"","sources":["../../src/lib/repo-command-support.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,WAAW,CAKnF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAcxG;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAWpC;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAChF,MAAM,CAoBR"}
@@ -1 +1 @@
1
- {"version":3,"file":"repo-command-support.js","sourceRoot":"","sources":["../../src/lib/repo-command-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjF,MAAM,UAAU,kBAAkB,CAAC,KAAmC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,4DAA4D,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgD;IACpF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAClG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO;QACL,QAAQ;QACR,KAAK;QACL,KAAK;QACL,aAAa;QACb,MAAM;QACN,OAAO;QACP,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,UAAU;QACV,QAAQ,CAAC,sCAAsC,CAAC;KACjD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,IAAqE;IAErE,OAAO,kBAAkB,CACvB,YAAY,EACZ,cAAc,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,aAAa;QAC1B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;KAC9B,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,IAAiF;IAEjF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG;QACX,sBAAsB;QACtB,SAAS,OAAO,CAAC,QAAQ,EAAE;QAC3B,UAAU,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;QAC9E,aAAa,IAAI,CAAC,MAAM,EAAE;QAC1B,UAAU,IAAI,CAAC,SAAS,EAAE;QAC1B,eAAe,WAAW,EAAE;QAC5B,EAAE;QACF,wFAAwF;QACxF,4CAA4C,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACxE,sBAAsB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;QACxE,uBAAuB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACnD,EAAE;QACF,+EAA+E;QAC/E,IAAI,CAAC,UAAU;QACf,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC"}
1
+ {"version":3,"file":"repo-command-support.js","sourceRoot":"","sources":["../../src/lib/repo-command-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjF,MAAM,UAAU,kBAAkB,CAAC,KAAmC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,4DAA4D,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA0D;IAC9F,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAClG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO;QACL,QAAQ;QACR,KAAK;QACL,KAAK;QACL,aAAa;QACb,MAAM;QACN,OAAO;QACP,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,UAAU;QACV,QAAQ,CAAC,sCAAsC,CAAC;KACjD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,IAAqE;IAErE,OAAO,kBAAkB,CACvB,YAAY,EACZ,cAAc,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,aAAa;QAC1B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;KAC9B,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,IAAiF;IAEjF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG;QACX,sBAAsB;QACtB,SAAS,OAAO,CAAC,QAAQ,EAAE;QAC3B,UAAU,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;QAC9E,aAAa,IAAI,CAAC,MAAM,EAAE;QAC1B,UAAU,IAAI,CAAC,SAAS,EAAE;QAC1B,eAAe,WAAW,EAAE;QAC5B,EAAE;QACF,wFAAwF;QACxF,4CAA4C,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACxE,sBAAsB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;QACxE,uBAAuB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACnD,EAAE;QACF,+EAA+E;QAC/E,IAAI,CAAC,UAAU;QACf,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC"}