@jeger-ai/opengantry 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +24 -7
  2. package/dist/cli/commands/audit-rigor.d.ts +8 -0
  3. package/dist/cli/commands/audit-rigor.d.ts.map +1 -0
  4. package/dist/cli/commands/audit-rigor.js +24 -0
  5. package/dist/cli/commands/audit-rigor.js.map +1 -0
  6. package/dist/cli/commands/context-feed.d.ts +6 -0
  7. package/dist/cli/commands/context-feed.d.ts.map +1 -0
  8. package/dist/cli/commands/context-feed.js +48 -0
  9. package/dist/cli/commands/context-feed.js.map +1 -0
  10. package/dist/cli/commands/mission.js +1 -1
  11. package/dist/cli/commands/mission.js.map +1 -1
  12. package/dist/cli/commands/onboarding.d.ts.map +1 -1
  13. package/dist/cli/commands/onboarding.js +9 -4
  14. package/dist/cli/commands/onboarding.js.map +1 -1
  15. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  16. package/dist/cli/commands/upgrade.js +2 -1
  17. package/dist/cli/commands/upgrade.js.map +1 -1
  18. package/dist/cli/lib/architecture-pointer.d.ts +1 -1
  19. package/dist/cli/lib/architecture-pointer.d.ts.map +1 -1
  20. package/dist/cli/lib/audit-rigor.d.ts +18 -0
  21. package/dist/cli/lib/audit-rigor.d.ts.map +1 -0
  22. package/dist/cli/lib/audit-rigor.js +189 -0
  23. package/dist/cli/lib/audit-rigor.js.map +1 -0
  24. package/dist/cli/lib/constants.d.ts +4 -0
  25. package/dist/cli/lib/constants.d.ts.map +1 -1
  26. package/dist/cli/lib/constants.js +4 -0
  27. package/dist/cli/lib/constants.js.map +1 -1
  28. package/dist/cli/lib/context-feed-remediation.d.ts +12 -0
  29. package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -0
  30. package/dist/cli/lib/context-feed-remediation.js +88 -0
  31. package/dist/cli/lib/context-feed-remediation.js.map +1 -0
  32. package/dist/cli/lib/context-feed-store.d.ts +33 -0
  33. package/dist/cli/lib/context-feed-store.d.ts.map +1 -0
  34. package/dist/cli/lib/context-feed-store.js +110 -0
  35. package/dist/cli/lib/context-feed-store.js.map +1 -0
  36. package/dist/cli/lib/doctor-core.d.ts +5 -0
  37. package/dist/cli/lib/doctor-core.d.ts.map +1 -0
  38. package/dist/cli/lib/doctor-core.js +163 -0
  39. package/dist/cli/lib/doctor-core.js.map +1 -0
  40. package/dist/cli/lib/doctor-integration.d.ts +13 -0
  41. package/dist/cli/lib/doctor-integration.d.ts.map +1 -0
  42. package/dist/cli/lib/doctor-integration.js +120 -0
  43. package/dist/cli/lib/doctor-integration.js.map +1 -0
  44. package/dist/cli/lib/doctor-substrate.d.ts +3 -0
  45. package/dist/cli/lib/doctor-substrate.d.ts.map +1 -0
  46. package/dist/cli/lib/doctor-substrate.js +35 -0
  47. package/dist/cli/lib/doctor-substrate.js.map +1 -0
  48. package/dist/cli/lib/doctor-types.d.ts +24 -0
  49. package/dist/cli/lib/doctor-types.d.ts.map +1 -0
  50. package/dist/cli/lib/doctor-types.js +7 -0
  51. package/dist/cli/lib/doctor-types.js.map +1 -0
  52. package/dist/cli/lib/doctor.d.ts +4 -30
  53. package/dist/cli/lib/doctor.d.ts.map +1 -1
  54. package/dist/cli/lib/doctor.js +4 -281
  55. package/dist/cli/lib/doctor.js.map +1 -1
  56. package/dist/cli/lib/integration-compat.d.ts +7 -0
  57. package/dist/cli/lib/integration-compat.d.ts.map +1 -1
  58. package/dist/cli/lib/integration-compat.js +14 -0
  59. package/dist/cli/lib/integration-compat.js.map +1 -1
  60. package/dist/cli/lib/kpi-engine.d.ts +0 -2
  61. package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
  62. package/dist/cli/lib/kpi-engine.js +11 -13
  63. package/dist/cli/lib/kpi-engine.js.map +1 -1
  64. package/dist/cli/lib/mcp-tools-register.js +1 -1
  65. package/dist/cli/lib/mcp-tools-register.js.map +1 -1
  66. package/dist/cli/lib/mcp-upgrade.d.ts +2 -2
  67. package/dist/cli/lib/mcp-upgrade.d.ts.map +1 -1
  68. package/dist/cli/lib/mcp-upgrade.js +5 -1
  69. package/dist/cli/lib/mcp-upgrade.js.map +1 -1
  70. package/dist/cli/lib/missions/formatter.d.ts.map +1 -1
  71. package/dist/cli/lib/missions/formatter.js +1 -0
  72. package/dist/cli/lib/missions/formatter.js.map +1 -1
  73. package/dist/cli/lib/missions/parser.d.ts.map +1 -1
  74. package/dist/cli/lib/missions/parser.js +1 -0
  75. package/dist/cli/lib/missions/parser.js.map +1 -1
  76. package/dist/cli/lib/start-orchestration.d.ts +1 -11
  77. package/dist/cli/lib/start-orchestration.d.ts.map +1 -1
  78. package/dist/cli/lib/start-orchestration.js +1 -85
  79. package/dist/cli/lib/start-orchestration.js.map +1 -1
  80. package/dist/cli/lib/start-snapshot.d.ts +12 -0
  81. package/dist/cli/lib/start-snapshot.d.ts.map +1 -0
  82. package/dist/cli/lib/start-snapshot.js +81 -0
  83. package/dist/cli/lib/start-snapshot.js.map +1 -0
  84. package/dist/cli/lib/trace.d.ts.map +1 -1
  85. package/dist/cli/lib/trace.js +1 -6
  86. package/dist/cli/lib/trace.js.map +1 -1
  87. package/dist/cli/lib/types.d.ts +3 -0
  88. package/dist/cli/lib/types.d.ts.map +1 -1
  89. package/dist/cli/lib/upgrade-plan-payload.d.ts +31 -0
  90. package/dist/cli/lib/upgrade-plan-payload.d.ts.map +1 -0
  91. package/dist/cli/lib/upgrade-plan-payload.js +109 -0
  92. package/dist/cli/lib/upgrade-plan-payload.js.map +1 -0
  93. package/dist/cli/lib/verify-engine.d.ts.map +1 -1
  94. package/dist/cli/lib/verify-engine.js +39 -13
  95. package/dist/cli/lib/verify-engine.js.map +1 -1
  96. package/dist/cli/lib/verify-failure-format.d.ts +29 -0
  97. package/dist/cli/lib/verify-failure-format.d.ts.map +1 -0
  98. package/dist/cli/lib/verify-failure-format.js +68 -0
  99. package/dist/cli/lib/verify-failure-format.js.map +1 -0
  100. package/dist/cli/lib/verify-hints.d.ts +32 -0
  101. package/dist/cli/lib/verify-hints.d.ts.map +1 -0
  102. package/dist/cli/lib/verify-hints.js +161 -0
  103. package/dist/cli/lib/verify-hints.js.map +1 -0
  104. package/dist/cli/lib/verify-payload.d.ts +0 -1
  105. package/dist/cli/lib/verify-payload.d.ts.map +1 -1
  106. package/dist/cli/lib/verify-payload.js +6 -19
  107. package/dist/cli/lib/verify-payload.js.map +1 -1
  108. package/dist/cli/lib/verify-present.d.ts +6 -23
  109. package/dist/cli/lib/verify-present.d.ts.map +1 -1
  110. package/dist/cli/lib/verify-present.js +3 -215
  111. package/dist/cli/lib/verify-present.js.map +1 -1
  112. package/dist/cli/lib/verify-presentation.d.ts +2 -1
  113. package/dist/cli/lib/verify-presentation.d.ts.map +1 -1
  114. package/dist/cli/lib/verify-presentation.js +2 -1
  115. package/dist/cli/lib/verify-presentation.js.map +1 -1
  116. package/dist/cli/lib/verify-presenters.d.ts +19 -0
  117. package/dist/cli/lib/verify-presenters.d.ts.map +1 -0
  118. package/dist/cli/lib/verify-presenters.js +173 -0
  119. package/dist/cli/lib/verify-presenters.js.map +1 -0
  120. package/dist/cli/lib/verify-remediation.d.ts +4 -56
  121. package/dist/cli/lib/verify-remediation.d.ts.map +1 -1
  122. package/dist/cli/lib/verify-remediation.js +2 -226
  123. package/dist/cli/lib/verify-remediation.js.map +1 -1
  124. package/dist/cli/lib/verify-run.d.ts +12 -0
  125. package/dist/cli/lib/verify-run.d.ts.map +1 -0
  126. package/dist/cli/lib/verify-run.js +70 -0
  127. package/dist/cli/lib/verify-run.js.map +1 -0
  128. package/dist/cli/lib/verify-sinks.d.ts +4 -0
  129. package/dist/cli/lib/verify-sinks.d.ts.map +1 -0
  130. package/dist/cli/lib/verify-sinks.js +12 -0
  131. package/dist/cli/lib/verify-sinks.js.map +1 -0
  132. package/dist/cli/lib/version.gen.d.ts +1 -1
  133. package/dist/cli/lib/version.gen.js +1 -1
  134. package/dist/cli/lib/virtual-scratch-store.d.ts +37 -0
  135. package/dist/cli/lib/virtual-scratch-store.d.ts.map +1 -0
  136. package/dist/cli/lib/virtual-scratch-store.js +132 -0
  137. package/dist/cli/lib/virtual-scratch-store.js.map +1 -0
  138. package/dist/cli/program-core.d.ts.map +1 -1
  139. package/dist/cli/program-core.js +43 -3
  140. package/dist/cli/program-core.js.map +1 -1
  141. package/package.json +1 -1
  142. package/templates/.gitagent/teacher/MISSION.schema.yaml +6 -0
  143. package/templates/.gitignore.gxt +2 -0
  144. package/templates/integrations/asset-catalog.json +1 -0
  145. package/templates/integrations/compatibility.json +10 -1
  146. package/templates/integrations/recipes/claude-code.md +6 -4
  147. package/templates/integrations/recipes/codex-cli.md +6 -4
  148. package/templates/integrations/recipes/opencode.md +8 -2
  149. package/templates/scripts/gxt-shell-agent.sh +62 -0
  150. package/dist/cli/lib/kpi-report-stale.d.ts +0 -18
  151. package/dist/cli/lib/kpi-report-stale.d.ts.map +0 -1
  152. package/dist/cli/lib/kpi-report-stale.js +0 -91
  153. package/dist/cli/lib/kpi-report-stale.js.map +0 -1
  154. package/dist/cli/lib/trace-evidence.d.ts +0 -23
  155. package/dist/cli/lib/trace-evidence.d.ts.map +0 -1
  156. package/dist/cli/lib/trace-evidence.js +0 -118
  157. package/dist/cli/lib/trace-evidence.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # OpenGantry
2
2
 
3
- **OpenGantry turns AI coding into auditable engineering work: every material agent change is scoped before execution, verified by deterministic gates, and traceable in Git before merge.**
3
+ **OpenGantry is a platform for Autonomous Repository Engineering** — AI-assisted product delivery where every material agent change is scoped before execution, verified by deterministic gates, and traceable in Git before merge.
4
+
5
+ It is **not** a real-time conversational agent wrapper. Use OpenGantry when you need auditable, mission-scoped repository work with explicit Teacher approval and forensic trace.
4
6
 
5
7
  Use OpenGantry when you need:
6
8
 
@@ -33,6 +35,18 @@ npx @jeger-ai/opengantry init --tutorial
33
35
 
34
36
  Developing this repository from source: `npm ci && npm run build` — see [gapman CLI](#gapman-cli) and [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md).
35
37
 
38
+ ## Documentation map (start here)
39
+
40
+ | Goal | Read first |
41
+ |------|------------|
42
+ | **Adopt in your repo (5 min)** | This README → [`docs/ADOPTION.md`](docs/ADOPTION.md) |
43
+ | **Wire IDE agents** | [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md) |
44
+ | **Contribute / dogfood** | [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) |
45
+ | **Governance law + workflow** | [`.gitagent/README.md`](.gitagent/README.md) · [`.gitagent/teacher/RULES.md`](.gitagent/teacher/RULES.md) |
46
+ | **Roadmap / open work** | [`docs/BACKLOG.md`](docs/BACKLOG.md) |
47
+ | **Compliance framing** | [`docs/COMPLIANCE-ISO.md`](docs/COMPLIANCE-ISO.md) |
48
+ | **Ephemeral virtualization (stretch)** | [`docs/ADR-EPHEMERAL-VIRTUALIZATION.md`](docs/ADR-EPHEMERAL-VIRTUALIZATION.md) |
49
+
36
50
  ## Why teams adopt this
37
51
 
38
52
  | Outcome | How OpenGantry delivers it |
@@ -43,14 +57,15 @@ Developing this repository from source: `npm ci && npm run build` — see [gapma
43
57
  | **Regulated / ISO-aligned workflows** | SOD, mission authorization, and Git-native trace — see [`docs/COMPLIANCE-ISO.md`](docs/COMPLIANCE-ISO.md) (27001 change control, 42001 AI governance) |
44
58
  | **Faster recovery from failure** | Stable `GXT_*` error codes, `gapman verify --fix`, role output via `--audience worker\|teacher\|verifier` |
45
59
 
46
- **Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.1.0** — import-layer Code Surgeon (JSON gate + AST quarantine), LLM evidence quarantine (`gapman scan`), KPI gate, `register`, perimeter checks. Core verify is language-agnostic; native surgeons opt into workspace TypeScript. See [.gitagent/teacher/RUNTIME.md](.gitagent/teacher/RUNTIME.md).
60
+ **Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.2.0** — diagnostic context feed, meta-governance audit, ephemeral virtualization (`virtual_capture`), adoption UX. Current npm publish: **v2.2.0**. See [.gitagent/teacher/RUNTIME.md](.gitagent/teacher/RUNTIME.md).
47
61
 
48
62
  ## Release timeline (latest first)
49
63
 
50
- Current npm release in this repository: **`gapman` v2.1.0**. Use [`docs/ADOPTION.md`](docs/ADOPTION.md) for the ordered runbook.
64
+ Current npm release in this repository: **`gapman` v2.2.0**. Use [`docs/ADOPTION.md`](docs/ADOPTION.md) for the ordered runbook.
51
65
 
52
66
  | Release | Highlights |
53
67
  |---------|------------|
68
+ | **v2.2.0** | `gapman context-feed`, `gapman audit-rigor`, `virtual_capture` ephemeral virtualization ([#68](https://github.com/jeger-ai/opengantry/issues/68)), product positioning, docs quality ([#66](https://github.com/jeger-ai/opengantry/issues/66)–[#69](https://github.com/jeger-ai/opengantry/issues/69), [#76](https://github.com/jeger-ai/opengantry/issues/76)) |
54
69
  | **v2.1.0** | Import-layer Code Surgeon (`check-import-layers.mjs --json`, AST quarantine, `GXT_IMPORT_LAYER_VIOLATION`); workspace-resolved optional TypeScript for surgeons |
55
70
  | **v2.0.0** | `gapman scan` + KPI gate, `register`, `check-imports`, `perimeter`; BYO `llm_verifiers`; KPI stale binding on `--pre-push`/`--ci` |
56
71
  | **v1.1.2** | Verify pipeline close-out (MSN-0034–0035); typed verify phases, trace status at parse boundary |
@@ -175,11 +190,11 @@ Requires **Node.js 24+** (Active LTS line). Published as **`@jeger-ai/opengantry
175
190
  | Command | Purpose |
176
191
  |--------|---------|
177
192
  | `gapman init` | Bootstrap substrate + IDE packs + hooks + CI. `--tutorial` runs guided first loop after scaffold. |
178
- | `gapman upgrade` | Plan substrate updates from the installed package (stages to `.gitagent/.upgrade-tmp/`, drafts upgrade mission YAML). `gapman upgrade --apply --mission …` after Teacher `[MSN-…]` commit. |
193
+ | `gapman upgrade` | Plan substrate updates (`gapman upgrade plan` / `--dry-run` for preview JSON). Stage with `gapman upgrade`; `gapman upgrade apply --mission …` after Teacher commit. |
179
194
  | `gapman check` | Validate `MANIFEST.json` shape + **Rule 4.4** sync: every `manifest.skills` key must have `skills/<key>.md`, with no orphan skill files. |
180
195
  | `gapman status` | GXT readiness dashboard (`--json`, `--verbose`, `--audience worker\|teacher\|verifier\|platform`). |
181
196
  | `gapman start "<intent>"` | Goal-first orchestration: triage → legislate stub → runtime next steps (`--msn`, `--skill-key`, `--json`). |
182
- | `gapman onboarding` | Interactive walkthrough of the strict mission loop (no relaxed checks). |
197
+ | `gapman onboarding` | Interactive walkthrough of the strict mission loop. Blocks on corrupt configured integration state; allows pristine uninitialized repos. |
183
198
  | `gapman doctor` | Active readiness check (manifest, Teacher email, bypass secret match, hooks, architecture pointer, integration staleness). Warnings exit 0. `--audience` tailors next steps. |
184
199
  | `gapman triage "<intent>"` | Foreman-style routing ([`SOUL.md`](.gitagent/foreman/SOUL.md)). `--json` for machine output (may include non-binding `adr_hints` from [`.gitagent/out-of-scope/`](.gitagent/out-of-scope/README.md)). `--emit-mission --msn MSN-0007` writes `.gitagent/missions/ACTIVE_MISSION.md` by default on **DIRECT_EXECUTION** only. |
185
200
  | `gapman teacher show\|set` | Repo-local Teacher git-proof allowlist (`.gitagent/foreman/TEACHER.allowlist.local`; avoids global `GAPMAN_TEACHER_EMAILS` leaking across projects). |
@@ -199,6 +214,8 @@ Requires **Node.js 24+** (Active LTS line). Published as **`@jeger-ai/opengantry
199
214
  | `gapman arch pointer` | Print architecture pointer summary for agents (`.gitagent/ARCHITECTURE.pointer.json`). |
200
215
  | `gapman arch cred status\|set\|unset` | Git-ignored credential slots for authenticated external architecture sources (secrets via stdin only). |
201
216
  | `gapman metrics [--json] [--ref main]` | Git-native governance rollup (`--json` includes `gxt_extension_metadata`). See [`docs/ADOPTION.md`](docs/ADOPTION.md). |
217
+ | `gapman context-feed [--json] [--clear]` | Read or atomically clear the latest verify remediation snapshot (`.gitagent/tmp/NEXT_REMEDIATION.json`) for IDE repair loops. |
218
+ | `gapman audit-rigor [--json] [--strict]` | Meta-governance audit: TypeScript strictness, coverage artifacts, MANIFEST wildcard hygiene. |
202
219
 
203
220
  **Who can approve missions (Teacher allowlist):** only allowlisted identities can legislate missions that verify accepts. Precedence:
204
221
 
@@ -338,7 +355,7 @@ Always **review the diff** before commit; never bulk-overwrite a customized `MAN
338
355
 
339
356
  | Pattern | Typical shape | Audit / production readiness |
340
357
  |---------|----------------|------------------------------|
341
- | **GXT / OpenGantry** | Git-native missions, manifest routing, deterministic gates, auditable log mapped to **`WORKER_LOG.md`**, human `[MSN-XXXX]` approval + SOD ([`RULES.md`](.gitagent/teacher/RULES.md)) | **Can we find every AI-governed change?** Greppable missions. **Can we prove what was checked?** Gate output + log quotes. **Can agents edit compliance files silently?** Hooks + verify fail closed. |
358
+ | **GXT / OpenGantry** | Git-native missions, manifest routing, deterministic gates, auditable log mapped to **`WORKER_LOG.md`**, human `[MSN-XXXX]` approval + SOD ([`RULES.md`](.gitagent/teacher/RULES.md)) | **Autonomous Repository Engineering** scoped missions, not always-on chat. Greppable missions + gate output + log quotes. |
342
359
  | Agent "swarm" / choreography layers | Orchestrates model calls across services; emphasizes throughput and parallelism | Strong on **coverage** of tasks; lineage and per-change evidence depends on tooling above the swarm |
343
360
  | Unstructured desktop assistants | Reactive help in-editor or OS-wide; informal plans | Lightweight for exploration; weakest default for **reproducible** production sign-off without additional discipline |
344
361
 
@@ -346,7 +363,7 @@ GXT deliberately trades "always-on improvisation" for a **narrow, inspectable en
346
363
 
347
364
  ## Relationship to this repository
348
365
 
349
- **jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.1.0** CLI). Install the CLI with `npm install -g @jeger-ai/opengantry`, or fork this repo and run `gapman init` in your project.
366
+ **jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.2.0** CLI). Install the CLI with `npm install -g @jeger-ai/opengantry`, or fork this repo and run `gapman init` in your project.
350
367
 
351
368
  ## Security
352
369
 
@@ -0,0 +1,8 @@
1
+ export interface AuditRigorCliOptions {
2
+ json?: boolean;
3
+ strict?: boolean;
4
+ /** Override workspace root (tests); CLI defaults to discovered git root. */
5
+ workspace?: string;
6
+ }
7
+ export declare function runAuditRigorCommand(options?: AuditRigorCliOptions): void;
8
+ //# sourceMappingURL=audit-rigor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-rigor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/audit-rigor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG,IAAI,CAkB7E"}
@@ -0,0 +1,24 @@
1
+ import path from "node:path";
2
+ import { logInfo, setExitCode } from "../lib/cli-io.js";
3
+ import { runAuditRigorChecks } from "../lib/audit-rigor.js";
4
+ import { loadWorkspace } from "../lib/workspace.js";
5
+ export function runAuditRigorCommand(options = {}) {
6
+ const { root } = loadWorkspace();
7
+ const workspaceRoot = options.workspace?.trim()
8
+ ? path.resolve(options.workspace)
9
+ : root;
10
+ const report = runAuditRigorChecks(workspaceRoot, { strict: options.strict });
11
+ if (options.json) {
12
+ logInfo(JSON.stringify(report, null, 2));
13
+ }
14
+ else {
15
+ logInfo(`audit-rigor: workspace=${report.workspace_root}`);
16
+ for (const line of report.lines) {
17
+ logInfo(`${line.level} [${line.check_id}]: ${line.message}`);
18
+ }
19
+ logInfo(report.exit_code === 0 ? "audit-rigor: OK" : "audit-rigor: FAILED");
20
+ }
21
+ if (report.exit_code !== 0)
22
+ setExitCode(report.exit_code);
23
+ }
24
+ //# sourceMappingURL=audit-rigor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-rigor.js","sourceRoot":"","sources":["../../../src/cli/commands/audit-rigor.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASpD,MAAM,UAAU,oBAAoB,CAAC,UAAgC,EAAE;IACrE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;IACjC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE;QAC7C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,0BAA0B,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC;QAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface ContextFeedOptions {
2
+ json?: boolean;
3
+ clear?: boolean;
4
+ }
5
+ export declare function runContextFeed(options?: ContextFeedOptions): void;
6
+ //# sourceMappingURL=context-feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-feed.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context-feed.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,IAAI,CAyCrE"}
@@ -0,0 +1,48 @@
1
+ import { logError, logInfo, setExitCode } from "../lib/cli-io.js";
2
+ import { clearRemediationSnapshot, readRemediationSnapshot, } from "../lib/context-feed-store.js";
3
+ import { loadWorkspace } from "../lib/workspace.js";
4
+ export function runContextFeed(options = {}) {
5
+ try {
6
+ const { root } = loadWorkspace();
7
+ if (options.clear) {
8
+ clearRemediationSnapshot(root);
9
+ if (options.json) {
10
+ logInfo(JSON.stringify({ status: "cleared", path: ".gitagent/tmp/NEXT_REMEDIATION.json" }, null, 2));
11
+ }
12
+ else {
13
+ logInfo("context-feed: cleared");
14
+ }
15
+ return;
16
+ }
17
+ const snapshot = readRemediationSnapshot(root);
18
+ if (!snapshot) {
19
+ if (options.json) {
20
+ logInfo(JSON.stringify({ status: "empty", snapshot: null }, null, 2));
21
+ }
22
+ else {
23
+ logInfo("context-feed: (no active remediation)");
24
+ }
25
+ return;
26
+ }
27
+ if (options.json) {
28
+ logInfo(JSON.stringify({ status: "ok", snapshot }, null, 2));
29
+ return;
30
+ }
31
+ logInfo(`context-feed: phase=${snapshot.phase} error=${snapshot.error_code}`);
32
+ logInfo(` message: ${snapshot.message}`);
33
+ if (snapshot.mission_file_path)
34
+ logInfo(` mission: ${snapshot.mission_file_path}`);
35
+ if (snapshot.msn_id)
36
+ logInfo(` msn_id: ${snapshot.msn_id}`);
37
+ if (snapshot.fix_hints.length > 0) {
38
+ logInfo(" fix_hints:");
39
+ for (const hint of snapshot.fix_hints)
40
+ logInfo(` - ${hint}`);
41
+ }
42
+ }
43
+ catch (e) {
44
+ logError(e instanceof Error ? e.message : String(e));
45
+ setExitCode(2);
46
+ }
47
+ }
48
+ //# sourceMappingURL=context-feed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-feed.js","sourceRoot":"","sources":["../../../src/cli/commands/context-feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,MAAM,UAAU,cAAc,CAAC,UAA8B,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;QAEjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,qCAAqC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACnC,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,uCAAuC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,uBAAuB,QAAQ,CAAC,KAAK,UAAU,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,cAAc,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,iBAAiB;YAAE,OAAO,CAAC,cAAc,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACpF,IAAI,QAAQ,CAAC,MAAM;YAAE,OAAO,CAAC,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,cAAc,CAAC,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS;gBAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -2,7 +2,7 @@ import { CLI_NAME } from "../lib/constants.js";
2
2
  import { formatRepoRelative, logError, logInfo, setExitCode } from "../lib/cli-io.js";
3
3
  import { isValidMsnId } from "../lib/missions/parser.js";
4
4
  import { assertMissionGatePresent, parseMissionFile } from "../lib/missions/parser.js";
5
- import { captureStartState, writeSnapshot } from "../lib/start-orchestration.js";
5
+ import { captureStartState, writeSnapshot } from "../lib/start-snapshot.js";
6
6
  import { loadWorkspace } from "../lib/workspace.js";
7
7
  export function runMissionValidate(file) {
8
8
  const { root } = loadWorkspace();
@@ -1 +1 @@
1
- {"version":3,"file":"mission.js","sourceRoot":"","sources":["../../../src/cli/commands/mission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,QAAQ,0BAA0B,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,WAAoB;IACnE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,0DAA0D,CAAC,CAAC;QACrE,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,QAAQ,4BAA4B,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"mission.js","sourceRoot":"","sources":["../../../src/cli/commands/mission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,QAAQ,0BAA0B,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,WAAoB;IACnE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,0DAA0D,CAAC,CAAC;QACrE,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,QAAQ,4BAA4B,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/onboarding.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAsDD,wBAAsB,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmElF"}
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/onboarding.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAsDD,wBAAsB,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuElF"}
@@ -3,7 +3,7 @@ import path from "node:path";
3
3
  import { CLI_NAME } from "../lib/constants.js";
4
4
  import { ONBOARDING_ADOPTION_DOC, onboardingRuntimeEnvHint, onboardingStatusHint, onboardingVerifyHint, } from "../lib/onboarding-flow.js";
5
5
  import { logError, logInfo, logWarn, setExitCode } from "../lib/cli-io.js";
6
- import { runIntegrationDoctorChecks } from "../lib/doctor.js";
6
+ import { integrationOnboardingBlockers } from "../lib/doctor-integration.js";
7
7
  import { resolveTemplateRootFromModule } from "../lib/integration-compat.js";
8
8
  import { loadWorkspace } from "../lib/workspace.js";
9
9
  import { runStartOrchestration } from "../lib/start-orchestration.js";
@@ -11,8 +11,8 @@ import { runVerifyCore } from "../lib/verify-presentation.js";
11
11
  const EXAMPLE_MISSION = ".gitagent/missions/example.verify.yaml";
12
12
  function integrationBlockers(repoRoot) {
13
13
  const templatesRoot = resolveTemplateRootFromModule();
14
- const lines = runIntegrationDoctorChecks(repoRoot, templatesRoot);
15
- return lines.filter((l) => l.level === "warn" || l.level === "fail").map((l) => l.message);
14
+ const gate = integrationOnboardingBlockers(repoRoot, templatesRoot);
15
+ return { blockers: gate.blockers, notices: gate.notices };
16
16
  }
17
17
  async function resolveOnboardingMissionPath(p, root, intent) {
18
18
  let missionPath = EXAMPLE_MISSION;
@@ -64,7 +64,12 @@ export async function runOnboarding(options = {}) {
64
64
  p.outro("Onboarding aborted");
65
65
  return;
66
66
  }
67
- const blockers = integrationBlockers(root);
67
+ const { blockers, notices } = integrationBlockers(root);
68
+ if (notices.length > 0) {
69
+ p.log.step("Integration health");
70
+ for (const msg of notices)
71
+ logInfo(` ${msg}`);
72
+ }
68
73
  if (blockers.length > 0 && !options.force) {
69
74
  p.log.step("Integration health");
70
75
  for (const msg of blockers)
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../../src/cli/commands/onboarding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../../src/cli/commands/onboarding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CAuE7D"}
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CAuE7D"}
@@ -4,6 +4,7 @@ import { getRepoRoot } from "../lib/git.js";
4
4
  import { resolveTemplateRootFromModule } from "../lib/integration-compat.js";
5
5
  import { runUpgradeApply } from "../lib/upgrade-apply.js";
6
6
  import { runUpgradePlan } from "../lib/upgrade-plan.js";
7
+ import { toStableUpgradePlanPayloadV1 } from "../lib/upgrade-plan-payload.js";
7
8
  import { GapmanUserError } from "../lib/errors.js";
8
9
  export function runUpgrade(options = {}) {
9
10
  let repoRoot;
@@ -53,7 +54,7 @@ export function runUpgrade(options = {}) {
53
54
  json: options.json,
54
55
  });
55
56
  if (options.json) {
56
- console.log(JSON.stringify(result, null, 2));
57
+ console.log(JSON.stringify(toStableUpgradePlanPayloadV1(result), null, 2));
57
58
  }
58
59
  if (result.status === "downgrade_blocked") {
59
60
  logError(result.message ?? "downgrade blocked");
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { DoctorLine } from "./doctor.js";
1
+ import type { DoctorLine } from "./doctor-types.js";
2
2
  export type ArchitectureDocKind = "file" | "directory" | "external" | "unset";
3
3
  export interface ArchitectureDiscovery {
4
4
  skill?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-pointer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/architecture-pointer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAED,eAAO,MAAM,mCAAmC,EAAG,OAAgB,CAAC;AAEpE,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,0FAG5B,CAAC;AAOX,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AA4ED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAwC7E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAY7E;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAEnF;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAEtF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAqBrG;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAgBjF;AAuED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CA6CjF;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAExF"}
1
+ {"version":3,"file":"architecture-pointer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/architecture-pointer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAED,eAAO,MAAM,mCAAmC,EAAG,OAAgB,CAAC;AAEpE,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,0FAG5B,CAAC;AAOX,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AA4ED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAwC7E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAY7E;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAEnF;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAEtF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAqBrG;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAgBjF;AAuED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CA6CjF;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAExF"}
@@ -0,0 +1,18 @@
1
+ export type AuditRigorLevel = "ok" | "warn" | "fail";
2
+ export interface AuditRigorLine {
3
+ level: AuditRigorLevel;
4
+ check_id: string;
5
+ message: string;
6
+ }
7
+ export interface AuditRigorReport {
8
+ workspace_root: string;
9
+ lines: AuditRigorLine[];
10
+ exit_code: number;
11
+ }
12
+ export interface AuditRigorOptions {
13
+ /** When true, warnings elevate to failures. */
14
+ strict?: boolean;
15
+ }
16
+ /** Path-isolated meta-governance scanner — always pass explicit workspaceRoot in tests. */
17
+ export declare function runAuditRigorChecks(workspaceRoot: string, options?: AuditRigorOptions): AuditRigorReport;
18
+ //# sourceMappingURL=audit-rigor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-rigor.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/audit-rigor.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAiLD,2FAA2F;AAC3F,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAYlB"}
@@ -0,0 +1,189 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ function readJsonFile(absPath) {
4
+ if (!fs.existsSync(absPath))
5
+ return null;
6
+ try {
7
+ return JSON.parse(fs.readFileSync(absPath, "utf8"));
8
+ }
9
+ catch {
10
+ return null;
11
+ }
12
+ }
13
+ function findTsconfigPaths(workspaceRoot) {
14
+ const candidates = [
15
+ path.join(workspaceRoot, "tsconfig.json"),
16
+ path.join(workspaceRoot, "tsconfig.base.json"),
17
+ ];
18
+ return candidates.filter((p) => fs.existsSync(p));
19
+ }
20
+ function checkTypeScriptStrict(workspaceRoot) {
21
+ const configs = findTsconfigPaths(workspaceRoot);
22
+ if (configs.length === 0) {
23
+ return [
24
+ {
25
+ level: "warn",
26
+ check_id: "typescript_strict",
27
+ message: "no tsconfig.json at workspace root — cannot verify strict compiler posture",
28
+ },
29
+ ];
30
+ }
31
+ const lines = [];
32
+ for (const configPath of configs) {
33
+ const rel = path.relative(workspaceRoot, configPath).replace(/\\/g, "/");
34
+ const doc = readJsonFile(configPath);
35
+ if (!doc?.compilerOptions) {
36
+ lines.push({
37
+ level: "fail",
38
+ check_id: "typescript_strict",
39
+ message: `${rel}: missing compilerOptions — enable strict mode for agent-safe refactors`,
40
+ });
41
+ continue;
42
+ }
43
+ if (doc.compilerOptions.strict === true) {
44
+ lines.push({
45
+ level: "ok",
46
+ check_id: "typescript_strict",
47
+ message: `${rel}: compilerOptions.strict=true`,
48
+ });
49
+ }
50
+ else {
51
+ lines.push({
52
+ level: "fail",
53
+ check_id: "typescript_strict",
54
+ message: `${rel}: compilerOptions.strict is not true — loosened types weaken verification gates`,
55
+ });
56
+ }
57
+ }
58
+ return lines;
59
+ }
60
+ const COVERAGE_CANDIDATES = [
61
+ "coverage/coverage-summary.json",
62
+ "coverage/coverage-final.json",
63
+ ".nyc_output/coverage-summary.json",
64
+ ];
65
+ function coveragePctFromSummary(doc) {
66
+ const total = doc.total;
67
+ const lines = total?.lines?.pct;
68
+ if (typeof lines === "number" && Number.isFinite(lines))
69
+ return lines;
70
+ const statements = total?.statements?.pct;
71
+ if (typeof statements === "number" && Number.isFinite(statements))
72
+ return statements;
73
+ return null;
74
+ }
75
+ function checkCoverageArtifacts(workspaceRoot, strict) {
76
+ for (const rel of COVERAGE_CANDIDATES) {
77
+ const abs = path.join(workspaceRoot, rel);
78
+ const doc = readJsonFile(abs);
79
+ if (!doc)
80
+ continue;
81
+ const pct = coveragePctFromSummary(doc);
82
+ if (pct === null) {
83
+ return [
84
+ {
85
+ level: strict ? "fail" : "warn",
86
+ check_id: "coverage_threshold",
87
+ message: `${rel}: present but missing total.*.pct — configure Istanbul/nyc summary output`,
88
+ },
89
+ ];
90
+ }
91
+ if (pct < 50) {
92
+ return [
93
+ {
94
+ level: strict ? "fail" : "warn",
95
+ check_id: "coverage_threshold",
96
+ message: `${rel}: line/statement coverage ${String(pct)}% is below 50% advisory floor`,
97
+ },
98
+ ];
99
+ }
100
+ return [
101
+ {
102
+ level: "ok",
103
+ check_id: "coverage_threshold",
104
+ message: `${rel}: coverage ${String(pct)}% meets advisory floor`,
105
+ },
106
+ ];
107
+ }
108
+ return [
109
+ {
110
+ level: strict ? "fail" : "warn",
111
+ check_id: "coverage_threshold",
112
+ message: "no coverage summary artifact (coverage/coverage-summary.json) — run tests with coverage before agent-heavy refactors",
113
+ },
114
+ ];
115
+ }
116
+ function isOverlyBroadWildcard(pattern) {
117
+ const trimmed = pattern.trim();
118
+ if (trimmed === "*" || trimmed === "**" || trimmed === "*/**" || trimmed === "**/*")
119
+ return true;
120
+ if (/^\*\*$/.test(trimmed))
121
+ return true;
122
+ return false;
123
+ }
124
+ function collectManifestWildcards(workspaceRoot) {
125
+ const manifestPath = path.join(workspaceRoot, ".gitagent/foreman/MANIFEST.json");
126
+ const doc = readJsonFile(manifestPath);
127
+ if (!doc?.skills)
128
+ return [];
129
+ const patterns = [];
130
+ for (const skill of Object.values(doc.skills)) {
131
+ for (const zone of skill.forbidden_zones ?? [])
132
+ patterns.push(zone);
133
+ for (const root of skill.tmvc_roots ?? [])
134
+ patterns.push(root);
135
+ }
136
+ return patterns;
137
+ }
138
+ function checkWildcardDependencyRules(workspaceRoot) {
139
+ const lines = [];
140
+ const patterns = collectManifestWildcards(workspaceRoot);
141
+ const broad = patterns.filter(isOverlyBroadWildcard);
142
+ if (broad.length === 0) {
143
+ if (patterns.length === 0) {
144
+ lines.push({
145
+ level: "warn",
146
+ check_id: "wildcard_paths",
147
+ message: "MANIFEST has no tmvc_roots/forbidden_zones to evaluate for overly broad wildcards",
148
+ });
149
+ }
150
+ else {
151
+ lines.push({
152
+ level: "ok",
153
+ check_id: "wildcard_paths",
154
+ message: `MANIFEST path rules (${String(patterns.length)}) avoid catch-all wildcards`,
155
+ });
156
+ }
157
+ return lines;
158
+ }
159
+ for (const pattern of broad) {
160
+ lines.push({
161
+ level: "fail",
162
+ check_id: "wildcard_paths",
163
+ message: `MANIFEST contains overly broad path rule "${pattern}" — narrow TMVC/forbidden zones`,
164
+ });
165
+ }
166
+ return lines;
167
+ }
168
+ function resolveExitCode(lines, strict) {
169
+ if (lines.some((l) => l.level === "fail"))
170
+ return 1;
171
+ if (strict && lines.some((l) => l.level === "warn"))
172
+ return 1;
173
+ return 0;
174
+ }
175
+ /** Path-isolated meta-governance scanner — always pass explicit workspaceRoot in tests. */
176
+ export function runAuditRigorChecks(workspaceRoot, options = {}) {
177
+ const strict = options.strict === true;
178
+ const lines = [
179
+ ...checkTypeScriptStrict(workspaceRoot),
180
+ ...checkCoverageArtifacts(workspaceRoot, strict),
181
+ ...checkWildcardDependencyRules(workspaceRoot),
182
+ ];
183
+ return {
184
+ workspace_root: workspaceRoot,
185
+ lines,
186
+ exit_code: resolveExitCode(lines, strict),
187
+ };
188
+ }
189
+ //# sourceMappingURL=audit-rigor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-rigor.js","sourceRoot":"","sources":["../../../src/cli/lib/audit-rigor.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,10 @@ export declare const REL_MISSION_TEMPLATE: ".gitagent/teacher/MISSION.template.m
15
15
  export declare const REL_HISTORY_DIR: ".gitagent/history";
16
16
  /** Git-ignored machine-readable runtime error (see templates/.gitignore.gxt). */
17
17
  export declare const REL_AGENT_ERROR_FILE: ".gitagent/history/.ignored-last-error.json";
18
+ /** Git-ignored verify failure remediation feed for IDE/agent loops (atomic swap writes). */
19
+ export declare const REL_NEXT_REMEDIATION: ".gitagent/tmp/NEXT_REMEDIATION.json";
20
+ /** Ephemeral runtime snapshot scratch (gitignored; see docs/ADR-EPHEMERAL-VIRTUALIZATION.md). */
21
+ export declare const REL_VIRTUAL_SCRATCH: ".gitagent/virtual/";
18
22
  /** ADR markdown (optional `match_terms` in frontmatter) — Foreman may emit non-binding hints only. */
19
23
  export declare const REL_OUT_OF_SCOPE_DIR: ".gitagent/out-of-scope";
20
24
  export declare const SKILLS_DIR_NAME: "skills";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/constants.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,eAAO,MAAM,YAAY,EAAG,iCAA0C,CAAC;AACvE,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,EAAG,qCAA8C,CAAC;AACvF,2EAA2E;AAC3E,eAAO,MAAM,6BAA6B,EAAG,0CAAmD,CAAC;AACjG,mGAAmG;AACnG,eAAO,MAAM,gCAAgC,EAAG,6CAAsD,CAAC;AACvG,oFAAoF;AACpF,eAAO,MAAM,gCAAgC,EAAG,+BAAwC,CAAC;AACzF,eAAO,MAAM,kBAAkB,EAAG,uCAAgD,CAAC;AACnF,eAAO,MAAM,qBAAqB,EAAG,0CAAmD,CAAC;AACzF,eAAO,MAAM,sBAAsB,EAAG,eAAwB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,EAAG,uCAAgD,CAAC;AACrF,eAAO,MAAM,eAAe,EAAG,mBAA4B,CAAC;AAC5D,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAG,4CAAqD,CAAC;AAC1F,sGAAsG;AACtG,eAAO,MAAM,oBAAoB,EAAG,wBAAiC,CAAC;AACtE,eAAO,MAAM,eAAe,EAAG,QAAiB,CAAC;AACjD,eAAO,MAAM,mBAAmB,EAAG,eAAwB,CAAC;AAC5D,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,EACtC,6DAAsE,CAAC;AACzE,+GAA+G;AAC/G,eAAO,MAAM,sBAAsB,EAAG,sCAA+C,CAAC;AAEtF,qDAAqD;AACrD,eAAO,MAAM,cAAc,QAAgB,CAAC;AAE5C,eAAO,MAAM,QAAQ,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/constants.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,eAAO,MAAM,YAAY,EAAG,iCAA0C,CAAC;AACvE,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,EAAG,qCAA8C,CAAC;AACvF,2EAA2E;AAC3E,eAAO,MAAM,6BAA6B,EAAG,0CAAmD,CAAC;AACjG,mGAAmG;AACnG,eAAO,MAAM,gCAAgC,EAAG,6CAAsD,CAAC;AACvG,oFAAoF;AACpF,eAAO,MAAM,gCAAgC,EAAG,+BAAwC,CAAC;AACzF,eAAO,MAAM,kBAAkB,EAAG,uCAAgD,CAAC;AACnF,eAAO,MAAM,qBAAqB,EAAG,0CAAmD,CAAC;AACzF,eAAO,MAAM,sBAAsB,EAAG,eAAwB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,EAAG,uCAAgD,CAAC;AACrF,eAAO,MAAM,eAAe,EAAG,mBAA4B,CAAC;AAC5D,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAG,4CAAqD,CAAC;AAC1F,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,EAAG,qCAA8C,CAAC;AACnF,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,EAAG,oBAA6B,CAAC;AACjE,sGAAsG;AACtG,eAAO,MAAM,oBAAoB,EAAG,wBAAiC,CAAC;AACtE,eAAO,MAAM,eAAe,EAAG,QAAiB,CAAC;AACjD,eAAO,MAAM,mBAAmB,EAAG,eAAwB,CAAC;AAC5D,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,EACtC,6DAAsE,CAAC;AACzE,+GAA+G;AAC/G,eAAO,MAAM,sBAAsB,EAAG,sCAA+C,CAAC;AAEtF,qDAAqD;AACrD,eAAO,MAAM,cAAc,QAAgB,CAAC;AAE5C,eAAO,MAAM,QAAQ,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -15,6 +15,10 @@ export const REL_MISSION_TEMPLATE = ".gitagent/teacher/MISSION.template.md";
15
15
  export const REL_HISTORY_DIR = ".gitagent/history";
16
16
  /** Git-ignored machine-readable runtime error (see templates/.gitignore.gxt). */
17
17
  export const REL_AGENT_ERROR_FILE = ".gitagent/history/.ignored-last-error.json";
18
+ /** Git-ignored verify failure remediation feed for IDE/agent loops (atomic swap writes). */
19
+ export const REL_NEXT_REMEDIATION = ".gitagent/tmp/NEXT_REMEDIATION.json";
20
+ /** Ephemeral runtime snapshot scratch (gitignored; see docs/ADR-EPHEMERAL-VIRTUALIZATION.md). */
21
+ export const REL_VIRTUAL_SCRATCH = ".gitagent/virtual/";
18
22
  /** ADR markdown (optional `match_terms` in frontmatter) — Foreman may emit non-binding hints only. */
19
23
  export const REL_OUT_OF_SCOPE_DIR = ".gitagent/out-of-scope";
20
24
  export const SKILLS_DIR_NAME = "skills";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/lib/constants.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,iCAA0C,CAAC;AACvE,sEAAsE;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,qCAA8C,CAAC;AACvF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,6BAA6B,GAAG,0CAAmD,CAAC;AACjG,mGAAmG;AACnG,MAAM,CAAC,MAAM,gCAAgC,GAAG,6CAAsD,CAAC;AACvG,oFAAoF;AACpF,MAAM,CAAC,MAAM,gCAAgC,GAAG,+BAAwC,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,uCAAgD,CAAC;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,0CAAmD,CAAC;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAwB,CAAC;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,uCAAgD,CAAC;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,mBAA4B,CAAC;AAC5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,4CAAqD,CAAC;AAC1F,sGAAsG;AACtG,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAiC,CAAC;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,QAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAwB,CAAC;AAC5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GACtC,6DAAsE,CAAC;AACzE,+GAA+G;AAC/G,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAA+C,CAAC;AAEtF,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/lib/constants.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,iCAA0C,CAAC;AACvE,sEAAsE;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,qCAA8C,CAAC;AACvF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,6BAA6B,GAAG,0CAAmD,CAAC;AACjG,mGAAmG;AACnG,MAAM,CAAC,MAAM,gCAAgC,GAAG,6CAAsD,CAAC;AACvG,oFAAoF;AACpF,MAAM,CAAC,MAAM,gCAAgC,GAAG,+BAAwC,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,uCAAgD,CAAC;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,0CAAmD,CAAC;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAwB,CAAC;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,uCAAgD,CAAC;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,mBAA4B,CAAC;AAC5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,4CAAqD,CAAC;AAC1F,4FAA4F;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAAG,qCAA8C,CAAC;AACnF,iGAAiG;AACjG,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAA6B,CAAC;AACjE,sGAAsG;AACtG,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAiC,CAAC;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,QAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAwB,CAAC;AAC5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GACtC,6DAAsE,CAAC;AACzE,+GAA+G;AAC/G,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAA+C,CAAC;AAEtF,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}