mustflow 2.74.7 → 2.75.1

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.
@@ -232,6 +232,42 @@ const PUBLIC_JSON_SCHEMA_CONTRACTS = [
232
232
  '--json',
233
233
  ],
234
234
  },
235
+ {
236
+ id: 'code-outline-report',
237
+ schemaFile: 'code-outline-report.schema.json',
238
+ producer: 'mf script-pack run code/outline scan <path...> --json',
239
+ packaged: true,
240
+ documented: true,
241
+ installedCommand: [
242
+ 'mf',
243
+ 'script-pack',
244
+ 'run',
245
+ 'code/outline',
246
+ 'scan',
247
+ 'node_modules/mustflow/dist/cli/index.js',
248
+ '--json',
249
+ ],
250
+ },
251
+ {
252
+ id: 'code-symbol-read-report',
253
+ schemaFile: 'code-symbol-read-report.schema.json',
254
+ producer: 'mf script-pack run code/symbol-read read <path> --start-line <line> --json',
255
+ packaged: true,
256
+ documented: true,
257
+ installedCommand: [
258
+ 'mf',
259
+ 'script-pack',
260
+ 'run',
261
+ 'code/symbol-read',
262
+ 'read',
263
+ 'node_modules/mustflow/dist/cli/index.js',
264
+ '--start-line',
265
+ '1',
266
+ '--end-line',
267
+ '10',
268
+ '--json',
269
+ ],
270
+ },
235
271
  {
236
272
  id: 'text-budget-report',
237
273
  schemaFile: 'text-budget-report.schema.json',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mustflow",
3
- "version": "2.74.7",
3
+ "version": "2.75.1",
4
4
  "description": "Agent workflow documents and CLI for mustflow repository roots.",
5
5
  "type": "module",
6
6
  "license": "MIT-0",
package/schemas/README.md CHANGED
@@ -64,6 +64,14 @@ Current schemas:
64
64
  and associated report schemas
65
65
  - `script-pack-suggestion-report.schema.json`: output of `mf script-pack suggest --json`, containing
66
66
  path, skill, phase, and changed-file evidence used to recommend optional script-pack helpers
67
+ - `code-outline-report.schema.json`: output of
68
+ `mf script-pack run code/outline scan <path...> --json`, containing a bounded TypeScript and
69
+ JavaScript source outline with file hashes, symbol names, declaration kinds, line ranges,
70
+ signatures, export flags, static return metadata, and stable input-limit finding codes
71
+ - `code-symbol-read-report.schema.json`: output of
72
+ `mf script-pack run code/symbol-read read <path> --start-line <line> --json`, containing a
73
+ focused source snippet selected by outline symbol line or explicit line range with file hash,
74
+ resolved line metadata, optional symbol and static return metadata, and stable range/read finding codes
67
75
  - `text-budget-report.schema.json`: output of
68
76
  `mf script-pack run core/text-budget check <path...> --json`, containing
69
77
  exact text-budget metrics, input content hashes, policy metadata, findings, and JSON Pointer field
@@ -0,0 +1,160 @@
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
+ "return_type",
108
+ "return_behavior",
109
+ "return_count",
110
+ "return_lines",
111
+ "return_preview",
112
+ "parent",
113
+ "content_sha256"
114
+ ],
115
+ "properties": {
116
+ "id": { "type": "string" },
117
+ "path": { "type": "string" },
118
+ "language": { "$ref": "#/$defs/language" },
119
+ "kind": { "$ref": "#/$defs/symbolKind" },
120
+ "name": { "type": "string" },
121
+ "start_line": { "type": "integer", "minimum": 1 },
122
+ "end_line": { "type": "integer", "minimum": 1 },
123
+ "signature": { "type": "string" },
124
+ "exported": { "type": "boolean" },
125
+ "async": { "type": "boolean" },
126
+ "return_type": { "type": ["string", "null"] },
127
+ "return_behavior": {
128
+ "enum": ["value", "void", "implicit_undefined", "mixed", "throws_only", "unknown"]
129
+ },
130
+ "return_count": { "type": "integer", "minimum": 0 },
131
+ "return_lines": {
132
+ "type": "array",
133
+ "items": { "type": "integer", "minimum": 1 }
134
+ },
135
+ "return_preview": { "type": ["string", "null"] },
136
+ "parent": { "type": ["string", "null"] },
137
+ "content_sha256": { "$ref": "#/$defs/sha256" }
138
+ }
139
+ },
140
+ "finding": {
141
+ "type": "object",
142
+ "additionalProperties": false,
143
+ "required": ["code", "severity", "message", "path"],
144
+ "properties": {
145
+ "code": {
146
+ "enum": [
147
+ "code_outline_path_outside_root",
148
+ "code_outline_unreadable_path",
149
+ "code_outline_unsupported_file",
150
+ "code_outline_file_too_large",
151
+ "code_outline_max_files_exceeded"
152
+ ]
153
+ },
154
+ "severity": { "enum": ["low", "medium", "high", "critical"] },
155
+ "message": { "type": "string" },
156
+ "path": { "type": "string" }
157
+ }
158
+ }
159
+ }
160
+ }
@@ -0,0 +1,197 @@
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
+ "return_type",
95
+ "return_behavior",
96
+ "return_count",
97
+ "return_lines",
98
+ "return_preview",
99
+ "parent",
100
+ "content_sha256"
101
+ ],
102
+ "properties": {
103
+ "id": { "type": "string" },
104
+ "path": { "type": "string" },
105
+ "language": { "$ref": "#/$defs/language" },
106
+ "kind": { "$ref": "#/$defs/symbolKind" },
107
+ "name": { "type": "string" },
108
+ "start_line": { "type": "integer", "minimum": 1 },
109
+ "end_line": { "type": "integer", "minimum": 1 },
110
+ "signature": { "type": "string" },
111
+ "exported": { "type": "boolean" },
112
+ "async": { "type": "boolean" },
113
+ "return_type": { "type": ["string", "null"] },
114
+ "return_behavior": {
115
+ "enum": ["value", "void", "implicit_undefined", "mixed", "throws_only", "unknown"]
116
+ },
117
+ "return_count": { "type": "integer", "minimum": 0 },
118
+ "return_lines": {
119
+ "type": "array",
120
+ "items": { "type": "integer", "minimum": 1 }
121
+ },
122
+ "return_preview": { "type": ["string", "null"] },
123
+ "parent": { "type": ["string", "null"] },
124
+ "content_sha256": { "$ref": "#/$defs/sha256" }
125
+ }
126
+ },
127
+ "target": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "required": [
131
+ "path",
132
+ "language",
133
+ "sha256",
134
+ "size_bytes",
135
+ "line_count",
136
+ "requested_start_line",
137
+ "requested_end_line",
138
+ "resolved_start_line",
139
+ "resolved_end_line",
140
+ "context_start_line",
141
+ "context_end_line",
142
+ "symbol"
143
+ ],
144
+ "properties": {
145
+ "path": { "type": "string" },
146
+ "language": { "$ref": "#/$defs/language" },
147
+ "sha256": { "$ref": "#/$defs/sha256" },
148
+ "size_bytes": { "type": "integer", "minimum": 0 },
149
+ "line_count": { "type": "integer", "minimum": 0 },
150
+ "requested_start_line": { "type": "integer", "minimum": 1 },
151
+ "requested_end_line": { "type": ["integer", "null"], "minimum": 1 },
152
+ "resolved_start_line": { "type": ["integer", "null"], "minimum": 1 },
153
+ "resolved_end_line": { "type": ["integer", "null"], "minimum": 1 },
154
+ "context_start_line": { "type": ["integer", "null"], "minimum": 1 },
155
+ "context_end_line": { "type": ["integer", "null"], "minimum": 1 },
156
+ "symbol": {
157
+ "anyOf": [
158
+ { "$ref": "#/$defs/symbol" },
159
+ { "type": "null" }
160
+ ]
161
+ }
162
+ }
163
+ },
164
+ "snippet": {
165
+ "type": "object",
166
+ "additionalProperties": false,
167
+ "required": ["path", "start_line", "end_line", "text"],
168
+ "properties": {
169
+ "path": { "type": "string" },
170
+ "start_line": { "type": "integer", "minimum": 1 },
171
+ "end_line": { "type": "integer", "minimum": 1 },
172
+ "text": { "type": "string" }
173
+ }
174
+ },
175
+ "finding": {
176
+ "type": "object",
177
+ "additionalProperties": false,
178
+ "required": ["code", "severity", "message", "path", "start_line", "end_line"],
179
+ "properties": {
180
+ "code": {
181
+ "enum": [
182
+ "code_symbol_read_path_outside_root",
183
+ "code_symbol_read_unreadable_path",
184
+ "code_symbol_read_invalid_range",
185
+ "code_symbol_read_no_symbol_at_line",
186
+ "code_symbol_read_snippet_too_large"
187
+ ]
188
+ },
189
+ "severity": { "enum": ["low", "medium", "high", "critical"] },
190
+ "message": { "type": "string" },
191
+ "path": { "type": "string" },
192
+ "start_line": { "type": ["integer", "null"], "minimum": 1 },
193
+ "end_line": { "type": ["integer", "null"], "minimum": 1 }
194
+ }
195
+ }
196
+ }
197
+ }
@@ -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.7"
3
+ version = "2.75.1"
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"