mustflow 2.74.6 → 2.75.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.
@@ -0,0 +1,145 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/code-outline-report.schema.json",
4
+ "title": "mustflow code-outline report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "pack_id",
11
+ "script_id",
12
+ "script_ref",
13
+ "action",
14
+ "status",
15
+ "ok",
16
+ "mustflow_root",
17
+ "policy",
18
+ "input_hash",
19
+ "files",
20
+ "symbols",
21
+ "findings",
22
+ "issues"
23
+ ],
24
+ "properties": {
25
+ "schema_version": { "const": "1" },
26
+ "command": { "const": "script-pack" },
27
+ "pack_id": { "const": "code" },
28
+ "script_id": { "const": "outline" },
29
+ "script_ref": { "const": "code/outline" },
30
+ "action": { "const": "scan" },
31
+ "status": { "enum": ["passed", "failed", "error"] },
32
+ "ok": { "type": "boolean" },
33
+ "mustflow_root": { "type": "string" },
34
+ "policy": { "$ref": "#/$defs/policy" },
35
+ "input_hash": { "$ref": "#/$defs/sha256" },
36
+ "files": {
37
+ "type": "array",
38
+ "items": { "$ref": "#/$defs/file" }
39
+ },
40
+ "symbols": {
41
+ "type": "array",
42
+ "items": { "$ref": "#/$defs/symbol" }
43
+ },
44
+ "findings": {
45
+ "type": "array",
46
+ "items": { "$ref": "#/$defs/finding" }
47
+ },
48
+ "issues": {
49
+ "type": "array",
50
+ "items": { "type": "string" }
51
+ }
52
+ },
53
+ "$defs": {
54
+ "sha256": {
55
+ "type": "string",
56
+ "pattern": "^sha256:[a-f0-9]{64}$"
57
+ },
58
+ "language": {
59
+ "enum": ["typescript", "tsx", "javascript", "jsx", "javascript-module", "javascript-commonjs"]
60
+ },
61
+ "symbolKind": {
62
+ "enum": ["function", "class", "interface", "type", "enum", "variable"]
63
+ },
64
+ "stringArray": {
65
+ "type": "array",
66
+ "items": { "type": "string" }
67
+ },
68
+ "policy": {
69
+ "type": "object",
70
+ "additionalProperties": false,
71
+ "required": ["max_file_bytes", "max_files", "extensions", "ignored_directories"],
72
+ "properties": {
73
+ "max_file_bytes": { "type": "integer", "minimum": 1 },
74
+ "max_files": { "type": "integer", "minimum": 1 },
75
+ "extensions": { "$ref": "#/$defs/stringArray" },
76
+ "ignored_directories": { "$ref": "#/$defs/stringArray" }
77
+ }
78
+ },
79
+ "file": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": ["kind", "path", "language", "sha256", "size_bytes", "line_count", "symbol_count"],
83
+ "properties": {
84
+ "kind": { "const": "source_file" },
85
+ "path": { "type": "string" },
86
+ "language": { "$ref": "#/$defs/language" },
87
+ "sha256": { "$ref": "#/$defs/sha256" },
88
+ "size_bytes": { "type": "integer", "minimum": 0 },
89
+ "line_count": { "type": "integer", "minimum": 0 },
90
+ "symbol_count": { "type": "integer", "minimum": 0 }
91
+ }
92
+ },
93
+ "symbol": {
94
+ "type": "object",
95
+ "additionalProperties": false,
96
+ "required": [
97
+ "id",
98
+ "path",
99
+ "language",
100
+ "kind",
101
+ "name",
102
+ "start_line",
103
+ "end_line",
104
+ "signature",
105
+ "exported",
106
+ "async",
107
+ "parent",
108
+ "content_sha256"
109
+ ],
110
+ "properties": {
111
+ "id": { "type": "string" },
112
+ "path": { "type": "string" },
113
+ "language": { "$ref": "#/$defs/language" },
114
+ "kind": { "$ref": "#/$defs/symbolKind" },
115
+ "name": { "type": "string" },
116
+ "start_line": { "type": "integer", "minimum": 1 },
117
+ "end_line": { "type": "integer", "minimum": 1 },
118
+ "signature": { "type": "string" },
119
+ "exported": { "type": "boolean" },
120
+ "async": { "type": "boolean" },
121
+ "parent": { "type": ["string", "null"] },
122
+ "content_sha256": { "$ref": "#/$defs/sha256" }
123
+ }
124
+ },
125
+ "finding": {
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "required": ["code", "severity", "message", "path"],
129
+ "properties": {
130
+ "code": {
131
+ "enum": [
132
+ "code_outline_path_outside_root",
133
+ "code_outline_unreadable_path",
134
+ "code_outline_unsupported_file",
135
+ "code_outline_file_too_large",
136
+ "code_outline_max_files_exceeded"
137
+ ]
138
+ },
139
+ "severity": { "enum": ["low", "medium", "high", "critical"] },
140
+ "message": { "type": "string" },
141
+ "path": { "type": "string" }
142
+ }
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,182 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/code-symbol-read-report.schema.json",
4
+ "title": "mustflow code-symbol-read report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "pack_id",
11
+ "script_id",
12
+ "script_ref",
13
+ "action",
14
+ "status",
15
+ "ok",
16
+ "mustflow_root",
17
+ "policy",
18
+ "input_hash",
19
+ "target",
20
+ "snippet",
21
+ "findings",
22
+ "issues"
23
+ ],
24
+ "properties": {
25
+ "schema_version": { "const": "1" },
26
+ "command": { "const": "script-pack" },
27
+ "pack_id": { "const": "code" },
28
+ "script_id": { "const": "symbol-read" },
29
+ "script_ref": { "const": "code/symbol-read" },
30
+ "action": { "const": "read" },
31
+ "status": { "enum": ["passed", "failed", "error"] },
32
+ "ok": { "type": "boolean" },
33
+ "mustflow_root": { "type": "string" },
34
+ "policy": { "$ref": "#/$defs/policy" },
35
+ "input_hash": { "$ref": "#/$defs/sha256" },
36
+ "target": {
37
+ "anyOf": [
38
+ { "$ref": "#/$defs/target" },
39
+ { "type": "null" }
40
+ ]
41
+ },
42
+ "snippet": {
43
+ "anyOf": [
44
+ { "$ref": "#/$defs/snippet" },
45
+ { "type": "null" }
46
+ ]
47
+ },
48
+ "findings": {
49
+ "type": "array",
50
+ "items": { "$ref": "#/$defs/finding" }
51
+ },
52
+ "issues": {
53
+ "type": "array",
54
+ "items": { "type": "string" }
55
+ }
56
+ },
57
+ "$defs": {
58
+ "sha256": {
59
+ "type": "string",
60
+ "pattern": "^sha256:[a-f0-9]{64}$"
61
+ },
62
+ "language": {
63
+ "enum": ["typescript", "tsx", "javascript", "jsx", "javascript-module", "javascript-commonjs"]
64
+ },
65
+ "symbolKind": {
66
+ "enum": ["function", "class", "interface", "type", "enum", "variable"]
67
+ },
68
+ "policy": {
69
+ "type": "object",
70
+ "additionalProperties": false,
71
+ "required": ["start_line", "end_line", "context_lines", "max_file_bytes", "max_snippet_lines"],
72
+ "properties": {
73
+ "start_line": { "type": "integer", "minimum": 1 },
74
+ "end_line": { "type": ["integer", "null"], "minimum": 1 },
75
+ "context_lines": { "type": "integer", "minimum": 0 },
76
+ "max_file_bytes": { "type": "integer", "minimum": 1 },
77
+ "max_snippet_lines": { "type": "integer", "minimum": 1 }
78
+ }
79
+ },
80
+ "symbol": {
81
+ "type": "object",
82
+ "additionalProperties": false,
83
+ "required": [
84
+ "id",
85
+ "path",
86
+ "language",
87
+ "kind",
88
+ "name",
89
+ "start_line",
90
+ "end_line",
91
+ "signature",
92
+ "exported",
93
+ "async",
94
+ "parent",
95
+ "content_sha256"
96
+ ],
97
+ "properties": {
98
+ "id": { "type": "string" },
99
+ "path": { "type": "string" },
100
+ "language": { "$ref": "#/$defs/language" },
101
+ "kind": { "$ref": "#/$defs/symbolKind" },
102
+ "name": { "type": "string" },
103
+ "start_line": { "type": "integer", "minimum": 1 },
104
+ "end_line": { "type": "integer", "minimum": 1 },
105
+ "signature": { "type": "string" },
106
+ "exported": { "type": "boolean" },
107
+ "async": { "type": "boolean" },
108
+ "parent": { "type": ["string", "null"] },
109
+ "content_sha256": { "$ref": "#/$defs/sha256" }
110
+ }
111
+ },
112
+ "target": {
113
+ "type": "object",
114
+ "additionalProperties": false,
115
+ "required": [
116
+ "path",
117
+ "language",
118
+ "sha256",
119
+ "size_bytes",
120
+ "line_count",
121
+ "requested_start_line",
122
+ "requested_end_line",
123
+ "resolved_start_line",
124
+ "resolved_end_line",
125
+ "context_start_line",
126
+ "context_end_line",
127
+ "symbol"
128
+ ],
129
+ "properties": {
130
+ "path": { "type": "string" },
131
+ "language": { "$ref": "#/$defs/language" },
132
+ "sha256": { "$ref": "#/$defs/sha256" },
133
+ "size_bytes": { "type": "integer", "minimum": 0 },
134
+ "line_count": { "type": "integer", "minimum": 0 },
135
+ "requested_start_line": { "type": "integer", "minimum": 1 },
136
+ "requested_end_line": { "type": ["integer", "null"], "minimum": 1 },
137
+ "resolved_start_line": { "type": ["integer", "null"], "minimum": 1 },
138
+ "resolved_end_line": { "type": ["integer", "null"], "minimum": 1 },
139
+ "context_start_line": { "type": ["integer", "null"], "minimum": 1 },
140
+ "context_end_line": { "type": ["integer", "null"], "minimum": 1 },
141
+ "symbol": {
142
+ "anyOf": [
143
+ { "$ref": "#/$defs/symbol" },
144
+ { "type": "null" }
145
+ ]
146
+ }
147
+ }
148
+ },
149
+ "snippet": {
150
+ "type": "object",
151
+ "additionalProperties": false,
152
+ "required": ["path", "start_line", "end_line", "text"],
153
+ "properties": {
154
+ "path": { "type": "string" },
155
+ "start_line": { "type": "integer", "minimum": 1 },
156
+ "end_line": { "type": "integer", "minimum": 1 },
157
+ "text": { "type": "string" }
158
+ }
159
+ },
160
+ "finding": {
161
+ "type": "object",
162
+ "additionalProperties": false,
163
+ "required": ["code", "severity", "message", "path", "start_line", "end_line"],
164
+ "properties": {
165
+ "code": {
166
+ "enum": [
167
+ "code_symbol_read_path_outside_root",
168
+ "code_symbol_read_unreadable_path",
169
+ "code_symbol_read_invalid_range",
170
+ "code_symbol_read_no_symbol_at_line",
171
+ "code_symbol_read_snippet_too_large"
172
+ ]
173
+ },
174
+ "severity": { "enum": ["low", "medium", "high", "critical"] },
175
+ "message": { "type": "string" },
176
+ "path": { "type": "string" },
177
+ "start_line": { "type": ["integer", "null"], "minimum": 1 },
178
+ "end_line": { "type": ["integer", "null"], "minimum": 1 }
179
+ }
180
+ }
181
+ }
182
+ }
@@ -153,9 +153,147 @@
153
153
  "gap_notes": {
154
154
  "type": "array",
155
155
  "items": { "type": "string" }
156
+ },
157
+ "script_pack_suggestions": {
158
+ "type": "object",
159
+ "additionalProperties": false,
160
+ "required": ["status", "input", "analyzed_paths", "suggestions", "issues"],
161
+ "properties": {
162
+ "status": { "type": "string", "enum": ["suggested", "empty", "partial"] },
163
+ "input": { "$ref": "#/$defs/scriptPackSuggestionInput" },
164
+ "analyzed_paths": {
165
+ "type": "array",
166
+ "items": { "$ref": "#/$defs/scriptPackAnalyzedPath" }
167
+ },
168
+ "suggestions": {
169
+ "type": "array",
170
+ "items": { "$ref": "#/$defs/scriptPackSuggestion" }
171
+ },
172
+ "issues": {
173
+ "type": "array",
174
+ "items": { "type": "string" }
175
+ }
176
+ }
156
177
  }
157
178
  },
158
179
  "$defs": {
180
+ "scriptPackPhase": {
181
+ "type": "string",
182
+ "enum": ["before_change", "during_change", "after_change", "review"]
183
+ },
184
+ "scriptPackSurface": {
185
+ "type": "string",
186
+ "enum": [
187
+ "config",
188
+ "docs",
189
+ "generated",
190
+ "package",
191
+ "schema",
192
+ "skill",
193
+ "source",
194
+ "template",
195
+ "test",
196
+ "unknown"
197
+ ]
198
+ },
199
+ "scriptPackSuggestionInput": {
200
+ "type": "object",
201
+ "additionalProperties": false,
202
+ "required": ["phases", "skills", "paths", "changed"],
203
+ "properties": {
204
+ "phases": {
205
+ "type": "array",
206
+ "items": { "$ref": "#/$defs/scriptPackPhase" }
207
+ },
208
+ "skills": {
209
+ "type": "array",
210
+ "items": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" }
211
+ },
212
+ "paths": {
213
+ "type": "array",
214
+ "items": { "type": "string" }
215
+ },
216
+ "changed": { "type": "boolean" }
217
+ }
218
+ },
219
+ "scriptPackAnalyzedPath": {
220
+ "type": "object",
221
+ "additionalProperties": false,
222
+ "required": ["path", "surfaces"],
223
+ "properties": {
224
+ "path": { "type": "string" },
225
+ "surfaces": {
226
+ "type": "array",
227
+ "items": { "$ref": "#/$defs/scriptPackSurface" },
228
+ "minItems": 1
229
+ }
230
+ }
231
+ },
232
+ "scriptPackSuggestion": {
233
+ "type": "object",
234
+ "additionalProperties": false,
235
+ "required": [
236
+ "script_ref",
237
+ "score",
238
+ "confidence",
239
+ "usage",
240
+ "phases",
241
+ "matched_phases",
242
+ "matched_skills",
243
+ "matched_surfaces",
244
+ "reasons",
245
+ "read_only",
246
+ "mutates",
247
+ "network",
248
+ "risk_level",
249
+ "cost",
250
+ "report_schema_file",
251
+ "run_hint"
252
+ ],
253
+ "properties": {
254
+ "script_ref": {
255
+ "type": "string",
256
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*/[a-z0-9]+(?:-[a-z0-9]+)*$"
257
+ },
258
+ "score": { "type": "integer", "minimum": 0 },
259
+ "confidence": { "type": "string", "enum": ["low", "medium", "high"] },
260
+ "usage": { "type": "string" },
261
+ "phases": {
262
+ "type": "array",
263
+ "items": { "$ref": "#/$defs/scriptPackPhase" },
264
+ "minItems": 1
265
+ },
266
+ "matched_phases": {
267
+ "type": "array",
268
+ "items": { "$ref": "#/$defs/scriptPackPhase" }
269
+ },
270
+ "matched_skills": {
271
+ "type": "array",
272
+ "items": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" }
273
+ },
274
+ "matched_surfaces": {
275
+ "type": "array",
276
+ "items": { "$ref": "#/$defs/scriptPackSurface" }
277
+ },
278
+ "reasons": {
279
+ "type": "array",
280
+ "items": { "type": "string" },
281
+ "minItems": 1
282
+ },
283
+ "read_only": { "type": "boolean" },
284
+ "mutates": { "type": "boolean" },
285
+ "network": { "type": "boolean" },
286
+ "risk_level": { "type": "string", "enum": ["low", "medium", "high"] },
287
+ "cost": { "type": "string", "enum": ["low", "medium", "high"] },
288
+ "report_schema_file": {
289
+ "anyOf": [
290
+ { "type": "string", "pattern": "^[a-z0-9-]+\\.schema\\.json$" },
291
+ { "type": "null" }
292
+ ]
293
+ },
294
+ "run_hint": { "type": "string" }
295
+ }
296
+ },
159
297
  "candidate": {
160
298
  "type": "object",
161
299
  "additionalProperties": false,
@@ -505,7 +505,7 @@ translations = {}
505
505
  [documents."skill.codebase-orientation"]
506
506
  source = "locales/en/.mustflow/skills/codebase-orientation/SKILL.md"
507
507
  source_locale = "en"
508
- revision = 3
508
+ revision = 4
509
509
  translations = {}
510
510
 
511
511
  [documents."skill.heuristic-candidate-selection"]
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.codebase-orientation
3
3
  locale: en
4
4
  canonical: true
5
- revision: 3
5
+ revision: 4
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: codebase-orientation
@@ -71,9 +71,15 @@ Build a concise, evidence-based map of an unfamiliar repository area before plan
71
71
  2. Read the nearest repository instructions and matching skill routes before inspecting source files.
72
72
  3. Use navigation aids in order:
73
73
  - current changed files or user-named paths;
74
+ - read-only script-pack helpers such as `code/outline` and `code/symbol-read` when the
75
+ installed CLI exposes them and repository or host policy allows running the read-only helper;
74
76
  - `REPO_MAP.md` only when broader repository navigation is needed;
75
77
  - file search for names, exported symbols, command ids, schema ids, route ids, and test names.
76
78
  Treat generated maps and docs as pointers, not proof.
79
+ Prefer `code/outline` before reading large TypeScript or JavaScript files in repeated line
80
+ windows, then use `code/symbol-read` to read the selected symbol range or a bounded explicit
81
+ line range. If script-pack execution is not authorized, fall back to ordinary file search and
82
+ targeted reads instead of inventing script output.
77
83
  4. Watch for stalled observation.
78
84
  - If the same file, path, list, search, or generated-map lookup repeats without new evidence,
79
85
  stop that branch and switch to `evidence-stall-breaker`.
@@ -1,6 +1,6 @@
1
1
  id = "default"
2
2
  name = "default"
3
- version = "2.74.6"
3
+ version = "2.75.0"
4
4
  description = "Minimal workflow for LLM agents to read, edit, and verify their work in a repository."
5
5
  common_root = "common"
6
6
  locales_root = "locales"