kibi-cli 2.28.0 → 2.29.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/bin/kibi +12 -1
- package/dist/cli-command.d.ts +3 -0
- package/dist/cli-command.d.ts.map +1 -1
- package/dist/cli-command.js +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -2
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +4 -1
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +26 -2
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +6 -7
- package/dist/commands/sync.d.ts +10 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +67 -3
- package/dist/engine.d.ts +11 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +120 -34
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +3 -5
- package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
- package/dist/extractors/symbol-coordinates.js +3 -5
- package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
- package/dist/extractors/symbols-coordinator.js +3 -4
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +4 -4
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +4 -3
- package/dist/operations/mutation/validation.js +11 -0
- package/dist/plugins/approved-source-analyzers.generated.d.ts +6 -6
- package/dist/plugins/approved-source-analyzers.generated.js +6 -6
- package/dist/prolog/error-terms.d.ts.map +1 -1
- package/dist/prolog/error-terms.js +15 -9
- package/dist/prolog/store-lock.d.ts +11 -0
- package/dist/prolog/store-lock.d.ts.map +1 -1
- package/dist/prolog/store-lock.js +48 -1
- package/dist/traceability/commit-amend.d.ts +7 -0
- package/dist/traceability/commit-amend.d.ts.map +1 -0
- package/dist/traceability/commit-amend.js +85 -0
- package/dist/traceability/staged-inventory-drift.d.ts +12 -2
- package/dist/traceability/staged-inventory-drift.d.ts.map +1 -1
- package/dist/traceability/staged-inventory-drift.js +22 -5
- package/dist/utils/repo-relative-path.d.ts +7 -0
- package/dist/utils/repo-relative-path.d.ts.map +1 -1
- package/dist/utils/repo-relative-path.js +26 -0
- package/package.json +4 -4
- package/schema/entities.pl +2 -1
- package/schema/validation.pl +15 -0
package/bin/kibi
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
You should have received a copy of the GNU Affero General Public License
|
|
17
17
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
// Kibi needs Node.js 22+ (package "engines"), but npm only warns on a
|
|
20
|
+
// mismatch. Fail before loading anything, with the Node that was found.
|
|
21
|
+
const nodeMajor = Number(process.versions.node.split(".")[0]);
|
|
22
|
+
if (!globalThis.Bun && nodeMajor < 22) {
|
|
23
|
+
process.stderr.write(
|
|
24
|
+
`kibi requires Node.js 22 or later, but was started with Node.js ${process.versions.node} (${process.execPath}). ` +
|
|
25
|
+
"Put Node.js 22+ first on PATH, including for the host that launches it, and retry.\n",
|
|
26
|
+
);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const { main } = await import("../dist/cli.js");
|
|
20
31
|
|
|
21
32
|
await main();
|
package/dist/cli-command.d.ts
CHANGED
|
@@ -2,4 +2,7 @@ export interface CommandResult {
|
|
|
2
2
|
readonly exitCode?: number;
|
|
3
3
|
}
|
|
4
4
|
export declare function withExitCode<TArgs extends unknown[]>(fn: (...args: TArgs) => Promise<CommandResult | undefined>): (...args: TArgs) => Promise<void>;
|
|
5
|
+
/** Note that a command already printed this error, so the CLI does not again. */
|
|
6
|
+
export declare function markErrorReported(error: unknown): void;
|
|
7
|
+
export declare function errorWasReported(error: unknown): boolean;
|
|
5
8
|
//# sourceMappingURL=cli-command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-command.d.ts","sourceRoot":"","sources":["../src/cli-command.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAGD,wBAAgB,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,EAClD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,GACzD,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAOnC"}
|
|
1
|
+
{"version":3,"file":"cli-command.d.ts","sourceRoot":"","sources":["../src/cli-command.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAGD,wBAAgB,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,EAClD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,GACzD,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAOnC;AAID,iFAAiF;AAEjF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEtD;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIxD"}
|
package/dist/cli-command.js
CHANGED
|
@@ -7,3 +7,14 @@ export function withExitCode(fn) {
|
|
|
7
7
|
}
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
|
+
const reportedErrors = new WeakSet();
|
|
11
|
+
/** Note that a command already printed this error, so the CLI does not again. */
|
|
12
|
+
// implements REQ-kibi-operation-interface-parity
|
|
13
|
+
export function markErrorReported(error) {
|
|
14
|
+
if (typeof error === "object" && error !== null)
|
|
15
|
+
reportedErrors.add(error);
|
|
16
|
+
}
|
|
17
|
+
// implements REQ-kibi-operation-interface-parity
|
|
18
|
+
export function errorWasReported(error) {
|
|
19
|
+
return (typeof error === "object" && error !== null && reportedErrors.has(error));
|
|
20
|
+
}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUrD;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAIT;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAM7D;AAGD,wBAAgB,YAAY,IAAI,OAAO,CAiBtC;AAGD,wBAAsB,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAe3C;AAED,wBAAsB,kBAAkB,CACtC,YAAY,UAAoD,EAChE,KAAK,cAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
package/dist/cli.js
CHANGED
|
@@ -20,6 +20,7 @@ import { readFileSync } from "node:fs";
|
|
|
20
20
|
import { resolve } from "node:path";
|
|
21
21
|
import { pathToFileURL } from "node:url";
|
|
22
22
|
import { Command } from "commander";
|
|
23
|
+
import { errorWasReported } from "./cli-command.js";
|
|
23
24
|
import { registerFoundationCommands } from "./cli-register-foundation.js";
|
|
24
25
|
import { registerJsonOnlyCommands } from "./cli-register-json.js";
|
|
25
26
|
import { registerMaintenanceCommands } from "./cli-register-maintenance.js";
|
|
@@ -41,8 +42,10 @@ export function isCliEntrypoint(argv1, moduleUrl) {
|
|
|
41
42
|
return (argv1 !== undefined && moduleUrl === pathToFileURL(resolve(argv1)).href);
|
|
42
43
|
}
|
|
43
44
|
export function exitCodeFromCliFailure(error) {
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
if (!errorWasReported(error)) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
console.error(message);
|
|
48
|
+
}
|
|
46
49
|
return 1;
|
|
47
50
|
}
|
|
48
51
|
// implements REQ-kibi-operation-interface-parity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAoF7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AA6hBD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC5B,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAC3B,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAMpB;AAGD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA0rB/B;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAoDtB;AAID,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAkEtB;AAID,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAmGtB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAyCtB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAgDtB;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CA0BtB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAqBtB;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAqBtB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAqBtB"}
|
package/dist/commands/check.js
CHANGED
|
@@ -26,6 +26,7 @@ import { escapeAtom, normalizeEntityId, parseTriples, parseViolationRows, } from
|
|
|
26
26
|
import { createSemanticReviewDiagnostics, createSymbolGranularityDiagnostics, createSymbolQualityDiagnostics, hasBlockingImpactDiagnostics, } from "../public/impact-diagnostics.js";
|
|
27
27
|
import { executeCheck } from "../public/operations/check-executor.js";
|
|
28
28
|
import { refreshDetachedSnapshot } from "../runtime/detached-snapshot.js";
|
|
29
|
+
import { amendsRootCommit } from "../traceability/commit-amend.js";
|
|
29
30
|
import { KIBI_NO_IMPACT_DECLARATION, KIBI_SYMBOLS_MANIFEST_PATH, KIBI_SYMBOL_COORDINATES_PATH, } from "../traceability/evidence-model.js";
|
|
30
31
|
import { captureStagedSnapshot } from "../traceability/git-change-snapshot.js";
|
|
31
32
|
import { supportedStagedFiles, } from "../traceability/git-staged.js";
|
|
@@ -617,6 +618,8 @@ export async function checkCommand(options) {
|
|
|
617
618
|
const inventoryDrift = stagedInventoryDriftViolations({
|
|
618
619
|
stagedPaths: new Set(markdownFiles.map((file) => file.path)),
|
|
619
620
|
snapshotEntities,
|
|
621
|
+
judgeNewRequirements: snapshot.headCommit !== null &&
|
|
622
|
+
!amendsRootCommit(process.cwd(), snapshot.headCommit),
|
|
620
623
|
readBase: (filePath) => {
|
|
621
624
|
try {
|
|
622
625
|
return snapshot
|
|
@@ -634,7 +637,7 @@ export async function checkCommand(options) {
|
|
|
634
637
|
coverage: stagedCoverage,
|
|
635
638
|
violations: inventoryDrift,
|
|
636
639
|
messages: [
|
|
637
|
-
`${inventoryDrift.length} staged requirement(s) have a semantic inventory that no longer matches their prose:`,
|
|
640
|
+
`${inventoryDrift.length} staged requirement(s) have a semantic inventory that is missing or no longer matches their prose:`,
|
|
638
641
|
...inventoryDrift.map((violation) => ` ${violation.message}`),
|
|
639
642
|
],
|
|
640
643
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/commands/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/commands/engine.ts"],"names":[],"mappings":"AA6CA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BzD;AAcD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBvD;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AAEH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3D;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB"}
|
package/dist/commands/engine.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { EngineClient } from "../engine.js";
|
|
3
|
+
import { classifyStoreLockHolder, describeLockHolderPid, lockHolderProcess, readStoreLockOwner, } from "../prolog/store-lock.js";
|
|
3
4
|
import { resolveBranchAttachment, resolveReadBranchAttachment, } from "../utils/branch-resolver.js";
|
|
4
5
|
// Engine maintenance never writes the KB, so a detached HEAD addresses the
|
|
5
6
|
// daemon serving its read-only snapshot.
|
|
@@ -55,14 +56,37 @@ export async function engineStatusCommand() {
|
|
|
55
56
|
await engine.terminate();
|
|
56
57
|
}
|
|
57
58
|
}
|
|
59
|
+
/** The pid of a live process holding the active branch store, if any. */
|
|
60
|
+
function liveStoreLockHolder(root) {
|
|
61
|
+
const attachment = resolveReadBranchAttachment(root);
|
|
62
|
+
if ("error" in attachment)
|
|
63
|
+
return null;
|
|
64
|
+
const recorded = readStoreLockOwner(attachment.storePath);
|
|
65
|
+
if (recorded === null)
|
|
66
|
+
return null;
|
|
67
|
+
const state = classifyStoreLockHolder(recorded.owner);
|
|
68
|
+
return state === "alive" && recorded.owner.pid !== undefined
|
|
69
|
+
? recorded.owner.pid
|
|
70
|
+
: null;
|
|
71
|
+
}
|
|
58
72
|
export async function engineStopCommand() {
|
|
59
73
|
const engine = client();
|
|
60
74
|
try {
|
|
61
75
|
// Stopping an absent daemon must remain a no-op. Starting SWI merely to
|
|
62
76
|
// shut it down defeats the maintenance command and can unexpectedly
|
|
63
77
|
// migrate a legacy branch during an operator status check.
|
|
64
|
-
|
|
65
|
-
|
|
78
|
+
const branch = currentBranch(workspaceRoot());
|
|
79
|
+
if (await engine.stop(false)) {
|
|
80
|
+
console.log("Kibi engine stopped");
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const { engineSocketPath } = await import("../engine.js");
|
|
84
|
+
console.log(`No Kibi engine answered at ${engineSocketPath(workspaceRoot(), branch)}`);
|
|
85
|
+
const holder = liveStoreLockHolder(workspaceRoot());
|
|
86
|
+
if (holder !== null) {
|
|
87
|
+
const owner = lockHolderProcess(holder);
|
|
88
|
+
console.log(`The branch store is still held by ${describeLockHolderPid(holder)}. That engine was likely started with a different KIBI_RUNTIME_DIR, XDG_RUNTIME_DIR or TMPDIR; stop it from the same environment, or end pid ${owner.pid}.`);
|
|
89
|
+
}
|
|
66
90
|
}
|
|
67
91
|
finally {
|
|
68
92
|
await engine.terminate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EAML,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EAML,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,0BAA0B,EAG3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,UAAU,YAAY;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;CACjE;AAkBD,eAAO,MAAM,8BAA8B,QAc1C,CAAC;AAeF;;;;;;;;;GASG;AACH,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAG7E;AAyHD,wBAAsB,0BAA0B,CAE9C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA0Mf;AAED;;;;;;;;GAQG;AAEH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3B,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,0BAA0B,CAExC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAOT;AAED,wBAAgB,8BAA8B,CAE5C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3B,OAAO,CAST"}
|
|
@@ -21,6 +21,7 @@ import { dump as dumpYAML, load as parseYAML } from "js-yaml";
|
|
|
21
21
|
import { isSeq, parseDocument } from "yaml";
|
|
22
22
|
import { coarseCoordinateSpan, coordinateIdentityHash, coordinateSourceHash, parseCoordinateArtifact, writeCoordinateArtifact, } from "../../extractors/symbol-coordinates.js";
|
|
23
23
|
import { enrichSymbolCoordinates, } from "../../extractors/symbols-coordinator.js";
|
|
24
|
+
import { resolveWorkspaceSourceAbsolute } from "../../utils/repo-relative-path.js";
|
|
24
25
|
import { COARSE_GRANULARITY_REASONS, COARSE_GRANULARITY_REASONS_PARENTHESIZED, isCoarseGranularityReason, } from "../../public/symbol-granularity.js";
|
|
25
26
|
import { resolveSymbolsManifestPaths } from "../../utils/manifest-paths.js";
|
|
26
27
|
import { blockifySymbolManifest } from "../../utils/symbol-manifest-layout.js";
|
|
@@ -98,10 +99,8 @@ function extractedCoordinates(entry) {
|
|
|
98
99
|
: null;
|
|
99
100
|
}
|
|
100
101
|
function readSourceText(sourceFile, workspaceRoot, deps) {
|
|
101
|
-
const absolute =
|
|
102
|
-
|
|
103
|
-
: path.resolve(workspaceRoot, sourceFile);
|
|
104
|
-
if (!deps.existsSync(absolute))
|
|
102
|
+
const absolute = resolveWorkspaceSourceAbsolute(workspaceRoot, sourceFile);
|
|
103
|
+
if (absolute === null || !deps.existsSync(absolute))
|
|
105
104
|
return null;
|
|
106
105
|
try {
|
|
107
106
|
const content = deps.readFileSync(absolute, "utf8");
|
|
@@ -357,9 +356,9 @@ sourceFile, workspaceRoot, deps) {
|
|
|
357
356
|
const resolved = resolveDeps(deps);
|
|
358
357
|
if (!sourceFile)
|
|
359
358
|
return false;
|
|
360
|
-
const absolute =
|
|
361
|
-
|
|
362
|
-
|
|
359
|
+
const absolute = resolveWorkspaceSourceAbsolute(workspaceRoot, sourceFile);
|
|
360
|
+
if (absolute === null)
|
|
361
|
+
return false;
|
|
363
362
|
// Non-JS/TS files also undergo coordinate extraction through the text
|
|
364
363
|
// heuristic. A miss there must be reported just like an AST extraction miss.
|
|
365
364
|
return resolved.existsSync(absolute);
|
package/dist/commands/sync.d.ts
CHANGED
|
@@ -6,6 +6,16 @@ import type { PendingSourceReceiptSnapshot } from "./sync/discovery.js";
|
|
|
6
6
|
export declare class SyncError extends Error {
|
|
7
7
|
constructor(message: string);
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Sources staged as new files (renames included) that HEAD does not contain yet. An empty branch
|
|
11
|
+
* store compiles its first sync as a semantic baseline, which accepts
|
|
12
|
+
* requirements without an inventory. Once another branch of the workspace has
|
|
13
|
+
* synced, that grace covers committed history only: a new branch must not
|
|
14
|
+
* accept a staged requirement its parent branch would refuse. Without a HEAD
|
|
15
|
+
* commit (or outside Git) there is no history to tell apart, and the set is
|
|
16
|
+
* empty.
|
|
17
|
+
*/
|
|
18
|
+
export declare function stagedNewSourceKeys(workspaceRoot: string): Set<string>;
|
|
9
19
|
export declare function trackedRelationshipFiles(workspaceRoot: string, relationshipsDir: string, recoverMissingPendingSources?: boolean, recoveredPendingReceiptPaths?: PendingSourceReceiptSnapshot[]): string[];
|
|
10
20
|
export interface SyncResult extends SyncSummary {
|
|
11
21
|
exitCode?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -19,6 +19,7 @@ import { execSync } from "node:child_process";
|
|
|
19
19
|
import { createHash } from "node:crypto";
|
|
20
20
|
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, writeFileSync, } from "node:fs";
|
|
21
21
|
import * as path from "node:path";
|
|
22
|
+
import { markErrorReported } from "../cli-command.js";
|
|
22
23
|
import { branchErrorToDiagnostic, createDocsNotIndexedDiagnostic, createInvalidAuthoringDiagnostic, createKbMissingDiagnostic, formatSyncSummary, } from "../diagnostics.js";
|
|
23
24
|
import { EngineClient, acquireEnginePublicationLease, engineSocketPath, ensureJournaledBranchStoreAsync, formatEngineAttachmentMismatch, fsyncJournaledBranchStore, parseEngineAttachmentIdentity, readEngineAttachmentIdentity, } from "../engine.js";
|
|
24
25
|
import { isCliDebugEnabled } from "../env.js";
|
|
@@ -28,7 +29,7 @@ import { analyzeSemanticAdvisorInput } from "../operations/semantic-advisor/anal
|
|
|
28
29
|
import { validateSemanticInventoryBoundary } from "../operations/semantic-advisor/ingestion-boundary.js";
|
|
29
30
|
import { PrologProcess } from "../prolog.js";
|
|
30
31
|
import { detachedHeadWriteRefusal, resolveBranchAttachment, } from "../utils/branch-resolver.js";
|
|
31
|
-
import { branchStoreManifestPath, branchStorePath, ensureBranchStoreManifest, expectedBranchStoreManifest, } from "../utils/branch-store-locator.js";
|
|
32
|
+
import { branchStoreManifestPath, branchStorePath, branchStoresRoot, ensureBranchStoreManifest, expectedBranchStoreManifest, } from "../utils/branch-store-locator.js";
|
|
32
33
|
import { loadEntityPaths } from "../utils/config.js";
|
|
33
34
|
import { SYNC_CACHE_TTL_MS, SYNC_CACHE_VERSION, SYNC_COMPILER_FINGERPRINT, failedSourceKeepsSemanticBaseline, hashFile, hashManifestWithCoordinates, hashNormalized, readSyncCache, toCacheKey, writeSyncCache, } from "./sync/cache.js";
|
|
34
35
|
import { clearRecoveredPendingSourceReceipts, discoverSourceFiles, } from "./sync/discovery.js";
|
|
@@ -75,6 +76,62 @@ function assertNoUnresolvedGitConflicts(workspaceRoot) {
|
|
|
75
76
|
throw new SyncError(`Unresolved Git conflicts block Kibi compilation; resolve these authored files first: ${conflicted.split("\n").join(", ")}`);
|
|
76
77
|
}
|
|
77
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Sources staged as new files (renames included) that HEAD does not contain yet. An empty branch
|
|
81
|
+
* store compiles its first sync as a semantic baseline, which accepts
|
|
82
|
+
* requirements without an inventory. Once another branch of the workspace has
|
|
83
|
+
* synced, that grace covers committed history only: a new branch must not
|
|
84
|
+
* accept a staged requirement its parent branch would refuse. Without a HEAD
|
|
85
|
+
* commit (or outside Git) there is no history to tell apart, and the set is
|
|
86
|
+
* empty.
|
|
87
|
+
*/
|
|
88
|
+
// implements REQ-kibi-proposition-complete-ingestion
|
|
89
|
+
export function stagedNewSourceKeys(workspaceRoot) {
|
|
90
|
+
try {
|
|
91
|
+
return new Set(execSync(
|
|
92
|
+
// --no-renames: a staged rename is a new source key too, judged on
|
|
93
|
+
// the parent branch like any other addition.
|
|
94
|
+
"git diff --cached --no-renames --name-only --relative --diff-filter=A -z HEAD", {
|
|
95
|
+
cwd: workspaceRoot,
|
|
96
|
+
encoding: "utf8",
|
|
97
|
+
timeout: 5000,
|
|
98
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
99
|
+
})
|
|
100
|
+
.split("\0")
|
|
101
|
+
.filter(Boolean)
|
|
102
|
+
.map((file) => file.replaceAll("\\", "/")));
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return new Set();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Whether a branch store other than `livePath` has a non-empty sync cache. */
|
|
109
|
+
function anotherBranchStoreSynced(workspaceRoot, livePath) {
|
|
110
|
+
const root = branchStoresRoot(workspaceRoot);
|
|
111
|
+
let entries;
|
|
112
|
+
try {
|
|
113
|
+
entries = readdirSync(root);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
for (const entry of entries) {
|
|
119
|
+
const storePath = path.join(root, entry);
|
|
120
|
+
if (path.resolve(storePath) === path.resolve(livePath))
|
|
121
|
+
continue;
|
|
122
|
+
try {
|
|
123
|
+
const cache = JSON.parse(readFileSync(path.join(storePath, "sync-cache.json"), "utf8"));
|
|
124
|
+
if (cache.hashes !== null &&
|
|
125
|
+
typeof cache.hashes === "object" &&
|
|
126
|
+
Object.keys(cache.hashes).length > 0)
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// A store without a readable cache has not synced.
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
78
135
|
export function trackedRelationshipFiles(workspaceRoot, relationshipsDir, recoverMissingPendingSources = false, recoveredPendingReceiptPaths = []) {
|
|
79
136
|
let tracked;
|
|
80
137
|
try {
|
|
@@ -531,6 +588,10 @@ export async function syncCommand(options = {}, runtime = {}) {
|
|
|
531
588
|
const addedShardRelationships = [];
|
|
532
589
|
const removedShardRelationships = [];
|
|
533
590
|
const initialSemanticBaseline = Object.keys(syncCache.hashes).length === 0;
|
|
591
|
+
const baselineExcludedKeys = initialSemanticBaseline &&
|
|
592
|
+
anotherBranchStoreSynced(workspaceRoot, livePathForEngine)
|
|
593
|
+
? stagedNewSourceKeys(workspaceRoot)
|
|
594
|
+
: new Set();
|
|
534
595
|
const changedMarkdownFiles = [];
|
|
535
596
|
const changedManifestFiles = [];
|
|
536
597
|
const forceEntitySourceKeys = new Set();
|
|
@@ -664,7 +725,8 @@ export async function syncCommand(options = {}, runtime = {}) {
|
|
|
664
725
|
nextExtractionFailures[key] = {
|
|
665
726
|
hash,
|
|
666
727
|
message: failure.message,
|
|
667
|
-
...(initialSemanticBaseline
|
|
728
|
+
...((initialSemanticBaseline && !baselineExcludedKeys.has(key)) ||
|
|
729
|
+
previousFailure?.baseline === true
|
|
668
730
|
? { baseline: true }
|
|
669
731
|
: {}),
|
|
670
732
|
...(semanticHash !== undefined ? { semanticHash } : {}),
|
|
@@ -774,7 +836,8 @@ export async function syncCommand(options = {}, runtime = {}) {
|
|
|
774
836
|
const enforceBoundary = advertisedContract ||
|
|
775
837
|
(previousFailure !== undefined
|
|
776
838
|
? !failedSourceKeepsSemanticBaseline(previousFailure, boundary.sourceHash)
|
|
777
|
-
: (
|
|
839
|
+
: (syncCache.hashes[key] === undefined &&
|
|
840
|
+
(!initialSemanticBaseline || baselineExcludedKeys.has(key))) ||
|
|
778
841
|
syncCache.semanticContracts[key] === true ||
|
|
779
842
|
(previousSemanticHash !== undefined &&
|
|
780
843
|
previousSemanticHash !== boundary.sourceHash));
|
|
@@ -1251,6 +1314,7 @@ export async function syncCommand(options = {}, runtime = {}) {
|
|
|
1251
1314
|
}
|
|
1252
1315
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1253
1316
|
console.error(`Error: ${errorMessage}`);
|
|
1317
|
+
markErrorReported(error);
|
|
1254
1318
|
const commit = getCurrentCommit();
|
|
1255
1319
|
const summary = withOptionalCommit({
|
|
1256
1320
|
branch: currentBranch || "unknown",
|
package/dist/engine.d.ts
CHANGED
|
@@ -55,6 +55,14 @@ export type EnginePublicationLease = Readonly<{
|
|
|
55
55
|
readonly release: () => void;
|
|
56
56
|
}>;
|
|
57
57
|
export declare function acquireEnginePublicationLease(workspaceRoot: string, branch: string): EnginePublicationLease;
|
|
58
|
+
/**
|
|
59
|
+
* The Node binary that hosts the daemon. A Node client starts it with its own
|
|
60
|
+
* runtime, so a host that runs Kibi through Node 22+ by absolute path still
|
|
61
|
+
* gets a Node 22+ daemon when an older `node` comes first on PATH. Bun clients
|
|
62
|
+
* (source checkouts, tests) use `node` from PATH, since the daemon is a Node
|
|
63
|
+
* artifact. KIBI_NODE_PATH overrides both.
|
|
64
|
+
*/
|
|
65
|
+
export declare function daemonNodePath(environment?: NodeJS.ProcessEnv): string;
|
|
58
66
|
/** What a live daemon reports in its handshake. */
|
|
59
67
|
export type EngineDaemonIdentity = Readonly<{
|
|
60
68
|
prologIdentity: string | null;
|
|
@@ -137,7 +145,9 @@ export declare class EngineClient {
|
|
|
137
145
|
private reconcileAttachment;
|
|
138
146
|
private shutdownConnectedDaemon;
|
|
139
147
|
getPid(): number;
|
|
140
|
-
|
|
148
|
+
/** Resolves false when no daemon answered and none was started. */
|
|
149
|
+
stop(startIfMissing?: boolean): Promise<boolean>;
|
|
150
|
+
private daemonProcessAlive;
|
|
141
151
|
terminate(): Promise<void>;
|
|
142
152
|
}
|
|
143
153
|
export declare function ensureJournaledBranchStoreAsync(branchPath: string): Promise<void>;
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAgCA,OAAO,EAEL,KAAK,iBAAiB,EAMvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,wBAAwB,EACxB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAa7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAQ9C,YAAY,EACV,wBAAwB,EACxB,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAU5B,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,2EAA2E;AAC3E,eAAO,MAAM,6BAA6B,QAAY,CAAC;AACvD,qEAAqE;AACrE,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD;;;;;GAKG;AAEH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,QAAwB,CAAC;AAE7D;;;;GAIG;AAEH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAQD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,OAAO,GACtB,MAAM,IAAI,CAIZ;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GACjB,wBAAwB,GAAG,IAAI,CAgBjC;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,wBAAwB,GAAG,IAAI,CAyBjC;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,EACzC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GACxC,OAAO,CAWT;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,wBAAwB,GAAG,IAAI,EACzC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GACxC,MAAM,CASR;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|