@coreyuan/vector-mind 1.0.53 → 1.1.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.
- package/README.md +99 -72
- package/admin-panel/README.md +77 -0
- package/admin-panel/dist/client/assets/index-Bzyjdhh2.css +1 -0
- package/admin-panel/dist/client/assets/index-Ph73ewzt.js +9 -0
- package/admin-panel/dist/client/index.html +14 -0
- package/admin-panel/package.json +25 -0
- package/admin-panel/server/index.mjs +1424 -0
- package/admin-panel/server/security.mjs +117 -0
- package/admin-panel/server/security.test.mjs +113 -0
- package/admin-panel/server/storage.mjs +49 -0
- package/admin-panel/server/storage.test.mjs +36 -0
- package/dist/builtin-conventions.js +1 -1
- package/dist/builtin-conventions.js.map +1 -1
- package/dist/builtin-instructions.d.ts +1 -1
- package/dist/builtin-instructions.js +1 -1
- package/dist/builtin-instructions.js.map +1 -1
- package/dist/checkpoint-snapshot.d.ts +56 -0
- package/dist/checkpoint-snapshot.js +411 -0
- package/dist/checkpoint-snapshot.js.map +1 -0
- package/dist/config.d.ts +4 -1
- package/dist/config.js +25 -1
- package/dist/config.js.map +1 -1
- package/dist/context-governance.d.ts +56 -0
- package/dist/context-governance.js +176 -0
- package/dist/context-governance.js.map +1 -0
- package/dist/database-runtime.d.ts +6 -1
- package/dist/database-runtime.js +555 -127
- package/dist/database-runtime.js.map +1 -1
- package/dist/development-warnings.d.ts +2 -1
- package/dist/development-warnings.js +92 -22
- package/dist/development-warnings.js.map +1 -1
- package/dist/file-indexing.d.ts +2 -1
- package/dist/file-indexing.js +127 -47
- package/dist/file-indexing.js.map +1 -1
- package/dist/grep.js +4 -0
- package/dist/grep.js.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/large-file-split.d.ts +53 -8
- package/dist/large-file-split.js +294 -75
- package/dist/large-file-split.js.map +1 -1
- package/dist/memory-maintenance/compaction.d.ts +7 -0
- package/dist/memory-maintenance/compaction.js +133 -0
- package/dist/memory-maintenance/compaction.js.map +1 -0
- package/dist/memory-maintenance/context.d.ts +37 -0
- package/dist/memory-maintenance/context.js +52 -0
- package/dist/memory-maintenance/context.js.map +1 -0
- package/dist/memory-maintenance/index-prune.d.ts +22 -0
- package/dist/memory-maintenance/index-prune.js +243 -0
- package/dist/memory-maintenance/index-prune.js.map +1 -0
- package/dist/memory-maintenance/metrics.d.ts +5 -0
- package/dist/memory-maintenance/metrics.js +30 -0
- package/dist/memory-maintenance/metrics.js.map +1 -0
- package/dist/memory-maintenance/pending.d.ts +4 -0
- package/dist/memory-maintenance/pending.js +74 -0
- package/dist/memory-maintenance/pending.js.map +1 -0
- package/dist/memory-maintenance/purge.d.ts +7 -0
- package/dist/memory-maintenance/purge.js +115 -0
- package/dist/memory-maintenance/purge.js.map +1 -0
- package/dist/memory-maintenance/runner.d.ts +5 -0
- package/dist/memory-maintenance/runner.js +182 -0
- package/dist/memory-maintenance/runner.js.map +1 -0
- package/dist/memory-maintenance/sqlite.d.ts +10 -0
- package/dist/memory-maintenance/sqlite.js +67 -0
- package/dist/memory-maintenance/sqlite.js.map +1 -0
- package/dist/memory-maintenance/types.d.ts +87 -0
- package/dist/memory-maintenance/types.js +2 -0
- package/dist/memory-maintenance/types.js.map +1 -0
- package/dist/memory-maintenance.d.ts +5 -80
- package/dist/memory-maintenance.js +3 -536
- package/dist/memory-maintenance.js.map +1 -1
- package/dist/memory-mutations.d.ts +3 -3
- package/dist/memory-mutations.js +109 -43
- package/dist/memory-mutations.js.map +1 -1
- package/dist/memory-recall.d.ts +3 -1
- package/dist/memory-recall.js +33 -1
- package/dist/memory-recall.js.map +1 -1
- package/dist/operation-scope.js +42 -12
- package/dist/operation-scope.js.map +1 -1
- package/dist/path-containment.d.ts +5 -0
- package/dist/path-containment.js +64 -0
- package/dist/path-containment.js.map +1 -0
- package/dist/path-filters.d.ts +1 -1
- package/dist/path-filters.js +7 -6
- package/dist/path-filters.js.map +1 -1
- package/dist/path-rules.d.ts +1 -0
- package/dist/path-rules.js +23 -1
- package/dist/path-rules.js.map +1 -1
- package/dist/pending-changes.d.ts +5 -0
- package/dist/pending-changes.js +30 -16
- package/dist/pending-changes.js.map +1 -1
- package/dist/project-files.d.ts +1 -0
- package/dist/project-files.js +19 -10
- package/dist/project-files.js.map +1 -1
- package/dist/root.d.ts +4 -1
- package/dist/root.js +34 -4
- package/dist/root.js.map +1 -1
- package/dist/rtk-integrity.d.ts +5 -0
- package/dist/rtk-integrity.js +35 -0
- package/dist/rtk-integrity.js.map +1 -0
- package/dist/rtk-shim.js +22 -9
- package/dist/rtk-shim.js.map +1 -1
- package/dist/rtk-tools.d.ts +8 -0
- package/dist/rtk-tools.js +59 -42
- package/dist/rtk-tools.js.map +1 -1
- package/dist/server-instructions.js +8 -88
- package/dist/server-instructions.js.map +1 -1
- package/dist/tool-catalog.d.ts +2 -0
- package/dist/tool-catalog.js +77 -24
- package/dist/tool-catalog.js.map +1 -1
- package/dist/tool-handlers/context-recovery.js +79 -54
- package/dist/tool-handlers/context-recovery.js.map +1 -1
- package/dist/tool-handlers/large-files.js +615 -41
- package/dist/tool-handlers/large-files.js.map +1 -1
- package/dist/tool-handlers/memory-diagnostics.js +240 -45
- package/dist/tool-handlers/memory-diagnostics.js.map +1 -1
- package/dist/tool-handlers/memory.js +167 -22
- package/dist/tool-handlers/memory.js.map +1 -1
- package/dist/tool-handlers/operations.js +28 -8
- package/dist/tool-handlers/operations.js.map +1 -1
- package/dist/tool-handlers/requirement-status.d.ts +5 -0
- package/dist/tool-handlers/requirement-status.js +267 -0
- package/dist/tool-handlers/requirement-status.js.map +1 -0
- package/dist/tool-handlers/requirements.js +851 -115
- package/dist/tool-handlers/requirements.js.map +1 -1
- package/dist/tool-handlers.d.ts +4 -0
- package/dist/tool-handlers.js +439 -6
- package/dist/tool-handlers.js.map +1 -1
- package/dist/tool-output.d.ts +71 -2
- package/dist/tool-output.js +56 -13
- package/dist/tool-output.js.map +1 -1
- package/dist/tool-schemas.d.ts +243 -0
- package/dist/tool-schemas.js +112 -26
- package/dist/tool-schemas.js.map +1 -1
- package/dist/types.d.ts +10 -1
- package/docs/capability-matrix.md +23 -17
- package/package.json +21 -5
- package/skills/vector-mind-autopilot/SKILL.md +82 -23
- package/skills/vector-mind-autopilot/references/claude-project-instructions.md +14 -11
- package/skills/vector-mind-autopilot/references/universal-system-prompt.md +24 -16
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vector-mind-autopilot
|
|
3
|
-
description: "
|
|
3
|
+
description: "Apply a bounded VectorMind MCP workflow for local requirement-driven memory. Always pass project_root, restore focused context once per project goal, start/preflight once per requirement, and sync once after edits without routing every read through MCP."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# VectorMind Autopilot
|
|
@@ -32,22 +32,38 @@ Why: some clients start MCP servers from unrelated folders. Passing `project_roo
|
|
|
32
32
|
3. If needed, walk upward to a marker like `.git`, `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, or `*.sln`.
|
|
33
33
|
4. Validate once with `bootstrap_context({ project_root, query })`; prefer `root_source: "tool_arg"` and a `db_path` under `<project>/.vectormind/`.
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## Bounded lifecycle
|
|
36
36
|
|
|
37
37
|
For development, debugging, refactoring, design, or code-change tasks:
|
|
38
38
|
|
|
39
|
+
### Activation contract
|
|
40
|
+
|
|
41
|
+
- Seeing this skill in the available-skill list is not enough. When VectorMind tools are available and historical context can help, use the focused bootstrap once before broad repository exploration.
|
|
42
|
+
- If VectorMind tools are unavailable, make at most one bounded discovery attempt, then continue with native tools. Do not repeatedly search for or reconnect the MCP server inside the task.
|
|
43
|
+
- Pure execution with explicit targets may skip bootstrap.
|
|
44
|
+
|
|
45
|
+
Normal work should use no more than four VectorMind workflow calls:
|
|
46
|
+
|
|
47
|
+
1. one focused bootstrap when historical context is needed;
|
|
48
|
+
2. one requirement start for a genuinely new requirement;
|
|
49
|
+
3. one preflight for the complete planned file set;
|
|
50
|
+
4. one final change-intent sync.
|
|
51
|
+
|
|
52
|
+
Do not repeat lifecycle calls after every compaction, tool error, validation step, build, retry, or follow-up.
|
|
53
|
+
|
|
39
54
|
### 1. Start / resume
|
|
40
55
|
|
|
41
|
-
Call:
|
|
56
|
+
Call at most once per project goal:
|
|
42
57
|
|
|
43
58
|
```text
|
|
44
|
-
bootstrap_context({ project_root, query, top_k:
|
|
59
|
+
bootstrap_context({ project_root, query, top_k: 3, context_mode: "focused", max_output_chars: 6000 })
|
|
45
60
|
```
|
|
46
61
|
|
|
47
|
-
Use
|
|
62
|
+
Use the project summary, active requirement anchor, and query-relevant matches to ground the plan. Default focused mode intentionally omits completed recent-history anchors, pending files, and broad constraints because they frequently distract from the current goal. If no memory passes focused relevance filtering, continue from current repository facts instead of using an unrelated fallback.
|
|
63
|
+
Use `include_recent=true` or `context_mode="full"` only when the task explicitly requires recent cross-turn history. Use `include_pending=true` only for scope diagnosis; normal completion should call `get_pending_changes` directly if needed.
|
|
48
64
|
If `quality_signals.relevant_fix_patterns` appears, treat it as a historical regression reminder only. Do not let it expand the current requirement, change `ok`/`safe_to_edit`, or override direct repository facts.
|
|
49
65
|
|
|
50
|
-
Skip
|
|
66
|
+
Skip bootstrap for pure execution-first tasks with explicit targets, and when the current project goal has already been bootstrapped in this conversation.
|
|
51
67
|
|
|
52
68
|
For concrete operation commands where stale defaults could matter (deploy/publish/build/test/migrate/service/git/batch scripts), call:
|
|
53
69
|
|
|
@@ -55,28 +71,34 @@ For concrete operation commands where stale defaults could matter (deploy/publis
|
|
|
55
71
|
preflight_operation_scope({ project_root, operation, intent, commands?, files?, targets?, script_hints? })
|
|
56
72
|
```
|
|
57
73
|
|
|
74
|
+
Call it immediately before the first concrete operation command. Do not run an exploratory `git status`, deployment inspection, publish command, build, or test first and preflight afterward; include those first commands in the single planned command set.
|
|
75
|
+
|
|
58
76
|
Treat `stale_default_conflict` or `operation_constraint_conflict` as advisory quality signals: align the plan with current constraints, directly observed repo facts, or explicit user instructions before running commands.
|
|
59
77
|
|
|
60
78
|
### 2. Before editing
|
|
61
79
|
|
|
62
|
-
Call:
|
|
80
|
+
Call once for a new user requirement:
|
|
63
81
|
|
|
64
82
|
```text
|
|
65
83
|
start_requirement({ project_root, title, background })
|
|
66
84
|
```
|
|
67
85
|
|
|
86
|
+
Keep the returned `requirement.id` or a caller-provided `goal_key`. Pass `req_id` or `goal_key` to preflight and sync whenever multiple tasks, agents, or sessions may overlap in the same project.
|
|
87
|
+
|
|
88
|
+
Continue using the active requirement for follow-ups, builds, verification, and retries. Exact duplicate starts are reused by the server, but clients should still avoid unnecessary calls.
|
|
68
89
|
For narrow tasks, pass `scope_allow`, `scope_deny`, `allowed_paths`, or `denied_paths` when useful.
|
|
69
90
|
If the user request has clear bullets, acceptance points, or numbered items, also pass `requirement_items` so later edits can be checked against the actual request.
|
|
70
91
|
|
|
71
|
-
Once planned
|
|
92
|
+
Once the complete planned file/module set is known, call once:
|
|
72
93
|
|
|
73
94
|
```text
|
|
74
|
-
preflight_change_scope({ project_root, intent, files })
|
|
95
|
+
preflight_change_scope({ project_root, req_id?, goal_key?, intent, files })
|
|
75
96
|
```
|
|
76
97
|
|
|
77
98
|
For explicit requirements, pass `planned_changes` with `requirement_refs`. Mark purely mechanical/test/build/formatting support as `supporting_change=true`.
|
|
78
99
|
|
|
79
|
-
Treat `safe_to_edit=false` as
|
|
100
|
+
Treat ordinary `safe_to_edit=false` scope findings as pre-edit warnings, not reasoning overrides. A `workflow_gate.code="huge_file_modularization_required"` result is the bounded exception: stop normal feature editing for that file and follow the mechanical modularization workflow. The MCP still does not control host execution.
|
|
101
|
+
Repeat preflight only if the planned scope materially changes.
|
|
80
102
|
|
|
81
103
|
If a tool output includes `project_context_advisory` / `cross_project_reference`, treat that project as a separate context. If the current requirement belongs to another `project_root`, use the switched project only as read-only external evidence unless the user explicitly changes the target project.
|
|
82
104
|
|
|
@@ -84,22 +106,42 @@ If a tool output includes `project_context_advisory` / `cross_project_reference`
|
|
|
84
106
|
|
|
85
107
|
If any VectorMind tool returns `huge_file_modularization_required`:
|
|
86
108
|
|
|
87
|
-
1. Stop normal feature
|
|
88
|
-
2. Call `plan_large_file_split({ project_root, file })
|
|
89
|
-
3.
|
|
90
|
-
4.
|
|
91
|
-
5.
|
|
109
|
+
1. Stop normal feature editing for that file.
|
|
110
|
+
2. Call `plan_large_file_split({ project_root, req_id?, goal_key?, file })`, passing the selected requirement identity when tasks may overlap. Preserve the returned `plan_id`; the plan is persisted with declaration coverage, a true source-content SHA-256, and a fingerprint of the effective planning boundaries.
|
|
111
|
+
3. If heuristic planning returns `needs_refinement`, call `plan_large_file_split` again with semantic `module_overrides` using declaration names or line ranges. Overrides must assign every detected declaration exactly once, stay under the target directory, and satisfy the fixed safety ceilings. The refined plan supersedes the failed plan; do not record progress against `needs_refinement`.
|
|
112
|
+
4. Rerun preflight with `change_mode="mechanical_modularization"` and `split_plan_id` (or `split_plan_ids` for multiple huge files). Only a complete plan whose source state still matches satisfies the gate.
|
|
113
|
+
5. Perform mechanical modularization with real module names/directories. Keep the split attached to the current requirement; do not start a second requirement unless parent/child lifecycle is explicitly supported.
|
|
114
|
+
6. Never create `*.generated.*`, `.parts`, `*.rs.parts`, or `part1/part2` fake split files.
|
|
115
|
+
7. Use `record_large_file_split({ project_root, req_id?, goal_key?, plan_id, ... })` to update the same persisted plan when work is in progress, partial, or resolved. Status transitions are monotonic (`planned -> in_progress|partial|resolved`, `in_progress -> partial|resolved`, `partial -> in_progress|resolved`); submitted module paths must exist. Resolved status requires real module paths, a reduced source file, verification evidence, and no verification gaps.
|
|
116
|
+
|
|
117
|
+
A minimal bugfix may use `change_mode="bugfix"` with `adds_responsibility=false` and a concrete `defer_split_reason` without first expanding the task into a full split plan. This channel must not add new responsibilities. Include `large_file_split_deferrals: [{ file, reason }]` in the final `sync_change_intent` so the debt remains durable; each deferred file must be part of that sync and must still be huge or have an unfinished split plan. `emergency_hotfix` uses the same durable deferral record and is reserved for urgent minimal fixes. Completing a requirement automatically marks any unfinished split plans `deferred` so stale plans do not remain active context.
|
|
92
118
|
|
|
93
119
|
### 4. After editing
|
|
94
120
|
|
|
95
|
-
Call:
|
|
121
|
+
Call once after editing:
|
|
96
122
|
|
|
97
123
|
```text
|
|
98
|
-
|
|
99
|
-
sync_change_intent({ project_root, intent, files? })
|
|
124
|
+
sync_change_intent({ project_root, req_id?, goal_key?, intent, files })
|
|
100
125
|
```
|
|
101
126
|
|
|
102
|
-
The intent should say what changed, why, and any follow-up.
|
|
127
|
+
The intent should say what changed, why, and any follow-up. Include `large_file_split_deferrals` when a minimal bugfix or emergency hotfix deferred a huge-file split. Call `get_pending_changes({ project_root })` first only when the changed file list is unknown or an explicit scope audit is needed.
|
|
128
|
+
|
|
129
|
+
If later verification produces stronger evidence after a requirement was completed, do not reopen it only to rewrite history. Update the latest linked change intent with:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
update_requirement_verification({
|
|
133
|
+
project_root,
|
|
134
|
+
req_id?,
|
|
135
|
+
goal_key?,
|
|
136
|
+
verification?,
|
|
137
|
+
verification_gaps?,
|
|
138
|
+
resolved_verification_gaps?,
|
|
139
|
+
replace_verification?,
|
|
140
|
+
replace_verification_gaps?
|
|
141
|
+
})
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
The tool accepts active or completed requirements, rejects superseded requirements, and writes a linked `verification_update` audit record. Verification entries merge by default; verification gaps are authoritative replacement data by default so a later passing test run can clear stale gaps.
|
|
103
145
|
|
|
104
146
|
If the edit fixed a known recurring class of defect and the root cause is clear, you may include `fix_pattern` in `sync_change_intent`:
|
|
105
147
|
|
|
@@ -135,10 +177,10 @@ For durable context:
|
|
|
135
177
|
|
|
136
178
|
## Code search and reading
|
|
137
179
|
|
|
138
|
-
- Use `query_codebase({ project_root, query })`
|
|
139
|
-
- Use `
|
|
140
|
-
-
|
|
141
|
-
-
|
|
180
|
+
- Use `query_codebase({ project_root, query })` when symbol/code location is unknown.
|
|
181
|
+
- Use `semantic_search(...)` for historical requirements, decisions, notes, code chunks, and docs.
|
|
182
|
+
- Native bounded `rg`, `git`, and host file tools are valid for known paths and exact repository reads. Do not route every search or file read through VectorMind.
|
|
183
|
+
- Batch related reads/searches instead of creating one model round trip per file or pattern.
|
|
142
184
|
- Use `memory_timeline(...)` to understand the order of related requirements, decisions, notes, and changes.
|
|
143
185
|
- Use `read_memory_item(...)` for full text only when needed.
|
|
144
186
|
|
|
@@ -157,6 +199,23 @@ For low-risk diagnosis, use `memory_quality_report(...)`, `analyze_memory_confli
|
|
|
157
199
|
- Summarize active requirement, key warnings, changed files, validation, and next step.
|
|
158
200
|
- VectorMind defines development memory and quality workflow only. It does not manage client runtime controls.
|
|
159
201
|
|
|
202
|
+
## Host output budget
|
|
203
|
+
|
|
204
|
+
- Keep a normal standalone command at or below 4000 output tokens.
|
|
205
|
+
- Run at most 4 commands in parallel, each at most 4000, with the batch's combined requested budget at or below 12000.
|
|
206
|
+
- A failing diagnostic that cannot be narrowed may run alone with up to 12000. Use up to 20000 only when the user explicitly asks for raw output; never request routine 30000/40000 outputs.
|
|
207
|
+
- After 12 shell commands in one user turn, synthesize and stop broad exploration. Do not exceed 24 host commands in one user turn, excluding polls.
|
|
208
|
+
- Exclude dependency, generated, cache, and build trees from recursive discovery, including `node_modules`, `target`, `dist`, `build`, `bin`, `obj`, and `.git`.
|
|
209
|
+
- Locate first, then read bounded ranges of about 250 lines from large implementation files.
|
|
210
|
+
- If one result exceeds 8000 tokens, narrow or paginate the next read and do not follow it with another broad result.
|
|
211
|
+
|
|
212
|
+
## RTK policy
|
|
213
|
+
|
|
214
|
+
- Detect RTK at most once per session.
|
|
215
|
+
- Use RTK only for supported external CLIs when summarized output is acceptable.
|
|
216
|
+
- Never prefix PowerShell cmdlets such as `Get-Content`, `Get-ChildItem`, `Select-Object`, or `Test-Path` directly.
|
|
217
|
+
- Use `rtk proxy` for exact logs, JSON, failing diagnostics, or a PowerShell command host.
|
|
218
|
+
|
|
160
219
|
## Troubleshooting
|
|
161
220
|
|
|
162
221
|
- Skills are loaded when the client starts. Restart the client after installing/updating this skill.
|
|
@@ -6,31 +6,32 @@ Use VectorMind as evidence and workflow guardrails, not as a replacement for mod
|
|
|
6
6
|
|
|
7
7
|
Always pass `project_root` on every VectorMind tool call.
|
|
8
8
|
|
|
9
|
+
Seeing VectorMind in the available tool list is not enough. When its tools are available and historical context can help, call the focused bootstrap once before broad repository exploration. If tools are unavailable, make at most one bounded discovery attempt and continue with native tools. Pure execution with explicit targets may skip bootstrap.
|
|
10
|
+
|
|
9
11
|
## Required workflow
|
|
10
12
|
|
|
11
13
|
1. At the start of a new chat or when resuming:
|
|
12
|
-
- Call `bootstrap_context({ project_root, query, top_k:
|
|
13
|
-
- Use returned `current_constraints` as compact evidence of
|
|
14
|
+
- Call `bootstrap_context({ project_root, query, top_k: 3, context_mode: "focused", max_output_chars: 6000 })` at most once per project goal when historical context is needed.
|
|
15
|
+
- Use returned `current_constraints` and the active requirement anchor as compact evidence. If no memory passes focused filtering, continue from repository facts instead of using an unrelated fallback.
|
|
14
16
|
- Treat `quality_signals.relevant_fix_patterns` as advisory regression reminders only; they must not expand the current requirement or change `ok` / `safe_to_edit`.
|
|
15
17
|
- Before concrete operation commands where stale defaults could matter, call `preflight_operation_scope({ project_root, operation, intent, commands?, files?, targets?, script_hints? })`. Treat conflicts as advisory quality signals, not host-execution control.
|
|
16
18
|
|
|
17
19
|
2. Before editing:
|
|
18
|
-
- Call `start_requirement({ project_root, title, background })
|
|
20
|
+
- Call `start_requirement({ project_root, title, background })` once for a genuinely new requirement; preserve its `requirement.id` or `goal_key` and pass `req_id` or `goal_key` to later lifecycle calls when tasks may overlap. Reuse the active requirement for follow-ups, builds, retries, and validation.
|
|
19
21
|
- If the request has clear bullets, acceptance points, or numbered items, pass `requirement_items`.
|
|
20
|
-
- Then call `preflight_change_scope({ project_root, intent, files })` once target files/modules are known.
|
|
22
|
+
- Then call `preflight_change_scope({ project_root, req_id?, goal_key?, intent, files })` once target files/modules are known.
|
|
21
23
|
- For explicit requirements, pass `planned_changes` with `requirement_refs`; mark purely mechanical/test/build/formatting support as `supporting_change=true`.
|
|
22
|
-
- Treat `safe_to_edit=false` as
|
|
24
|
+
- Treat ordinary `safe_to_edit=false` findings as pre-edit scope warnings, not reasoning overrides. `workflow_gate.code="huge_file_modularization_required"` is the bounded exception requiring mechanical modularization before normal feature editing continues.
|
|
23
25
|
- If a tool output includes `project_context_advisory` / `cross_project_reference`, treat that project as separate context. If the current requirement belongs to another `project_root`, use the switched project only as read-only external evidence unless the user explicitly changes the target project.
|
|
24
26
|
|
|
25
27
|
3. If a huge-file warning appears:
|
|
26
|
-
- Call `plan_large_file_split({ project_root, file })`.
|
|
27
|
-
- Do mechanical modularization with real module names/directories.
|
|
28
|
+
- Call `plan_large_file_split({ project_root, req_id?, goal_key?, file })`, preserve its persisted `plan_id`, and rerun preflight with `change_mode="mechanical_modularization"` plus `split_plan_id`/`split_plan_ids`.
|
|
29
|
+
- Do mechanical modularization with real module names/directories while keeping it attached to the current requirement.
|
|
28
30
|
- Never create generated/parts/partN fake split files.
|
|
29
|
-
- Call `record_large_file_split(...)`.
|
|
31
|
+
- Call `record_large_file_split({ project_root, req_id?, goal_key?, plan_id, ... })` to update the same plan. Resolved status requires real module paths, reduced source/module lines, verification evidence, and no gaps. Minimal bugfixes may defer planning only with `adds_responsibility=false` and `defer_split_reason`, persisted through final `sync_change_intent.large_file_split_deferrals`.
|
|
30
32
|
|
|
31
33
|
4. After editing:
|
|
32
|
-
- Call `get_pending_changes({ project_root })
|
|
33
|
-
- Call `sync_change_intent({ project_root, intent, files? })`.
|
|
34
|
+
- Call `sync_change_intent({ project_root, req_id?, goal_key?, intent, files })` once. Use `get_pending_changes({ project_root })` only when the changed file set is unknown or scope drift must be diagnosed.
|
|
34
35
|
- If a known recurring defect class was fixed and the root cause is clear, optionally include a generic `fix_pattern`; VectorMind does not infer fix patterns automatically.
|
|
35
36
|
|
|
36
37
|
5. If newer decisions override older behavior:
|
|
@@ -42,7 +43,9 @@ Always pass `project_root` on every VectorMind tool call.
|
|
|
42
43
|
- Call `complete_requirement(...)` when done.
|
|
43
44
|
- Use `analyze_memory_conflicts(...)`, `memory_quality_report(...)`, or `compare_checkpoint_context(...)` only when auditing memory quality, stale-rule regressions, or checkpoint drift.
|
|
44
45
|
|
|
45
|
-
Use `query_codebase`, `
|
|
46
|
+
Use `query_codebase`, `semantic_search`, and `memory_timeline` when historical or unknown-location evidence is needed. For known paths and exact repository reads, native bounded search/file tools are valid; batch related reads instead of routing every file through MCP.
|
|
47
|
+
|
|
48
|
+
Keep a normal standalone command at or below 4000 output tokens. A parallel batch may contain at most 4 commands, each at most 4000, with a combined requested budget at or below 12000. A failing diagnostic that cannot be narrowed may run alone with up to 12000; use 20000 only when the user explicitly requests raw output. After 12 shell commands in one user turn, synthesize and stop broad exploration; do not exceed 24 commands excluding polls. Exclude dependency/generated/cache/build trees from recursive discovery. Locate first, then read bounded ranges of about 250 lines. If one result exceeds 8000 tokens, narrow or paginate the next read.
|
|
46
49
|
|
|
47
50
|
Do not dump raw JSON unless asked.
|
|
48
51
|
|
|
@@ -14,35 +14,37 @@ Always pass `project_root` on every VectorMind tool call.
|
|
|
14
14
|
|
|
15
15
|
Do not rely on the MCP server process working directory. Some clients start MCP servers from unrelated folders.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Bounded development lifecycle
|
|
18
18
|
|
|
19
|
-
For code/design/debug/refactor tasks, follow
|
|
19
|
+
For code/design/debug/refactor tasks, target no more than four workflow calls: one focused bootstrap, one requirement start, one preflight, and one final sync. Do not repeat lifecycle calls for compaction, retries, builds, verification, or follow-ups under the same active requirement.
|
|
20
|
+
|
|
21
|
+
Seeing VectorMind in a tool or skill list is not enough: when its tools are available and historical context can help, call the focused bootstrap once before broad exploration. If tools are unavailable, make at most one bounded discovery attempt and continue with native tools. Pure execution with explicit targets may skip bootstrap.
|
|
20
22
|
|
|
21
23
|
1. **Start/resume**
|
|
22
|
-
- Call `bootstrap_context({ project_root, query, top_k:
|
|
23
|
-
- Use
|
|
24
|
+
- Call `bootstrap_context({ project_root, query, top_k: 3, context_mode: "focused", max_output_chars: 6000 })` at most once per project goal when historical context is needed.
|
|
25
|
+
- Use the project summary, active requirement anchor, and query-relevant matches to ground the plan. Focused mode deliberately omits completed broad recency and pending state; no relevant match is better than an unrelated fallback.
|
|
26
|
+
- Use `include_recent=true` or `context_mode="full"` only when recent cross-turn history is required. Use `include_pending=true` only for scope diagnosis.
|
|
24
27
|
- Treat `quality_signals.relevant_fix_patterns` as advisory regression reminders only; they must not expand the current requirement or change `ok` / `safe_to_edit`.
|
|
25
28
|
- Before concrete operation commands where stale defaults could matter, call `preflight_operation_scope({ project_root, operation, intent, commands?, files?, targets?, script_hints? })`. Treat `stale_default_conflict` or `operation_constraint_conflict` as advisory quality signals, not host-execution control.
|
|
26
29
|
|
|
27
30
|
2. **Before editing**
|
|
28
|
-
- Call `start_requirement({ project_root, title, background })
|
|
31
|
+
- Call `start_requirement({ project_root, title, background })` once for a genuinely new requirement. Preserve the returned `requirement.id` or caller-provided `goal_key`; pass `req_id` or `goal_key` to later lifecycle calls whenever tasks may overlap. Continue the active requirement for follow-ups, retries, builds, and validation.
|
|
29
32
|
- For narrow work, pass `scope_allow`, `scope_deny`, `allowed_paths`, or `denied_paths` when useful.
|
|
30
33
|
- If the user request has clear bullets, acceptance points, or numbered items, pass `requirement_items`.
|
|
31
|
-
- Once target
|
|
34
|
+
- Once the complete target file/module set is known, call `preflight_change_scope({ project_root, req_id?, goal_key?, intent, files })` once. Repeat only if scope materially changes.
|
|
32
35
|
- For explicit requirements, pass `planned_changes` with `requirement_refs`; mark purely mechanical/test/build/formatting support as `supporting_change=true`.
|
|
33
|
-
- Treat `safe_to_edit=false` as
|
|
36
|
+
- Treat ordinary `safe_to_edit=false` findings as pre-edit scope warnings, not reasoning overrides. `workflow_gate.code="huge_file_modularization_required"` is the bounded exception: stop normal feature editing for that file and follow the mechanical modularization workflow.
|
|
34
37
|
- If a tool output includes `project_context_advisory` / `cross_project_reference`, treat that project as separate context. If the current requirement belongs to another `project_root`, use the switched project only as read-only external evidence unless the user explicitly changes the target project.
|
|
35
38
|
|
|
36
39
|
3. **Huge files**
|
|
37
|
-
- If
|
|
38
|
-
- Call `plan_large_file_split({ project_root, file })`.
|
|
39
|
-
- Perform mechanical modularization with real module names/directories.
|
|
40
|
+
- If a tool returns `huge_file_modularization_required`, stop normal feature editing for that file.
|
|
41
|
+
- Call `plan_large_file_split({ project_root, req_id?, goal_key?, file })`, preserve its persisted `plan_id`, and rerun preflight with `change_mode="mechanical_modularization"` plus `split_plan_id`/`split_plan_ids`. Keep the split attached to the current requirement.
|
|
40
42
|
- Never create `*.generated.*`, `.parts`, `*.rs.parts`, or `part1/part2` fake split files.
|
|
41
|
-
- Call `record_large_file_split(...)`
|
|
43
|
+
- Call `record_large_file_split({ project_root, req_id?, goal_key?, plan_id, ... })` to update that same plan. Resolved status requires real module paths, reduced source/module lines, verification evidence, and no gaps. A minimal `bugfix` may proceed without a full plan only with `adds_responsibility=false` and `defer_split_reason`; persist it in final `sync_change_intent.large_file_split_deferrals`. Emergency hotfixes use the same durable deferral record.
|
|
42
44
|
|
|
43
45
|
4. **After editing**
|
|
44
|
-
- Call `
|
|
45
|
-
- Call `
|
|
46
|
+
- Call `sync_change_intent({ project_root, req_id?, goal_key?, intent, files })` once with what changed and why.
|
|
47
|
+
- Call `get_pending_changes({ project_root })` first only when the changed file list is unknown or scope drift must be diagnosed.
|
|
46
48
|
- If a known recurring defect class was fixed and the root cause is clear, optionally include a generic `fix_pattern` with `symptom`, `root_cause`, `invariant`, `applies_when`, and `avoid_regression`. VectorMind does not infer fix patterns automatically.
|
|
47
49
|
|
|
48
50
|
5. **Decision changes**
|
|
@@ -58,9 +60,9 @@ For code/design/debug/refactor tasks, follow this chain:
|
|
|
58
60
|
|
|
59
61
|
## Search and reading
|
|
60
62
|
|
|
61
|
-
- Use `query_codebase({ project_root, query })`
|
|
62
|
-
-
|
|
63
|
-
-
|
|
63
|
+
- Use `query_codebase({ project_root, query })` when symbol location is unknown.
|
|
64
|
+
- Native bounded `rg`, `git`, and host file tools are valid for known paths and exact repository reads; do not route every read through MCP.
|
|
65
|
+
- Batch related searches and reads to reduce model round trips.
|
|
64
66
|
- Use `semantic_search(...)` for prior requirements, decisions, notes, code chunks, and docs.
|
|
65
67
|
- Use `memory_timeline(...)` to inspect what happened before/after related context.
|
|
66
68
|
- Use `read_memory_item(...)` for full text only when needed.
|
|
@@ -78,4 +80,10 @@ For low-risk diagnosis, use `memory_quality_report(...)`, `analyze_memory_confli
|
|
|
78
80
|
|
|
79
81
|
Do not dump raw JSON unless the user asks. Summarize the useful facts.
|
|
80
82
|
|
|
83
|
+
Keep a normal standalone command at or below 4000 output tokens. A parallel batch may contain at most 4 commands, each at most 4000, with a combined requested budget at or below 12000. A failing diagnostic that cannot be narrowed may run alone with up to 12000; use 20000 only when the user explicitly requests raw output. After 12 shell commands in one user turn, synthesize and stop broad exploration; do not exceed 24 commands excluding polls. Exclude dependency/generated/cache/build trees from recursive discovery. Locate first, then read bounded ranges of about 250 lines. If one result exceeds 8000 tokens, narrow or paginate the next read.
|
|
84
|
+
|
|
81
85
|
VectorMind only defines development memory and quality workflow. It does not manage client runtime controls. For long sessions, use `create_checkpoint(...)` and read back with `restore_checkpoint_context(...)`; restoring is read-only context, not a decision override.
|
|
86
|
+
|
|
87
|
+
## RTK
|
|
88
|
+
|
|
89
|
+
Detect RTK at most once. Use it selectively for supported external CLIs when summarized output is acceptable. Never prefix PowerShell cmdlets directly; use `rtk proxy` for exact logs, JSON, failing diagnostics, or a PowerShell command host.
|