mustflow 2.23.0 → 2.25.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 (80) hide show
  1. package/README.md +12 -2
  2. package/dist/cli/commands/adapters.js +11 -9
  3. package/dist/cli/commands/api.js +263 -113
  4. package/dist/cli/commands/check.js +11 -7
  5. package/dist/cli/commands/classify.js +16 -42
  6. package/dist/cli/commands/context.js +18 -31
  7. package/dist/cli/commands/contract-lint.js +12 -7
  8. package/dist/cli/commands/dashboard.js +65 -114
  9. package/dist/cli/commands/docs.js +43 -26
  10. package/dist/cli/commands/doctor.js +11 -7
  11. package/dist/cli/commands/evidence.js +642 -0
  12. package/dist/cli/commands/explain-verify.js +1 -59
  13. package/dist/cli/commands/explain.js +84 -36
  14. package/dist/cli/commands/handoff.js +13 -17
  15. package/dist/cli/commands/impact.js +14 -20
  16. package/dist/cli/commands/index.js +15 -9
  17. package/dist/cli/commands/init.js +56 -70
  18. package/dist/cli/commands/line-endings.js +15 -9
  19. package/dist/cli/commands/map.js +30 -42
  20. package/dist/cli/commands/next.js +300 -0
  21. package/dist/cli/commands/onboard.js +136 -0
  22. package/dist/cli/commands/run.js +47 -42
  23. package/dist/cli/commands/search.js +43 -69
  24. package/dist/cli/commands/status.js +9 -6
  25. package/dist/cli/commands/update.js +16 -10
  26. package/dist/cli/commands/upgrade.js +9 -6
  27. package/dist/cli/commands/verify/args.js +55 -249
  28. package/dist/cli/commands/verify.js +2 -1
  29. package/dist/cli/commands/version-sources.js +9 -6
  30. package/dist/cli/commands/version.js +9 -6
  31. package/dist/cli/commands/workspace.js +564 -0
  32. package/dist/cli/i18n/en.js +60 -1
  33. package/dist/cli/i18n/es.js +60 -1
  34. package/dist/cli/i18n/fr.js +60 -1
  35. package/dist/cli/i18n/hi.js +60 -1
  36. package/dist/cli/i18n/ko.js +60 -1
  37. package/dist/cli/i18n/zh.js +60 -1
  38. package/dist/cli/index.js +28 -25
  39. package/dist/cli/lib/agent-context.js +8 -9
  40. package/dist/cli/lib/command-registry.js +24 -0
  41. package/dist/cli/lib/dashboard-html/client-script.js +1 -1
  42. package/dist/cli/lib/local-index/database-path.js +5 -0
  43. package/dist/cli/lib/local-index/database-read.js +88 -0
  44. package/dist/cli/lib/local-index/effect-graph-read-model.js +112 -0
  45. package/dist/cli/lib/local-index/freshness.js +60 -0
  46. package/dist/cli/lib/local-index/index.js +12 -1866
  47. package/dist/cli/lib/local-index/path-surface-read-model.js +134 -0
  48. package/dist/cli/lib/local-index/populate.js +474 -0
  49. package/dist/cli/lib/local-index/schema.js +413 -0
  50. package/dist/cli/lib/local-index/search-read-model.js +533 -0
  51. package/dist/cli/lib/local-index/search-text.js +79 -0
  52. package/dist/cli/lib/option-parser.js +93 -0
  53. package/dist/cli/lib/repo-map.js +2 -2
  54. package/dist/cli/lib/run-plan.js +5 -22
  55. package/dist/core/change-verification.js +11 -5
  56. package/dist/core/command-effects.js +1 -3
  57. package/dist/core/command-intent-eligibility.js +14 -0
  58. package/dist/core/command-preconditions.js +8 -4
  59. package/dist/core/command-run-constraints.js +43 -0
  60. package/dist/core/public-json-contracts.js +57 -0
  61. package/dist/core/test-selection.js +8 -2
  62. package/dist/core/verification-plan.js +32 -4
  63. package/package.json +1 -1
  64. package/schemas/README.md +16 -0
  65. package/schemas/api-serve-response.schema.json +89 -0
  66. package/schemas/change-verification-report.schema.json +4 -1
  67. package/schemas/contract-lint-report.schema.json +1 -0
  68. package/schemas/evidence-report.schema.json +287 -0
  69. package/schemas/explain-report.schema.json +4 -0
  70. package/schemas/next-report.schema.json +121 -0
  71. package/schemas/onboard-commands-report.schema.json +100 -0
  72. package/schemas/workspace-command-catalog.schema.json +172 -0
  73. package/schemas/workspace-status.schema.json +141 -0
  74. package/schemas/workspace-verification-plan.schema.json +195 -0
  75. package/templates/default/i18n.toml +1 -1
  76. package/templates/default/locales/en/.mustflow/skills/INDEX.md +2 -1
  77. package/templates/default/locales/en/.mustflow/skills/clarifying-question-gate/SKILL.md +183 -0
  78. package/templates/default/locales/en/.mustflow/skills/routes.toml +7 -1
  79. package/templates/default/locales/en/.mustflow/skills/structure-discovery-gate/SKILL.md +63 -20
  80. package/templates/default/manifest.toml +8 -1
@@ -0,0 +1,287 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/evidence-report.schema.json",
4
+ "title": "mustflow evidence report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "mustflow_root",
11
+ "status",
12
+ "source",
13
+ "policy",
14
+ "plan",
15
+ "latest",
16
+ "coverage",
17
+ "recommended_commands",
18
+ "export_path",
19
+ "issues"
20
+ ],
21
+ "properties": {
22
+ "schema_version": { "const": "1" },
23
+ "command": { "const": "evidence" },
24
+ "mustflow_root": { "type": "string" },
25
+ "status": {
26
+ "enum": ["verified", "unresolved", "needs_verification", "gaps", "latest_only", "no_changes", "unavailable"]
27
+ },
28
+ "source": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": ["mode", "changed", "plan_path", "latest_path"],
32
+ "properties": {
33
+ "mode": { "enum": ["changed", "latest", "plan"] },
34
+ "changed": { "type": "boolean" },
35
+ "plan_path": { "type": ["string", "null"] },
36
+ "latest_path": { "const": ".mustflow/state/runs/latest.json" }
37
+ }
38
+ },
39
+ "policy": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": [
43
+ "mode",
44
+ "command_authority",
45
+ "direct_commands_allowed",
46
+ "executes_commands",
47
+ "grants_command_authority",
48
+ "raw_output_included",
49
+ "hidden_reasoning_included",
50
+ "writes_files"
51
+ ],
52
+ "properties": {
53
+ "mode": { "const": "read_only_report" },
54
+ "command_authority": { "const": ".mustflow/config/commands.toml" },
55
+ "direct_commands_allowed": { "const": false },
56
+ "executes_commands": { "const": false },
57
+ "grants_command_authority": { "const": false },
58
+ "raw_output_included": { "const": false },
59
+ "hidden_reasoning_included": { "const": false },
60
+ "writes_files": { "type": "boolean" }
61
+ }
62
+ },
63
+ "plan": {
64
+ "anyOf": [
65
+ { "type": "null" },
66
+ { "$ref": "#/$defs/plan" }
67
+ ]
68
+ },
69
+ "latest": { "$ref": "#/$defs/latest" },
70
+ "coverage": { "$ref": "#/$defs/coverage" },
71
+ "recommended_commands": { "$ref": "#/$defs/stringArray" },
72
+ "export_path": { "type": ["string", "null"] },
73
+ "issues": { "$ref": "#/$defs/stringArray" }
74
+ },
75
+ "$defs": {
76
+ "stringArray": {
77
+ "type": "array",
78
+ "items": { "type": "string" }
79
+ },
80
+ "nullableStringArray": {
81
+ "type": "array",
82
+ "items": { "type": ["string", "null"] }
83
+ },
84
+ "plan": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": [
88
+ "source",
89
+ "status",
90
+ "verification_plan_id",
91
+ "changed_file_count",
92
+ "changed_files",
93
+ "validation_reasons",
94
+ "selected_intents",
95
+ "requirement_count",
96
+ "gap_count",
97
+ "requirements",
98
+ "gaps",
99
+ "test_selection",
100
+ "issues"
101
+ ],
102
+ "properties": {
103
+ "source": { "enum": ["changed", "plan_file"] },
104
+ "status": { "enum": ["available", "unavailable", "no_changes"] },
105
+ "verification_plan_id": { "type": ["string", "null"] },
106
+ "changed_file_count": { "type": ["integer", "null"], "minimum": 0 },
107
+ "changed_files": { "$ref": "#/$defs/stringArray" },
108
+ "validation_reasons": { "$ref": "#/$defs/stringArray" },
109
+ "selected_intents": { "$ref": "#/$defs/stringArray" },
110
+ "requirement_count": { "type": "integer", "minimum": 0 },
111
+ "gap_count": { "type": "integer", "minimum": 0 },
112
+ "requirements": {
113
+ "type": "array",
114
+ "items": { "$ref": "#/$defs/requirement" }
115
+ },
116
+ "gaps": {
117
+ "type": "array",
118
+ "items": { "$ref": "#/$defs/evidenceItem" }
119
+ },
120
+ "test_selection": {
121
+ "anyOf": [
122
+ { "type": "null" },
123
+ {
124
+ "type": "object",
125
+ "additionalProperties": false,
126
+ "required": ["status", "candidate_count", "selected_count", "note"],
127
+ "properties": {
128
+ "status": { "type": ["string", "null"] },
129
+ "candidate_count": { "type": ["integer", "null"], "minimum": 0 },
130
+ "selected_count": { "type": ["integer", "null"], "minimum": 0 },
131
+ "note": { "type": ["string", "null"] }
132
+ }
133
+ }
134
+ ]
135
+ },
136
+ "issues": { "$ref": "#/$defs/stringArray" }
137
+ }
138
+ },
139
+ "requirement": {
140
+ "type": "object",
141
+ "additionalProperties": false,
142
+ "required": [
143
+ "reason",
144
+ "file_count",
145
+ "files",
146
+ "surfaces",
147
+ "affected_contracts",
148
+ "candidate_intents",
149
+ "selected_intents",
150
+ "skipped_intents",
151
+ "status",
152
+ "evidence_receipts",
153
+ "gap_reasons"
154
+ ],
155
+ "properties": {
156
+ "reason": { "type": "string" },
157
+ "file_count": { "type": "integer", "minimum": 0 },
158
+ "files": { "$ref": "#/$defs/stringArray" },
159
+ "surfaces": { "$ref": "#/$defs/stringArray" },
160
+ "affected_contracts": { "$ref": "#/$defs/stringArray" },
161
+ "candidate_intents": { "$ref": "#/$defs/stringArray" },
162
+ "selected_intents": { "$ref": "#/$defs/stringArray" },
163
+ "skipped_intents": { "$ref": "#/$defs/stringArray" },
164
+ "status": { "enum": ["covered_by_latest", "selected", "blocked", "unselected"] },
165
+ "evidence_receipts": { "$ref": "#/$defs/stringArray" },
166
+ "gap_reasons": { "$ref": "#/$defs/stringArray" }
167
+ }
168
+ },
169
+ "latest": {
170
+ "type": "object",
171
+ "additionalProperties": false,
172
+ "required": [
173
+ "status",
174
+ "exists",
175
+ "path",
176
+ "kind",
177
+ "verification_plan_id",
178
+ "applies_to_plan",
179
+ "completion_verdict_status",
180
+ "execution_status",
181
+ "receipt_count",
182
+ "skipped_check_count",
183
+ "remaining_risk_count",
184
+ "requirements",
185
+ "receipts",
186
+ "skipped_checks",
187
+ "remaining_risks",
188
+ "issues"
189
+ ],
190
+ "properties": {
191
+ "status": { "enum": ["available", "missing", "unavailable", "not_requested"] },
192
+ "exists": { "type": "boolean" },
193
+ "path": { "const": ".mustflow/state/runs/latest.json" },
194
+ "kind": { "enum": ["run_receipt", "verify_run_summary", "unknown", null] },
195
+ "verification_plan_id": { "type": ["string", "null"] },
196
+ "applies_to_plan": { "type": ["boolean", "null"] },
197
+ "completion_verdict_status": { "type": ["string", "null"] },
198
+ "execution_status": { "type": ["string", "null"] },
199
+ "receipt_count": { "type": ["integer", "null"], "minimum": 0 },
200
+ "skipped_check_count": { "type": "integer", "minimum": 0 },
201
+ "remaining_risk_count": { "type": "integer", "minimum": 0 },
202
+ "requirements": {
203
+ "type": "array",
204
+ "items": { "$ref": "#/$defs/latestRequirement" }
205
+ },
206
+ "receipts": {
207
+ "type": "array",
208
+ "items": { "$ref": "#/$defs/latestReceipt" }
209
+ },
210
+ "skipped_checks": {
211
+ "type": "array",
212
+ "items": { "$ref": "#/$defs/evidenceItem" }
213
+ },
214
+ "remaining_risks": {
215
+ "type": "array",
216
+ "items": { "$ref": "#/$defs/evidenceItem" }
217
+ },
218
+ "issues": { "$ref": "#/$defs/stringArray" }
219
+ }
220
+ },
221
+ "latestRequirement": {
222
+ "type": "object",
223
+ "additionalProperties": false,
224
+ "required": ["reason", "outcome", "selected_intents", "skipped_intents"],
225
+ "properties": {
226
+ "reason": { "type": "string" },
227
+ "outcome": { "type": ["string", "null"] },
228
+ "selected_intents": { "$ref": "#/$defs/stringArray" },
229
+ "skipped_intents": { "$ref": "#/$defs/stringArray" }
230
+ }
231
+ },
232
+ "latestReceipt": {
233
+ "type": "object",
234
+ "additionalProperties": false,
235
+ "required": ["intent", "status", "skipped", "verification_plan_id", "receipt_path", "receipt_sha256"],
236
+ "properties": {
237
+ "intent": { "type": ["string", "null"] },
238
+ "status": { "type": ["string", "null"] },
239
+ "skipped": { "type": "boolean" },
240
+ "verification_plan_id": { "type": ["string", "null"] },
241
+ "receipt_path": { "type": ["string", "null"] },
242
+ "receipt_sha256": { "type": ["string", "null"] }
243
+ }
244
+ },
245
+ "evidenceItem": {
246
+ "type": "object",
247
+ "additionalProperties": false,
248
+ "required": ["reason", "intent", "status", "files", "surfaces", "detail"],
249
+ "properties": {
250
+ "reason": { "type": ["string", "null"] },
251
+ "intent": { "type": ["string", "null"] },
252
+ "status": { "type": ["string", "null"] },
253
+ "files": { "$ref": "#/$defs/stringArray" },
254
+ "surfaces": { "$ref": "#/$defs/stringArray" },
255
+ "detail": { "type": "string" }
256
+ }
257
+ },
258
+ "coverage": {
259
+ "type": "object",
260
+ "additionalProperties": false,
261
+ "required": [
262
+ "requirement_count",
263
+ "covered_by_latest_count",
264
+ "selected_requirement_count",
265
+ "blocked_requirement_count",
266
+ "unselected_requirement_count",
267
+ "selected_intent_count",
268
+ "receipt_count",
269
+ "skipped_check_count",
270
+ "remaining_risk_count",
271
+ "gap_count"
272
+ ],
273
+ "properties": {
274
+ "requirement_count": { "type": "integer", "minimum": 0 },
275
+ "covered_by_latest_count": { "type": "integer", "minimum": 0 },
276
+ "selected_requirement_count": { "type": "integer", "minimum": 0 },
277
+ "blocked_requirement_count": { "type": "integer", "minimum": 0 },
278
+ "unselected_requirement_count": { "type": "integer", "minimum": 0 },
279
+ "selected_intent_count": { "type": "integer", "minimum": 0 },
280
+ "receipt_count": { "type": "integer", "minimum": 0 },
281
+ "skipped_check_count": { "type": "integer", "minimum": 0 },
282
+ "remaining_risk_count": { "type": "integer", "minimum": 0 },
283
+ "gap_count": { "type": "integer", "minimum": 0 }
284
+ }
285
+ }
286
+ }
287
+ }
@@ -395,6 +395,7 @@
395
395
  "missing_timeout",
396
396
  "missing_command_source",
397
397
  "unsafe_intent_name",
398
+ "agent_shell_requires_allow",
398
399
  "blocked_shell_background_pattern",
399
400
  "blocked_long_running_command_pattern",
400
401
  "cwd_outside_project",
@@ -886,8 +887,11 @@
886
887
  "missing_timeout",
887
888
  "missing_command_source",
888
889
  "unsafe_intent_name",
890
+ "agent_shell_requires_allow",
889
891
  "blocked_shell_background_pattern",
890
892
  "blocked_long_running_command_pattern",
893
+ "cwd_outside_project",
894
+ "max_output_bytes_exceeds_limit",
891
895
  null
892
896
  ]
893
897
  },
@@ -0,0 +1,121 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/next-report.schema.json",
4
+ "title": "mustflow next report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "mustflow_root",
11
+ "status",
12
+ "policy",
13
+ "state",
14
+ "decision",
15
+ "recommended_commands",
16
+ "blockers",
17
+ "warnings",
18
+ "gaps",
19
+ "verification_plan_id"
20
+ ],
21
+ "properties": {
22
+ "schema_version": { "const": "1" },
23
+ "command": { "const": "next" },
24
+ "mustflow_root": { "type": "string" },
25
+ "status": {
26
+ "enum": ["setup_required", "blocked", "idle", "needs_verification", "unavailable"]
27
+ },
28
+ "policy": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": [
32
+ "command_authority",
33
+ "direct_commands_allowed",
34
+ "grants_command_authority",
35
+ "writes_files"
36
+ ],
37
+ "properties": {
38
+ "command_authority": { "const": ".mustflow/config/commands.toml" },
39
+ "direct_commands_allowed": { "const": false },
40
+ "grants_command_authority": { "const": false },
41
+ "writes_files": { "const": false }
42
+ }
43
+ },
44
+ "state": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": [
48
+ "installed",
49
+ "check_ok",
50
+ "command_contract_ok",
51
+ "git_status",
52
+ "changed_file_count",
53
+ "validation_reasons",
54
+ "selected_intents",
55
+ "gap_count"
56
+ ],
57
+ "properties": {
58
+ "installed": { "type": "boolean" },
59
+ "check_ok": { "type": "boolean" },
60
+ "command_contract_ok": { "type": "boolean" },
61
+ "git_status": { "enum": ["available", "unavailable"] },
62
+ "changed_file_count": { "type": ["integer", "null"] },
63
+ "validation_reasons": {
64
+ "type": "array",
65
+ "items": { "type": "string" }
66
+ },
67
+ "selected_intents": {
68
+ "type": "array",
69
+ "items": { "type": "string" }
70
+ },
71
+ "gap_count": { "type": "integer" }
72
+ }
73
+ },
74
+ "decision": {
75
+ "type": "object",
76
+ "additionalProperties": false,
77
+ "required": ["kind", "command", "title", "detail"],
78
+ "properties": {
79
+ "kind": {
80
+ "enum": ["setup", "repair", "inspect", "configure_commands", "verify", "none"]
81
+ },
82
+ "command": { "type": ["string", "null"] },
83
+ "title": { "type": "string" },
84
+ "detail": { "type": "string" }
85
+ }
86
+ },
87
+ "recommended_commands": {
88
+ "type": "array",
89
+ "items": { "type": "string" }
90
+ },
91
+ "blockers": {
92
+ "type": "array",
93
+ "items": { "type": "string" }
94
+ },
95
+ "warnings": {
96
+ "type": "array",
97
+ "items": { "type": "string" }
98
+ },
99
+ "gaps": {
100
+ "type": "array",
101
+ "items": {
102
+ "type": "object",
103
+ "additionalProperties": false,
104
+ "required": ["reason", "files", "surfaces", "detail"],
105
+ "properties": {
106
+ "reason": { "type": "string" },
107
+ "files": {
108
+ "type": "array",
109
+ "items": { "type": "string" }
110
+ },
111
+ "surfaces": {
112
+ "type": "array",
113
+ "items": { "type": "string" }
114
+ },
115
+ "detail": { "type": "string" }
116
+ }
117
+ }
118
+ },
119
+ "verification_plan_id": { "type": ["string", "null"] }
120
+ }
121
+ }
@@ -0,0 +1,100 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/onboard-commands-report.schema.json",
4
+ "title": "mustflow onboard commands report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "mustflow_root",
11
+ "command_contract_path",
12
+ "policy",
13
+ "summary",
14
+ "suggestions",
15
+ "next_steps"
16
+ ],
17
+ "properties": {
18
+ "schema_version": { "const": "1" },
19
+ "command": { "const": "onboard commands" },
20
+ "mustflow_root": { "type": "string" },
21
+ "command_contract_path": { "const": ".mustflow/config/commands.toml" },
22
+ "policy": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": [
26
+ "command_authority",
27
+ "suggestions_grant_command_authority",
28
+ "suggestions_are_review_only",
29
+ "writes_files"
30
+ ],
31
+ "properties": {
32
+ "command_authority": { "const": ".mustflow/config/commands.toml" },
33
+ "suggestions_grant_command_authority": { "const": false },
34
+ "suggestions_are_review_only": { "const": true },
35
+ "writes_files": { "const": false }
36
+ }
37
+ },
38
+ "summary": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": [
42
+ "total_intents",
43
+ "runnable_intents",
44
+ "manual_only_intents",
45
+ "unknown_intents",
46
+ "suggestions",
47
+ "package_scripts",
48
+ "make_targets",
49
+ "just_recipes",
50
+ "contract_errors",
51
+ "contract_warnings"
52
+ ],
53
+ "properties": {
54
+ "total_intents": { "type": "integer" },
55
+ "runnable_intents": { "type": "integer" },
56
+ "manual_only_intents": { "type": "integer" },
57
+ "unknown_intents": { "type": "integer" },
58
+ "suggestions": { "type": "integer" },
59
+ "package_scripts": { "type": "integer" },
60
+ "make_targets": { "type": "integer" },
61
+ "just_recipes": { "type": "integer" },
62
+ "contract_errors": { "type": "integer" },
63
+ "contract_warnings": { "type": "integer" }
64
+ }
65
+ },
66
+ "suggestions": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "object",
70
+ "additionalProperties": false,
71
+ "required": [
72
+ "sourceFile",
73
+ "sourceKind",
74
+ "sourceName",
75
+ "commandHint",
76
+ "suggestedIntent",
77
+ "status",
78
+ "reason",
79
+ "snippet"
80
+ ],
81
+ "properties": {
82
+ "sourceFile": { "type": "string" },
83
+ "sourceKind": {
84
+ "enum": ["package_script", "make_target", "just_recipe"]
85
+ },
86
+ "sourceName": { "type": "string" },
87
+ "commandHint": { "type": "string" },
88
+ "suggestedIntent": { "type": "string" },
89
+ "status": { "const": "unknown" },
90
+ "reason": { "type": "string" },
91
+ "snippet": { "type": "string" }
92
+ }
93
+ }
94
+ },
95
+ "next_steps": {
96
+ "type": "array",
97
+ "items": { "type": "string" }
98
+ }
99
+ }
100
+ }