rapidkit 0.41.2 → 0.41.3

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 (75) hide show
  1. package/README.md +56 -52
  2. package/contracts/agent-customization-pack.v1.json +15 -0
  3. package/contracts/doctor-project-evidence.v1.json +260 -2
  4. package/contracts/doctor-remediation-plan.v1.json +496 -0
  5. package/contracts/doctor-workspace-evidence.v1.json +260 -2
  6. package/contracts/extension-cli-compatibility.v1.json +5 -2
  7. package/contracts/workspace-intelligence/doctor-fix-result.v1.json +11 -1
  8. package/contracts/workspace-intelligence/fact-freshness.v1.json +58 -0
  9. package/contracts/workspace-intelligence/workspace-context.v1.json +84 -1
  10. package/contracts/workspace-intelligence/workspace-intelligence-history.v1.json +6 -2
  11. package/contracts/workspace-intelligence/workspace-model.v1.json +80 -0
  12. package/dist/analyze-UTB3PNKM.js +1 -0
  13. package/dist/autopilot-release-GBH7PIIZ.js +1 -0
  14. package/dist/{chunk-ZPXMZCYG.js → chunk-3CYEVV6H.js} +1 -1
  15. package/dist/{chunk-RSYUNEH7.js → chunk-42ARJBM7.js} +1 -1
  16. package/dist/chunk-6UBWN4EE.js +2 -0
  17. package/dist/chunk-7BEZH5LE.js +2 -0
  18. package/dist/{chunk-ITJ6RKUW.js → chunk-AM5OJWXF.js} +1 -1
  19. package/dist/{chunk-KIUSCFHF.js → chunk-C4ASE2DV.js} +1 -1
  20. package/dist/chunk-COBMOVUK.js +1 -0
  21. package/dist/{chunk-ELU3G6DQ.js → chunk-DKNVDNT4.js} +1 -1
  22. package/dist/chunk-GD6VML5K.js +32 -0
  23. package/dist/chunk-GH674HP5.js +4 -0
  24. package/dist/chunk-HT3G7HOV.js +78 -0
  25. package/dist/{chunk-BFEBZABL.js → chunk-KZLRUBQ5.js} +19 -19
  26. package/dist/chunk-O74N26AD.js +1 -0
  27. package/dist/chunk-TDSIF42O.js +1 -0
  28. package/dist/chunk-TSUQQTHI.js +1 -0
  29. package/dist/chunk-ULIVVMT6.js +1 -0
  30. package/dist/{chunk-WCICO7ZB.js → chunk-XRGBKUJO.js} +1 -1
  31. package/dist/chunk-XY3SGMAJ.js +2 -0
  32. package/dist/{create-RNP5ACQL.js → create-XTKHAYH7.js} +1 -1
  33. package/dist/doctor-4UQZIELO.js +1 -0
  34. package/dist/index.d.ts +10 -1
  35. package/dist/index.js +165 -140
  36. package/dist/pipeline-ZCJ6NVRC.js +5 -0
  37. package/dist/{workspace-E554C5SM.js → workspace-VKUBU4M4.js} +1 -1
  38. package/dist/{workspace-agent-sync-BHE2V4KS.js → workspace-agent-sync-QJWXK3RT.js} +1 -1
  39. package/dist/{workspace-context-VJTXW3K4.js → workspace-context-I5OXR6XB.js} +1 -1
  40. package/dist/workspace-explain-YFKDZRVX.js +1 -0
  41. package/dist/{workspace-feedback-65NR3EZH.js → workspace-feedback-KCDFF7YS.js} +1 -1
  42. package/dist/{workspace-foundation-LISDH53T.js → workspace-foundation-V6SLZRBY.js} +1 -1
  43. package/dist/workspace-history-DSCH7PQZ.js +1 -0
  44. package/dist/{workspace-intelligence-EC63CRVF.js → workspace-intelligence-4SGJDZ6H.js} +1 -1
  45. package/dist/{workspace-marker-IOPQ42A7.js → workspace-marker-HAC7BMEG.js} +1 -1
  46. package/dist/workspace-mcp-serve-4QN7ZU6C.js +3 -0
  47. package/dist/workspace-model-R6XYEQZO.js +1 -0
  48. package/dist/workspace-run-QRT3JJDB.js +1 -0
  49. package/dist/{workspace-verify-IAUHP6Y6.js → workspace-verify-TEQWZOXM.js} +1 -1
  50. package/dist/{workspace-watch-H2AETGFI.js → workspace-watch-WERGZE5P.js} +1 -1
  51. package/docs/contracts/ARTIFACT_CATALOG.md +59 -20
  52. package/docs/contracts/NAMING_AND_COEXISTENCE.md +3 -2
  53. package/docs/contracts/README.md +1 -0
  54. package/docs/doctor-command.md +217 -13
  55. package/package.json +1 -1
  56. package/scripts/enterprise-package-smoke.mjs +35 -36
  57. package/dist/analyze-QYHMGLSG.js +0 -1
  58. package/dist/autopilot-release-YDEUKRW6.js +0 -1
  59. package/dist/chunk-33LR2QEM.js +0 -2
  60. package/dist/chunk-46AGNYI7.js +0 -50
  61. package/dist/chunk-DWXRVGOY.js +0 -2
  62. package/dist/chunk-EN6YCX36.js +0 -1
  63. package/dist/chunk-HYAT2EG7.js +0 -1
  64. package/dist/chunk-JNXT6KJV.js +0 -32
  65. package/dist/chunk-RV6HBTFC.js +0 -2
  66. package/dist/chunk-VDTAPIHB.js +0 -2
  67. package/dist/chunk-VKLL63TL.js +0 -1
  68. package/dist/chunk-VMJA36WD.js +0 -1
  69. package/dist/doctor-XM6QDTDC.js +0 -1
  70. package/dist/pipeline-YD2DO7XY.js +0 -5
  71. package/dist/workspace-explain-XJ22ZXJY.js +0 -1
  72. package/dist/workspace-history-VPDADQKG.js +0 -1
  73. package/dist/workspace-mcp-serve-KOM2V35Q.js +0 -3
  74. package/dist/workspace-model-YL7W3573.js +0 -1
  75. package/dist/workspace-run-F5FADRY5.js +0 -1
package/README.md CHANGED
@@ -123,6 +123,7 @@ In RapidKit, Workspace Intelligence is not a chat feature. It is the determinist
123
123
  - **Impact** — what changed and which projects, commands, and release gates are affected
124
124
  - **Verify** — which evidence proves the workspace is ready, blocked, or needs attention
125
125
  - **Sync** — how developers, CI, Workspai, and AI agents stay grounded in the same truth
126
+ - **Freshness** — which facts are durable, derived, evidence-backed, live, or must be verified before use
126
127
 
127
128
  ## From Code to Shared Understanding
128
129
 
@@ -162,18 +163,18 @@ For the visual experience, install the [Workspai VS Code extension](https://mark
162
163
 
163
164
  ## Typical workflows
164
165
 
165
- | Question | Command |
166
- | --------------------------------------------- | ---------------------------------------------- |
167
- | What projects exist in this workspace? | `workspace model --json` |
168
- | What context should AI agents receive? | `workspace context --for-agent --json --write` |
169
- | What breaks if I change this? | `workspace impact --from <snapshot>` |
170
- | Why is release blocked? | `workspace explain release-blocked --json --write` |
166
+ | Question | Command |
167
+ | --------------------------------------------- | -------------------------------------------------------------------------------------------- |
168
+ | What projects exist in this workspace? | `workspace model --json` |
169
+ | What context should AI agents receive? | `workspace context --for-agent --json --write` |
170
+ | What breaks if I change this? | `workspace impact --from <snapshot>` |
171
+ | Why is release blocked? | `workspace explain release-blocked --json --write` |
171
172
  | Trace a diff through blast radius and gates? | `workspace trace --from .rapidkit/reports/workspace-model-diff-last-run.json --json --write` |
172
- | Can I safely release? | `pipeline --json --strict` |
173
- | How do I align AI tools and CI? | `workspace agent-sync --write` |
174
- | Expose workspace evidence to MCP clients? | `workspace mcp serve` |
175
- | How do I onboard an existing project? | `adopt` |
176
- | How do I bring repositories into a workspace? | `import` |
173
+ | Can I safely release? | `pipeline --json --strict` |
174
+ | How do I align AI tools and CI? | `workspace agent-sync --write` |
175
+ | Expose workspace evidence to MCP clients? | `workspace mcp serve` |
176
+ | How do I onboard an existing project? | `adopt` |
177
+ | How do I bring repositories into a workspace? | `import` |
177
178
 
178
179
  ### Existing project
179
180
 
@@ -307,23 +308,23 @@ assistance, and release decisions backed by evidence instead of guesswork.
307
308
 
308
309
  Workspace Intelligence provides a shared understanding of projects, dependencies, operational context, and release readiness for developers, CI pipelines, and AI agents.
309
310
 
310
- | Command | Purpose |
311
- | ------------------------------------------------- | ------------------------------------------------------------------------------------ |
312
- | `workspace model [--cache\|--incremental] --json` | Canonical workspace model (graph-aware, incremental rebuilds) |
313
- | `workspace context --for-agent --json --write` | Agent-ready context pack + auto agent grounding sync |
314
- | `workspace agent-sync --write` | Agent Customization Pack (AGENTS.md, Copilot, Cursor, Claude, INDEX, skills, agents) |
315
- | `workspace snapshot --json` | Persist model snapshot |
316
- | `workspace diff --from <file\|git[:ref]> --json` | Diff against snapshot or git |
317
- | `workspace impact --from <file> --json` | Graph-aware transitive blast-radius evidence |
318
- | `workspace verify [--strict] --json` | Definitive verification gate (subgraph + freshness + policy + fleet evidence) |
319
- | `workspace explain <target> [--write] --json` | Human narrative for release blockers, projects, or trace slices |
320
- | `workspace why <target>` | Alias of `workspace explain` |
321
- | `workspace trace --from <diff> [--write] --json` | Diff → impact → gates narrative for agents and IDE handoff |
322
- | `workspace feedback record --json` | Append structured agent action outcomes to intelligence history |
323
- | `workspace mcp serve` | Read-mostly stdio MCP bridge over workspace evidence |
324
- | `workspace graph <emit\|explain\|dot\|mermaid>` | Inspect and visualize the dependency graph |
325
- | `workspace watch [--json] [--once]` | Daemon mode: keep model + graph in memory, stream change events |
326
- | `workspace run <stage> [--scope project:X] [--reuse-passed]` | Fleet init/test/build/start or custom stages from `.rapidkit/context.json` |
311
+ | Command | Purpose |
312
+ | ------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
313
+ | `workspace model [--cache\|--incremental] --json` | Canonical workspace model (graph-aware, incremental rebuilds) |
314
+ | `workspace context --for-agent --json --write` | Agent-ready context pack + auto agent grounding sync |
315
+ | `workspace agent-sync --write` | Agent Customization Pack (AGENTS.md, Copilot, Cursor, Claude, INDEX, skills, agents) |
316
+ | `workspace snapshot --json` | Persist model snapshot |
317
+ | `workspace diff --from <file\|git[:ref]> --json` | Diff against snapshot or git |
318
+ | `workspace impact --from <file> --json` | Graph-aware transitive blast-radius evidence |
319
+ | `workspace verify [--strict] --json` | Definitive verification gate (subgraph + freshness + policy + fleet evidence) |
320
+ | `workspace explain <target> [--write] --json` | Human narrative for release blockers, projects, or trace slices |
321
+ | `workspace why <target>` | Alias of `workspace explain` |
322
+ | `workspace trace --from <diff> [--write] --json` | Diff → impact → gates narrative for agents and IDE handoff |
323
+ | `workspace feedback record --json` | Append structured agent action outcomes to intelligence history |
324
+ | `workspace mcp serve` | Read-mostly stdio MCP bridge over workspace evidence |
325
+ | `workspace graph <emit\|explain\|dot\|mermaid>` | Inspect and visualize the dependency graph |
326
+ | `workspace watch [--json] [--once]` | Daemon mode: keep model + graph in memory, stream change events |
327
+ | `workspace run <stage> [--scope project:X] [--reuse-passed]` | Fleet init/test/build/start or custom stages from `.rapidkit/context.json` |
327
328
 
328
329
  JSON schemas: `contracts/workspace-intelligence/`. Command coexistence and naming:
329
330
  [docs/contracts/NAMING_AND_COEXISTENCE.md](docs/contracts/NAMING_AND_COEXISTENCE.md).
@@ -364,6 +365,9 @@ radius, gating, and visualization:
364
365
  - **Transitive freshness** — a deterministic `fresh | stale | unknown` verdict chained
365
366
  through the graph: a dependency change makes every dependent stale, not just by
366
367
  timestamp.
368
+ - **Fact freshness contracts** — `workspace model` and agent context packs mark each
369
+ workspace fact as durable, derived, evidence-backed, live, or verify-before-use so
370
+ agents do not reuse stale state as if it were structure.
367
371
  - **Policy violations** — model/contract violations are surfaced as structured
368
372
  `policyViolations[]` (not just an exit code) so IDEs and CI can render blockers.
369
373
  - **Health history** — every verify run appends to a bounded
@@ -401,31 +405,31 @@ npx rapidkit workspace agent-sync --write --strict --json
401
405
  npm run check:agent-customization-drift -- --workspace <workspace-root>
402
406
  ```
403
407
 
404
- | Artifact / file | Purpose |
405
- | ----------------------------------------------------------------------- | -------------------------------------------------------- |
406
- | `.rapidkit/reports/agent-customization-pack.json` | Versioned output inventory, target matrix, drift state |
408
+ | Artifact / file | Purpose |
409
+ | ----------------------------------------------------------------------- | ----------------------------------------------------------- |
410
+ | `.rapidkit/reports/agent-customization-pack.json` | Versioned output inventory, target matrix, drift state |
407
411
  | `.rapidkit/reports/workspace-explain-last-run.json` | Unified explain / trace narrative for blockers and projects |
408
- | `.rapidkit/reports/workspace-skills-index.json` | Index of operational playbooks (`.rapidkit/skills/*.md`) |
409
- | `.rapidkit/skills/rapidkit-*.md` | Operational playbooks (generated by agent-sync) |
410
- | `.rapidkit/reports/rapidkit-mcp-design.json` | Read-mostly MCP-ready tool design manifest |
411
- | `.rapidkit/reports/INDEX.json` | Read order, blockers, report timestamps |
412
- | `.rapidkit/reports/workspace-context-agent.json` | Canonical agent context pack |
413
- | `.rapidkit/AGENT-GROUNDING.md` | Tool-agnostic grounding doc |
414
- | `AGENTS.md` | Open standard for all agents (managed RapidKit section) |
415
- | `.github/copilot-instructions.md` | GitHub Copilot / VS Code Chat always-on rules |
416
- | `.github/instructions/rapidkit-workspace.instructions.md` | Copilot workspace scope and command discipline |
417
- | `.github/instructions/rapidkit-evidence.instructions.md` | Copilot scoped rules for `.rapidkit/**` |
418
- | `.github/prompts/rapidkit-diagnose.prompt.md` | Copilot reusable diagnose prompt |
419
- | `.github/skills/rapidkit-workspace-intelligence/SKILL.md` | Workspace Intelligence skill workflow |
420
- | `.github/skills/rapidkit-workspace-intelligence/resources/mcp-tools.md` | Future MCP tool design reference |
421
- | `.github/agents/workspai-advisor.agent.md` | Read-only workspace advisor agent |
422
- | `.github/agents/workspai-repair.agent.md` | Blocker repair agent |
423
- | `.github/agents/workspai-release.agent.md` | Release safety agent |
424
- | `.github/agents/workspai-project-onboarder.agent.md` | Project onboarding agent |
425
- | `.cursor/rules/rapidkit-grounding.mdc` | Cursor always-on project rule |
426
- | `CLAUDE.md` | Claude Code entry (`@AGENTS.md` + managed notes) |
427
- | `.claude/rules/rapidkit-evidence.md` | Claude Code scoped evidence rules |
428
- | `.vscode/rapidkit-agent-hooks.json` | Optional advisory VS Code hooks (`--experimental-hooks`) |
412
+ | `.rapidkit/reports/workspace-skills-index.json` | Index of operational playbooks (`.rapidkit/skills/*.md`) |
413
+ | `.rapidkit/skills/rapidkit-*.md` | Operational playbooks (generated by agent-sync) |
414
+ | `.rapidkit/reports/rapidkit-mcp-design.json` | Read-mostly MCP-ready tool design manifest |
415
+ | `.rapidkit/reports/INDEX.json` | Read order, blockers, report timestamps |
416
+ | `.rapidkit/reports/workspace-context-agent.json` | Canonical agent context pack |
417
+ | `.rapidkit/AGENT-GROUNDING.md` | Tool-agnostic grounding doc |
418
+ | `AGENTS.md` | Open standard for all agents (managed RapidKit section) |
419
+ | `.github/copilot-instructions.md` | GitHub Copilot / VS Code Chat always-on rules |
420
+ | `.github/instructions/rapidkit-workspace.instructions.md` | Copilot workspace scope and command discipline |
421
+ | `.github/instructions/rapidkit-evidence.instructions.md` | Copilot scoped rules for `.rapidkit/**` |
422
+ | `.github/prompts/rapidkit-diagnose.prompt.md` | Copilot reusable diagnose prompt |
423
+ | `.github/skills/rapidkit-workspace-intelligence/SKILL.md` | Workspace Intelligence skill workflow |
424
+ | `.github/skills/rapidkit-workspace-intelligence/resources/mcp-tools.md` | Future MCP tool design reference |
425
+ | `.github/agents/workspai-advisor.agent.md` | Read-only workspace advisor agent |
426
+ | `.github/agents/workspai-repair.agent.md` | Blocker repair agent |
427
+ | `.github/agents/workspai-release.agent.md` | Release safety agent |
428
+ | `.github/agents/workspai-project-onboarder.agent.md` | Project onboarding agent |
429
+ | `.cursor/rules/rapidkit-grounding.mdc` | Cursor always-on project rule |
430
+ | `CLAUDE.md` | Claude Code entry (`@AGENTS.md` + managed notes) |
431
+ | `.claude/rules/rapidkit-evidence.md` | Claude Code scoped evidence rules |
432
+ | `.vscode/rapidkit-agent-hooks.json` | Optional advisory VS Code hooks (`--experimental-hooks`) |
429
433
 
430
434
  The pack also publishes a standard answer contract for agent-facing output:
431
435
 
@@ -115,6 +115,21 @@
115
115
  "label": "Workspace doctor",
116
116
  "required": false
117
117
  },
118
+ {
119
+ "path": ".rapidkit/reports/doctor-project-last-run.json",
120
+ "label": "Project doctor",
121
+ "required": false
122
+ },
123
+ {
124
+ "path": ".rapidkit/reports/doctor-remediation-plan-last-run.json",
125
+ "label": "Doctor remediation plan",
126
+ "required": false
127
+ },
128
+ {
129
+ "path": ".rapidkit/reports/doctor-fix-result-last-run.json",
130
+ "label": "Doctor fix result",
131
+ "required": false
132
+ },
118
133
  {
119
134
  "path": ".rapidkit/reports/analyze-last-run.json",
120
135
  "label": "Workspace analyze",
@@ -26,8 +26,22 @@
26
26
  "projectPath": { "type": "string", "minLength": 1 },
27
27
  "projectName": { "type": "string", "minLength": 1 },
28
28
  "healthScore": { "type": "object", "additionalProperties": true },
29
+ "evidenceFreshness": { "$ref": "#/$defs/evidenceFreshness" },
29
30
  "system": { "type": "object", "additionalProperties": true },
30
- "project": { "type": "object", "additionalProperties": true },
31
+ "project": {
32
+ "type": "object",
33
+ "properties": {
34
+ "probes": {
35
+ "type": "array",
36
+ "items": { "$ref": "#/$defs/probe" }
37
+ },
38
+ "repairCapabilities": {
39
+ "type": "array",
40
+ "items": { "$ref": "#/$defs/repairCapability" }
41
+ }
42
+ },
43
+ "additionalProperties": true
44
+ },
31
45
  "summary": {
32
46
  "type": "object",
33
47
  "properties": {
@@ -40,7 +54,251 @@
40
54
  "type": "array",
41
55
  "items": { "type": "object", "additionalProperties": true }
42
56
  },
43
- "contract": { "type": "object", "additionalProperties": true }
57
+ "contract": { "type": "object", "additionalProperties": true },
58
+ "policyProfile": { "$ref": "#/$defs/policyProfile" }
59
+ },
60
+ "$defs": {
61
+ "freshness": {
62
+ "type": "object",
63
+ "required": [
64
+ "category",
65
+ "generatedAt",
66
+ "ttlSeconds",
67
+ "status",
68
+ "verifyBeforeUse",
69
+ "reason"
70
+ ],
71
+ "properties": {
72
+ "category": { "enum": ["structure", "verification", "state"] },
73
+ "generatedAt": { "type": "string", "format": "date-time" },
74
+ "ttlSeconds": { "type": ["integer", "null"], "minimum": 0 },
75
+ "expiresAt": { "type": "string", "format": "date-time" },
76
+ "status": { "enum": ["fresh", "stale", "unknown"] },
77
+ "verifyBeforeUse": { "type": "boolean" },
78
+ "reason": { "type": "string" }
79
+ },
80
+ "additionalProperties": false
81
+ },
82
+ "evidenceFreshness": {
83
+ "type": "object",
84
+ "required": [
85
+ "generatedAt",
86
+ "status",
87
+ "staleProbeCount",
88
+ "unknownProbeCount",
89
+ "liveStateProbeCount",
90
+ "verifyBeforeUseProbeCount"
91
+ ],
92
+ "properties": {
93
+ "generatedAt": { "type": "string", "format": "date-time" },
94
+ "status": { "enum": ["fresh", "stale", "unknown"] },
95
+ "staleProbeCount": { "type": "integer", "minimum": 0 },
96
+ "unknownProbeCount": { "type": "integer", "minimum": 0 },
97
+ "liveStateProbeCount": { "type": "integer", "minimum": 0 },
98
+ "verifyBeforeUseProbeCount": { "type": "integer", "minimum": 0 },
99
+ "oldestProbeGeneratedAt": { "type": "string", "format": "date-time" }
100
+ },
101
+ "additionalProperties": false
102
+ },
103
+ "repairIntent": {
104
+ "type": "object",
105
+ "required": [
106
+ "mode",
107
+ "confidence",
108
+ "primaryActionLabel",
109
+ "requiresApproval",
110
+ "requiresFreshEvidence",
111
+ "reason",
112
+ "relatedCommands"
113
+ ],
114
+ "properties": {
115
+ "mode": {
116
+ "enum": [
117
+ "none",
118
+ "run-command",
119
+ "edit-file",
120
+ "review-required",
121
+ "verify-before-fix",
122
+ "refresh-evidence",
123
+ "manual-guidance"
124
+ ]
125
+ },
126
+ "confidence": { "enum": ["high", "medium", "low"] },
127
+ "primaryActionLabel": { "type": "string" },
128
+ "requiresApproval": { "type": "boolean" },
129
+ "requiresFreshEvidence": { "type": "boolean" },
130
+ "reason": { "type": "string" },
131
+ "relatedCommands": { "type": "array", "items": { "type": "string" } }
132
+ },
133
+ "additionalProperties": false
134
+ },
135
+ "policyProfile": {
136
+ "type": "object",
137
+ "required": [
138
+ "name",
139
+ "exitOnErrors",
140
+ "exitOnWarnings",
141
+ "warningExitCode",
142
+ "advisoryWarningsBlockRelease",
143
+ "description"
144
+ ],
145
+ "properties": {
146
+ "name": { "enum": ["local", "ci", "release", "enterprise-strict"] },
147
+ "exitOnErrors": { "const": true },
148
+ "exitOnWarnings": { "type": "boolean" },
149
+ "warningExitCode": { "enum": [0, 1, 2] },
150
+ "advisoryWarningsBlockRelease": { "type": "boolean" },
151
+ "description": { "type": "string" }
152
+ },
153
+ "additionalProperties": false
154
+ },
155
+ "probe": {
156
+ "type": "object",
157
+ "properties": {
158
+ "id": { "type": "string", "minLength": 1 },
159
+ "label": { "type": "string", "minLength": 1 },
160
+ "status": { "enum": ["pass", "warn", "fail"] },
161
+ "severity": { "enum": ["info", "warn", "error"] },
162
+ "scope": { "type": "string" },
163
+ "reason": { "type": "string" },
164
+ "recommendation": { "type": "string" },
165
+ "freshness": { "$ref": "#/$defs/freshness" },
166
+ "issueClass": {
167
+ "enum": [
168
+ "dependency",
169
+ "environment",
170
+ "security",
171
+ "test",
172
+ "quality",
173
+ "container",
174
+ "deployment",
175
+ "runtime",
176
+ "workspace-contract",
177
+ "source-tree",
178
+ "framework",
179
+ "configuration",
180
+ "custom",
181
+ "unknown"
182
+ ]
183
+ },
184
+ "operationalImpact": {
185
+ "enum": [
186
+ "none",
187
+ "developer-friction",
188
+ "ci-risk",
189
+ "release-risk",
190
+ "security-risk",
191
+ "runtime-risk",
192
+ "customer-risk"
193
+ ]
194
+ },
195
+ "repairIntent": { "$ref": "#/$defs/repairIntent" },
196
+ "repairCapability": { "$ref": "#/$defs/repairCapability" }
197
+ },
198
+ "additionalProperties": true
199
+ },
200
+ "repairCapability": {
201
+ "type": "object",
202
+ "required": [
203
+ "id",
204
+ "issueId",
205
+ "title",
206
+ "status",
207
+ "fixKind",
208
+ "risk",
209
+ "canAutoFix",
210
+ "canEditFiles",
211
+ "requiresApproval",
212
+ "requiresReview",
213
+ "files",
214
+ "refreshCommands",
215
+ "reason"
216
+ ],
217
+ "properties": {
218
+ "id": { "type": "string", "minLength": 1 },
219
+ "issueId": { "type": "string", "minLength": 1 },
220
+ "title": { "type": "string", "minLength": 1 },
221
+ "status": { "enum": ["available", "manual", "blocked"] },
222
+ "fixKind": {
223
+ "enum": [
224
+ "package-json-script",
225
+ "file-create",
226
+ "file-append",
227
+ "file-copy",
228
+ "dependency-sync",
229
+ "command",
230
+ "manual"
231
+ ]
232
+ },
233
+ "risk": { "enum": ["safe", "guarded", "invasive"] },
234
+ "canAutoFix": { "type": "boolean" },
235
+ "canEditFiles": { "type": "boolean" },
236
+ "requiresApproval": { "type": "boolean" },
237
+ "requiresReview": { "type": "boolean" },
238
+ "files": { "type": "array", "items": { "type": "string" } },
239
+ "command": { "type": "string" },
240
+ "operation": { "$ref": "#/$defs/repairOperation" },
241
+ "verifyCommand": { "type": "string" },
242
+ "refreshCommands": { "type": "array", "items": { "type": "string" } },
243
+ "reason": { "type": "string" },
244
+ "limitations": { "type": "array", "items": { "type": "string" } }
245
+ },
246
+ "additionalProperties": true
247
+ },
248
+ "repairOperation": {
249
+ "type": "object",
250
+ "required": ["type", "path"],
251
+ "properties": {
252
+ "type": {
253
+ "enum": [
254
+ "file-create",
255
+ "file-append",
256
+ "file-copy",
257
+ "package-json-script",
258
+ "json-edit",
259
+ "env-key-add",
260
+ "makefile-target"
261
+ ]
262
+ },
263
+ "sourcePath": { "type": "string", "minLength": 1 },
264
+ "path": { "type": "string", "minLength": 1 },
265
+ "content": { "type": "string" },
266
+ "overwrite": { "type": "boolean" },
267
+ "lines": { "type": "array", "items": { "type": "string" } },
268
+ "ensureNewline": { "type": "boolean" },
269
+ "scriptName": { "type": "string" },
270
+ "scriptValue": { "type": "string" },
271
+ "edits": {
272
+ "type": "array",
273
+ "items": {
274
+ "type": "object",
275
+ "required": ["pointer", "value"],
276
+ "properties": {
277
+ "pointer": { "type": "string" },
278
+ "value": { "type": ["string", "number", "boolean", "null"] }
279
+ },
280
+ "additionalProperties": false
281
+ }
282
+ },
283
+ "keys": {
284
+ "type": "array",
285
+ "items": {
286
+ "type": "object",
287
+ "required": ["name", "value"],
288
+ "properties": {
289
+ "name": { "type": "string" },
290
+ "value": { "type": "string" },
291
+ "comment": { "type": "string" }
292
+ },
293
+ "additionalProperties": false
294
+ }
295
+ },
296
+ "target": { "type": "string" },
297
+ "command": { "type": "string" },
298
+ "phony": { "type": "boolean" }
299
+ },
300
+ "additionalProperties": false
301
+ }
44
302
  },
45
303
  "additionalProperties": true
46
304
  }