@jeger-ai/opengantry 2.7.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +132 -328
  2. package/dist/cli/commands/arch.d.ts +1 -0
  3. package/dist/cli/commands/arch.d.ts.map +1 -1
  4. package/dist/cli/commands/arch.js +17 -6
  5. package/dist/cli/commands/arch.js.map +1 -1
  6. package/dist/cli/commands/blueprint.d.ts +7 -0
  7. package/dist/cli/commands/blueprint.d.ts.map +1 -0
  8. package/dist/cli/commands/blueprint.js +69 -0
  9. package/dist/cli/commands/blueprint.js.map +1 -0
  10. package/dist/cli/commands/init.d.ts +3 -0
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +12 -0
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/lib/architecture-drift-doctor.d.ts +4 -0
  15. package/dist/cli/lib/architecture-drift-doctor.d.ts.map +1 -0
  16. package/dist/cli/lib/architecture-drift-doctor.js +58 -0
  17. package/dist/cli/lib/architecture-drift-doctor.js.map +1 -0
  18. package/dist/cli/lib/blueprint-engine.d.ts +22 -0
  19. package/dist/cli/lib/blueprint-engine.d.ts.map +1 -0
  20. package/dist/cli/lib/blueprint-engine.js +127 -0
  21. package/dist/cli/lib/blueprint-engine.js.map +1 -0
  22. package/dist/cli/lib/discovery-proposal.d.ts +19 -0
  23. package/dist/cli/lib/discovery-proposal.d.ts.map +1 -0
  24. package/dist/cli/lib/discovery-proposal.js +110 -0
  25. package/dist/cli/lib/discovery-proposal.js.map +1 -0
  26. package/dist/cli/lib/discovery-scanner.d.ts +47 -0
  27. package/dist/cli/lib/discovery-scanner.d.ts.map +1 -0
  28. package/dist/cli/lib/discovery-scanner.js +81 -0
  29. package/dist/cli/lib/discovery-scanner.js.map +1 -0
  30. package/dist/cli/lib/doctor-core.d.ts.map +1 -1
  31. package/dist/cli/lib/doctor-core.js +2 -0
  32. package/dist/cli/lib/doctor-core.js.map +1 -1
  33. package/dist/cli/lib/domains/domain-adapter.d.ts +38 -0
  34. package/dist/cli/lib/domains/domain-adapter.d.ts.map +1 -0
  35. package/dist/cli/lib/domains/domain-adapter.js +20 -0
  36. package/dist/cli/lib/domains/domain-adapter.js.map +1 -0
  37. package/dist/cli/lib/domains/domain-code.d.ts +3 -0
  38. package/dist/cli/lib/domains/domain-code.d.ts.map +1 -0
  39. package/dist/cli/lib/domains/domain-code.js +171 -0
  40. package/dist/cli/lib/domains/domain-code.js.map +1 -0
  41. package/dist/cli/lib/domains/domain-content.d.ts +3 -0
  42. package/dist/cli/lib/domains/domain-content.d.ts.map +1 -0
  43. package/dist/cli/lib/domains/domain-content.js +190 -0
  44. package/dist/cli/lib/domains/domain-content.js.map +1 -0
  45. package/dist/cli/lib/domains/index.d.ts +5 -0
  46. package/dist/cli/lib/domains/index.d.ts.map +1 -0
  47. package/dist/cli/lib/domains/index.js +5 -0
  48. package/dist/cli/lib/domains/index.js.map +1 -0
  49. package/dist/cli/lib/errors.d.ts +0 -6
  50. package/dist/cli/lib/errors.d.ts.map +1 -1
  51. package/dist/cli/lib/errors.js +0 -4
  52. package/dist/cli/lib/errors.js.map +1 -1
  53. package/dist/cli/lib/gxt-error-codes.d.ts +0 -2
  54. package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
  55. package/dist/cli/lib/gxt-error-codes.js +0 -2
  56. package/dist/cli/lib/gxt-error-codes.js.map +1 -1
  57. package/dist/cli/lib/init-discover.d.ts +14 -0
  58. package/dist/cli/lib/init-discover.d.ts.map +1 -0
  59. package/dist/cli/lib/init-discover.js +45 -0
  60. package/dist/cli/lib/init-discover.js.map +1 -0
  61. package/dist/cli/lib/target-architecture.d.ts +12 -3
  62. package/dist/cli/lib/target-architecture.d.ts.map +1 -1
  63. package/dist/cli/lib/target-architecture.js +108 -8
  64. package/dist/cli/lib/target-architecture.js.map +1 -1
  65. package/dist/cli/lib/verification-plan.d.ts +22 -0
  66. package/dist/cli/lib/verification-plan.d.ts.map +1 -0
  67. package/dist/cli/lib/verification-plan.js +26 -0
  68. package/dist/cli/lib/verification-plan.js.map +1 -0
  69. package/dist/cli/lib/verify-export.d.ts.map +1 -1
  70. package/dist/cli/lib/verify-export.js +27 -17
  71. package/dist/cli/lib/verify-export.js.map +1 -1
  72. package/dist/cli/lib/verify-failure-normalize.d.ts +2 -1
  73. package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -1
  74. package/dist/cli/lib/verify-failure-normalize.js +37 -1
  75. package/dist/cli/lib/verify-failure-normalize.js.map +1 -1
  76. package/dist/cli/lib/verify-finding.d.ts +16 -0
  77. package/dist/cli/lib/verify-finding.d.ts.map +1 -0
  78. package/dist/cli/lib/verify-finding.js +11 -0
  79. package/dist/cli/lib/verify-finding.js.map +1 -0
  80. package/dist/cli/lib/verify-payload.d.ts +4 -0
  81. package/dist/cli/lib/verify-payload.d.ts.map +1 -1
  82. package/dist/cli/lib/verify-payload.js +1 -1
  83. package/dist/cli/lib/verify-payload.js.map +1 -1
  84. package/dist/cli/lib/version.gen.d.ts +1 -1
  85. package/dist/cli/lib/version.gen.js +1 -1
  86. package/dist/cli/program-blueprint.d.ts +3 -0
  87. package/dist/cli/program-blueprint.d.ts.map +1 -0
  88. package/dist/cli/program-blueprint.js +12 -0
  89. package/dist/cli/program-blueprint.js.map +1 -0
  90. package/dist/cli/program-core.d.ts.map +1 -1
  91. package/dist/cli/program-core.js +5 -1
  92. package/dist/cli/program-core.js.map +1 -1
  93. package/dist/cli/program-workflow.d.ts.map +1 -1
  94. package/dist/cli/program-workflow.js +19 -1
  95. package/dist/cli/program-workflow.js.map +1 -1
  96. package/dist/cli/program.d.ts.map +1 -1
  97. package/dist/cli/program.js +2 -0
  98. package/dist/cli/program.js.map +1 -1
  99. package/package.json +1 -1
  100. package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
@@ -2,7 +2,7 @@ import { logError, logInfo, setExitCode } from "../lib/cli-io.js";
2
2
  import { reportCommandError, resolveRepoRootAtBoundary, runAtCommandBoundary, runAtCommandBoundaryAsync, } from "../lib/command-boundary.js";
3
3
  import { fetchExternalArchitecture } from "../lib/architecture-fetch.js";
4
4
  import { loadWorkspace } from "../lib/workspace.js";
5
- import { formatArchCheckHuman, runArchCheck, } from "../lib/target-architecture.js";
5
+ import { formatArchCheckHuman, loadTargetArchitecture, runArchCheck, walkPerimeterFiles, } from "../lib/target-architecture.js";
6
6
  import { loadArchitecturePointer, summarizeArchitecturePointer, } from "../lib/architecture-pointer.js";
7
7
  import { logCredentialStatus, parseCredentialValuesFromStdin, readStdinCredentialPayload, removeArchitectureCredential, validateCredentialSlot, writeArchitectureCredential, } from "../lib/architecture-credential.js";
8
8
  /** Repo root plus optional credential-slot validation shared by the cred subcommands. */
@@ -83,11 +83,22 @@ export function runArchCheckCommand(options = {}) {
83
83
  const repoRoot = resolveRepoRootAtBoundary(options.cwd);
84
84
  if (repoRoot === null)
85
85
  return;
86
- const files = options.files?.length ? options.files : [];
86
+ const label = options.label ?? "arch";
87
+ let files = options.files?.length ? options.files : [];
87
88
  if (files.length === 0) {
88
- logError("gantry arch check: pass one or more .ts file paths");
89
- setExitCode(2);
90
- return;
89
+ try {
90
+ const spec = loadTargetArchitecture(repoRoot);
91
+ files = walkPerimeterFiles(repoRoot, spec);
92
+ }
93
+ catch (e) {
94
+ reportCommandError(e);
95
+ return;
96
+ }
97
+ if (files.length === 0) {
98
+ logError(`gantry ${label} check: no files under scan_roots`);
99
+ setExitCode(2);
100
+ return;
101
+ }
91
102
  }
92
103
  runAtCommandBoundary(2, () => {
93
104
  const { manifest } = loadWorkspace();
@@ -98,7 +109,7 @@ export function runArchCheckCommand(options = {}) {
98
109
  logInfo(JSON.stringify({ schema_version: 1, ok: result.ok, violations: result.violations }, null, 2));
99
110
  }
100
111
  else {
101
- logInfo(formatArchCheckHuman(result));
112
+ logInfo(formatArchCheckHuman(result, label));
102
113
  }
103
114
  if (!result.ok)
104
115
  setExitCode(1);
@@ -1 +1 @@
1
- {"version":3,"file":"arch.js","sourceRoot":"","sources":["../../../src/cli/commands/arch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arch.js","sourceRoot":"","sources":["../../../src/cli/commands/arch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface BlueprintOptions {
2
+ yes?: boolean;
3
+ cwd?: string;
4
+ domain?: string;
5
+ }
6
+ export declare function runBlueprintCommand(options?: BlueprintOptions): Promise<void>;
7
+ //# sourceMappingURL=blueprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/blueprint.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkDD,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvF"}
@@ -0,0 +1,69 @@
1
+ import { CLI_NAME } from "../lib/constants.js";
2
+ import { logInfo, setExitCode } from "../lib/cli-io.js";
3
+ import { reportCommandError, resolveRepoRootAtBoundary } from "../lib/command-boundary.js";
4
+ import { buildBlueprintQuestions, emitBlueprintArtifacts, runBlueprintDiscovery, } from "../lib/blueprint-engine.js";
5
+ async function runInterview(questions, yes) {
6
+ const answers = [];
7
+ const { select, text, isCancel } = await import("@clack/prompts");
8
+ for (const q of questions) {
9
+ if (yes) {
10
+ answers.push({
11
+ questionId: q.id,
12
+ choice: "enforce",
13
+ gateCommand: "npm test",
14
+ });
15
+ continue;
16
+ }
17
+ const choice = await select({
18
+ message: q.message,
19
+ options: [
20
+ { value: "enforce", label: "Yes — enforce strictly (add to TARGET_ARCHITECTURE.yaml)" },
21
+ { value: "warn", label: "No — warn only" },
22
+ { value: "legacy", label: "Legacy — flag as warning, don't block" },
23
+ ],
24
+ });
25
+ if (isCancel(choice)) {
26
+ setExitCode(1);
27
+ return [];
28
+ }
29
+ const gateCommand = await text({
30
+ message: `Verification command for ${q.ruleId} (e.g. npm run test:feature-x):`,
31
+ defaultValue: "npm test",
32
+ });
33
+ if (isCancel(gateCommand)) {
34
+ setExitCode(1);
35
+ return [];
36
+ }
37
+ answers.push({
38
+ questionId: q.id,
39
+ choice: choice,
40
+ gateCommand: String(gateCommand),
41
+ });
42
+ }
43
+ return answers;
44
+ }
45
+ export async function runBlueprintCommand(options = {}) {
46
+ const repoRoot = resolveRepoRootAtBoundary(options.cwd);
47
+ if (repoRoot === null)
48
+ return;
49
+ try {
50
+ const proposal = runBlueprintDiscovery(repoRoot, options.domain);
51
+ const questions = buildBlueprintQuestions(proposal, options.domain);
52
+ if (questions.length < 3) {
53
+ logInfo(`${CLI_NAME} blueprint: insufficient evidence-anchored questions (${questions.length}) — add source files`);
54
+ setExitCode(2);
55
+ return;
56
+ }
57
+ const answers = await runInterview(questions, options.yes === true);
58
+ if (answers.length === 0)
59
+ return;
60
+ const artifacts = emitBlueprintArtifacts(repoRoot, proposal, questions, answers, options.domain);
61
+ logInfo(`${CLI_NAME} blueprint: wrote ${artifacts.architectureMdPath}`);
62
+ logInfo(`${CLI_NAME} blueprint: wrote ${artifacts.targetArchitecturePath}`);
63
+ logInfo(`${CLI_NAME} blueprint: wrote ${artifacts.verificationPlanPath}`);
64
+ }
65
+ catch (e) {
66
+ reportCommandError(e);
67
+ }
68
+ }
69
+ //# sourceMappingURL=blueprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../../src/cli/commands/blueprint.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@ export interface InitOptions {
3
3
  yes?: boolean;
4
4
  dryRun?: boolean;
5
5
  tutorial?: boolean;
6
+ discover?: boolean;
7
+ discoverStdout?: boolean;
8
+ domain?: string;
6
9
  cwd?: string;
7
10
  ides?: string;
8
11
  docsPath?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AA4CA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,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;AA0JD,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DtE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AA4CA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,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;AA0JD,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EtE"}
@@ -128,6 +128,18 @@ export async function runInit(options = {}) {
128
128
  if (!workspace)
129
129
  return;
130
130
  const { repoRoot, templatesRoot, compat } = workspace;
131
+ if (options.discover === true) {
132
+ const { runInitDiscoverFlow } = await import("../lib/init-discover.js");
133
+ await runInitDiscoverFlow(repoRoot, {
134
+ yes: options.yes,
135
+ stdout: options.discoverStdout,
136
+ domain: options.domain,
137
+ });
138
+ if (!options.discoverStdout) {
139
+ logInfo(`${CLI_NAME} init: discovery complete — run init without --discover to scaffold substrate`);
140
+ }
141
+ return;
142
+ }
131
143
  if (options.tutorial === true &&
132
144
  !options.dryRun &&
133
145
  !options.force &&
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DoctorLine } from "./doctor-types.js";
2
+ /** Doctor checks for ARCHITECTURE.md / TARGET_ARCHITECTURE.yaml / verification_plan drift. */
3
+ export declare function runArchitectureDriftDoctorChecks(root: string): DoctorLine[];
4
+ //# sourceMappingURL=architecture-drift-doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture-drift-doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/architecture-drift-doctor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAqBpD,8FAA8F;AAC9F,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAsC3E"}
@@ -0,0 +1,58 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import YAML from "yaml";
4
+ import { ARCHITECTURE_MD_FILENAME } from "./blueprint-engine.js";
5
+ import { TARGET_ARCHITECTURE_FILENAME, validateTargetArchitecture } from "./target-architecture.js";
6
+ import { VERIFICATION_PLAN_REL } from "./verification-plan.js";
7
+ function extractMdRuleIds(mdBody) {
8
+ const ids = [];
9
+ const re = /^### (rule-[\w-]+)/gm;
10
+ let m;
11
+ while ((m = re.exec(mdBody)) !== null) {
12
+ ids.push(m[1]);
13
+ }
14
+ return ids.sort();
15
+ }
16
+ function loadVerificationPlan(repoRoot) {
17
+ const abs = path.join(repoRoot, VERIFICATION_PLAN_REL.split("/").join(path.sep));
18
+ if (!fs.existsSync(abs))
19
+ return null;
20
+ return JSON.parse(fs.readFileSync(abs, "utf8"));
21
+ }
22
+ /** Doctor checks for ARCHITECTURE.md / TARGET_ARCHITECTURE.yaml / verification_plan drift. */
23
+ export function runArchitectureDriftDoctorChecks(root) {
24
+ const lines = [];
25
+ const plan = loadVerificationPlan(root);
26
+ if (!plan) {
27
+ return lines;
28
+ }
29
+ const mdAbs = path.join(root, ARCHITECTURE_MD_FILENAME);
30
+ const yamlAbs = path.join(root, TARGET_ARCHITECTURE_FILENAME);
31
+ if (!fs.existsSync(mdAbs) || !fs.existsSync(yamlAbs)) {
32
+ lines.push({
33
+ level: "warn",
34
+ message: "blueprint drift: verification_plan.json present but ARCHITECTURE.md or TARGET_ARCHITECTURE.yaml missing",
35
+ });
36
+ return lines;
37
+ }
38
+ const mdIds = extractMdRuleIds(fs.readFileSync(mdAbs, "utf8"));
39
+ const yamlSpec = validateTargetArchitecture(YAML.parse(fs.readFileSync(yamlAbs, "utf8")));
40
+ const yamlIds = yamlSpec.rules.map((r) => r.id).sort();
41
+ const planIds = [...plan.rule_ids].sort();
42
+ const same = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
43
+ if (!same(mdIds, planIds) || !same(yamlIds, planIds)) {
44
+ lines.push({
45
+ level: "warn",
46
+ message: `blueprint drift: rule_id mismatch (md=${mdIds.length} yaml=${yamlIds.length} plan=${planIds.length})`,
47
+ });
48
+ }
49
+ else {
50
+ lines.push({ level: "ok", message: "blueprint drift: rule IDs aligned across MD, YAML, and verification_plan.json" });
51
+ }
52
+ const recomputed = plan.gate_commands.length > 0;
53
+ if (!recomputed) {
54
+ lines.push({ level: "warn", message: "blueprint drift: verification_plan has no gate_commands" });
55
+ }
56
+ return lines;
57
+ }
58
+ //# sourceMappingURL=architecture-drift-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture-drift-doctor.js","sourceRoot":"","sources":["../../../src/cli/lib/architecture-drift-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAC;AAEtF,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,sBAAsB,CAAC;IAClC,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAqB,CAAC;AACtE,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,gCAAgC,CAAC,IAAY;IAC3D,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,yGAAyG;SACnH,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1C,MAAM,IAAI,GAAG,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,yCAAyC,KAAK,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,GAAG;SAChH,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,+EAA+E,EAAE,CAAC,CAAC;IACxH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,yDAAyD,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type DiscoveryProposal } from "./discovery-scanner.js";
2
+ import { type DomainBlueprintQuestion, type DomainEnforcementChoice } from "./domains/index.js";
3
+ export declare const ARCHITECTURE_MD_FILENAME: "ARCHITECTURE.md";
4
+ export type BlueprintEnforcementChoice = DomainEnforcementChoice;
5
+ export interface BlueprintInterviewAnswer {
6
+ questionId: string;
7
+ choice: BlueprintEnforcementChoice;
8
+ gateCommand?: string;
9
+ }
10
+ export type BlueprintQuestion = DomainBlueprintQuestion;
11
+ export interface BlueprintArtifacts {
12
+ architectureMdPath: string;
13
+ targetArchitecturePath: string;
14
+ verificationPlanPath: string;
15
+ }
16
+ /** Build evidence-anchored interview questions from discovery output via domain adapter. */
17
+ export declare function buildBlueprintQuestions(proposal: DiscoveryProposal, domain?: string): BlueprintQuestion[];
18
+ /** Emit tri-artifact blueprint output from interview answers. */
19
+ export declare function emitBlueprintArtifacts(repoRoot: string, proposal: DiscoveryProposal, questions: BlueprintQuestion[], answers: BlueprintInterviewAnswer[], domain?: string): BlueprintArtifacts;
20
+ export declare function runBlueprintDiscovery(repoRoot: string, domain?: string): DiscoveryProposal;
21
+ export declare function checksumArchitectureMarkdown(mdBody: string, ruleIds: string[]): string;
22
+ //# sourceMappingURL=blueprint-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint-engine.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/blueprint-engine.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAahC,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,wBAAwB,EAAG,iBAA0B,CAAC;AAEnE,MAAM,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAEjE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,0BAA0B,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,MAAM,GACd,iBAAiB,EAAE,CAGrB;AA4ED,iEAAiE;AACjE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAAE,EAC9B,OAAO,EAAE,wBAAwB,EAAE,EACnC,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,CAuDpB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAE1F;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAMtF"}
@@ -0,0 +1,127 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import YAML from "yaml";
4
+ import { createHash } from "node:crypto";
5
+ import { toPosixRel } from "./cli-io.js";
6
+ import { runDiscoveryScan, } from "./discovery-scanner.js";
7
+ import { TARGET_ARCHITECTURE_FILENAME, TARGET_ARCHITECTURE_V3_SCHEMA_VERSION, } from "./target-architecture.js";
8
+ import { buildVerificationPlan, serializeVerificationPlan, VERIFICATION_PLAN_REL, } from "./verification-plan.js";
9
+ import { getDomainAdapter, } from "./domains/index.js";
10
+ export const ARCHITECTURE_MD_FILENAME = "ARCHITECTURE.md";
11
+ /** Build evidence-anchored interview questions from discovery output via domain adapter. */
12
+ export function buildBlueprintQuestions(proposal, domain) {
13
+ const adapter = getDomainAdapter(domain ?? proposal.domain ?? "code");
14
+ return adapter.buildBlueprintQuestions(proposal.conventions, proposal.anomalies);
15
+ }
16
+ function buildArchitectureMarkdown(questions, answers, ruleIds, domain) {
17
+ const lines = [`# Architecture (blueprint-generated — domain: ${domain})`, "", "## Rules", ""];
18
+ for (const q of questions) {
19
+ const answer = answers.find((a) => a.questionId === q.id);
20
+ lines.push(`### ${q.ruleId}`, "", `- **Evidence:** \`${q.evidence.file}:${q.evidence.line}\``, `- **Decision:** ${answer?.choice ?? "unset"}`, `- **Question:** ${q.message}`, "");
21
+ }
22
+ lines.push("## Provenance", "", `rule_ids: ${ruleIds.join(", ")}`, "");
23
+ return `${lines.join("\n")}\n`;
24
+ }
25
+ function detectRequiredSkills(repoRoot, gateCommands, answers) {
26
+ const needed = new Set();
27
+ const corpus = [
28
+ ...gateCommands.map((g) => g.command),
29
+ ...answers.map((a) => a.gateCommand ?? ""),
30
+ ]
31
+ .join(" ")
32
+ .toLowerCase();
33
+ const skillHints = [
34
+ { pattern: /redis/, skill: "redis_mock_generator" },
35
+ { pattern: /docker/, skill: "docker_runner" },
36
+ { pattern: /kafka/, skill: "kafka_test_harness" },
37
+ { pattern: /prisma/, skill: "prisma_test_db" },
38
+ ];
39
+ for (const { pattern, skill } of skillHints) {
40
+ if (!pattern.test(corpus))
41
+ continue;
42
+ const pkgPath = path.join(repoRoot, "package.json");
43
+ const pkgBody = fs.existsSync(pkgPath) ? fs.readFileSync(pkgPath, "utf8").toLowerCase() : "";
44
+ const skillsDir = path.join(repoRoot, "skills");
45
+ const hasSkill = fs.existsSync(skillsDir) &&
46
+ fs.readdirSync(skillsDir).some((f) => f.toLowerCase().includes(skill.split("_")[0]));
47
+ const hasDep = pkgBody.includes(skill.split("_")[0]);
48
+ if (!hasSkill && !hasDep)
49
+ needed.add(skill);
50
+ }
51
+ return [...needed].sort();
52
+ }
53
+ function buildTargetArchitecture(domain, ruleIds, rules, adapterGlobs) {
54
+ const layerId = domain === "content" ? "content" : "app";
55
+ const layers = [{ id: layerId, globs: [...adapterGlobs] }];
56
+ return {
57
+ schema_version: TARGET_ARCHITECTURE_V3_SCHEMA_VERSION,
58
+ domain,
59
+ scan_roots: adapterGlobs.map((g) => g.replace(/\/\*\*$/, "")),
60
+ languages: domain === "content" ? ["markdown", "html", "text"] : ["typescript"],
61
+ layers,
62
+ rules: rules.filter((r) => r != null),
63
+ };
64
+ }
65
+ /** Emit tri-artifact blueprint output from interview answers. */
66
+ export function emitBlueprintArtifacts(repoRoot, proposal, questions, answers, domain) {
67
+ const adapter = getDomainAdapter(domain ?? proposal.domain ?? "code");
68
+ const rules = questions
69
+ .map((q) => {
70
+ const answer = answers.find((a) => a.questionId === q.id);
71
+ if (!answer)
72
+ return null;
73
+ const ev = proposal.anomalies
74
+ .flatMap((a) => a.evidence)
75
+ .concat(proposal.conventions.flatMap((c) => c.evidence))
76
+ .find((e) => e.file === q.evidence.file && e.line === q.evidence.line);
77
+ if (!ev)
78
+ return null;
79
+ return adapter.buildRuleFromAnswer(q, answer.choice, ev);
80
+ })
81
+ .filter((r) => r != null);
82
+ const ruleIds = rules.map((r) => r.id);
83
+ const gateCommands = answers
84
+ .filter((a) => a.gateCommand && a.gateCommand.trim().length > 0)
85
+ .map((a, i) => ({
86
+ rule_id: ruleIds[i] ?? `gate-${i + 1}`,
87
+ command: a.gateCommand.trim(),
88
+ description: `Gate for ${a.questionId}`,
89
+ }));
90
+ if (gateCommands.length === 0) {
91
+ gateCommands.push({
92
+ rule_id: "default-gate",
93
+ command: adapter.key === "content" ? "gantry perimeter check" : "npm test",
94
+ description: "Default project gate",
95
+ });
96
+ }
97
+ const plan = buildVerificationPlan({
98
+ ruleIds,
99
+ gateCommands,
100
+ requiredSkills: detectRequiredSkills(repoRoot, gateCommands, answers),
101
+ });
102
+ const archMd = buildArchitectureMarkdown(questions, answers, ruleIds, adapter.key);
103
+ const archMdAbs = path.join(repoRoot, ARCHITECTURE_MD_FILENAME);
104
+ fs.writeFileSync(archMdAbs, archMd, "utf8");
105
+ const yamlSpec = buildTargetArchitecture(adapter.key, ruleIds, rules, adapter.defaultScanGlobs);
106
+ const yamlAbs = path.join(repoRoot, TARGET_ARCHITECTURE_FILENAME);
107
+ fs.writeFileSync(yamlAbs, YAML.stringify(yamlSpec), "utf8");
108
+ const planAbs = path.join(repoRoot, VERIFICATION_PLAN_REL.split("/").join(path.sep));
109
+ fs.mkdirSync(path.dirname(planAbs), { recursive: true });
110
+ fs.writeFileSync(planAbs, serializeVerificationPlan(plan), "utf8");
111
+ return {
112
+ architectureMdPath: ARCHITECTURE_MD_FILENAME,
113
+ targetArchitecturePath: TARGET_ARCHITECTURE_FILENAME,
114
+ verificationPlanPath: toPosixRel(repoRoot, planAbs),
115
+ };
116
+ }
117
+ export function runBlueprintDiscovery(repoRoot, domain) {
118
+ return runDiscoveryScan(repoRoot, { domain });
119
+ }
120
+ export function checksumArchitectureMarkdown(mdBody, ruleIds) {
121
+ const payload = JSON.stringify({
122
+ rule_ids: [...ruleIds].sort(),
123
+ md_sha256: createHash("sha256").update(mdBody).digest("hex"),
124
+ });
125
+ return createHash("sha256").update(payload, "utf8").digest("hex");
126
+ }
127
+ //# sourceMappingURL=blueprint-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint-engine.js","sourceRoot":"","sources":["../../../src/cli/lib/blueprint-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type DiscoveryProposal } from "./discovery-scanner.js";
2
+ export declare const DISCOVERY_PROPOSAL_REL: ".gitagent/discovery-proposal.json";
3
+ export interface DiscoveryApplyResult {
4
+ proposalPath: string;
5
+ targetArchitecturePath?: string;
6
+ manifestPath?: string;
7
+ }
8
+ /** Emit discovery proposal JSON without writing baseline governance files. */
9
+ export declare function emitDiscoveryProposal(repoRoot: string, options?: {
10
+ domain?: string;
11
+ onProgress?: (n: number) => void;
12
+ }): {
13
+ proposal: DiscoveryProposal;
14
+ proposalPath: string;
15
+ };
16
+ /** Apply confirmed discovery proposal to draft TARGET_ARCHITECTURE.yaml + MANIFEST.json. */
17
+ export declare function applyDiscoveryProposal(repoRoot: string, proposal: DiscoveryProposal): DiscoveryApplyResult;
18
+ export declare function loadDiscoveryProposal(repoRoot: string): DiscoveryProposal | null;
19
+ //# sourceMappingURL=discovery-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-proposal.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/discovery-proposal.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,sBAAsB,EAAG,mCAA4C,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAClE;IAAE,QAAQ,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAMvD;AAyED,4FAA4F;AAC5F,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB,CAc1G;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAIhF"}
@@ -0,0 +1,110 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import YAML from "yaml";
4
+ import { REL_MANIFEST } from "./constants.js";
5
+ import { toPosixRel } from "./cli-io.js";
6
+ import { TARGET_ARCHITECTURE_FILENAME, TARGET_ARCHITECTURE_SCHEMA_VERSION, TARGET_ARCHITECTURE_V3_SCHEMA_VERSION, } from "./target-architecture.js";
7
+ import { getDomainAdapter } from "./domains/index.js";
8
+ import { runDiscoveryScan, serializeDiscoveryProposal, } from "./discovery-scanner.js";
9
+ export const DISCOVERY_PROPOSAL_REL = ".gitagent/discovery-proposal.json";
10
+ function proposalPath(repoRoot) {
11
+ return path.join(repoRoot, DISCOVERY_PROPOSAL_REL.split("/").join(path.sep));
12
+ }
13
+ /** Emit discovery proposal JSON without writing baseline governance files. */
14
+ export function emitDiscoveryProposal(repoRoot, options = {}) {
15
+ const proposal = runDiscoveryScan(repoRoot, options);
16
+ const out = proposalPath(repoRoot);
17
+ fs.mkdirSync(path.dirname(out), { recursive: true });
18
+ fs.writeFileSync(out, serializeDiscoveryProposal(proposal), "utf8");
19
+ return { proposal, proposalPath: toPosixRel(repoRoot, out) };
20
+ }
21
+ function inferLayersFromProposal(proposal) {
22
+ const layerDirs = new Set();
23
+ for (const edge of proposal.dependency_edges) {
24
+ const dir = edge.from_file.includes("/") ? edge.from_file.split("/")[0] : "src";
25
+ layerDirs.add(dir);
26
+ }
27
+ if (layerDirs.size === 0) {
28
+ return [{ id: "app", globs: ["src/**"] }];
29
+ }
30
+ return [...layerDirs]
31
+ .sort()
32
+ .map((dir) => ({ id: dir.replace(/[^a-z0-9_]/gi, "_"), globs: [`${dir}/**`] }));
33
+ }
34
+ function buildDraftTargetArchitecture(proposal) {
35
+ const adapter = getDomainAdapter(proposal.domain ?? "code");
36
+ if (adapter.key === "content") {
37
+ const globs = [...adapter.defaultScanGlobs];
38
+ return {
39
+ schema_version: TARGET_ARCHITECTURE_V3_SCHEMA_VERSION,
40
+ domain: "content",
41
+ scan_roots: globs.map((g) => g.replace(/\/\*\*$/, "")),
42
+ languages: ["markdown", "html", "text"],
43
+ layers: [{ id: "content", globs }],
44
+ rules: [],
45
+ };
46
+ }
47
+ const layers = inferLayersFromProposal(proposal);
48
+ const scan_roots = layers.map((l) => l.globs[0].replace(/\/\*\*$/, ""));
49
+ return {
50
+ schema_version: TARGET_ARCHITECTURE_SCHEMA_VERSION,
51
+ domain: "code",
52
+ scan_roots,
53
+ languages: ["typescript"],
54
+ layers,
55
+ rules: [],
56
+ };
57
+ }
58
+ function buildDraftManifest(repoRoot) {
59
+ const pkgPath = path.join(repoRoot, "package.json");
60
+ let skillKey = "app";
61
+ if (fs.existsSync(pkgPath)) {
62
+ try {
63
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
64
+ const name = pkg.name?.split("/").pop() ?? "app";
65
+ skillKey = name.replace(/[^a-z0-9_-]/gi, "_").slice(0, 32) || "app";
66
+ }
67
+ catch {
68
+ /* keep default */
69
+ }
70
+ }
71
+ return {
72
+ schema_version: "0.5.0",
73
+ skills: {
74
+ [skillKey]: {
75
+ desc: "Auto-discovered skill scaffold (confirm before merge).",
76
+ trust_threshold: "Tier-2",
77
+ tmvc_roots: ["src/"],
78
+ forbidden_zones: [".gitagent/foreman/", ".gitagent/planner/RULES.md"],
79
+ },
80
+ },
81
+ path_risks: { "src/": "Tier-2" },
82
+ risk_keywords: ["refactor", "migrate", "delete", "security", "schema"],
83
+ perimeter_protected: [
84
+ "**/.gxt-skill.yaml",
85
+ ".gitagent/foreman/MANIFEST.json",
86
+ ".gitagent/planner/RULES.md",
87
+ ],
88
+ };
89
+ }
90
+ /** Apply confirmed discovery proposal to draft TARGET_ARCHITECTURE.yaml + MANIFEST.json. */
91
+ export function applyDiscoveryProposal(repoRoot, proposal) {
92
+ const archBody = YAML.stringify(buildDraftTargetArchitecture(proposal));
93
+ const archAbs = path.join(repoRoot, TARGET_ARCHITECTURE_FILENAME);
94
+ fs.writeFileSync(archAbs, archBody, "utf8");
95
+ const manifestAbs = path.join(repoRoot, REL_MANIFEST.split("/").join(path.sep));
96
+ fs.mkdirSync(path.dirname(manifestAbs), { recursive: true });
97
+ fs.writeFileSync(manifestAbs, `${JSON.stringify(buildDraftManifest(repoRoot), null, 2)}\n`, "utf8");
98
+ return {
99
+ proposalPath: DISCOVERY_PROPOSAL_REL,
100
+ targetArchitecturePath: TARGET_ARCHITECTURE_FILENAME,
101
+ manifestPath: REL_MANIFEST,
102
+ };
103
+ }
104
+ export function loadDiscoveryProposal(repoRoot) {
105
+ const abs = proposalPath(repoRoot);
106
+ if (!fs.existsSync(abs))
107
+ return null;
108
+ return JSON.parse(fs.readFileSync(abs, "utf8"));
109
+ }
110
+ //# sourceMappingURL=discovery-proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-proposal.js","sourceRoot":"","sources":["../../../src/cli/lib/discovery-proposal.ts"],"names":[],"mappings":"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"}