@coreyuan/vector-mind 1.0.54 → 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.
Files changed (112) hide show
  1. package/README.md +99 -72
  2. package/admin-panel/README.md +77 -0
  3. package/admin-panel/dist/client/assets/index-Bzyjdhh2.css +1 -0
  4. package/admin-panel/dist/client/assets/index-Ph73ewzt.js +9 -0
  5. package/admin-panel/dist/client/index.html +14 -0
  6. package/admin-panel/package.json +25 -0
  7. package/admin-panel/server/index.mjs +1424 -0
  8. package/admin-panel/server/security.mjs +117 -0
  9. package/admin-panel/server/security.test.mjs +113 -0
  10. package/admin-panel/server/storage.mjs +49 -0
  11. package/admin-panel/server/storage.test.mjs +36 -0
  12. package/dist/checkpoint-snapshot.d.ts +56 -0
  13. package/dist/checkpoint-snapshot.js +411 -0
  14. package/dist/checkpoint-snapshot.js.map +1 -0
  15. package/dist/config.d.ts +1 -1
  16. package/dist/config.js +1 -1
  17. package/dist/config.js.map +1 -1
  18. package/dist/context-governance.d.ts +56 -0
  19. package/dist/context-governance.js +176 -0
  20. package/dist/context-governance.js.map +1 -0
  21. package/dist/database-runtime.d.ts +3 -1
  22. package/dist/database-runtime.js +232 -127
  23. package/dist/database-runtime.js.map +1 -1
  24. package/dist/development-warnings.d.ts +2 -1
  25. package/dist/development-warnings.js +90 -20
  26. package/dist/development-warnings.js.map +1 -1
  27. package/dist/file-indexing.d.ts +2 -1
  28. package/dist/file-indexing.js +127 -47
  29. package/dist/file-indexing.js.map +1 -1
  30. package/dist/grep.js +4 -0
  31. package/dist/grep.js.map +1 -1
  32. package/dist/index.js +5 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/large-file-split.d.ts +52 -8
  35. package/dist/large-file-split.js +290 -76
  36. package/dist/large-file-split.js.map +1 -1
  37. package/dist/memory-maintenance/compaction.js +3 -2
  38. package/dist/memory-maintenance/compaction.js.map +1 -1
  39. package/dist/memory-maintenance/metrics.d.ts +1 -1
  40. package/dist/memory-maintenance/metrics.js +11 -3
  41. package/dist/memory-maintenance/metrics.js.map +1 -1
  42. package/dist/memory-maintenance/purge.js +1 -1
  43. package/dist/memory-maintenance/purge.js.map +1 -1
  44. package/dist/memory-maintenance/runner.d.ts +1 -0
  45. package/dist/memory-maintenance/runner.js +15 -3
  46. package/dist/memory-maintenance/runner.js.map +1 -1
  47. package/dist/memory-maintenance/types.d.ts +1 -0
  48. package/dist/memory-mutations.d.ts +3 -3
  49. package/dist/memory-mutations.js +109 -43
  50. package/dist/memory-mutations.js.map +1 -1
  51. package/dist/memory-recall.js +16 -1
  52. package/dist/memory-recall.js.map +1 -1
  53. package/dist/operation-scope.js +42 -12
  54. package/dist/operation-scope.js.map +1 -1
  55. package/dist/path-containment.d.ts +5 -0
  56. package/dist/path-containment.js +64 -0
  57. package/dist/path-containment.js.map +1 -0
  58. package/dist/path-filters.d.ts +1 -1
  59. package/dist/path-filters.js +7 -6
  60. package/dist/path-filters.js.map +1 -1
  61. package/dist/pending-changes.d.ts +5 -0
  62. package/dist/pending-changes.js +26 -16
  63. package/dist/pending-changes.js.map +1 -1
  64. package/dist/project-files.d.ts +1 -0
  65. package/dist/project-files.js +19 -10
  66. package/dist/project-files.js.map +1 -1
  67. package/dist/root.d.ts +4 -1
  68. package/dist/root.js +34 -4
  69. package/dist/root.js.map +1 -1
  70. package/dist/rtk-integrity.d.ts +5 -0
  71. package/dist/rtk-integrity.js +35 -0
  72. package/dist/rtk-integrity.js.map +1 -0
  73. package/dist/rtk-shim.js +22 -9
  74. package/dist/rtk-shim.js.map +1 -1
  75. package/dist/rtk-tools.d.ts +8 -0
  76. package/dist/rtk-tools.js +59 -42
  77. package/dist/rtk-tools.js.map +1 -1
  78. package/dist/server-instructions.js +8 -88
  79. package/dist/server-instructions.js.map +1 -1
  80. package/dist/tool-catalog.d.ts +2 -0
  81. package/dist/tool-catalog.js +76 -23
  82. package/dist/tool-catalog.js.map +1 -1
  83. package/dist/tool-handlers/context-recovery.js +79 -54
  84. package/dist/tool-handlers/context-recovery.js.map +1 -1
  85. package/dist/tool-handlers/large-files.js +600 -44
  86. package/dist/tool-handlers/large-files.js.map +1 -1
  87. package/dist/tool-handlers/memory-diagnostics.js +240 -45
  88. package/dist/tool-handlers/memory-diagnostics.js.map +1 -1
  89. package/dist/tool-handlers/memory.js +167 -22
  90. package/dist/tool-handlers/memory.js.map +1 -1
  91. package/dist/tool-handlers/operations.js +28 -8
  92. package/dist/tool-handlers/operations.js.map +1 -1
  93. package/dist/tool-handlers/requirement-status.d.ts +5 -0
  94. package/dist/tool-handlers/requirement-status.js +267 -0
  95. package/dist/tool-handlers/requirement-status.js.map +1 -0
  96. package/dist/tool-handlers/requirements.js +786 -97
  97. package/dist/tool-handlers/requirements.js.map +1 -1
  98. package/dist/tool-handlers.d.ts +4 -0
  99. package/dist/tool-handlers.js +183 -10
  100. package/dist/tool-handlers.js.map +1 -1
  101. package/dist/tool-output.d.ts +32 -1
  102. package/dist/tool-output.js +31 -12
  103. package/dist/tool-output.js.map +1 -1
  104. package/dist/tool-schemas.d.ts +235 -0
  105. package/dist/tool-schemas.js +98 -26
  106. package/dist/tool-schemas.js.map +1 -1
  107. package/dist/types.d.ts +1 -0
  108. package/docs/capability-matrix.md +23 -17
  109. package/package.json +19 -6
  110. package/skills/vector-mind-autopilot/SKILL.md +82 -23
  111. package/skills/vector-mind-autopilot/references/claude-project-instructions.md +14 -11
  112. package/skills/vector-mind-autopilot/references/universal-system-prompt.md +24 -16
@@ -0,0 +1,267 @@
1
+ import { GetRequirementStatusArgsSchema, ResumeRequirementArgsSchema, UpdateRequirementVerificationArgsSchema } from "../tool-schemas.js";
2
+ import { parseMetadataJson } from "../memory-recall.js";
3
+ import { logActivity } from "../activity-log.js";
4
+ import { safeJson, toolJson } from "../tool-output.js";
5
+ function sortedUniqueStrings(values) {
6
+ return Array.from(new Set(values.map((value) => value.trim()).filter(Boolean))).sort((left, right) => left.localeCompare(right));
7
+ }
8
+ function resolveRequirement(context, args) {
9
+ if (args.req_id) {
10
+ return context.getDb().prepare(`SELECT id, title, status, context_data, goal_key, created_at, updated_at
11
+ FROM requirements WHERE id = ? LIMIT 1`).get(args.req_id);
12
+ }
13
+ if (args.goal_key?.trim()) {
14
+ return context.getDb().prepare(`SELECT id, title, status, context_data, goal_key, created_at, updated_at
15
+ FROM requirements WHERE goal_key = ?
16
+ ORDER BY CASE status WHEN 'active' THEN 0 ELSE 1 END, updated_at DESC, id DESC
17
+ LIMIT 1`).get(args.goal_key.trim());
18
+ }
19
+ return undefined;
20
+ }
21
+ function missingSelector() {
22
+ return {
23
+ isError: true,
24
+ content: [{ type: "text", text: toolJson({
25
+ ok: false,
26
+ code: "REQUIREMENT_SELECTOR_REQUIRED",
27
+ error: "Pass req_id or goal_key.",
28
+ }) }],
29
+ };
30
+ }
31
+ export async function handleGetRequirementStatus(rawArgs, context) {
32
+ const args = GetRequirementStatusArgsSchema.parse(rawArgs);
33
+ if (!args.req_id && !args.goal_key?.trim())
34
+ return missingSelector();
35
+ const requirement = resolveRequirement(context, args);
36
+ const activeCount = Number(context.getDb().prepare(`SELECT COUNT(*) AS count FROM requirements WHERE status = 'active'`).get()?.count ?? 0);
37
+ if (!requirement) {
38
+ return {
39
+ isError: true,
40
+ content: [{ type: "text", text: toolJson({
41
+ ok: false,
42
+ code: "REQUIREMENT_NOT_FOUND_IN_PROJECT",
43
+ error: "No requirement matched the requested identity in this project root.",
44
+ project_root: context.getProjectRoot(),
45
+ requested: { req_id: args.req_id ?? null, goal_key: args.goal_key?.trim() || null },
46
+ active_count: activeCount,
47
+ }) }],
48
+ };
49
+ }
50
+ const memoryRow = context.getDb().prepare(`SELECT metadata_json FROM memory_items WHERE kind = 'requirement' AND req_id = ? ORDER BY id DESC LIMIT 1`).get(requirement.id);
51
+ const memoryStatus = memoryRow ? String(parseMetadataJson(memoryRow.metadata_json).status ?? "") : "";
52
+ return {
53
+ content: [{ type: "text", text: toolJson({
54
+ ok: true,
55
+ project_root: context.getProjectRoot(),
56
+ requirement: {
57
+ id: requirement.id,
58
+ title: requirement.title,
59
+ goal_key: requirement.goal_key,
60
+ status: requirement.status,
61
+ memory_status: memoryStatus || null,
62
+ created_at: requirement.created_at,
63
+ updated_at: requirement.updated_at ?? null,
64
+ },
65
+ resumable: requirement.status === "completed",
66
+ active_count: activeCount,
67
+ }) }],
68
+ };
69
+ }
70
+ export async function handleResumeRequirement(rawArgs, context) {
71
+ const args = ResumeRequirementArgsSchema.parse(rawArgs);
72
+ if (!args.req_id && !args.goal_key?.trim())
73
+ return missingSelector();
74
+ const requirement = resolveRequirement(context, args);
75
+ if (!requirement) {
76
+ return {
77
+ isError: true,
78
+ content: [{ type: "text", text: toolJson({
79
+ ok: false,
80
+ code: "REQUIREMENT_NOT_FOUND_IN_PROJECT",
81
+ error: "No requirement matched the requested identity in this project root.",
82
+ project_root: context.getProjectRoot(),
83
+ }) }],
84
+ };
85
+ }
86
+ if (requirement.status === "active") {
87
+ return { content: [{ type: "text", text: toolJson({
88
+ ok: true,
89
+ requirement: { id: requirement.id, title: requirement.title, goal_key: requirement.goal_key, status: "active" },
90
+ resumed: false,
91
+ reused_active: true,
92
+ }) }] };
93
+ }
94
+ if (requirement.status !== "completed") {
95
+ return {
96
+ isError: true,
97
+ content: [{ type: "text", text: toolJson({
98
+ ok: false,
99
+ code: requirement.status === "superseded"
100
+ ? "REQUIREMENT_SUPERSEDED"
101
+ : "REQUIREMENT_NOT_RESUMABLE",
102
+ error: requirement.status === "superseded"
103
+ ? "Superseded requirements cannot be resumed. Start a replacement requirement instead."
104
+ : `Requirement status ${requirement.status} is not resumable.`,
105
+ requirement: { id: requirement.id, goal_key: requirement.goal_key, status: requirement.status },
106
+ }) }],
107
+ };
108
+ }
109
+ const db = context.getDb();
110
+ try {
111
+ db.transaction(() => {
112
+ const updated = db.prepare(`UPDATE requirements
113
+ SET status = 'active', updated_at = CURRENT_TIMESTAMP
114
+ WHERE id = ? AND status = 'completed'`).run(requirement.id);
115
+ if (updated.changes !== 1)
116
+ throw new Error("requirement status changed before resume");
117
+ const memory = db.prepare(`SELECT id, metadata_json FROM memory_items WHERE kind = 'requirement' AND req_id = ? ORDER BY id DESC LIMIT 1`).get(requirement.id);
118
+ if (memory) {
119
+ const metadata = { ...parseMetadataJson(memory.metadata_json), status: "active", resumed_at: new Date().toISOString() };
120
+ db.prepare(`UPDATE memory_items SET metadata_json = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?`)
121
+ .run(JSON.stringify(metadata), memory.id);
122
+ }
123
+ })();
124
+ }
125
+ catch (err) {
126
+ return {
127
+ isError: true,
128
+ content: [{ type: "text", text: toolJson({
129
+ ok: false,
130
+ code: "REQUIREMENT_RESUME_FAILED",
131
+ error: String(err),
132
+ requirement: { id: requirement.id, goal_key: requirement.goal_key },
133
+ }) }],
134
+ };
135
+ }
136
+ logActivity("resume_requirement", { req_id: requirement.id, goal_key: requirement.goal_key });
137
+ return { content: [{ type: "text", text: toolJson({
138
+ ok: true,
139
+ requirement: { id: requirement.id, title: requirement.title, goal_key: requirement.goal_key, status: "active" },
140
+ resumed: true,
141
+ }) }] };
142
+ }
143
+ export async function handleUpdateRequirementVerification(rawArgs, context) {
144
+ const args = UpdateRequirementVerificationArgsSchema.parse(rawArgs);
145
+ if (!args.req_id && !args.goal_key?.trim())
146
+ return missingSelector();
147
+ if (args.verification === undefined && args.verification_gaps === undefined &&
148
+ args.resolved_verification_gaps === undefined) {
149
+ return {
150
+ isError: true,
151
+ content: [{ type: "text", text: toolJson({
152
+ ok: false,
153
+ code: "VERIFICATION_EVIDENCE_REQUIRED",
154
+ error: "Pass verification, verification_gaps, or resolved_verification_gaps.",
155
+ }) }],
156
+ };
157
+ }
158
+ const db = context.getDb();
159
+ try {
160
+ const update = db.transaction(() => {
161
+ const requirement = resolveRequirement(context, args);
162
+ if (!requirement) {
163
+ return { ok: false, code: "REQUIREMENT_NOT_FOUND_IN_PROJECT", error: "No requirement matched the requested identity in this project root." };
164
+ }
165
+ if (requirement.status === "superseded") {
166
+ return { ok: false, code: "REQUIREMENT_SUPERSEDED", error: "Superseded requirements cannot accept verification updates." };
167
+ }
168
+ if (requirement.status !== "active" && requirement.status !== "completed") {
169
+ return { ok: false, code: "REQUIREMENT_NOT_WRITABLE", error: `Requirement status ${requirement.status} cannot accept verification updates.` };
170
+ }
171
+ const change = db.prepare(`SELECT id, title, content, metadata_json
172
+ FROM memory_items
173
+ WHERE kind = 'change_intent' AND req_id = ?
174
+ ORDER BY updated_at DESC, id DESC
175
+ LIMIT 1`).get(requirement.id);
176
+ if (!change) {
177
+ return { ok: false, code: "CHANGE_INTENT_NOT_FOUND", error: "No change_intent exists for this requirement. Sync the change intent before recording verification." };
178
+ }
179
+ const previousMetadata = parseMetadataJson(change.metadata_json);
180
+ const previousVerification = Array.isArray(previousMetadata.verification)
181
+ ? previousMetadata.verification.filter((value) => typeof value === "string")
182
+ : [];
183
+ const previousGaps = Array.isArray(previousMetadata.verification_gaps)
184
+ ? previousMetadata.verification_gaps.filter((value) => typeof value === "string")
185
+ : [];
186
+ const suppliedVerification = sortedUniqueStrings(args.verification ?? []);
187
+ const suppliedGaps = sortedUniqueStrings(args.verification_gaps ?? []);
188
+ const resolvedGaps = new Set(sortedUniqueStrings(args.resolved_verification_gaps ?? []));
189
+ const verification = args.replace_verification
190
+ ? suppliedVerification
191
+ : sortedUniqueStrings([...previousVerification, ...suppliedVerification]);
192
+ const gapBase = args.verification_gaps !== undefined && args.replace_verification_gaps
193
+ ? suppliedGaps
194
+ : sortedUniqueStrings([...previousGaps, ...suppliedGaps]);
195
+ const verificationGaps = gapBase.filter((gap) => !resolvedGaps.has(gap));
196
+ const updatedAt = new Date().toISOString();
197
+ const updateContent = safeJson({
198
+ requirement_id: requirement.id,
199
+ change_intent_memory_id: change.id,
200
+ verification,
201
+ verification_gaps: verificationGaps,
202
+ resolved_verification_gaps: Array.from(resolvedGaps),
203
+ updated_at: updatedAt,
204
+ }) ?? "{}";
205
+ const updateMetadata = safeJson({
206
+ status: "recorded",
207
+ source_change_intent_id: change.id,
208
+ requirement_status: requirement.status,
209
+ verification,
210
+ verification_gaps: verificationGaps,
211
+ resolved_verification_gaps: Array.from(resolvedGaps),
212
+ updated_at: updatedAt,
213
+ });
214
+ const updateInfo = context.getStatements().insertMemoryItemStmt.run("verification_update", `Verification update: ${requirement.title}`, updateContent, null, null, null, requirement.id, updateMetadata, context.sha256Hex(updateContent));
215
+ const verificationUpdateId = Number(updateInfo.lastInsertRowid);
216
+ const nextMetadata = safeJson({
217
+ ...previousMetadata,
218
+ verification,
219
+ verification_gaps: verificationGaps,
220
+ verification_updated_at: updatedAt,
221
+ latest_verification_update_id: verificationUpdateId,
222
+ });
223
+ const changed = db.prepare(`UPDATE memory_items
224
+ SET metadata_json = ?, updated_at = CURRENT_TIMESTAMP
225
+ WHERE id = ? AND kind = 'change_intent' AND req_id = ?`).run(nextMetadata, change.id, requirement.id);
226
+ if (changed.changes !== 1)
227
+ throw new Error("change_intent changed before verification update");
228
+ const touched = db.prepare(`UPDATE requirements SET updated_at = CURRENT_TIMESTAMP
229
+ WHERE id = ? AND status IN ('active', 'completed')`).run(requirement.id);
230
+ if (touched.changes !== 1)
231
+ throw new Error("requirement status changed before verification update");
232
+ return {
233
+ ok: true,
234
+ requirement: { id: requirement.id, title: requirement.title, status: requirement.status },
235
+ change_intent_memory_id: change.id,
236
+ verification_update_memory_id: verificationUpdateId,
237
+ previous_verification: sortedUniqueStrings(previousVerification),
238
+ previous_verification_gaps: sortedUniqueStrings(previousGaps),
239
+ verification,
240
+ verification_gaps: verificationGaps,
241
+ resolved_verification_gaps: Array.from(resolvedGaps),
242
+ };
243
+ }).immediate();
244
+ if (!update.ok) {
245
+ return { isError: true, content: [{ type: "text", text: toolJson({ ...update, project_root: context.getProjectRoot() }) }] };
246
+ }
247
+ logActivity("update_requirement_verification", {
248
+ req_id: update.requirement.id,
249
+ change_intent_memory_id: update.change_intent_memory_id,
250
+ verification_update_memory_id: update.verification_update_memory_id,
251
+ verification: update.verification.length,
252
+ verification_gaps: update.verification_gaps.length,
253
+ });
254
+ return { content: [{ type: "text", text: toolJson({ ...update, project_root: context.getProjectRoot() }) }] };
255
+ }
256
+ catch (err) {
257
+ return {
258
+ isError: true,
259
+ content: [{ type: "text", text: toolJson({
260
+ ok: false,
261
+ code: "VERIFICATION_UPDATE_FAILED",
262
+ error: String(err),
263
+ }) }],
264
+ };
265
+ }
266
+ }
267
+ //# sourceMappingURL=requirement-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement-status.js","sourceRoot":"","sources":["../../src/tool-handlers/requirement-status.ts"],"names":[],"mappings":"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"}