@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.
- package/assets/portable/.env.example +3 -0
- package/assets/portable/docker-compose.yml +18 -0
- package/assets/portable/releases.json +22 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/base-command.d.ts +21 -2
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +47 -4
- package/dist/base-command.js.map +1 -1
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +5 -1
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/auth/status.d.ts +1 -1
- package/dist/commands/auth/status.d.ts.map +1 -1
- package/dist/commands/auth/status.js +4 -0
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/chat.d.ts +5 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +32 -13
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/config/get.d.ts.map +1 -1
- package/dist/commands/config/get.js +3 -1
- package/dist/commands/config/get.js.map +1 -1
- package/dist/commands/config/list.d.ts.map +1 -1
- package/dist/commands/config/list.js +12 -4
- package/dist/commands/config/list.js.map +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/export.d.ts +27 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +155 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +27 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +124 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/index/scan.d.ts.map +1 -1
- package/dist/commands/index/scan.js +24 -5
- package/dist/commands/index/scan.js.map +1 -1
- package/dist/commands/knowledge/amend.d.ts +1 -0
- package/dist/commands/knowledge/amend.d.ts.map +1 -1
- package/dist/commands/knowledge/amend.js +11 -2
- package/dist/commands/knowledge/amend.js.map +1 -1
- package/dist/commands/knowledge/attach.d.ts +19 -0
- package/dist/commands/knowledge/attach.d.ts.map +1 -0
- package/dist/commands/knowledge/attach.js +51 -0
- package/dist/commands/knowledge/attach.js.map +1 -0
- package/dist/commands/knowledge/create.d.ts +9 -1
- package/dist/commands/knowledge/create.d.ts.map +1 -1
- package/dist/commands/knowledge/create.js +26 -4
- package/dist/commands/knowledge/create.js.map +1 -1
- package/dist/commands/knowledge/update.d.ts +1 -0
- package/dist/commands/knowledge/update.d.ts.map +1 -1
- package/dist/commands/knowledge/update.js +4 -1
- package/dist/commands/knowledge/update.js.map +1 -1
- package/dist/commands/login.d.ts +19 -3
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +113 -64
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +2 -0
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +35 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/mcp/serve.d.ts +16 -0
- package/dist/commands/mcp/serve.d.ts.map +1 -0
- package/dist/commands/mcp/serve.js +50 -0
- package/dist/commands/mcp/serve.js.map +1 -0
- package/dist/commands/menu.d.ts.map +1 -1
- package/dist/commands/menu.js +39 -3
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/peer/accept-fingerprint.d.ts +17 -0
- package/dist/commands/peer/accept-fingerprint.d.ts.map +1 -0
- package/dist/commands/peer/accept-fingerprint.js +35 -0
- package/dist/commands/peer/accept-fingerprint.js.map +1 -0
- package/dist/commands/peer/add.d.ts +22 -0
- package/dist/commands/peer/add.d.ts.map +1 -0
- package/dist/commands/peer/add.js +44 -0
- package/dist/commands/peer/add.js.map +1 -0
- package/dist/commands/peer/cancel.d.ts +13 -0
- package/dist/commands/peer/cancel.d.ts.map +1 -0
- package/dist/commands/peer/cancel.js +20 -0
- package/dist/commands/peer/cancel.js.map +1 -0
- package/dist/commands/peer/link.d.ts +16 -0
- package/dist/commands/peer/link.d.ts.map +1 -0
- package/dist/commands/peer/link.js +32 -0
- package/dist/commands/peer/link.js.map +1 -0
- package/dist/commands/peer/links.d.ts +12 -0
- package/dist/commands/peer/links.d.ts.map +1 -0
- package/dist/commands/peer/links.js +25 -0
- package/dist/commands/peer/links.js.map +1 -0
- package/dist/commands/peer/list.d.ts +10 -0
- package/dist/commands/peer/list.d.ts.map +1 -0
- package/dist/commands/peer/list.js +22 -0
- package/dist/commands/peer/list.js.map +1 -0
- package/dist/commands/peer/pull.d.ts +19 -0
- package/dist/commands/peer/pull.d.ts.map +1 -0
- package/dist/commands/peer/pull.js +30 -0
- package/dist/commands/peer/pull.js.map +1 -0
- package/dist/commands/peer/push.d.ts +19 -0
- package/dist/commands/peer/push.d.ts.map +1 -0
- package/dist/commands/peer/push.js +30 -0
- package/dist/commands/peer/push.js.map +1 -0
- package/dist/commands/peer/remove.d.ts +12 -0
- package/dist/commands/peer/remove.d.ts.map +1 -0
- package/dist/commands/peer/remove.js +19 -0
- package/dist/commands/peer/remove.js.map +1 -0
- package/dist/commands/peer/rotate-key.d.ts +14 -0
- package/dist/commands/peer/rotate-key.d.ts.map +1 -0
- package/dist/commands/peer/rotate-key.js +26 -0
- package/dist/commands/peer/rotate-key.js.map +1 -0
- package/dist/commands/peer/run.d.ts +13 -0
- package/dist/commands/peer/run.d.ts.map +1 -0
- package/dist/commands/peer/run.js +31 -0
- package/dist/commands/peer/run.js.map +1 -0
- package/dist/commands/peer/runs.d.ts +15 -0
- package/dist/commands/peer/runs.d.ts.map +1 -0
- package/dist/commands/peer/runs.js +32 -0
- package/dist/commands/peer/runs.js.map +1 -0
- package/dist/commands/peer/test.d.ts +13 -0
- package/dist/commands/peer/test.d.ts.map +1 -0
- package/dist/commands/peer/test.js +30 -0
- package/dist/commands/peer/test.js.map +1 -0
- package/dist/commands/peer/unlink.d.ts +13 -0
- package/dist/commands/peer/unlink.d.ts.map +1 -0
- package/dist/commands/peer/unlink.js +20 -0
- package/dist/commands/peer/unlink.js.map +1 -0
- package/dist/commands/pg/status.d.ts.map +1 -1
- package/dist/commands/pg/status.js +6 -3
- package/dist/commands/pg/status.js.map +1 -1
- package/dist/commands/pg/up.d.ts.map +1 -1
- package/dist/commands/pg/up.js +9 -4
- package/dist/commands/pg/up.js.map +1 -1
- package/dist/commands/platform/status.d.ts.map +1 -1
- package/dist/commands/platform/status.js +4 -4
- package/dist/commands/platform/status.js.map +1 -1
- package/dist/commands/profile/purge.d.ts +20 -0
- package/dist/commands/profile/purge.d.ts.map +1 -0
- package/dist/commands/profile/purge.js +43 -0
- package/dist/commands/profile/purge.js.map +1 -0
- package/dist/commands/repo/context.d.ts.map +1 -1
- package/dist/commands/repo/context.js +3 -1
- package/dist/commands/repo/context.js.map +1 -1
- package/dist/commands/repo/graph.d.ts +3 -6
- package/dist/commands/repo/graph.d.ts.map +1 -1
- package/dist/commands/repo/graph.js +24 -40
- package/dist/commands/repo/graph.js.map +1 -1
- package/dist/commands/repo/index/index.d.ts +1 -0
- package/dist/commands/repo/index/index.d.ts.map +1 -1
- package/dist/commands/repo/index/index.js +100 -12
- package/dist/commands/repo/index/index.js.map +1 -1
- package/dist/commands/repo/search.d.ts.map +1 -1
- package/dist/commands/repo/search.js +2 -0
- package/dist/commands/repo/search.js.map +1 -1
- package/dist/commands/repo/setup.d.ts +9 -2
- package/dist/commands/repo/setup.d.ts.map +1 -1
- package/dist/commands/repo/setup.js +84 -8
- package/dist/commands/repo/setup.js.map +1 -1
- package/dist/commands/status.d.ts +4 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +21 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/transfer.d.ts +30 -0
- package/dist/commands/transfer.d.ts.map +1 -0
- package/dist/commands/transfer.js +140 -0
- package/dist/commands/transfer.js.map +1 -0
- package/dist/commands/tui.js +1 -1
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/up.d.ts +5 -2
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +41 -12
- package/dist/commands/up.js.map +1 -1
- package/dist/lib/attach.d.ts +48 -0
- package/dist/lib/attach.d.ts.map +1 -0
- package/dist/lib/attach.js +91 -0
- package/dist/lib/attach.js.map +1 -0
- package/dist/lib/chat-render.d.ts +39 -0
- package/dist/lib/chat-render.d.ts.map +1 -0
- package/dist/lib/chat-render.js +77 -0
- package/dist/lib/chat-render.js.map +1 -0
- package/dist/lib/cmek-guard.d.ts +52 -0
- package/dist/lib/cmek-guard.d.ts.map +1 -0
- package/dist/lib/cmek-guard.js +73 -0
- package/dist/lib/cmek-guard.js.map +1 -0
- package/dist/lib/content.d.ts +7 -0
- package/dist/lib/content.d.ts.map +1 -1
- package/dist/lib/content.js +9 -2
- package/dist/lib/content.js.map +1 -1
- package/dist/lib/credential-purge.d.ts +52 -0
- package/dist/lib/credential-purge.d.ts.map +1 -0
- package/dist/lib/credential-purge.js +37 -0
- package/dist/lib/credential-purge.js.map +1 -0
- package/dist/lib/ingest.d.ts.map +1 -1
- package/dist/lib/ingest.js +7 -3
- package/dist/lib/ingest.js.map +1 -1
- package/dist/lib/local-mcp-server.d.ts +82 -0
- package/dist/lib/local-mcp-server.d.ts.map +1 -0
- package/dist/lib/local-mcp-server.js +252 -0
- package/dist/lib/local-mcp-server.js.map +1 -0
- package/dist/lib/local-mcp-stdio.d.ts +8 -0
- package/dist/lib/local-mcp-stdio.d.ts.map +1 -0
- package/dist/lib/local-mcp-stdio.js +50 -0
- package/dist/lib/local-mcp-stdio.js.map +1 -0
- package/dist/lib/login-guided.d.ts +20 -0
- package/dist/lib/login-guided.d.ts.map +1 -0
- package/dist/lib/login-guided.js +89 -0
- package/dist/lib/login-guided.js.map +1 -0
- package/dist/lib/login.d.ts +58 -12
- package/dist/lib/login.d.ts.map +1 -1
- package/dist/lib/login.js +170 -12
- package/dist/lib/login.js.map +1 -1
- package/dist/lib/onboarding.d.ts +56 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +67 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/peer-command.d.ts +51 -0
- package/dist/lib/peer-command.d.ts.map +1 -0
- package/dist/lib/peer-command.js +120 -0
- package/dist/lib/peer-command.js.map +1 -0
- package/dist/lib/peer-support.d.ts +67 -0
- package/dist/lib/peer-support.d.ts.map +1 -0
- package/dist/lib/peer-support.js +154 -0
- package/dist/lib/peer-support.js.map +1 -0
- package/dist/lib/platform-frontdoor-runtime.d.ts.map +1 -1
- package/dist/lib/platform-frontdoor-runtime.js +4 -0
- package/dist/lib/platform-frontdoor-runtime.js.map +1 -1
- package/dist/lib/platform-frontdoor.d.ts +18 -2
- package/dist/lib/platform-frontdoor.d.ts.map +1 -1
- package/dist/lib/platform-frontdoor.js +148 -9
- package/dist/lib/platform-frontdoor.js.map +1 -1
- package/dist/lib/platform-lifecycle.d.ts +7 -0
- package/dist/lib/platform-lifecycle.d.ts.map +1 -1
- package/dist/lib/platform-lifecycle.js +14 -3
- package/dist/lib/platform-lifecycle.js.map +1 -1
- package/dist/lib/platform-onboarding.d.ts +1 -0
- package/dist/lib/platform-onboarding.d.ts.map +1 -1
- package/dist/lib/platform-onboarding.js +13 -2
- package/dist/lib/platform-onboarding.js.map +1 -1
- package/dist/lib/platform-profile-purge.d.ts +1 -1
- package/dist/lib/platform-profile-purge.d.ts.map +1 -1
- package/dist/lib/platform-profile-purge.js +2 -1
- package/dist/lib/platform-profile-purge.js.map +1 -1
- package/dist/lib/platform-provider-prompt.d.ts +4 -0
- package/dist/lib/platform-provider-prompt.d.ts.map +1 -1
- package/dist/lib/platform-provider-prompt.js +4 -0
- package/dist/lib/platform-provider-prompt.js.map +1 -1
- package/dist/lib/platform-release-manifest.d.ts +14 -0
- package/dist/lib/platform-release-manifest.d.ts.map +1 -1
- package/dist/lib/platform-release-manifest.js +24 -0
- package/dist/lib/platform-release-manifest.js.map +1 -1
- package/dist/lib/portability-shared.d.ts +49 -0
- package/dist/lib/portability-shared.d.ts.map +1 -0
- package/dist/lib/portability-shared.js +220 -0
- package/dist/lib/portability-shared.js.map +1 -0
- package/dist/lib/project-mcp-config.d.ts +14 -0
- package/dist/lib/project-mcp-config.d.ts.map +1 -0
- package/dist/lib/project-mcp-config.js +78 -0
- package/dist/lib/project-mcp-config.js.map +1 -0
- package/dist/lib/release-package-graph.d.ts +154 -0
- package/dist/lib/release-package-graph.d.ts.map +1 -0
- package/dist/lib/release-package-graph.js +249 -0
- package/dist/lib/release-package-graph.js.map +1 -0
- package/dist/lib/repo-binding.d.ts +7 -2
- package/dist/lib/repo-binding.d.ts.map +1 -1
- package/dist/lib/repo-binding.js +131 -18
- package/dist/lib/repo-binding.js.map +1 -1
- package/dist/lib/repo-command-support.d.ts +3 -1
- package/dist/lib/repo-command-support.d.ts.map +1 -1
- package/dist/lib/repo-command-support.js.map +1 -1
- package/dist/lib/repo-local-mcp-backend.d.ts +65 -0
- package/dist/lib/repo-local-mcp-backend.d.ts.map +1 -0
- package/dist/lib/repo-local-mcp-backend.js +288 -0
- package/dist/lib/repo-local-mcp-backend.js.map +1 -0
- package/dist/lib/repo-local-mcp-runtime.d.ts +17 -0
- package/dist/lib/repo-local-mcp-runtime.d.ts.map +1 -0
- package/dist/lib/repo-local-mcp-runtime.js +136 -0
- package/dist/lib/repo-local-mcp-runtime.js.map +1 -0
- package/dist/lib/repo-scope-migration.d.ts +4 -0
- package/dist/lib/repo-scope-migration.d.ts.map +1 -0
- package/dist/lib/repo-scope-migration.js +55 -0
- package/dist/lib/repo-scope-migration.js.map +1 -0
- package/dist/lib/repo-scope.d.ts +9 -0
- package/dist/lib/repo-scope.d.ts.map +1 -0
- package/dist/lib/repo-scope.js +15 -0
- package/dist/lib/repo-scope.js.map +1 -0
- package/dist/lib/safe-file.d.ts +141 -0
- package/dist/lib/safe-file.d.ts.map +1 -0
- package/dist/lib/safe-file.js +296 -0
- package/dist/lib/safe-file.js.map +1 -0
- package/dist/lib/setup-console.d.ts +1 -1
- package/dist/lib/setup-console.d.ts.map +1 -1
- package/dist/lib/setup-console.js +3 -1
- package/dist/lib/setup-console.js.map +1 -1
- package/dist/lib/setup-page.d.ts.map +1 -1
- package/dist/lib/setup-page.js +18 -6
- package/dist/lib/setup-page.js.map +1 -1
- package/dist/lib/setup-plan.d.ts +2 -1
- package/dist/lib/setup-plan.d.ts.map +1 -1
- package/dist/lib/setup-plan.js +9 -2
- package/dist/lib/setup-plan.js.map +1 -1
- package/dist/lib/setup-server.d.ts.map +1 -1
- package/dist/lib/setup-server.js +13 -3
- package/dist/lib/setup-server.js.map +1 -1
- package/dist/lib/sso-login.d.ts +42 -0
- package/dist/lib/sso-login.d.ts.map +1 -0
- package/dist/lib/sso-login.js +135 -0
- package/dist/lib/sso-login.js.map +1 -0
- package/dist/lib/transfer.d.ts +80 -0
- package/dist/lib/transfer.d.ts.map +1 -0
- package/dist/lib/transfer.js +173 -0
- package/dist/lib/transfer.js.map +1 -0
- package/dist/lib/tui.d.ts +0 -6
- package/dist/lib/tui.d.ts.map +1 -1
- package/dist/lib/tui.js +6 -1
- package/dist/lib/tui.js.map +1 -1
- package/dist/lib/ui.js +1 -1
- package/dist/lib/ui.js.map +1 -1
- package/dist/menu/run.d.ts +7 -0
- package/dist/menu/run.d.ts.map +1 -1
- package/dist/menu/run.js +38 -2
- package/dist/menu/run.js.map +1 -1
- package/oclif.manifest.json +3400 -1361
- 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
|
|
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
|
|
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":"
|
|
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"}
|
package/dist/lib/repo-binding.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
2
|
-
import {
|
|
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
|
|
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
|
-
|
|
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
|
|
59
|
-
const
|
|
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 =
|
|
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
|
-
|
|
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:
|
|
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, '
|
|
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,
|
|
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,
|
|
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"}
|