@jeger-ai/opengantry 2.4.0 → 2.6.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/README.md +7 -3
- package/dist/cli/commands/arch.d.ts.map +1 -1
- package/dist/cli/commands/arch.js +5 -1
- package/dist/cli/commands/arch.js.map +1 -1
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/lib/cli-io.d.ts +2 -0
- package/dist/cli/lib/cli-io.d.ts.map +1 -1
- package/dist/cli/lib/cli-io.js +14 -0
- package/dist/cli/lib/cli-io.js.map +1 -1
- package/dist/cli/lib/command-reporter.d.ts.map +1 -1
- package/dist/cli/lib/command-reporter.js +10 -0
- package/dist/cli/lib/command-reporter.js.map +1 -1
- package/dist/cli/lib/defensive-guard.d.ts +27 -0
- package/dist/cli/lib/defensive-guard.d.ts.map +1 -0
- package/dist/cli/lib/defensive-guard.js +305 -0
- package/dist/cli/lib/defensive-guard.js.map +1 -0
- package/dist/cli/lib/defensive-profile-presets.d.ts +10 -0
- package/dist/cli/lib/defensive-profile-presets.d.ts.map +1 -0
- package/dist/cli/lib/defensive-profile-presets.js +76 -0
- package/dist/cli/lib/defensive-profile-presets.js.map +1 -0
- package/dist/cli/lib/defensive-profile.d.ts +60 -0
- package/dist/cli/lib/defensive-profile.d.ts.map +1 -0
- package/dist/cli/lib/defensive-profile.js +178 -0
- package/dist/cli/lib/defensive-profile.js.map +1 -0
- package/dist/cli/lib/doctor-core.d.ts.map +1 -1
- package/dist/cli/lib/doctor-core.js +2 -0
- package/dist/cli/lib/doctor-core.js.map +1 -1
- package/dist/cli/lib/gate.d.ts +5 -0
- package/dist/cli/lib/gate.d.ts.map +1 -1
- package/dist/cli/lib/gate.js +5 -0
- package/dist/cli/lib/gate.js.map +1 -1
- package/dist/cli/lib/gxt-config.d.ts +2 -0
- package/dist/cli/lib/gxt-config.d.ts.map +1 -1
- package/dist/cli/lib/gxt-config.js +6 -1
- package/dist/cli/lib/gxt-config.js.map +1 -1
- package/dist/cli/lib/gxt-error-codes.d.ts +1 -0
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
- package/dist/cli/lib/gxt-error-codes.js +1 -0
- package/dist/cli/lib/gxt-error-codes.js.map +1 -1
- package/dist/cli/lib/init-defensive-profile.d.ts +5 -0
- package/dist/cli/lib/init-defensive-profile.d.ts.map +1 -0
- package/dist/cli/lib/init-defensive-profile.js +14 -0
- package/dist/cli/lib/init-defensive-profile.js.map +1 -0
- package/dist/cli/lib/init-interactive.d.ts.map +1 -1
- package/dist/cli/lib/init-interactive.js +34 -0
- package/dist/cli/lib/init-interactive.js.map +1 -1
- package/dist/cli/lib/init-plan.d.ts +1 -1
- package/dist/cli/lib/init-plan.d.ts.map +1 -1
- package/dist/cli/lib/init-plan.js +6 -2
- package/dist/cli/lib/init-plan.js.map +1 -1
- package/dist/cli/lib/init-profile.d.ts +5 -0
- package/dist/cli/lib/init-profile.d.ts.map +1 -1
- package/dist/cli/lib/init-profile.js +9 -0
- package/dist/cli/lib/init-profile.js.map +1 -1
- package/dist/cli/lib/kpi-scan.js +1 -1
- package/dist/cli/lib/kpi-scan.js.map +1 -1
- package/dist/cli/lib/program-stdin.d.ts +1 -2
- package/dist/cli/lib/program-stdin.d.ts.map +1 -1
- package/dist/cli/lib/program-stdin.js +1 -14
- package/dist/cli/lib/program-stdin.js.map +1 -1
- package/dist/cli/lib/target-architecture-doctor.d.ts +4 -0
- package/dist/cli/lib/target-architecture-doctor.d.ts.map +1 -0
- package/dist/cli/lib/target-architecture-doctor.js +32 -0
- package/dist/cli/lib/target-architecture-doctor.js.map +1 -0
- package/dist/cli/lib/target-architecture.d.ts +19 -4
- package/dist/cli/lib/target-architecture.d.ts.map +1 -1
- package/dist/cli/lib/target-architecture.js +87 -9
- package/dist/cli/lib/target-architecture.js.map +1 -1
- package/dist/cli/lib/verify-defensive-phase.d.ts +20 -0
- package/dist/cli/lib/verify-defensive-phase.d.ts.map +1 -0
- package/dist/cli/lib/verify-defensive-phase.js +44 -0
- package/dist/cli/lib/verify-defensive-phase.js.map +1 -0
- package/dist/cli/lib/verify-engine.d.ts +8 -1
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js +46 -22
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize-phases.d.ts +1 -0
- package/dist/cli/lib/verify-failure-normalize-phases.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-normalize-phases.js +14 -0
- package/dist/cli/lib/verify-failure-normalize-phases.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.js +3 -1
- package/dist/cli/lib/verify-failure-normalize.js.map +1 -1
- package/dist/cli/lib/verify-hints.d.ts +1 -0
- package/dist/cli/lib/verify-hints.d.ts.map +1 -1
- package/dist/cli/lib/verify-hints.js +14 -0
- package/dist/cli/lib/verify-hints.js.map +1 -1
- package/dist/cli/lib/verify-payload-types.d.ts +2 -0
- package/dist/cli/lib/verify-payload-types.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.js +6 -0
- package/dist/cli/lib/verify-payload.js.map +1 -1
- package/dist/cli/lib/verify-presentation.d.ts +2 -2
- package/dist/cli/lib/verify-presentation.d.ts.map +1 -1
- package/dist/cli/lib/verify-presentation.js +1 -1
- package/dist/cli/lib/verify-presentation.js.map +1 -1
- package/dist/cli/lib/verify-presenters.d.ts +2 -0
- package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
- package/dist/cli/lib/verify-presenters.js +11 -0
- package/dist/cli/lib/verify-presenters.js.map +1 -1
- package/dist/cli/lib/verify-run.d.ts +1 -1
- package/dist/cli/lib/verify-run.d.ts.map +1 -1
- package/dist/cli/lib/verify-run.js +1 -1
- 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-core.d.ts.map +1 -1
- package/dist/cli/program-core.js +2 -0
- package/dist/cli/program-core.js.map +1 -1
- package/dist/cli/program.js +1 -1
- package/dist/cli/program.js.map +1 -1
- package/package.json +1 -1
- package/templates/.gitagent/config.json +21 -0
- package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
- package/templates/.githooks/pre-commit +3 -3
- package/templates/TARGET_ARCHITECTURE.yaml +20 -0
- package/templates/integrations/asset-catalog.json +2 -1
- package/templates/integrations/compatibility.json +1 -1
- package/dist/cli/lib/gate-work-dir.d.ts +0 -6
- package/dist/cli/lib/gate-work-dir.d.ts.map +0 -1
- package/dist/cli/lib/gate-work-dir.js +0 -6
- package/dist/cli/lib/gate-work-dir.js.map +0 -1
- package/dist/cli/lib/verify-sinks.d.ts +0 -4
- package/dist/cli/lib/verify-sinks.d.ts.map +0 -1
- package/dist/cli/lib/verify-sinks.js +0 -13
- package/dist/cli/lib/verify-sinks.js.map +0 -1
|
@@ -2,6 +2,7 @@ import * as p from "@clack/prompts";
|
|
|
2
2
|
import { INTEGRATION_IDE_KEYS, integrationWizardLabel, loadIntegrationCompat, } from "./integration-compat.js";
|
|
3
3
|
import { defaultInitProfile, mergeInitProfile, } from "./init-profile.js";
|
|
4
4
|
import { defaultArchitectureLocation } from "./init-compose.js";
|
|
5
|
+
import { DEFENSIVE_PROFILE_PRESET_LABELS, DEFENSIVE_PROFILE_PRESET_NAMES, } from "./defensive-profile-presets.js";
|
|
5
6
|
function wizardCancelled(value) {
|
|
6
7
|
return p.isCancel(value);
|
|
7
8
|
}
|
|
@@ -101,6 +102,29 @@ async function promptInitArchitecture(partial, base) {
|
|
|
101
102
|
architectureAccessRequired,
|
|
102
103
|
};
|
|
103
104
|
}
|
|
105
|
+
async function promptDefensiveProfile(partial) {
|
|
106
|
+
const choice = await p.select({
|
|
107
|
+
message: "Defensive profile baseline",
|
|
108
|
+
options: [
|
|
109
|
+
{ value: "skip", label: "Skip — keep template defaults (disabled)" },
|
|
110
|
+
...DEFENSIVE_PROFILE_PRESET_NAMES.map((value) => ({
|
|
111
|
+
value,
|
|
112
|
+
label: DEFENSIVE_PROFILE_PRESET_LABELS[value],
|
|
113
|
+
})),
|
|
114
|
+
],
|
|
115
|
+
initialValue: partial.defensiveProfilePreset === null
|
|
116
|
+
? "skip"
|
|
117
|
+
: (partial.defensiveProfilePreset ?? "balanced_partner"),
|
|
118
|
+
});
|
|
119
|
+
if (wizardCancelled(choice)) {
|
|
120
|
+
p.cancel("init cancelled");
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
if (choice === "skip") {
|
|
124
|
+
return { defensiveProfilePreset: null };
|
|
125
|
+
}
|
|
126
|
+
return { defensiveProfilePreset: choice };
|
|
127
|
+
}
|
|
104
128
|
async function promptInitInfrastructure(partial, base) {
|
|
105
129
|
const skills = await p.select({
|
|
106
130
|
message: "Skills preset",
|
|
@@ -146,6 +170,11 @@ export async function runInitInteractiveWizard(repoRoot, templatesRoot, partial)
|
|
|
146
170
|
const architecture = await promptInitArchitecture(partial, base);
|
|
147
171
|
if (!architecture)
|
|
148
172
|
return null;
|
|
173
|
+
const defensive = partial.defensiveProfilePreset !== undefined
|
|
174
|
+
? { defensiveProfilePreset: partial.defensiveProfilePreset }
|
|
175
|
+
: await promptDefensiveProfile(partial);
|
|
176
|
+
if (!defensive)
|
|
177
|
+
return null;
|
|
149
178
|
const infrastructure = await promptInitInfrastructure(partial, base);
|
|
150
179
|
if (!infrastructure)
|
|
151
180
|
return null;
|
|
@@ -153,12 +182,17 @@ export async function runInitInteractiveWizard(repoRoot, templatesRoot, partial)
|
|
|
153
182
|
...partial,
|
|
154
183
|
...integrations,
|
|
155
184
|
...architecture,
|
|
185
|
+
...defensive,
|
|
156
186
|
...infrastructure,
|
|
157
187
|
});
|
|
188
|
+
const defensiveLine = profile.defensiveProfilePreset == null
|
|
189
|
+
? "Defensive profile: disabled (template default)"
|
|
190
|
+
: `Defensive profile: ${profile.defensiveProfilePreset}`;
|
|
158
191
|
p.note([
|
|
159
192
|
`IDEs: ${profile.ides.join(", ")}`,
|
|
160
193
|
`Doc: ${profile.integrationsDocPath}`,
|
|
161
194
|
`Architecture: ${profile.architectureSource}${profile.architectureLocation ? ` → ${profile.architectureLocation}` : ""}`,
|
|
195
|
+
defensiveLine,
|
|
162
196
|
`Skills: ${profile.skillsPreset}`,
|
|
163
197
|
`Hooks: ${profile.gitHooks ? "yes" : "no"}`,
|
|
164
198
|
`CI: ${profile.ciWorkflow ? "yes" : "no"}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-interactive.js","sourceRoot":"","sources":["../../../src/cli/lib/init-interactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GAEtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"init-interactive.js","sourceRoot":"","sources":["../../../src/cli/lib/init-interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export interface InitPlanResult {
|
|
|
13
13
|
unchanged: string[];
|
|
14
14
|
conflicts: string[];
|
|
15
15
|
}
|
|
16
|
-
export declare function planInitAssets(assets: (InitAsset | InitAssetSpec)[], templatesRoot: string, repoRoot: string, force: boolean): InitPlanResult;
|
|
16
|
+
export declare function planInitAssets(assets: (InitAsset | InitAssetSpec)[], templatesRoot: string, repoRoot: string, force: boolean, profile?: InitProfile): InitPlanResult;
|
|
17
17
|
export declare function applyInitWrites(writes: PlannedWrite[]): void;
|
|
18
18
|
export declare function logInitSummary(writes: PlannedWrite[], skippedUserMutable: string[], unchanged: string[]): void;
|
|
19
19
|
export declare function logInitNextSteps(profile?: InitProfile): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-plan.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"init-plan.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,EAAE,EACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,cAAc,CA4ChB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAM5D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAQN;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAgB5D"}
|
|
@@ -5,7 +5,8 @@ import { logError, logInfo } from "./cli-io.js";
|
|
|
5
5
|
import { audienceSectionTitle, filterTaggedStepsForAudience, formatAudienceNextStep, INIT_TAGGED_NEXT_STEPS, } from "./audience-output.js";
|
|
6
6
|
import { getOutputAudience } from "./output-context.js";
|
|
7
7
|
import { templatePathForAsset } from "./init-asset-catalog.js";
|
|
8
|
-
|
|
8
|
+
import { isConfigJsonTarget, mergeDefensiveProfileIntoConfigBody, } from "./init-defensive-profile.js";
|
|
9
|
+
export function planInitAssets(assets, templatesRoot, repoRoot, force, profile) {
|
|
9
10
|
const writes = [];
|
|
10
11
|
const conflicts = [];
|
|
11
12
|
const skippedUserMutable = [];
|
|
@@ -21,7 +22,10 @@ export function planInitAssets(assets, templatesRoot, repoRoot, force) {
|
|
|
21
22
|
logError(`init: missing template for ${asset.targetPath} at ${templateAbs}`);
|
|
22
23
|
return { ok: false, writes, skippedUserMutable, unchanged, conflicts };
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
+
const bodyRaw = fs.readFileSync(templateAbs, "utf8");
|
|
26
|
+
const body = profile?.defensiveProfilePreset && isConfigJsonTarget(asset.targetPath)
|
|
27
|
+
? mergeDefensiveProfileIntoConfigBody(bodyRaw, profile.defensiveProfilePreset)
|
|
28
|
+
: bodyRaw;
|
|
25
29
|
const existing = fs.existsSync(targetAbs) ? fs.readFileSync(targetAbs, "utf8") : null;
|
|
26
30
|
if (existing === null) {
|
|
27
31
|
writes.push({ absoluteTarget: targetAbs, body, executable: asset.executable === true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-plan.js","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,GAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAsB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"init-plan.js","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IntegrationIdeKey } from "./integration-compat.js";
|
|
2
|
+
import { type DefensiveProfilePresetName } from "./defensive-profile-presets.js";
|
|
2
3
|
export type SkillsPreset = "minimal" | "specimen";
|
|
3
4
|
/** Where code architecture docs live — unset means agents must ask before implementing. */
|
|
4
5
|
export type ArchitectureSourceKind = "unset" | "file" | "directory" | "external";
|
|
@@ -13,6 +14,8 @@ export interface InitProfile {
|
|
|
13
14
|
architectureAccessRequired?: boolean;
|
|
14
15
|
architectureCredentialSlot?: string;
|
|
15
16
|
architectureAuthHint?: string;
|
|
17
|
+
/** Selected defensive profile preset; undefined = prompt/default, null = explicit skip */
|
|
18
|
+
defensiveProfilePreset?: DefensiveProfilePresetName | null;
|
|
16
19
|
}
|
|
17
20
|
export declare const DEFAULT_INTEGRATIONS_DOC_PATH = "docs/INTEGRATIONS.md";
|
|
18
21
|
export declare function defaultInitProfile(): InitProfile;
|
|
@@ -29,6 +32,8 @@ export declare function profileFromCliFlags(opts: {
|
|
|
29
32
|
noCi?: boolean;
|
|
30
33
|
archSource?: string;
|
|
31
34
|
archLocation?: string;
|
|
35
|
+
defensiveProfile?: string;
|
|
36
|
+
noDefensiveProfile?: boolean;
|
|
32
37
|
}): Partial<InitProfile>;
|
|
33
38
|
export declare function mergeInitProfile(base: InitProfile, partial: Partial<InitProfile>): InitProfile;
|
|
34
39
|
export declare function hasFullCliProfile(partial: Partial<InitProfile>): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-profile.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"init-profile.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,2FAA2F;AAC3F,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,sBAAsB,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;CAC5D;AAED,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AAEpE,wBAAgB,kBAAkB,IAAI,WAAW,CAShD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAK3E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAO7D;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUrF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC,WAAW,CAAC,CAgBvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAiB9F;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAQxE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC/B,GAAG,OAAO,CAKV"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
+
import { parseDefensiveProfilePreset, } from "./defensive-profile-presets.js";
|
|
2
3
|
export const DEFAULT_INTEGRATIONS_DOC_PATH = "docs/INTEGRATIONS.md";
|
|
3
4
|
export function defaultInitProfile() {
|
|
4
5
|
return {
|
|
@@ -58,6 +59,11 @@ export function profileFromCliFlags(opts) {
|
|
|
58
59
|
partial.architectureSource = parseArchitectureSource(opts.archSource);
|
|
59
60
|
if (opts.archLocation)
|
|
60
61
|
partial.architectureLocation = opts.archLocation.replace(/\\/g, "/");
|
|
62
|
+
if (opts.noDefensiveProfile)
|
|
63
|
+
partial.defensiveProfilePreset = null;
|
|
64
|
+
else if (opts.defensiveProfile) {
|
|
65
|
+
partial.defensiveProfilePreset = parseDefensiveProfilePreset(opts.defensiveProfile);
|
|
66
|
+
}
|
|
61
67
|
return partial;
|
|
62
68
|
}
|
|
63
69
|
export function mergeInitProfile(base, partial) {
|
|
@@ -72,6 +78,9 @@ export function mergeInitProfile(base, partial) {
|
|
|
72
78
|
architectureAccessRequired: partial.architectureAccessRequired ?? base.architectureAccessRequired,
|
|
73
79
|
architectureCredentialSlot: partial.architectureCredentialSlot ?? base.architectureCredentialSlot,
|
|
74
80
|
architectureAuthHint: partial.architectureAuthHint ?? base.architectureAuthHint,
|
|
81
|
+
defensiveProfilePreset: partial.defensiveProfilePreset !== undefined
|
|
82
|
+
? partial.defensiveProfilePreset
|
|
83
|
+
: base.defensiveProfilePreset,
|
|
75
84
|
};
|
|
76
85
|
}
|
|
77
86
|
export function hasFullCliProfile(partial) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-profile.js","sourceRoot":"","sources":["../../../src/cli/lib/init-profile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init-profile.js","sourceRoot":"","sources":["../../../src/cli/lib/init-profile.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/lib/kpi-scan.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import { DEFAULT_KPI_REPORT_DIR } from "./constants.js";
|
|
4
4
|
import { runGate } from "./gate.js";
|
|
5
5
|
import { assertKpiReportSchemaValid } from "./kpi-engine.js";
|
|
6
|
-
import { resolveGateWorkDir } from "./gate
|
|
6
|
+
import { resolveGateWorkDir } from "./gate.js";
|
|
7
7
|
function namespaceMetrics(verifierId, metrics) {
|
|
8
8
|
const namespaced = {};
|
|
9
9
|
for (const [key, value] of Object.entries(metrics)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-scan.js","sourceRoot":"","sources":["../../../src/cli/lib/kpi-scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"kpi-scan.js","sourceRoot":"","sources":["../../../src/cli/lib/kpi-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-stdin.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/program-stdin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program-stdin.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/program-stdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export function readStdinIfEmpty(text) {
|
|
3
|
-
if (text.trim())
|
|
4
|
-
return Promise.resolve(text);
|
|
5
|
-
return new Promise((resolve, reject) => {
|
|
6
|
-
let data = "";
|
|
7
|
-
process.stdin.setEncoding("utf8");
|
|
8
|
-
process.stdin.on("data", (chunk) => {
|
|
9
|
-
data += chunk;
|
|
10
|
-
});
|
|
11
|
-
process.stdin.on("end", () => resolve(data.trim()));
|
|
12
|
-
process.stdin.on("error", reject);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
1
|
+
export { readStdinIfEmpty } from "./cli-io.js";
|
|
15
2
|
//# sourceMappingURL=program-stdin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-stdin.js","sourceRoot":"","sources":["../../../src/cli/lib/program-stdin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program-stdin.js","sourceRoot":"","sources":["../../../src/cli/lib/program-stdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DoctorLine } from "./doctor-types.js";
|
|
2
|
+
/** Deterministic TARGET_ARCHITECTURE.yaml presence/parse/schema checks (no network). */
|
|
3
|
+
export declare function runTargetArchitectureDoctorChecks(root: string): DoctorLine[];
|
|
4
|
+
//# sourceMappingURL=target-architecture-doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-architecture-doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/target-architecture-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AASpD,wFAAwF;AACxF,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CA2B5E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TARGET_ARCHITECTURE_FILENAME, loadTargetArchitecture, targetArchitectureMigrationHint, } from "./target-architecture.js";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
/** Deterministic TARGET_ARCHITECTURE.yaml presence/parse/schema checks (no network). */
|
|
5
|
+
export function runTargetArchitectureDoctorChecks(root) {
|
|
6
|
+
const lines = [];
|
|
7
|
+
const abs = path.join(root, TARGET_ARCHITECTURE_FILENAME);
|
|
8
|
+
if (!fs.existsSync(abs)) {
|
|
9
|
+
lines.push({
|
|
10
|
+
level: "warn",
|
|
11
|
+
message: `${TARGET_ARCHITECTURE_FILENAME} missing — run gantry init or add scaffold from templates/TARGET_ARCHITECTURE.yaml`,
|
|
12
|
+
});
|
|
13
|
+
return lines;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const spec = loadTargetArchitecture(root);
|
|
17
|
+
lines.push({
|
|
18
|
+
level: "ok",
|
|
19
|
+
message: `${TARGET_ARCHITECTURE_FILENAME} present (schema ${spec.schema_version})`,
|
|
20
|
+
});
|
|
21
|
+
const hint = targetArchitectureMigrationHint(spec.schema_version);
|
|
22
|
+
if (hint) {
|
|
23
|
+
lines.push({ level: "warn", message: hint });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
28
|
+
lines.push({ level: "fail", message: `${TARGET_ARCHITECTURE_FILENAME}: ${message}` });
|
|
29
|
+
}
|
|
30
|
+
return lines;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=target-architecture-doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-architecture-doctor.js","sourceRoot":"","sources":["../../../src/cli/lib/target-architecture-doctor.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,wFAAwF;AACxF,MAAM,UAAU,iCAAiC,CAAC,IAAY;IAC5D,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,GAAG,4BAA4B,oFAAoF;SAC7H,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,GAAG,4BAA4B,oBAAoB,IAAI,CAAC,cAAc,GAAG;SACnF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClE,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,4BAA4B,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export declare const TARGET_ARCHITECTURE_FILENAME: "TARGET_ARCHITECTURE.yaml";
|
|
2
|
-
export declare const TARGET_ARCHITECTURE_SCHEMA_VERSION: "0.
|
|
2
|
+
export declare const TARGET_ARCHITECTURE_SCHEMA_VERSION: "0.2.0";
|
|
3
|
+
export declare const TARGET_ARCHITECTURE_LEGACY_SCHEMA_VERSION: "0.1.0";
|
|
4
|
+
export declare const SUPPORTED_TARGET_ARCHITECTURE_SCHEMA_VERSIONS: readonly ["0.1.0", "0.2.0"];
|
|
5
|
+
export type TargetArchitectureSchemaVersion = (typeof SUPPORTED_TARGET_ARCHITECTURE_SCHEMA_VERSIONS)[number];
|
|
3
6
|
export interface ArchLayerSpec {
|
|
4
7
|
id: string;
|
|
5
8
|
globs: string[];
|
|
@@ -12,7 +15,11 @@ export interface ArchRuleSpec {
|
|
|
12
15
|
forbid_resolved_path_substring?: string;
|
|
13
16
|
}
|
|
14
17
|
export interface TargetArchitectureSpec {
|
|
15
|
-
schema_version:
|
|
18
|
+
schema_version: TargetArchitectureSchemaVersion;
|
|
19
|
+
/** Explicit scan roots (schema 0.2.0+). When absent, derived from layer globs. */
|
|
20
|
+
scan_roots?: string[];
|
|
21
|
+
/** Supported languages for boundary checks (default: typescript). */
|
|
22
|
+
languages?: string[];
|
|
16
23
|
layers: ArchLayerSpec[];
|
|
17
24
|
rules: ArchRuleSpec[];
|
|
18
25
|
}
|
|
@@ -29,9 +36,17 @@ export interface ArchCheckResult {
|
|
|
29
36
|
violations: ArchBoundaryViolation[];
|
|
30
37
|
}
|
|
31
38
|
export declare function layerForFile(spec: TargetArchitectureSpec, repoRel: string): string;
|
|
39
|
+
export declare function isLegacyTargetArchitectureSchema(version: string): boolean;
|
|
40
|
+
export declare function targetArchitectureMigrationHint(version: string): string | null;
|
|
41
|
+
/** Derive scan roots from spec layers or optional manifest TMVC fallback. */
|
|
42
|
+
export declare function resolveArchScanRoots(spec: TargetArchitectureSpec, manifestTmvcRoots?: readonly string[]): string[];
|
|
32
43
|
export declare function validateTargetArchitecture(raw: unknown): TargetArchitectureSpec;
|
|
33
44
|
export declare function loadTargetArchitecture(repoRoot: string): TargetArchitectureSpec;
|
|
34
|
-
export declare function checkArchBoundariesForFiles(spec: TargetArchitectureSpec, repoRoot: string, files: readonly string[]
|
|
35
|
-
|
|
45
|
+
export declare function checkArchBoundariesForFiles(spec: TargetArchitectureSpec, repoRoot: string, files: readonly string[], options?: {
|
|
46
|
+
manifestTmvcRoots?: readonly string[];
|
|
47
|
+
}): ArchCheckResult;
|
|
48
|
+
export declare function runArchCheck(repoRoot: string, files: readonly string[], options?: {
|
|
49
|
+
manifestTmvcRoots?: readonly string[];
|
|
50
|
+
}): ArchCheckResult;
|
|
36
51
|
export declare function formatArchCheckHuman(result: ArchCheckResult): string;
|
|
37
52
|
//# sourceMappingURL=target-architecture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target-architecture.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/target-architecture.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,EAAG,0BAAmC,CAAC;AAChF,eAAO,MAAM,kCAAkC,EAAG,OAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"target-architecture.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/target-architecture.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,EAAG,0BAAmC,CAAC;AAChF,eAAO,MAAM,kCAAkC,EAAG,OAAgB,CAAC;AACnE,eAAO,MAAM,yCAAyC,EAAG,OAAgB,CAAC;AAC1E,eAAO,MAAM,6CAA6C,6BAGhD,CAAC;AAEX,MAAM,MAAM,+BAA+B,GACzC,CAAC,OAAO,6CAA6C,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,+BAA+B,CAAC;IAChD,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQlF;AAgDD,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9E;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,sBAAsB,EAC5B,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GACpC,MAAM,EAAE,CAaV;AAkBD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAyD/E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAO/E;AAcD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GACtD,eAAe,CAwCjB;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GACtD,eAAe,CAMjB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAQpE"}
|
|
@@ -6,7 +6,12 @@ import { toPosixRel } from "./cli-io.js";
|
|
|
6
6
|
import { normalizeRepoRelativePath } from "./tmvc-path.js";
|
|
7
7
|
import { extractBindingsFromSnippet, extractImportsWithMeta, } from "./import-scanner.js";
|
|
8
8
|
export const TARGET_ARCHITECTURE_FILENAME = "TARGET_ARCHITECTURE.yaml";
|
|
9
|
-
export const TARGET_ARCHITECTURE_SCHEMA_VERSION = "0.
|
|
9
|
+
export const TARGET_ARCHITECTURE_SCHEMA_VERSION = "0.2.0";
|
|
10
|
+
export const TARGET_ARCHITECTURE_LEGACY_SCHEMA_VERSION = "0.1.0";
|
|
11
|
+
export const SUPPORTED_TARGET_ARCHITECTURE_SCHEMA_VERSIONS = [
|
|
12
|
+
TARGET_ARCHITECTURE_LEGACY_SCHEMA_VERSION,
|
|
13
|
+
TARGET_ARCHITECTURE_SCHEMA_VERSION,
|
|
14
|
+
];
|
|
10
15
|
function globMatches(repoRel, glob) {
|
|
11
16
|
const norm = normalizeRepoRelativePath(repoRel);
|
|
12
17
|
const g = normalizeRepoRelativePath(glob);
|
|
@@ -14,6 +19,10 @@ function globMatches(repoRel, glob) {
|
|
|
14
19
|
const prefix = g.slice(0, -3);
|
|
15
20
|
return norm === prefix || norm.startsWith(`${prefix}/`);
|
|
16
21
|
}
|
|
22
|
+
if (g.endsWith("**")) {
|
|
23
|
+
const prefix = g.slice(0, -2).replace(/\/$/, "");
|
|
24
|
+
return norm === prefix || norm.startsWith(`${prefix}/`);
|
|
25
|
+
}
|
|
17
26
|
return norm === g;
|
|
18
27
|
}
|
|
19
28
|
export function layerForFile(spec, repoRel) {
|
|
@@ -43,20 +52,79 @@ function resolveImportPath(file, spec) {
|
|
|
43
52
|
}
|
|
44
53
|
return target.replace(/\\/g, "/");
|
|
45
54
|
}
|
|
55
|
+
function parseSchemaVersion(raw) {
|
|
56
|
+
if (typeof raw !== "string") {
|
|
57
|
+
throw new Error("TARGET_ARCHITECTURE.yaml: schema_version must be a string");
|
|
58
|
+
}
|
|
59
|
+
if (!SUPPORTED_TARGET_ARCHITECTURE_SCHEMA_VERSIONS.includes(raw)) {
|
|
60
|
+
throw new Error(`TARGET_ARCHITECTURE.yaml: unsupported schema_version (supported: ${SUPPORTED_TARGET_ARCHITECTURE_SCHEMA_VERSIONS.join(", ")})`);
|
|
61
|
+
}
|
|
62
|
+
return raw;
|
|
63
|
+
}
|
|
64
|
+
function parseStringArrayField(raw, field, opts = {}) {
|
|
65
|
+
if (raw === undefined) {
|
|
66
|
+
if (opts.required)
|
|
67
|
+
throw new Error(`TARGET_ARCHITECTURE.yaml: ${field} required`);
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
if (!Array.isArray(raw) || raw.some((v) => typeof v !== "string")) {
|
|
71
|
+
throw new Error(`TARGET_ARCHITECTURE.yaml: ${field} must be a string array`);
|
|
72
|
+
}
|
|
73
|
+
return raw.map(String);
|
|
74
|
+
}
|
|
75
|
+
export function isLegacyTargetArchitectureSchema(version) {
|
|
76
|
+
return version === TARGET_ARCHITECTURE_LEGACY_SCHEMA_VERSION;
|
|
77
|
+
}
|
|
78
|
+
export function targetArchitectureMigrationHint(version) {
|
|
79
|
+
if (!isLegacyTargetArchitectureSchema(version))
|
|
80
|
+
return null;
|
|
81
|
+
return `TARGET_ARCHITECTURE.yaml schema ${version} is legacy — add scan_roots (schema ${TARGET_ARCHITECTURE_SCHEMA_VERSION}) for explicit adopter roots`;
|
|
82
|
+
}
|
|
83
|
+
/** Derive scan roots from spec layers or optional manifest TMVC fallback. */
|
|
84
|
+
export function resolveArchScanRoots(spec, manifestTmvcRoots) {
|
|
85
|
+
if (spec.scan_roots && spec.scan_roots.length > 0) {
|
|
86
|
+
return spec.scan_roots.map(normalizeRepoRelativePath);
|
|
87
|
+
}
|
|
88
|
+
const fromLayers = spec.layers.flatMap((layer) => layer.globs.map(normalizeRepoRelativePath));
|
|
89
|
+
if (fromLayers.length > 0)
|
|
90
|
+
return fromLayers;
|
|
91
|
+
if (manifestTmvcRoots && manifestTmvcRoots.length > 0) {
|
|
92
|
+
return manifestTmvcRoots.map((root) => {
|
|
93
|
+
const norm = normalizeRepoRelativePath(root);
|
|
94
|
+
return norm.endsWith("/**") ? norm : `${norm.replace(/\/$/, "")}/**`;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
function resolveArchLanguages(spec) {
|
|
100
|
+
if (spec.languages && spec.languages.length > 0)
|
|
101
|
+
return spec.languages;
|
|
102
|
+
return ["typescript"];
|
|
103
|
+
}
|
|
104
|
+
function fileMatchesScanRoots(repoRel, scanRoots) {
|
|
105
|
+
const norm = normalizeRepoRelativePath(repoRel);
|
|
106
|
+
return scanRoots.some((root) => globMatches(norm, root));
|
|
107
|
+
}
|
|
108
|
+
function fileMatchesLanguage(repoRel, languages) {
|
|
109
|
+
const norm = normalizeRepoRelativePath(repoRel).toLowerCase();
|
|
110
|
+
if (languages.includes("typescript") && norm.endsWith(".ts"))
|
|
111
|
+
return true;
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
46
114
|
export function validateTargetArchitecture(raw) {
|
|
47
115
|
if (raw == null || typeof raw !== "object") {
|
|
48
116
|
throw new Error("TARGET_ARCHITECTURE.yaml must be a mapping");
|
|
49
117
|
}
|
|
50
118
|
const o = raw;
|
|
51
|
-
|
|
52
|
-
throw new Error(`TARGET_ARCHITECTURE.yaml: unsupported schema_version (expected ${TARGET_ARCHITECTURE_SCHEMA_VERSION})`);
|
|
53
|
-
}
|
|
119
|
+
const schema_version = parseSchemaVersion(o.schema_version);
|
|
54
120
|
if (!Array.isArray(o.layers) || o.layers.length === 0) {
|
|
55
121
|
throw new Error("TARGET_ARCHITECTURE.yaml: layers must be a non-empty array");
|
|
56
122
|
}
|
|
57
123
|
if (!Array.isArray(o.rules)) {
|
|
58
124
|
throw new Error("TARGET_ARCHITECTURE.yaml: rules must be an array");
|
|
59
125
|
}
|
|
126
|
+
const scan_roots = parseStringArrayField(o.scan_roots, "scan_roots");
|
|
127
|
+
const languages = parseStringArrayField(o.languages, "languages");
|
|
60
128
|
const layers = o.layers.map((layer, i) => {
|
|
61
129
|
if (layer == null || typeof layer !== "object") {
|
|
62
130
|
throw new Error(`TARGET_ARCHITECTURE.yaml: layers[${String(i)}] invalid`);
|
|
@@ -93,7 +161,13 @@ export function validateTargetArchitecture(raw) {
|
|
|
93
161
|
: {}),
|
|
94
162
|
};
|
|
95
163
|
});
|
|
96
|
-
return {
|
|
164
|
+
return {
|
|
165
|
+
schema_version,
|
|
166
|
+
...(scan_roots ? { scan_roots } : {}),
|
|
167
|
+
...(languages ? { languages } : {}),
|
|
168
|
+
layers,
|
|
169
|
+
rules,
|
|
170
|
+
};
|
|
97
171
|
}
|
|
98
172
|
export function loadTargetArchitecture(repoRoot) {
|
|
99
173
|
const abs = path.join(repoRoot, TARGET_ARCHITECTURE_FILENAME);
|
|
@@ -106,13 +180,17 @@ export function loadTargetArchitecture(repoRoot) {
|
|
|
106
180
|
function recordViolation(violations, file, ruleId, moduleSpecifier, bindings, line, column) {
|
|
107
181
|
violations.push({ file, rule_id: ruleId, module_specifier: moduleSpecifier, bindings, line, column });
|
|
108
182
|
}
|
|
109
|
-
export function checkArchBoundariesForFiles(spec, repoRoot, files) {
|
|
183
|
+
export function checkArchBoundariesForFiles(spec, repoRoot, files, options = {}) {
|
|
110
184
|
const violations = [];
|
|
111
185
|
const root = path.resolve(repoRoot);
|
|
186
|
+
const scanRoots = resolveArchScanRoots(spec, options.manifestTmvcRoots);
|
|
187
|
+
const languages = resolveArchLanguages(spec);
|
|
112
188
|
for (const file of files) {
|
|
113
189
|
const abs = path.isAbsolute(file) ? path.resolve(file) : path.join(root, file);
|
|
114
190
|
const repoRel = toPosixRel(root, abs);
|
|
115
|
-
if (!repoRel
|
|
191
|
+
if (!fileMatchesScanRoots(repoRel, scanRoots))
|
|
192
|
+
continue;
|
|
193
|
+
if (!fileMatchesLanguage(repoRel, languages))
|
|
116
194
|
continue;
|
|
117
195
|
if (!fs.existsSync(abs))
|
|
118
196
|
continue;
|
|
@@ -141,10 +219,10 @@ export function checkArchBoundariesForFiles(spec, repoRoot, files) {
|
|
|
141
219
|
}
|
|
142
220
|
return { ok: violations.length === 0, violations };
|
|
143
221
|
}
|
|
144
|
-
export function runArchCheck(repoRoot, files) {
|
|
222
|
+
export function runArchCheck(repoRoot, files, options = {}) {
|
|
145
223
|
const spec = loadTargetArchitecture(repoRoot);
|
|
146
224
|
const absFiles = files.map((f) => path.isAbsolute(f) ? f : path.join(repoRoot, f.replace(/\\/g, path.sep)));
|
|
147
|
-
return checkArchBoundariesForFiles(spec, repoRoot, absFiles);
|
|
225
|
+
return checkArchBoundariesForFiles(spec, repoRoot, absFiles, options);
|
|
148
226
|
}
|
|
149
227
|
export function formatArchCheckHuman(result) {
|
|
150
228
|
if (result.ok)
|