@vibecheckai/cli 3.2.5 → 3.3.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 (197) hide show
  1. package/bin/.generated +25 -25
  2. package/bin/dev/run-v2-torture.js +30 -30
  3. package/bin/registry.js +192 -5
  4. package/bin/runners/lib/__tests__/entitlements-v2.test.js +295 -295
  5. package/bin/runners/lib/agent-firewall/change-packet/builder.js +280 -6
  6. package/bin/runners/lib/agent-firewall/critic/index.js +151 -0
  7. package/bin/runners/lib/agent-firewall/critic/judge.js +432 -0
  8. package/bin/runners/lib/agent-firewall/critic/prompts.js +305 -0
  9. package/bin/runners/lib/agent-firewall/lawbook/distributor.js +465 -0
  10. package/bin/runners/lib/agent-firewall/lawbook/evaluator.js +604 -0
  11. package/bin/runners/lib/agent-firewall/lawbook/index.js +304 -0
  12. package/bin/runners/lib/agent-firewall/lawbook/registry.js +514 -0
  13. package/bin/runners/lib/agent-firewall/lawbook/schema.js +420 -0
  14. package/bin/runners/lib/agent-firewall/logger.js +141 -0
  15. package/bin/runners/lib/agent-firewall/policy/loader.js +312 -4
  16. package/bin/runners/lib/agent-firewall/policy/rules/ghost-env.js +113 -1
  17. package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +133 -6
  18. package/bin/runners/lib/agent-firewall/proposal/extractor.js +394 -0
  19. package/bin/runners/lib/agent-firewall/proposal/index.js +212 -0
  20. package/bin/runners/lib/agent-firewall/proposal/schema.js +251 -0
  21. package/bin/runners/lib/agent-firewall/proposal/validator.js +386 -0
  22. package/bin/runners/lib/agent-firewall/reality/index.js +332 -0
  23. package/bin/runners/lib/agent-firewall/reality/state.js +625 -0
  24. package/bin/runners/lib/agent-firewall/reality/watcher.js +322 -0
  25. package/bin/runners/lib/agent-firewall/risk/index.js +173 -0
  26. package/bin/runners/lib/agent-firewall/risk/scorer.js +328 -0
  27. package/bin/runners/lib/agent-firewall/risk/thresholds.js +321 -0
  28. package/bin/runners/lib/agent-firewall/risk/vectors.js +421 -0
  29. package/bin/runners/lib/agent-firewall/simulator/diff-simulator.js +472 -0
  30. package/bin/runners/lib/agent-firewall/simulator/import-resolver.js +346 -0
  31. package/bin/runners/lib/agent-firewall/simulator/index.js +181 -0
  32. package/bin/runners/lib/agent-firewall/simulator/route-validator.js +380 -0
  33. package/bin/runners/lib/agent-firewall/time-machine/incident-correlator.js +661 -0
  34. package/bin/runners/lib/agent-firewall/time-machine/index.js +267 -0
  35. package/bin/runners/lib/agent-firewall/time-machine/replay-engine.js +436 -0
  36. package/bin/runners/lib/agent-firewall/time-machine/state-reconstructor.js +490 -0
  37. package/bin/runners/lib/agent-firewall/time-machine/timeline-builder.js +530 -0
  38. package/bin/runners/lib/analyzers.js +81 -18
  39. package/bin/runners/lib/api-client.js +269 -0
  40. package/bin/runners/lib/auth-truth.js +193 -193
  41. package/bin/runners/lib/authority-badge.js +425 -0
  42. package/bin/runners/lib/backup.js +62 -62
  43. package/bin/runners/lib/billing.js +107 -107
  44. package/bin/runners/lib/claims.js +118 -118
  45. package/bin/runners/lib/cli-output.js +7 -1
  46. package/bin/runners/lib/cli-ui.js +540 -540
  47. package/bin/runners/lib/contracts/auth-contract.js +202 -202
  48. package/bin/runners/lib/contracts/env-contract.js +181 -181
  49. package/bin/runners/lib/contracts/external-contract.js +206 -206
  50. package/bin/runners/lib/contracts/guard.js +168 -168
  51. package/bin/runners/lib/contracts/index.js +89 -89
  52. package/bin/runners/lib/contracts/plan-validator.js +311 -311
  53. package/bin/runners/lib/contracts/route-contract.js +199 -199
  54. package/bin/runners/lib/contracts.js +804 -804
  55. package/bin/runners/lib/detect.js +89 -89
  56. package/bin/runners/lib/doctor/autofix.js +254 -254
  57. package/bin/runners/lib/doctor/index.js +37 -37
  58. package/bin/runners/lib/doctor/modules/dependencies.js +325 -325
  59. package/bin/runners/lib/doctor/modules/index.js +46 -46
  60. package/bin/runners/lib/doctor/modules/network.js +250 -250
  61. package/bin/runners/lib/doctor/modules/project.js +312 -312
  62. package/bin/runners/lib/doctor/modules/runtime.js +224 -224
  63. package/bin/runners/lib/doctor/modules/security.js +348 -348
  64. package/bin/runners/lib/doctor/modules/system.js +213 -213
  65. package/bin/runners/lib/doctor/modules/vibecheck.js +394 -394
  66. package/bin/runners/lib/doctor/reporter.js +262 -262
  67. package/bin/runners/lib/doctor/service.js +262 -262
  68. package/bin/runners/lib/doctor/types.js +113 -113
  69. package/bin/runners/lib/doctor/ui.js +263 -263
  70. package/bin/runners/lib/doctor-v2.js +608 -608
  71. package/bin/runners/lib/drift.js +425 -425
  72. package/bin/runners/lib/enforcement.js +72 -72
  73. package/bin/runners/lib/enterprise-detect.js +603 -603
  74. package/bin/runners/lib/enterprise-init.js +942 -942
  75. package/bin/runners/lib/env-resolver.js +417 -417
  76. package/bin/runners/lib/env-template.js +66 -66
  77. package/bin/runners/lib/env.js +189 -189
  78. package/bin/runners/lib/error-handler.js +16 -9
  79. package/bin/runners/lib/exit-codes.js +275 -0
  80. package/bin/runners/lib/extractors/client-calls.js +990 -990
  81. package/bin/runners/lib/extractors/fastify-route-dump.js +573 -573
  82. package/bin/runners/lib/extractors/fastify-routes.js +426 -426
  83. package/bin/runners/lib/extractors/index.js +363 -363
  84. package/bin/runners/lib/extractors/next-routes.js +524 -524
  85. package/bin/runners/lib/extractors/proof-graph.js +431 -431
  86. package/bin/runners/lib/extractors/route-matcher.js +451 -451
  87. package/bin/runners/lib/extractors/truthpack-v2.js +377 -377
  88. package/bin/runners/lib/extractors/ui-bindings.js +547 -547
  89. package/bin/runners/lib/findings-schema.js +281 -281
  90. package/bin/runners/lib/firewall-prompt.js +50 -50
  91. package/bin/runners/lib/global-flags.js +37 -0
  92. package/bin/runners/lib/graph/graph-builder.js +265 -265
  93. package/bin/runners/lib/graph/html-renderer.js +413 -413
  94. package/bin/runners/lib/graph/index.js +32 -32
  95. package/bin/runners/lib/graph/runtime-collector.js +215 -215
  96. package/bin/runners/lib/graph/static-extractor.js +518 -518
  97. package/bin/runners/lib/help-formatter.js +413 -0
  98. package/bin/runners/lib/html-report.js +650 -650
  99. package/bin/runners/lib/llm.js +75 -75
  100. package/bin/runners/lib/logger.js +38 -0
  101. package/bin/runners/lib/meter.js +61 -61
  102. package/bin/runners/lib/missions/evidence.js +126 -126
  103. package/bin/runners/lib/patch.js +40 -40
  104. package/bin/runners/lib/permissions/auth-model.js +213 -213
  105. package/bin/runners/lib/permissions/idor-prover.js +205 -205
  106. package/bin/runners/lib/permissions/index.js +45 -45
  107. package/bin/runners/lib/permissions/matrix-builder.js +198 -198
  108. package/bin/runners/lib/pkgjson.js +28 -28
  109. package/bin/runners/lib/policy.js +295 -295
  110. package/bin/runners/lib/preflight.js +142 -142
  111. package/bin/runners/lib/reality/correlation-detectors.js +359 -359
  112. package/bin/runners/lib/reality/index.js +318 -318
  113. package/bin/runners/lib/reality/request-hashing.js +416 -416
  114. package/bin/runners/lib/reality/request-mapper.js +453 -453
  115. package/bin/runners/lib/reality/safety-rails.js +463 -463
  116. package/bin/runners/lib/reality/semantic-snapshot.js +408 -408
  117. package/bin/runners/lib/reality/toast-detector.js +393 -393
  118. package/bin/runners/lib/reality-findings.js +84 -84
  119. package/bin/runners/lib/receipts.js +179 -179
  120. package/bin/runners/lib/redact.js +29 -29
  121. package/bin/runners/lib/replay/capsule-manager.js +154 -154
  122. package/bin/runners/lib/replay/index.js +263 -263
  123. package/bin/runners/lib/replay/player.js +348 -348
  124. package/bin/runners/lib/replay/recorder.js +331 -331
  125. package/bin/runners/lib/report.js +135 -135
  126. package/bin/runners/lib/route-detection.js +1140 -1140
  127. package/bin/runners/lib/sandbox/index.js +59 -59
  128. package/bin/runners/lib/sandbox/proof-chain.js +399 -399
  129. package/bin/runners/lib/sandbox/sandbox-runner.js +205 -205
  130. package/bin/runners/lib/sandbox/worktree.js +174 -174
  131. package/bin/runners/lib/schema-validator.js +350 -350
  132. package/bin/runners/lib/schemas/contracts.schema.json +160 -160
  133. package/bin/runners/lib/schemas/finding.schema.json +100 -100
  134. package/bin/runners/lib/schemas/mission-pack.schema.json +206 -206
  135. package/bin/runners/lib/schemas/proof-graph.schema.json +176 -176
  136. package/bin/runners/lib/schemas/reality-report.schema.json +162 -162
  137. package/bin/runners/lib/schemas/share-pack.schema.json +180 -180
  138. package/bin/runners/lib/schemas/ship-report.schema.json +117 -117
  139. package/bin/runners/lib/schemas/truthpack-v2.schema.json +303 -303
  140. package/bin/runners/lib/schemas/validator.js +438 -438
  141. package/bin/runners/lib/score-history.js +282 -282
  142. package/bin/runners/lib/share-pack.js +239 -239
  143. package/bin/runners/lib/snippets.js +67 -67
  144. package/bin/runners/lib/unified-cli-output.js +604 -0
  145. package/bin/runners/lib/upsell.js +658 -510
  146. package/bin/runners/lib/usage.js +153 -153
  147. package/bin/runners/lib/validate-patch.js +156 -156
  148. package/bin/runners/lib/verdict-engine.js +628 -628
  149. package/bin/runners/reality/engine.js +917 -917
  150. package/bin/runners/reality/flows.js +122 -122
  151. package/bin/runners/reality/report.js +378 -378
  152. package/bin/runners/reality/session.js +193 -193
  153. package/bin/runners/runAgent.d.ts +5 -0
  154. package/bin/runners/runApprove.js +1200 -0
  155. package/bin/runners/runAuth.js +324 -95
  156. package/bin/runners/runCheckpoint.js +39 -21
  157. package/bin/runners/runClassify.js +859 -0
  158. package/bin/runners/runContext.js +136 -24
  159. package/bin/runners/runDoctor.js +108 -68
  160. package/bin/runners/runFirewall.d.ts +5 -0
  161. package/bin/runners/runFirewallHook.d.ts +5 -0
  162. package/bin/runners/runFix.js +6 -5
  163. package/bin/runners/runGuard.js +262 -168
  164. package/bin/runners/runInit.js +3 -2
  165. package/bin/runners/runMcp.js +130 -52
  166. package/bin/runners/runPolish.js +43 -20
  167. package/bin/runners/runProve.js +1 -2
  168. package/bin/runners/runReport.js +3 -2
  169. package/bin/runners/runScan.js +145 -44
  170. package/bin/runners/runShip.js +3 -4
  171. package/bin/runners/runTruth.d.ts +5 -0
  172. package/bin/runners/runValidate.js +19 -2
  173. package/bin/runners/runWatch.js +104 -53
  174. package/bin/vibecheck.js +106 -19
  175. package/mcp-server/HARDENING_SUMMARY.md +299 -0
  176. package/mcp-server/agent-firewall-interceptor.js +367 -31
  177. package/mcp-server/authority-tools.js +569 -0
  178. package/mcp-server/conductor/conflict-resolver.js +588 -0
  179. package/mcp-server/conductor/execution-planner.js +544 -0
  180. package/mcp-server/conductor/index.js +377 -0
  181. package/mcp-server/conductor/lock-manager.js +615 -0
  182. package/mcp-server/conductor/request-queue.js +550 -0
  183. package/mcp-server/conductor/session-manager.js +500 -0
  184. package/mcp-server/conductor/tools.js +510 -0
  185. package/mcp-server/index.js +1199 -208
  186. package/mcp-server/lib/api-client.cjs +305 -0
  187. package/mcp-server/lib/logger.cjs +30 -0
  188. package/mcp-server/logger.js +173 -0
  189. package/mcp-server/package.json +2 -2
  190. package/mcp-server/premium-tools.js +2 -2
  191. package/mcp-server/tier-auth.js +351 -136
  192. package/mcp-server/tools/index.js +72 -72
  193. package/mcp-server/truth-firewall-tools.js +145 -15
  194. package/mcp-server/vibecheck-tools.js +2 -2
  195. package/package.json +2 -3
  196. package/mcp-server/index.old.js +0 -4137
  197. package/mcp-server/package-lock.json +0 -165
@@ -1,206 +1,206 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://vibecheck.dev/schemas/mission-pack.schema.json",
4
- "title": "Vibecheck Mission Pack",
5
- "description": "Fix missions generated from findings for AI agents or humans",
6
- "type": "object",
7
- "required": ["specVersion", "generatedAt", "fingerprint", "missions"],
8
- "properties": {
9
- "specVersion": {
10
- "type": "string",
11
- "const": "2.0"
12
- },
13
- "generatedAt": {
14
- "type": "string",
15
- "format": "date-time"
16
- },
17
- "projectRoot": {
18
- "type": "string"
19
- },
20
- "fingerprint": {
21
- "type": "string",
22
- "pattern": "^sha256:[a-f0-9]{64}$"
23
- },
24
- "sourceReport": {
25
- "type": "string",
26
- "description": "Path to ship-report that generated this pack"
27
- },
28
- "missions": {
29
- "type": "array",
30
- "items": { "$ref": "#/$defs/mission" }
31
- },
32
- "summary": {
33
- "$ref": "#/$defs/missionSummary"
34
- },
35
- "artifacts": {
36
- "type": "array",
37
- "items": { "$ref": "#/$defs/artifact" }
38
- }
39
- },
40
- "$defs": {
41
- "mission": {
42
- "type": "object",
43
- "required": ["id", "type", "findingId", "title", "priority", "status"],
44
- "properties": {
45
- "id": {
46
- "type": "string",
47
- "pattern": "^M_[A-Z0-9_]+_[A-F0-9]+$",
48
- "description": "Mission ID: M_{TYPE}_{HASH}"
49
- },
50
- "type": {
51
- "type": "string",
52
- "enum": [
53
- "ADD_ROUTE",
54
- "REMOVE_ROUTE",
55
- "FIX_AUTH",
56
- "ADD_ENV",
57
- "FIX_CLIENT_CALL",
58
- "FIX_UI_BINDING",
59
- "ADD_ERROR_HANDLING",
60
- "FIX_TOAST",
61
- "MANUAL_REVIEW"
62
- ]
63
- },
64
- "findingId": {
65
- "type": "string",
66
- "description": "Source finding that generated this mission"
67
- },
68
- "title": {
69
- "type": "string",
70
- "maxLength": 200
71
- },
72
- "description": {
73
- "type": "string",
74
- "description": "Detailed description of what needs to be done"
75
- },
76
- "priority": {
77
- "type": "string",
78
- "enum": ["critical", "high", "medium", "low"]
79
- },
80
- "status": {
81
- "type": "string",
82
- "enum": ["pending", "in_progress", "completed", "skipped", "failed"]
83
- },
84
- "targetFile": {
85
- "type": ["string", "null"],
86
- "description": "Primary file to modify"
87
- },
88
- "targetLine": {
89
- "type": ["integer", "null"]
90
- },
91
- "suggestedFix": {
92
- "$ref": "#/$defs/suggestedFix"
93
- },
94
- "verification": {
95
- "$ref": "#/$defs/verification"
96
- },
97
- "dependencies": {
98
- "type": "array",
99
- "items": { "type": "string" },
100
- "description": "Mission IDs that must complete first"
101
- },
102
- "aiHints": {
103
- "$ref": "#/$defs/aiHints"
104
- }
105
- }
106
- },
107
- "suggestedFix": {
108
- "type": "object",
109
- "properties": {
110
- "type": {
111
- "type": "string",
112
- "enum": ["create_file", "edit_file", "delete_file", "add_import", "add_function", "wrap_code"]
113
- },
114
- "file": { "type": "string" },
115
- "beforeSnippet": { "type": ["string", "null"] },
116
- "afterSnippet": { "type": ["string", "null"] },
117
- "insertAt": {
118
- "type": "object",
119
- "properties": {
120
- "line": { "type": "integer" },
121
- "position": { "type": "string", "enum": ["before", "after", "replace"] }
122
- }
123
- },
124
- "confidence": {
125
- "type": "string",
126
- "enum": ["high", "medium", "low"]
127
- }
128
- }
129
- },
130
- "verification": {
131
- "type": "object",
132
- "properties": {
133
- "type": {
134
- "type": "string",
135
- "enum": ["rerun_vibecheck", "run_test", "manual", "playwright_action"]
136
- },
137
- "command": { "type": ["string", "null"] },
138
- "expectedOutcome": { "type": "string" },
139
- "playwrightAction": {
140
- "type": "object",
141
- "properties": {
142
- "selector": { "type": "string" },
143
- "action": { "type": "string" },
144
- "expectedSignal": { "type": "string" }
145
- }
146
- }
147
- }
148
- },
149
- "aiHints": {
150
- "type": "object",
151
- "description": "Hints for AI agents processing this mission",
152
- "properties": {
153
- "context": {
154
- "type": "array",
155
- "items": { "type": "string" },
156
- "description": "Files to read for context"
157
- },
158
- "patterns": {
159
- "type": "array",
160
- "items": { "type": "string" },
161
- "description": "Patterns to follow from codebase"
162
- },
163
- "avoid": {
164
- "type": "array",
165
- "items": { "type": "string" },
166
- "description": "Anti-patterns to avoid"
167
- },
168
- "testWith": {
169
- "type": "array",
170
- "items": { "type": "string" },
171
- "description": "Test files to update/create"
172
- }
173
- }
174
- },
175
- "missionSummary": {
176
- "type": "object",
177
- "properties": {
178
- "total": { "type": "integer" },
179
- "byType": {
180
- "type": "object",
181
- "additionalProperties": { "type": "integer" }
182
- },
183
- "byPriority": {
184
- "type": "object",
185
- "additionalProperties": { "type": "integer" }
186
- },
187
- "byStatus": {
188
- "type": "object",
189
- "additionalProperties": { "type": "integer" }
190
- },
191
- "estimatedEffort": {
192
- "type": "string",
193
- "description": "Rough time estimate"
194
- }
195
- }
196
- },
197
- "artifact": {
198
- "type": "object",
199
- "required": ["path", "sha256"],
200
- "properties": {
201
- "path": { "type": "string" },
202
- "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
203
- }
204
- }
205
- }
206
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://vibecheck.dev/schemas/mission-pack.schema.json",
4
+ "title": "Vibecheck Mission Pack",
5
+ "description": "Fix missions generated from findings for AI agents or humans",
6
+ "type": "object",
7
+ "required": ["specVersion", "generatedAt", "fingerprint", "missions"],
8
+ "properties": {
9
+ "specVersion": {
10
+ "type": "string",
11
+ "const": "2.0"
12
+ },
13
+ "generatedAt": {
14
+ "type": "string",
15
+ "format": "date-time"
16
+ },
17
+ "projectRoot": {
18
+ "type": "string"
19
+ },
20
+ "fingerprint": {
21
+ "type": "string",
22
+ "pattern": "^sha256:[a-f0-9]{64}$"
23
+ },
24
+ "sourceReport": {
25
+ "type": "string",
26
+ "description": "Path to ship-report that generated this pack"
27
+ },
28
+ "missions": {
29
+ "type": "array",
30
+ "items": { "$ref": "#/$defs/mission" }
31
+ },
32
+ "summary": {
33
+ "$ref": "#/$defs/missionSummary"
34
+ },
35
+ "artifacts": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/artifact" }
38
+ }
39
+ },
40
+ "$defs": {
41
+ "mission": {
42
+ "type": "object",
43
+ "required": ["id", "type", "findingId", "title", "priority", "status"],
44
+ "properties": {
45
+ "id": {
46
+ "type": "string",
47
+ "pattern": "^M_[A-Z0-9_]+_[A-F0-9]+$",
48
+ "description": "Mission ID: M_{TYPE}_{HASH}"
49
+ },
50
+ "type": {
51
+ "type": "string",
52
+ "enum": [
53
+ "ADD_ROUTE",
54
+ "REMOVE_ROUTE",
55
+ "FIX_AUTH",
56
+ "ADD_ENV",
57
+ "FIX_CLIENT_CALL",
58
+ "FIX_UI_BINDING",
59
+ "ADD_ERROR_HANDLING",
60
+ "FIX_TOAST",
61
+ "MANUAL_REVIEW"
62
+ ]
63
+ },
64
+ "findingId": {
65
+ "type": "string",
66
+ "description": "Source finding that generated this mission"
67
+ },
68
+ "title": {
69
+ "type": "string",
70
+ "maxLength": 200
71
+ },
72
+ "description": {
73
+ "type": "string",
74
+ "description": "Detailed description of what needs to be done"
75
+ },
76
+ "priority": {
77
+ "type": "string",
78
+ "enum": ["critical", "high", "medium", "low"]
79
+ },
80
+ "status": {
81
+ "type": "string",
82
+ "enum": ["pending", "in_progress", "completed", "skipped", "failed"]
83
+ },
84
+ "targetFile": {
85
+ "type": ["string", "null"],
86
+ "description": "Primary file to modify"
87
+ },
88
+ "targetLine": {
89
+ "type": ["integer", "null"]
90
+ },
91
+ "suggestedFix": {
92
+ "$ref": "#/$defs/suggestedFix"
93
+ },
94
+ "verification": {
95
+ "$ref": "#/$defs/verification"
96
+ },
97
+ "dependencies": {
98
+ "type": "array",
99
+ "items": { "type": "string" },
100
+ "description": "Mission IDs that must complete first"
101
+ },
102
+ "aiHints": {
103
+ "$ref": "#/$defs/aiHints"
104
+ }
105
+ }
106
+ },
107
+ "suggestedFix": {
108
+ "type": "object",
109
+ "properties": {
110
+ "type": {
111
+ "type": "string",
112
+ "enum": ["create_file", "edit_file", "delete_file", "add_import", "add_function", "wrap_code"]
113
+ },
114
+ "file": { "type": "string" },
115
+ "beforeSnippet": { "type": ["string", "null"] },
116
+ "afterSnippet": { "type": ["string", "null"] },
117
+ "insertAt": {
118
+ "type": "object",
119
+ "properties": {
120
+ "line": { "type": "integer" },
121
+ "position": { "type": "string", "enum": ["before", "after", "replace"] }
122
+ }
123
+ },
124
+ "confidence": {
125
+ "type": "string",
126
+ "enum": ["high", "medium", "low"]
127
+ }
128
+ }
129
+ },
130
+ "verification": {
131
+ "type": "object",
132
+ "properties": {
133
+ "type": {
134
+ "type": "string",
135
+ "enum": ["rerun_vibecheck", "run_test", "manual", "playwright_action"]
136
+ },
137
+ "command": { "type": ["string", "null"] },
138
+ "expectedOutcome": { "type": "string" },
139
+ "playwrightAction": {
140
+ "type": "object",
141
+ "properties": {
142
+ "selector": { "type": "string" },
143
+ "action": { "type": "string" },
144
+ "expectedSignal": { "type": "string" }
145
+ }
146
+ }
147
+ }
148
+ },
149
+ "aiHints": {
150
+ "type": "object",
151
+ "description": "Hints for AI agents processing this mission",
152
+ "properties": {
153
+ "context": {
154
+ "type": "array",
155
+ "items": { "type": "string" },
156
+ "description": "Files to read for context"
157
+ },
158
+ "patterns": {
159
+ "type": "array",
160
+ "items": { "type": "string" },
161
+ "description": "Patterns to follow from codebase"
162
+ },
163
+ "avoid": {
164
+ "type": "array",
165
+ "items": { "type": "string" },
166
+ "description": "Anti-patterns to avoid"
167
+ },
168
+ "testWith": {
169
+ "type": "array",
170
+ "items": { "type": "string" },
171
+ "description": "Test files to update/create"
172
+ }
173
+ }
174
+ },
175
+ "missionSummary": {
176
+ "type": "object",
177
+ "properties": {
178
+ "total": { "type": "integer" },
179
+ "byType": {
180
+ "type": "object",
181
+ "additionalProperties": { "type": "integer" }
182
+ },
183
+ "byPriority": {
184
+ "type": "object",
185
+ "additionalProperties": { "type": "integer" }
186
+ },
187
+ "byStatus": {
188
+ "type": "object",
189
+ "additionalProperties": { "type": "integer" }
190
+ },
191
+ "estimatedEffort": {
192
+ "type": "string",
193
+ "description": "Rough time estimate"
194
+ }
195
+ }
196
+ },
197
+ "artifact": {
198
+ "type": "object",
199
+ "required": ["path", "sha256"],
200
+ "properties": {
201
+ "path": { "type": "string" },
202
+ "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
203
+ }
204
+ }
205
+ }
206
+ }