@jeger-ai/opengantry 2.7.0 → 3.0.1
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/NOTICE +1 -0
- package/README.md +139 -326
- package/dist/cli/commands/arch.d.ts +2 -1
- package/dist/cli/commands/arch.d.ts.map +1 -1
- package/dist/cli/commands/arch.js +20 -9
- package/dist/cli/commands/arch.js.map +1 -1
- package/dist/cli/commands/blueprint.d.ts +7 -0
- package/dist/cli/commands/blueprint.d.ts.map +1 -0
- package/dist/cli/commands/blueprint.js +69 -0
- package/dist/cli/commands/blueprint.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +12 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/lib/arch/cage/architecture-drift-doctor.d.ts +4 -0
- package/dist/cli/lib/arch/cage/architecture-drift-doctor.d.ts.map +1 -0
- package/dist/cli/lib/arch/cage/architecture-drift-doctor.js +58 -0
- package/dist/cli/lib/arch/cage/architecture-drift-doctor.js.map +1 -0
- package/dist/cli/lib/{target-architecture-doctor.d.ts → arch/cage/target-architecture-doctor.d.ts} +1 -1
- package/dist/cli/lib/arch/cage/target-architecture-doctor.d.ts.map +1 -0
- package/dist/cli/lib/arch/cage/target-architecture-doctor.js.map +1 -0
- package/dist/cli/lib/{target-architecture.d.ts → arch/cage/target-architecture.d.ts} +12 -3
- package/dist/cli/lib/arch/cage/target-architecture.d.ts.map +1 -0
- package/dist/cli/lib/{target-architecture.js → arch/cage/target-architecture.js} +121 -23
- package/dist/cli/lib/arch/cage/target-architecture.js.map +1 -0
- package/dist/cli/lib/arch/external/architecture-credential.d.ts.map +1 -0
- package/dist/cli/lib/{architecture-credential.js → arch/external/architecture-credential.js} +2 -2
- package/dist/cli/lib/arch/external/architecture-credential.js.map +1 -0
- package/dist/cli/lib/arch/external/architecture-fetch.d.ts.map +1 -0
- package/dist/cli/lib/{architecture-fetch.js → arch/external/architecture-fetch.js} +1 -1
- package/dist/cli/lib/arch/external/architecture-fetch.js.map +1 -0
- package/dist/cli/lib/{architecture-pointer.d.ts → arch/external/architecture-pointer.d.ts} +1 -1
- package/dist/cli/lib/arch/external/architecture-pointer.d.ts.map +1 -0
- package/dist/cli/lib/{architecture-pointer.js → arch/external/architecture-pointer.js} +2 -2
- package/dist/cli/lib/arch/external/architecture-pointer.js.map +1 -0
- package/dist/cli/lib/blueprint-engine.d.ts +22 -0
- package/dist/cli/lib/blueprint-engine.d.ts.map +1 -0
- package/dist/cli/lib/blueprint-engine.js +127 -0
- package/dist/cli/lib/blueprint-engine.js.map +1 -0
- package/dist/cli/lib/break-glass.d.ts +1 -1
- package/dist/cli/lib/break-glass.d.ts.map +1 -1
- package/dist/cli/lib/constants.d.ts +1 -0
- package/dist/cli/lib/constants.d.ts.map +1 -1
- package/dist/cli/lib/constants.js +1 -0
- package/dist/cli/lib/constants.js.map +1 -1
- package/dist/cli/lib/context-feed-remediation.d.ts +2 -2
- package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -1
- package/dist/cli/lib/discovery-proposal.d.ts +19 -0
- package/dist/cli/lib/discovery-proposal.d.ts.map +1 -0
- package/dist/cli/lib/discovery-proposal.js +110 -0
- package/dist/cli/lib/discovery-proposal.js.map +1 -0
- package/dist/cli/lib/discovery-scanner.d.ts +11 -0
- package/dist/cli/lib/discovery-scanner.d.ts.map +1 -0
- package/dist/cli/lib/discovery-scanner.js +82 -0
- package/dist/cli/lib/discovery-scanner.js.map +1 -0
- package/dist/cli/lib/discovery-types.d.ts +40 -0
- package/dist/cli/lib/discovery-types.d.ts.map +1 -0
- package/dist/cli/lib/discovery-types.js +3 -0
- package/dist/cli/lib/discovery-types.js.map +1 -0
- package/dist/cli/lib/doctor-core.d.ts.map +1 -1
- package/dist/cli/lib/doctor-core.js +4 -2
- package/dist/cli/lib/doctor-core.js.map +1 -1
- package/dist/cli/lib/domains/domain-adapter.d.ts +40 -0
- package/dist/cli/lib/domains/domain-adapter.d.ts.map +1 -0
- package/dist/cli/lib/domains/domain-adapter.js +20 -0
- package/dist/cli/lib/domains/domain-adapter.js.map +1 -0
- package/dist/cli/lib/domains/domain-code.d.ts +3 -0
- package/dist/cli/lib/domains/domain-code.d.ts.map +1 -0
- package/dist/cli/lib/domains/domain-code.js +170 -0
- package/dist/cli/lib/domains/domain-code.js.map +1 -0
- package/dist/cli/lib/domains/domain-content.d.ts +3 -0
- package/dist/cli/lib/domains/domain-content.d.ts.map +1 -0
- package/dist/cli/lib/domains/domain-content.js +189 -0
- package/dist/cli/lib/domains/domain-content.js.map +1 -0
- package/dist/cli/lib/domains/index.d.ts +5 -0
- package/dist/cli/lib/domains/index.d.ts.map +1 -0
- package/dist/cli/lib/domains/index.js +16 -0
- package/dist/cli/lib/domains/index.js.map +1 -0
- package/dist/cli/lib/errors.d.ts +0 -6
- package/dist/cli/lib/errors.d.ts.map +1 -1
- package/dist/cli/lib/errors.js +0 -4
- package/dist/cli/lib/errors.js.map +1 -1
- package/dist/cli/lib/gxt-error-codes.d.ts +0 -2
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
- package/dist/cli/lib/gxt-error-codes.js +0 -2
- package/dist/cli/lib/gxt-error-codes.js.map +1 -1
- package/dist/cli/lib/init-compose.d.ts +1 -1
- package/dist/cli/lib/init-compose.d.ts.map +1 -1
- package/dist/cli/lib/init-discover.d.ts +14 -0
- package/dist/cli/lib/init-discover.d.ts.map +1 -0
- package/dist/cli/lib/init-discover.js +45 -0
- package/dist/cli/lib/init-discover.js.map +1 -0
- package/dist/cli/lib/kpi-engine.d.ts +2 -2
- package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
- package/dist/cli/lib/manifest.d.ts +1 -1
- package/dist/cli/lib/manifest.d.ts.map +1 -1
- package/dist/cli/lib/manifest.js +1 -1
- package/dist/cli/lib/manifest.js.map +1 -1
- package/dist/cli/lib/mcp-check-signature.d.ts +6 -0
- package/dist/cli/lib/mcp-check-signature.d.ts.map +1 -0
- package/dist/cli/lib/mcp-check-signature.js +40 -0
- package/dist/cli/lib/mcp-check-signature.js.map +1 -0
- package/dist/cli/lib/mcp-draft-legislation.d.ts +6 -0
- package/dist/cli/lib/mcp-draft-legislation.d.ts.map +1 -0
- package/dist/cli/lib/mcp-draft-legislation.js +63 -0
- package/dist/cli/lib/mcp-draft-legislation.js.map +1 -0
- package/dist/cli/lib/mcp-execute-legislation.d.ts +6 -0
- package/dist/cli/lib/mcp-execute-legislation.d.ts.map +1 -0
- package/dist/cli/lib/mcp-execute-legislation.js +53 -0
- package/dist/cli/lib/mcp-execute-legislation.js.map +1 -0
- package/dist/cli/lib/mcp-governance-shared.d.ts +119 -0
- package/dist/cli/lib/mcp-governance-shared.d.ts.map +1 -0
- package/dist/cli/lib/mcp-governance-shared.js +21 -0
- package/dist/cli/lib/mcp-governance-shared.js.map +1 -0
- package/dist/cli/lib/mcp-governance.d.ts +9 -121
- package/dist/cli/lib/mcp-governance.d.ts.map +1 -1
- package/dist/cli/lib/mcp-governance.js +8 -259
- package/dist/cli/lib/mcp-governance.js.map +1 -1
- package/dist/cli/lib/mcp-last-error.d.ts +3 -0
- package/dist/cli/lib/mcp-last-error.d.ts.map +1 -0
- package/dist/cli/lib/mcp-last-error.js +18 -0
- package/dist/cli/lib/mcp-last-error.js.map +1 -0
- package/dist/cli/lib/mcp-pin-mission.d.ts +6 -0
- package/dist/cli/lib/mcp-pin-mission.d.ts.map +1 -0
- package/dist/cli/lib/mcp-pin-mission.js +21 -0
- package/dist/cli/lib/mcp-pin-mission.js.map +1 -0
- package/dist/cli/lib/mcp-resolve-mission.d.ts +3 -0
- package/dist/cli/lib/mcp-resolve-mission.d.ts.map +1 -0
- package/dist/cli/lib/mcp-resolve-mission.js +18 -0
- package/dist/cli/lib/mcp-resolve-mission.js.map +1 -0
- package/dist/cli/lib/mcp-start-orchestration.d.ts +3 -0
- package/dist/cli/lib/mcp-start-orchestration.d.ts.map +1 -0
- package/dist/cli/lib/mcp-start-orchestration.js +53 -0
- package/dist/cli/lib/mcp-start-orchestration.js.map +1 -0
- package/dist/cli/lib/mcp-tools-register.d.ts.map +1 -1
- package/dist/cli/lib/mcp-tools-register.js +7 -1
- package/dist/cli/lib/mcp-tools-register.js.map +1 -1
- package/dist/cli/lib/path-glob.d.ts +8 -0
- package/dist/cli/lib/path-glob.d.ts.map +1 -0
- package/dist/cli/lib/path-glob.js +40 -0
- package/dist/cli/lib/path-glob.js.map +1 -0
- package/dist/cli/lib/perimeter.d.ts +1 -2
- package/dist/cli/lib/perimeter.d.ts.map +1 -1
- package/dist/cli/lib/perimeter.js +2 -10
- package/dist/cli/lib/perimeter.js.map +1 -1
- package/dist/cli/lib/surgeons/registry.d.ts +1 -1
- package/dist/cli/lib/surgeons/registry.d.ts.map +1 -1
- package/dist/cli/lib/trace-evidence.d.ts +21 -0
- package/dist/cli/lib/trace-evidence.d.ts.map +1 -0
- package/dist/cli/lib/trace-evidence.js +113 -0
- package/dist/cli/lib/trace-evidence.js.map +1 -0
- package/dist/cli/lib/trace-quote.d.ts +37 -0
- package/dist/cli/lib/trace-quote.d.ts.map +1 -0
- package/dist/cli/lib/trace-quote.js +177 -0
- package/dist/cli/lib/trace-quote.js.map +1 -0
- package/dist/cli/lib/trace-status.d.ts +7 -0
- package/dist/cli/lib/trace-status.d.ts.map +1 -0
- package/dist/cli/lib/trace-status.js +20 -0
- package/dist/cli/lib/trace-status.js.map +1 -0
- package/dist/cli/lib/trace.d.ts +3 -60
- package/dist/cli/lib/trace.d.ts.map +1 -1
- package/dist/cli/lib/trace.js +3 -304
- package/dist/cli/lib/trace.js.map +1 -1
- package/dist/cli/lib/upgrade-plan-catalog.d.ts +13 -0
- package/dist/cli/lib/upgrade-plan-catalog.d.ts.map +1 -0
- package/dist/cli/lib/upgrade-plan-catalog.js +85 -0
- package/dist/cli/lib/upgrade-plan-catalog.js.map +1 -0
- package/dist/cli/lib/upgrade-plan-payload.d.ts +1 -1
- package/dist/cli/lib/upgrade-plan-payload.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-plan-scaffold.d.ts +15 -0
- package/dist/cli/lib/upgrade-plan-scaffold.d.ts.map +1 -0
- package/dist/cli/lib/upgrade-plan-scaffold.js +109 -0
- package/dist/cli/lib/upgrade-plan-scaffold.js.map +1 -0
- package/dist/cli/lib/upgrade-plan-types.d.ts +43 -0
- package/dist/cli/lib/upgrade-plan-types.d.ts.map +1 -0
- package/dist/cli/lib/upgrade-plan-types.js +3 -0
- package/dist/cli/lib/upgrade-plan-types.js.map +1 -0
- package/dist/cli/lib/upgrade-plan.d.ts +4 -62
- package/dist/cli/lib/upgrade-plan.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-plan.js +7 -181
- package/dist/cli/lib/upgrade-plan.js.map +1 -1
- package/dist/cli/lib/verification-plan.d.ts +22 -0
- package/dist/cli/lib/verification-plan.d.ts.map +1 -0
- package/dist/cli/lib/verification-plan.js +26 -0
- package/dist/cli/lib/verification-plan.js.map +1 -0
- package/dist/cli/lib/verify-defensive-phase.d.ts +1 -1
- package/dist/cli/lib/verify-defensive-phase.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.d.ts +2 -36
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/verify-export.d.ts.map +1 -1
- package/dist/cli/lib/verify-export.js +30 -19
- package/dist/cli/lib/verify-export.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.d.ts +2 -3
- package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.js +0 -14
- package/dist/cli/lib/verify-failure-normalize.js.map +1 -1
- package/dist/cli/lib/verify-finding.d.ts +16 -0
- package/dist/cli/lib/verify-finding.d.ts.map +1 -0
- package/dist/cli/lib/verify-finding.js +11 -0
- package/dist/cli/lib/verify-finding.js.map +1 -0
- package/dist/cli/lib/verify-hints.d.ts +1 -1
- package/dist/cli/lib/verify-hints.d.ts.map +1 -1
- package/dist/cli/lib/verify-options.d.ts +40 -0
- package/dist/cli/lib/verify-options.d.ts.map +1 -0
- package/dist/cli/lib/verify-options.js +13 -0
- package/dist/cli/lib/verify-options.js.map +1 -0
- package/dist/cli/lib/verify-payload.d.ts +10 -1
- package/dist/cli/lib/verify-payload.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.js +52 -2
- package/dist/cli/lib/verify-payload.js.map +1 -1
- package/dist/cli/lib/verify-presenters.d.ts +2 -1
- package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
- package/dist/cli/lib/verify-presenters.js.map +1 -1
- package/dist/cli/lib/verify-run.d.ts +2 -2
- package/dist/cli/lib/verify-run.d.ts.map +1 -1
- package/dist/cli/lib/verify-run.js +33 -19
- package/dist/cli/lib/verify-run.js.map +1 -1
- package/dist/cli/lib/version.gen.d.ts +1 -1
- package/dist/cli/lib/version.gen.js +1 -1
- package/dist/cli/program-arch.js +1 -1
- package/dist/cli/program-arch.js.map +1 -1
- package/dist/cli/program-blueprint.d.ts +3 -0
- package/dist/cli/program-blueprint.d.ts.map +1 -0
- package/dist/cli/program-blueprint.js +12 -0
- package/dist/cli/program-blueprint.js.map +1 -0
- package/dist/cli/program-core.d.ts.map +1 -1
- package/dist/cli/program-core.js +4 -20
- package/dist/cli/program-core.js.map +1 -1
- package/dist/cli/program-init-options.d.ts +4 -0
- package/dist/cli/program-init-options.d.ts.map +1 -0
- package/dist/cli/program-init-options.js +23 -0
- package/dist/cli/program-init-options.js.map +1 -0
- package/dist/cli/program-workflow.d.ts.map +1 -1
- package/dist/cli/program-workflow.js +19 -2
- package/dist/cli/program-workflow.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +4 -0
- package/dist/cli/program.js.map +1 -1
- package/package.json +2 -2
- package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
- package/templates/integrations/asset-catalog.json +3 -0
- package/templates/integrations/compatibility.json +1 -1
- package/templates/scripts/gxt-manifest-lib.mjs +12 -493
- package/templates/scripts/lib/glob-match.mjs +24 -0
- package/templates/scripts/lib/manifest-validate.mjs +126 -0
- package/templates/scripts/lib/trusted-automation.mjs +360 -0
- package/dist/cli/lib/architecture-credential.d.ts.map +0 -1
- package/dist/cli/lib/architecture-credential.js.map +0 -1
- package/dist/cli/lib/architecture-fetch.d.ts.map +0 -1
- package/dist/cli/lib/architecture-fetch.js.map +0 -1
- package/dist/cli/lib/architecture-pointer.d.ts.map +0 -1
- package/dist/cli/lib/architecture-pointer.js.map +0 -1
- package/dist/cli/lib/target-architecture-doctor.d.ts.map +0 -1
- package/dist/cli/lib/target-architecture-doctor.js.map +0 -1
- package/dist/cli/lib/target-architecture.d.ts.map +0 -1
- package/dist/cli/lib/target-architecture.js.map +0 -1
- /package/dist/cli/lib/{target-architecture-doctor.js → arch/cage/target-architecture-doctor.js} +0 -0
- /package/dist/cli/lib/{architecture-credential.d.ts → arch/external/architecture-credential.d.ts} +0 -0
- /package/dist/cli/lib/{architecture-fetch.d.ts → arch/external/architecture-fetch.d.ts} +0 -0
package/dist/cli/lib/trace.d.ts
CHANGED
|
@@ -1,61 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export type NormalizedTraceStatus = "PASS" | "FAIL" | "PENDING";
|
|
5
|
-
export declare function normalizeTraceStatus(status: string): NormalizedTraceStatus;
|
|
6
|
-
export declare function isPassStatus(status: NormalizedTraceStatus): boolean;
|
|
7
|
-
export declare function isPendingStatus(status: NormalizedTraceStatus): boolean;
|
|
8
|
-
/** Typed trace verification failure — control flow must branch on this, not UI strings. */
|
|
9
|
-
export type TraceFailureKind = "ambiguous" | "quote_missing" | "executor_log_missing" | "placeholder_quote" | "strict_line_drift" | "empty_quote" | "anchor_mismatch" | "stale_evidence" | "other";
|
|
10
|
-
export declare const UNCOMMITTED_BLAME_COMMIT = "0000000000000000000000000000000000000000";
|
|
11
|
-
export interface TraceEvidenceFailure {
|
|
12
|
-
row: TraceRow;
|
|
13
|
-
attestationCommit: string;
|
|
14
|
-
quoteLine: number;
|
|
15
|
-
stalePaths: string[];
|
|
16
|
-
reason: string;
|
|
17
|
-
}
|
|
18
|
-
export interface TraceEvidenceOptions {
|
|
19
|
-
skipStaleEvidence?: boolean;
|
|
20
|
-
}
|
|
21
|
-
/** Parse `git blame --porcelain` into 1-based line number → commit hash. */
|
|
22
|
-
export declare function parseBlamePorcelainByLine(blameOutput: string): Map<number, string>;
|
|
23
|
-
export declare function readBlamePorcelainByLine(repoRoot: string, executorLogRelPath: string): Map<number, string>;
|
|
24
|
-
export declare function verifyTraceEvidenceFreshness(repoRoot: string, manifest: Manifest, skillKey: string | null, executorLogPath: string, resolvedLines: ResolvedQuoteLine[], options?: TraceEvidenceOptions): {
|
|
25
|
-
failures: TraceEvidenceFailure[];
|
|
26
|
-
skippedUncommitted: number;
|
|
27
|
-
};
|
|
28
|
-
export interface TraceVerifyFailure {
|
|
29
|
-
row: TraceRow;
|
|
30
|
-
/** Set at construction — every failure site knows its own kind. */
|
|
31
|
-
kind: TraceFailureKind;
|
|
32
|
-
reason: string;
|
|
33
|
-
}
|
|
34
|
-
export interface TraceVerifyWarning {
|
|
35
|
-
row: TraceRow;
|
|
36
|
-
declaredLine: number;
|
|
37
|
-
foundLine: number;
|
|
38
|
-
autoResolved?: boolean;
|
|
39
|
-
}
|
|
40
|
-
export interface TraceVerifyOptions {
|
|
41
|
-
/** Force fuzzy for all numeric anchors. */
|
|
42
|
-
fuzzyNumericAnchor?: boolean;
|
|
43
|
-
/** Disable auto-retry on line drift only. */
|
|
44
|
-
strictTrace?: boolean;
|
|
45
|
-
}
|
|
46
|
-
export interface ResolvedQuoteLine {
|
|
47
|
-
row: TraceRow;
|
|
48
|
-
lineNumber: number;
|
|
49
|
-
}
|
|
50
|
-
export interface TraceVerifyResult {
|
|
51
|
-
failures: TraceVerifyFailure[];
|
|
52
|
-
warnings: TraceVerifyWarning[];
|
|
53
|
-
resolvedLines: ResolvedQuoteLine[];
|
|
54
|
-
map: ExecutorLogLineMap | null;
|
|
55
|
-
}
|
|
56
|
-
export declare function isPassTraceRow(status: string): boolean;
|
|
57
|
-
export declare function resolveQuoteLineNumber(map: ExecutorLogLineMap, row: TraceRow, resolvedLineByDodId: ReadonlyMap<string, number>): number | null;
|
|
58
|
-
/** Line numbers are 1-based in mission table; other anchors match a substring on a line */
|
|
59
|
-
export declare function verifyTraceRows(executorLogPath: string, rows: TraceRow[], options?: TraceVerifyOptions): TraceVerifyResult;
|
|
60
|
-
export declare function defaultExecutorLogPath(repoRoot: string): string;
|
|
1
|
+
export { type NormalizedTraceStatus, normalizeTraceStatus, isPassStatus, isPendingStatus, isPassTraceRow, } from "./trace-status.js";
|
|
2
|
+
export { type TraceFailureKind, type TraceVerifyFailure, type TraceVerifyWarning, type TraceVerifyOptions, type ResolvedQuoteLine, type TraceVerifyResult, resolveQuoteLineNumber, verifyTraceRows, defaultExecutorLogPath, } from "./trace-quote.js";
|
|
3
|
+
export { UNCOMMITTED_BLAME_COMMIT, type TraceEvidenceFailure, type TraceEvidenceOptions, parseBlamePorcelainByLine, readBlamePorcelainByLine, verifyTraceEvidenceFreshness, } from "./trace-evidence.js";
|
|
61
4
|
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/trace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC"}
|
package/dist/cli/lib/trace.js
CHANGED
|
@@ -1,305 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { gitDiffNameOnlySinceCommit, gitRun } from "./git.js";
|
|
5
|
-
import { quoteLineNumbers, buildExecutorLogLineMapForQuotes } from "./executor-log-line-map.js";
|
|
6
|
-
import { tmvcRootsForSkill } from "./tmvc-path.js";
|
|
7
|
-
export function normalizeTraceStatus(status) {
|
|
8
|
-
const upper = status.trim().toUpperCase();
|
|
9
|
-
if (upper === "PASS")
|
|
10
|
-
return "PASS";
|
|
11
|
-
if (upper === "FAIL")
|
|
12
|
-
return "FAIL";
|
|
13
|
-
if (upper === "PENDING")
|
|
14
|
-
return "PENDING";
|
|
15
|
-
return "PENDING";
|
|
16
|
-
}
|
|
17
|
-
export function isPassStatus(status) {
|
|
18
|
-
return status === "PASS";
|
|
19
|
-
}
|
|
20
|
-
export function isPendingStatus(status) {
|
|
21
|
-
return status === "PENDING";
|
|
22
|
-
}
|
|
23
|
-
function missingQuoteKind(traceQuote) {
|
|
24
|
-
return traceQuote.trim() === LEGISLATE_TRACE_PLACEHOLDER ? "placeholder_quote" : "quote_missing";
|
|
25
|
-
}
|
|
26
|
-
export const UNCOMMITTED_BLAME_COMMIT = "0000000000000000000000000000000000000000";
|
|
27
|
-
function executorLogRelPath(executorLogPath, repoRoot) {
|
|
28
|
-
const abs = path.resolve(executorLogPath);
|
|
29
|
-
const rel = toPosixRel(repoRoot, abs);
|
|
30
|
-
return rel.length > 0 && !rel.startsWith("..") ? rel : EXECUTOR_LOG_FILENAME;
|
|
31
|
-
}
|
|
32
|
-
/** Parse `git blame --porcelain` into 1-based line number → commit hash. */
|
|
33
|
-
export function parseBlamePorcelainByLine(blameOutput) {
|
|
34
|
-
const byLine = new Map();
|
|
35
|
-
const lines = blameOutput.split(/\r?\n/);
|
|
36
|
-
let i = 0;
|
|
37
|
-
while (i < lines.length) {
|
|
38
|
-
const header = lines[i];
|
|
39
|
-
const full = /^([0-9a-f]{40})\s+\d+\s+(\d+)\s+(\d+)/.exec(header);
|
|
40
|
-
const short = /^([0-9a-f]{40})\s+\d+\s+(\d+)\s*$/.exec(header);
|
|
41
|
-
if (!full && !short) {
|
|
42
|
-
i += 1;
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
const commit = (full ?? short)[1];
|
|
46
|
-
const finalLine = parseInt((full ?? short)[2], 10);
|
|
47
|
-
i += 1;
|
|
48
|
-
if (full) {
|
|
49
|
-
while (i < lines.length && !lines[i].startsWith("\t")) {
|
|
50
|
-
i += 1;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (i < lines.length && lines[i].startsWith("\t")) {
|
|
54
|
-
byLine.set(finalLine, commit);
|
|
55
|
-
i += 1;
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
if (short) {
|
|
59
|
-
byLine.set(finalLine, commit);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return byLine;
|
|
63
|
-
}
|
|
64
|
-
export function readBlamePorcelainByLine(repoRoot, executorLogRelPath) {
|
|
65
|
-
const r = gitRun(repoRoot, ["blame", "--porcelain", "--", executorLogRelPath]);
|
|
66
|
-
if (!r.ok)
|
|
67
|
-
return new Map();
|
|
68
|
-
return parseBlamePorcelainByLine(r.stdout);
|
|
69
|
-
}
|
|
70
|
-
function formatStaleReason(row, quoteLine, attestationCommit, stalePaths) {
|
|
71
|
-
const shortCommit = attestationCommit.slice(0, 7);
|
|
72
|
-
const shown = stalePaths.slice(0, 5);
|
|
73
|
-
const suffix = stalePaths.length > shown.length ? ` (+${String(stalePaths.length - shown.length)} more)` : "";
|
|
74
|
-
return (`Trace STALE for DoD ${row.dodId} (EXECUTOR_LOG.md line ${String(quoteLine)}, attested at ${shortCommit}): ` +
|
|
75
|
-
`TMVC drift since attestation — ${shown.join(", ")}${suffix}. Re-run gate and append a fresh trace line.`);
|
|
76
|
-
}
|
|
77
|
-
export function verifyTraceEvidenceFreshness(repoRoot, manifest, skillKey, executorLogPath, resolvedLines, options = {}) {
|
|
78
|
-
if (options.skipStaleEvidence === true) {
|
|
79
|
-
return { failures: [], skippedUncommitted: 0 };
|
|
80
|
-
}
|
|
81
|
-
const tmvcRoots = tmvcRootsForSkill(manifest, skillKey);
|
|
82
|
-
if (tmvcRoots.length === 0) {
|
|
83
|
-
return { failures: [], skippedUncommitted: 0 };
|
|
84
|
-
}
|
|
85
|
-
const executorLogRel = executorLogRelPath(executorLogPath, repoRoot);
|
|
86
|
-
const blameByLine = readBlamePorcelainByLine(repoRoot, executorLogRel);
|
|
87
|
-
const diffCache = new Map();
|
|
88
|
-
const failures = [];
|
|
89
|
-
let skippedUncommitted = 0;
|
|
90
|
-
for (const { row, lineNumber } of resolvedLines) {
|
|
91
|
-
const attestationCommit = blameByLine.get(lineNumber);
|
|
92
|
-
if (!attestationCommit) {
|
|
93
|
-
failures.push({
|
|
94
|
-
row,
|
|
95
|
-
attestationCommit: "unknown",
|
|
96
|
-
quoteLine: lineNumber,
|
|
97
|
-
stalePaths: [],
|
|
98
|
-
reason: `Trace STALE for DoD ${row.dodId}: cannot resolve git blame for EXECUTOR_LOG.md line ${String(lineNumber)}`,
|
|
99
|
-
});
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
if (attestationCommit === UNCOMMITTED_BLAME_COMMIT) {
|
|
103
|
-
skippedUncommitted += 1;
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
let diffResult = diffCache.get(attestationCommit);
|
|
107
|
-
if (diffResult === undefined) {
|
|
108
|
-
diffResult = gitDiffNameOnlySinceCommit(repoRoot, attestationCommit, tmvcRoots);
|
|
109
|
-
diffCache.set(attestationCommit, diffResult);
|
|
110
|
-
}
|
|
111
|
-
if (!diffResult.ok) {
|
|
112
|
-
failures.push({
|
|
113
|
-
row,
|
|
114
|
-
attestationCommit,
|
|
115
|
-
quoteLine: lineNumber,
|
|
116
|
-
stalePaths: [],
|
|
117
|
-
reason: `Trace STALE for DoD ${row.dodId}: cannot evaluate TMVC drift since attestation (git diff failed)`,
|
|
118
|
-
});
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
if (diffResult.paths.length > 0) {
|
|
122
|
-
failures.push({
|
|
123
|
-
row,
|
|
124
|
-
attestationCommit,
|
|
125
|
-
quoteLine: lineNumber,
|
|
126
|
-
stalePaths: diffResult.paths,
|
|
127
|
-
reason: formatStaleReason(row, lineNumber, attestationCommit, diffResult.paths),
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return { failures, skippedUncommitted };
|
|
132
|
-
}
|
|
133
|
-
export function isPassTraceRow(status) {
|
|
134
|
-
return isPassStatus(normalizeTraceStatus(status));
|
|
135
|
-
}
|
|
136
|
-
export function resolveQuoteLineNumber(map, row, resolvedLineByDodId) {
|
|
137
|
-
const override = resolvedLineByDodId.get(row.dodId);
|
|
138
|
-
if (override !== undefined)
|
|
139
|
-
return override;
|
|
140
|
-
const anchor = row.anchor.trim();
|
|
141
|
-
if (/^\d+$/.test(anchor)) {
|
|
142
|
-
const declared = parseInt(anchor, 10);
|
|
143
|
-
const line = map.lines[declared - 1];
|
|
144
|
-
if (line !== undefined && line.includes(row.traceQuote))
|
|
145
|
-
return declared;
|
|
146
|
-
const matches = quoteLineNumbers(map, row.traceQuote);
|
|
147
|
-
if (matches.length === 1)
|
|
148
|
-
return matches[0];
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
for (let i = 0; i < map.lines.length; i++) {
|
|
152
|
-
const line = map.lines[i];
|
|
153
|
-
if (line.includes(anchor) && line.includes(row.traceQuote))
|
|
154
|
-
return i + 1;
|
|
155
|
-
}
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
function buildResolvedQuoteLines(passRows, map, warnings) {
|
|
159
|
-
const resolvedLineByDodId = new Map();
|
|
160
|
-
for (const warning of warnings) {
|
|
161
|
-
resolvedLineByDodId.set(warning.row.dodId, warning.foundLine);
|
|
162
|
-
}
|
|
163
|
-
const resolved = [];
|
|
164
|
-
for (const row of passRows) {
|
|
165
|
-
const lineNumber = resolveQuoteLineNumber(map, row, resolvedLineByDodId);
|
|
166
|
-
if (lineNumber !== null)
|
|
167
|
-
resolved.push({ row, lineNumber });
|
|
168
|
-
}
|
|
169
|
-
return resolved;
|
|
170
|
-
}
|
|
171
|
-
function verifyNumericAnchorExact(map, row, lineNumber) {
|
|
172
|
-
const line = map.lines[lineNumber - 1];
|
|
173
|
-
if (line === undefined) {
|
|
174
|
-
return {
|
|
175
|
-
row,
|
|
176
|
-
kind: "strict_line_drift",
|
|
177
|
-
reason: `Anchor line ${lineNumber} out of range (file has ${map.lines.length} lines)`,
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
if (!line.includes(row.traceQuote)) {
|
|
181
|
-
return { row, kind: "strict_line_drift", reason: `Trace quote not on anchored line ${lineNumber}` };
|
|
182
|
-
}
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
function resolveDriftFromMap(map, row, lineNumber) {
|
|
186
|
-
const matches = quoteLineNumbers(map, row.traceQuote);
|
|
187
|
-
if (matches.length === 0) {
|
|
188
|
-
return {
|
|
189
|
-
failure: {
|
|
190
|
-
row,
|
|
191
|
-
kind: missingQuoteKind(row.traceQuote),
|
|
192
|
-
reason: "Trace quote not found verbatim in EXECUTOR_LOG.md",
|
|
193
|
-
},
|
|
194
|
-
warning: null,
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
if (matches.length === 1) {
|
|
198
|
-
const foundLine = matches[0];
|
|
199
|
-
return {
|
|
200
|
-
failure: null,
|
|
201
|
-
warning: { row, declaredLine: lineNumber, foundLine, autoResolved: true },
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
return {
|
|
205
|
-
failure: {
|
|
206
|
-
row,
|
|
207
|
-
kind: "ambiguous",
|
|
208
|
-
reason: `Ambiguous trace quote: found on lines ${matches.join(", ")}; re-run a clean flight`,
|
|
209
|
-
},
|
|
210
|
-
warning: null,
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
function verifyNumericAnchorFuzzy(map, row, lineNumber) {
|
|
214
|
-
const exact = verifyNumericAnchorExact(map, row, lineNumber);
|
|
215
|
-
if (exact === null)
|
|
216
|
-
return { failure: null, warning: null };
|
|
217
|
-
return resolveDriftFromMap(map, row, lineNumber);
|
|
218
|
-
}
|
|
219
|
-
function verifyFreeformAnchor(map, row, anchor) {
|
|
220
|
-
const found = map.lines.some((line) => line.includes(anchor) && line.includes(row.traceQuote));
|
|
221
|
-
if (!found) {
|
|
222
|
-
return {
|
|
223
|
-
row,
|
|
224
|
-
kind: "anchor_mismatch",
|
|
225
|
-
reason: `No line contains both anchor "${anchor}" and trace quote`,
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
return null;
|
|
229
|
-
}
|
|
230
|
-
/** Line numbers are 1-based in mission table; other anchors match a substring on a line */
|
|
231
|
-
export function verifyTraceRows(executorLogPath, rows, options = {}) {
|
|
232
|
-
const forceFuzzy = options.fuzzyNumericAnchor === true;
|
|
233
|
-
const autoFuzzy = options.strictTrace !== true;
|
|
234
|
-
const passRows = rows.filter((r) => isPassTraceRow(r.status));
|
|
235
|
-
const quotes = passRows.map((r) => r.traceQuote);
|
|
236
|
-
const map = buildExecutorLogLineMapForQuotes(executorLogPath, quotes);
|
|
237
|
-
if (!map) {
|
|
238
|
-
return {
|
|
239
|
-
failures: passRows.map((row) => ({
|
|
240
|
-
row,
|
|
241
|
-
kind: "executor_log_missing",
|
|
242
|
-
reason: `EXECUTOR_LOG missing: ${executorLogPath}`,
|
|
243
|
-
})),
|
|
244
|
-
warnings: [],
|
|
245
|
-
resolvedLines: [],
|
|
246
|
-
map: null,
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
const failures = [];
|
|
250
|
-
const warnings = [];
|
|
251
|
-
for (const row of passRows) {
|
|
252
|
-
if (!row.traceQuote.trim()) {
|
|
253
|
-
failures.push({ row, kind: "empty_quote", reason: "PASS row has empty trace quote" });
|
|
254
|
-
continue;
|
|
255
|
-
}
|
|
256
|
-
if (!map.content.includes(row.traceQuote)) {
|
|
257
|
-
failures.push({
|
|
258
|
-
row,
|
|
259
|
-
kind: missingQuoteKind(row.traceQuote),
|
|
260
|
-
reason: "Trace quote not found verbatim in EXECUTOR_LOG.md",
|
|
261
|
-
});
|
|
262
|
-
continue;
|
|
263
|
-
}
|
|
264
|
-
const anchor = row.anchor.trim();
|
|
265
|
-
if (/^\d+$/.test(anchor)) {
|
|
266
|
-
const lineNumber = parseInt(anchor, 10);
|
|
267
|
-
if (forceFuzzy) {
|
|
268
|
-
const { failure, warning } = verifyNumericAnchorFuzzy(map, row, lineNumber);
|
|
269
|
-
if (failure)
|
|
270
|
-
failures.push(failure);
|
|
271
|
-
else if (warning)
|
|
272
|
-
warnings.push(warning);
|
|
273
|
-
continue;
|
|
274
|
-
}
|
|
275
|
-
const exactFailure = verifyNumericAnchorExact(map, row, lineNumber);
|
|
276
|
-
if (exactFailure === null)
|
|
277
|
-
continue;
|
|
278
|
-
// Exact numeric-anchor failures are always line drift; auto-fuzzy retries them.
|
|
279
|
-
if (autoFuzzy) {
|
|
280
|
-
const { failure, warning } = resolveDriftFromMap(map, row, lineNumber);
|
|
281
|
-
if (failure)
|
|
282
|
-
failures.push(failure);
|
|
283
|
-
else if (warning)
|
|
284
|
-
warnings.push(warning);
|
|
285
|
-
}
|
|
286
|
-
else {
|
|
287
|
-
failures.push(exactFailure);
|
|
288
|
-
}
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
const failure = verifyFreeformAnchor(map, row, anchor);
|
|
292
|
-
if (failure)
|
|
293
|
-
failures.push(failure);
|
|
294
|
-
}
|
|
295
|
-
return {
|
|
296
|
-
failures,
|
|
297
|
-
warnings,
|
|
298
|
-
resolvedLines: buildResolvedQuoteLines(passRows, map, warnings),
|
|
299
|
-
map,
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
export function defaultExecutorLogPath(repoRoot) {
|
|
303
|
-
return path.join(repoRoot, EXECUTOR_LOG_FILENAME);
|
|
304
|
-
}
|
|
1
|
+
export { normalizeTraceStatus, isPassStatus, isPendingStatus, isPassTraceRow, } from "./trace-status.js";
|
|
2
|
+
export { resolveQuoteLineNumber, verifyTraceRows, defaultExecutorLogPath, } from "./trace-quote.js";
|
|
3
|
+
export { UNCOMMITTED_BLAME_COMMIT, parseBlamePorcelainByLine, readBlamePorcelainByLine, verifyTraceEvidenceFreshness, } from "./trace-evidence.js";
|
|
305
4
|
//# sourceMappingURL=trace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/cli/lib/trace.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,EAAiC,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAA2B,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AACzH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnD,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACpC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA6B;IACxD,OAAO,MAAM,KAAK,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC3D,OAAO,MAAM,KAAK,SAAS,CAAC;AAC9B,CAAC;AAgBD,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,2BAA2B,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AAcnF,SAAS,kBAAkB,CAAC,eAAuB,EAAE,QAAgB;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC/E,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,IAAI,GAAG,uCAAuC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,CAAE,CAAC,CAAC,CAAE,CAAC;QACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAI,IAAI,KAAK,CAAE,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,kBAA0B;IACnF,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC/E,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC5B,OAAO,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CACxB,GAAa,EACb,SAAiB,EACjB,iBAAyB,EACzB,UAAoB;IAEpB,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GACV,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACjG,OAAO,CACL,uBAAuB,GAAG,CAAC,KAAK,0BAA0B,MAAM,CAAC,SAAS,CAAC,iBAAiB,WAAW,KAAK;QAC5G,kCAAkC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,8CAA8C,CAC1G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAgB,EAChB,QAAkB,EAClB,QAAuB,EACvB,eAAuB,EACvB,aAAkC,EAClC,UAAgC,EAAE;IAElC,IAAI,OAAO,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;QACvC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAE3B,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,aAAa,EAAE,CAAC;QAChD,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG;gBACH,iBAAiB,EAAE,SAAS;gBAC5B,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,uBAAuB,GAAG,CAAC,KAAK,uDAAuD,MAAM,CAAC,UAAU,CAAC,EAAE;aACpH,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,iBAAiB,KAAK,wBAAwB,EAAE,CAAC;YACnD,kBAAkB,IAAI,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,UAAU,GAAG,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAChF,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG;gBACH,iBAAiB;gBACjB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,uBAAuB,GAAG,CAAC,KAAK,kEAAkE;aAC3G,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG;gBACH,iBAAiB;gBACjB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU,CAAC,KAAK;gBAC5B,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC;aAChF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;AAC1C,CAAC;AAmCD,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,GAAuB,EACvB,GAAa,EACb,mBAAgD;IAEhD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAE5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,QAAQ,CAAC;QACzE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAoB,EACpB,GAAuB,EACvB,QAA8B;IAE9B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;QACzE,IAAI,UAAU,KAAK,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAuB,EACvB,GAAa,EACb,UAAkB;IAElB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,GAAG;YACH,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,eAAe,UAAU,2BAA2B,GAAG,CAAC,KAAK,CAAC,MAAM,SAAS;SACtF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,oCAAoC,UAAU,EAAE,EAAE,CAAC;IACtG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAuB,EACvB,GAAa,EACb,UAAkB;IAElB,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE;gBACP,GAAG;gBACH,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACtC,MAAM,EAAE,mDAAmD;aAC5D;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE;SAC1E,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE;YACP,GAAG;YACH,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,yCAAyC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB;SAC7F;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAuB,EACvB,GAAa,EACb,UAAkB;IAElB,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5D,OAAO,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAuB,EAAE,GAAa,EAAE,MAAc;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,GAAG;YACH,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,iCAAiC,MAAM,mBAAmB;SACnE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,eAAe,CAC7B,eAAuB,EACvB,IAAgB,EAChB,UAA8B,EAAE;IAEhC,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,gCAAgC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/B,GAAG;gBACH,IAAI,EAAE,sBAA+B;gBACrC,MAAM,EAAE,yBAAyB,eAAe,EAAE;aACnD,CAAC,CAAC;YACH,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,EAAE;YACjB,GAAG,EAAE,IAAI;SACV,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC,CAAC;YACtF,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG;gBACH,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACtC,MAAM,EAAE,mDAAmD;aAC5D,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;gBAC5E,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAC/B,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzC,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YACpE,IAAI,YAAY,KAAK,IAAI;gBAAE,SAAS;YAEpC,gFAAgF;YAChF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;gBACvE,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAC/B,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,aAAa,EAAE,uBAAuB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC;QAC/D,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/cli/lib/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAOL,sBAAsB,EACtB,eAAe,EACf,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,wBAAwB,EAGxB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type InitAssetSpec } from "./init-asset-catalog.js";
|
|
2
|
+
import { type InitProfile } from "./init-profile.js";
|
|
3
|
+
import type { PlannedWrite } from "./init-plan.js";
|
|
4
|
+
import type { UpgradeFileChange } from "./upgrade-plan-types.js";
|
|
5
|
+
/** managed_strict substrate assets eligible for gantry upgrade (excludes user law / missions). */
|
|
6
|
+
export declare function upgradeEligibleAssets(assets: InitAssetSpec[]): InitAssetSpec[];
|
|
7
|
+
export declare function allUpgradeEligibleFromCatalog(templatesRoot: string): InitAssetSpec[];
|
|
8
|
+
/** Infer init profile from on-disk substrate assets for upgrade planning. */
|
|
9
|
+
export declare function inferInitProfileFromRepo(repoRoot: string, templatesRoot?: string): InitProfile;
|
|
10
|
+
/** Summarize planned upgrade writes for dry-run / changelog preview. */
|
|
11
|
+
export declare function buildUpgradeFileChanges(repoRoot: string, writes: PlannedWrite[]): UpgradeFileChange[];
|
|
12
|
+
export declare function groupUpgradeChangesByCategory(changes: UpgradeFileChange[]): Record<string, UpgradeFileChange[]>;
|
|
13
|
+
//# sourceMappingURL=upgrade-plan-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-plan-catalog.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/upgrade-plan-catalog.ts"],"names":[],"mappings":"AAQA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,kGAAkG;AAClG,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAE9E;AAED,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE,CAEpF;AAiBD,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW,CAc9F;AAYD,wEAAwE;AACxE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EAAE,GACrB,iBAAiB,EAAE,CAcrB;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,iBAAiB,EAAE,GAC3B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAgBrC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { INTEGRATION_IDE_KEYS, loadIntegrationCompat, } from "./integration-compat.js";
|
|
5
|
+
import { loadInitAssetCatalog } from "./init-asset-catalog.js";
|
|
6
|
+
import { defaultInitProfile } from "./init-profile.js";
|
|
7
|
+
import { toPosixRel } from "./cli-io.js";
|
|
8
|
+
/** managed_strict substrate assets eligible for gantry upgrade (excludes user law / missions). */
|
|
9
|
+
export function upgradeEligibleAssets(assets) {
|
|
10
|
+
return assets.filter((a) => a.mode === "managed_strict");
|
|
11
|
+
}
|
|
12
|
+
export function allUpgradeEligibleFromCatalog(templatesRoot) {
|
|
13
|
+
return upgradeEligibleAssets([...loadInitAssetCatalog(templatesRoot)]);
|
|
14
|
+
}
|
|
15
|
+
function pathExists(repoRoot, rel) {
|
|
16
|
+
return fs.existsSync(path.join(repoRoot, rel.split("/").join(path.sep)));
|
|
17
|
+
}
|
|
18
|
+
function detectIntegrationPresent(repoRoot, key, entry) {
|
|
19
|
+
if (key === "codex-cli") {
|
|
20
|
+
return pathExists(repoRoot, ".codex/config.toml");
|
|
21
|
+
}
|
|
22
|
+
return entry.canonical_paths.some((p) => pathExists(repoRoot, p));
|
|
23
|
+
}
|
|
24
|
+
/** Infer init profile from on-disk substrate assets for upgrade planning. */
|
|
25
|
+
export function inferInitProfileFromRepo(repoRoot, templatesRoot) {
|
|
26
|
+
const profile = defaultInitProfile();
|
|
27
|
+
const compat = loadIntegrationCompat(templatesRoot);
|
|
28
|
+
const detected = INTEGRATION_IDE_KEYS.filter((key) => detectIntegrationPresent(repoRoot, key, compat.integrations[key]));
|
|
29
|
+
if (detected.length > 0) {
|
|
30
|
+
profile.ides = detected;
|
|
31
|
+
}
|
|
32
|
+
profile.gitHooks =
|
|
33
|
+
pathExists(repoRoot, ".githooks/pre-push") || pathExists(repoRoot, ".githooks/pre-commit");
|
|
34
|
+
profile.ciWorkflow = pathExists(repoRoot, ".github/workflows/gxt-validate.yml");
|
|
35
|
+
profile.skillsPreset = pathExists(repoRoot, "skills/gantry.md") ? "specimen" : "minimal";
|
|
36
|
+
return profile;
|
|
37
|
+
}
|
|
38
|
+
function sha256Buffer(buf) {
|
|
39
|
+
return crypto.createHash("sha256").update(buf).digest("hex");
|
|
40
|
+
}
|
|
41
|
+
function fileState(absPath) {
|
|
42
|
+
if (!fs.existsSync(absPath))
|
|
43
|
+
return null;
|
|
44
|
+
const buf = fs.readFileSync(absPath);
|
|
45
|
+
return { bytes: buf.length, sha256: sha256Buffer(buf) };
|
|
46
|
+
}
|
|
47
|
+
/** Summarize planned upgrade writes for dry-run / changelog preview. */
|
|
48
|
+
export function buildUpgradeFileChanges(repoRoot, writes) {
|
|
49
|
+
return writes.map((w) => {
|
|
50
|
+
const rel = toPosixRel(repoRoot, w.absoluteTarget);
|
|
51
|
+
const before = fileState(w.absoluteTarget);
|
|
52
|
+
const afterBuf = Buffer.from(w.body, "utf8");
|
|
53
|
+
return {
|
|
54
|
+
path: rel,
|
|
55
|
+
action: before === null ? "add" : "update",
|
|
56
|
+
bytes_before: before?.bytes ?? null,
|
|
57
|
+
bytes_after: afterBuf.length,
|
|
58
|
+
sha256_before: before?.sha256 ?? null,
|
|
59
|
+
sha256_after: sha256Buffer(afterBuf),
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
export function groupUpgradeChangesByCategory(changes) {
|
|
64
|
+
const groups = {
|
|
65
|
+
workflows: [],
|
|
66
|
+
scripts: [],
|
|
67
|
+
hooks: [],
|
|
68
|
+
substrate: [],
|
|
69
|
+
other: [],
|
|
70
|
+
};
|
|
71
|
+
for (const c of changes) {
|
|
72
|
+
if (c.path.startsWith(".github/workflows/"))
|
|
73
|
+
groups.workflows.push(c);
|
|
74
|
+
else if (c.path.startsWith("scripts/"))
|
|
75
|
+
groups.scripts.push(c);
|
|
76
|
+
else if (c.path.startsWith(".githooks/") || c.path.startsWith(".cursor/hooks"))
|
|
77
|
+
groups.hooks.push(c);
|
|
78
|
+
else if (c.path.startsWith(".gitagent/"))
|
|
79
|
+
groups.substrate.push(c);
|
|
80
|
+
else
|
|
81
|
+
groups.other.push(c);
|
|
82
|
+
}
|
|
83
|
+
return groups;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=upgrade-plan-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-plan-catalog.js","sourceRoot":"","sources":["../../../src/cli/lib/upgrade-plan-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UpgradePlanResult } from "./upgrade-plan.js";
|
|
1
|
+
import type { UpgradePlanResult } from "./upgrade-plan-types.js";
|
|
2
2
|
/** Wire contract version for automation consumers (MCP, CI). Bump only with migration. */
|
|
3
3
|
export declare const STABLE_UPGRADE_PLAN_PAYLOAD_VERSION: 1;
|
|
4
4
|
export interface StableUpgradeFileChangeV1 {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-plan-payload.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/upgrade-plan-payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"upgrade-plan-payload.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/upgrade-plan-payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEpF,0FAA0F;AAC1F,eAAO,MAAM,mCAAmC,EAAG,CAAU,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,OAAO,mCAAmC,CAAC;IAC3D,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;CACnE;AAoCD,kFAAkF;AAClF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,iBAAiB,GAAG,0BAA0B,CA8BlG;AAED,oFAAoF;AACpF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,0BAA0B,CAgC5G"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PlannedWrite } from "./init-plan.js";
|
|
2
|
+
import { type UpgradePayload } from "./upgrade-plan-types.js";
|
|
3
|
+
declare function semverSlug(version: string): string;
|
|
4
|
+
export declare function pickNextUpgradeMsn(repoRoot: string): string;
|
|
5
|
+
export declare function resolveUpgradeMsn(repoRoot: string, explicit?: string): string;
|
|
6
|
+
export declare function writeStagedFiles(repoRoot: string, writes: PlannedWrite[]): Record<string, string>;
|
|
7
|
+
export declare function buildUpgradeMissionYaml(opts: {
|
|
8
|
+
msnId: string;
|
|
9
|
+
fromVersion: string;
|
|
10
|
+
toVersion: string;
|
|
11
|
+
payload: UpgradePayload;
|
|
12
|
+
}): string;
|
|
13
|
+
export declare function parseUpgradePayloadFromMissionBody(body: string): UpgradePayload;
|
|
14
|
+
export { semverSlug };
|
|
15
|
+
//# sourceMappingURL=upgrade-plan-scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-plan-scaffold.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/upgrade-plan-scaffold.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM/E,iBAAS,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAS7E;AAUD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAejG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,MAAM,CAeT;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAwC/E;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|