@coreyuan/vector-mind 1.0.52 → 1.0.54

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 (91) hide show
  1. package/README.md +14 -15
  2. package/dist/builtin-conventions.js +1 -1
  3. package/dist/builtin-conventions.js.map +1 -1
  4. package/dist/builtin-instructions.d.ts +1 -1
  5. package/dist/builtin-instructions.js +1 -1
  6. package/dist/builtin-instructions.js.map +1 -1
  7. package/dist/config.d.ts +4 -1
  8. package/dist/config.js +25 -1
  9. package/dist/config.js.map +1 -1
  10. package/dist/database-runtime.d.ts +3 -0
  11. package/dist/database-runtime.js +342 -19
  12. package/dist/database-runtime.js.map +1 -1
  13. package/dist/development-warnings.js +2 -2
  14. package/dist/development-warnings.js.map +1 -1
  15. package/dist/fix-patterns.d.ts +58 -0
  16. package/dist/fix-patterns.js +347 -0
  17. package/dist/fix-patterns.js.map +1 -0
  18. package/dist/index.js +3 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/large-file-split.d.ts +1 -0
  21. package/dist/large-file-split.js +8 -3
  22. package/dist/large-file-split.js.map +1 -1
  23. package/dist/memory-maintenance/compaction.d.ts +7 -0
  24. package/dist/memory-maintenance/compaction.js +132 -0
  25. package/dist/memory-maintenance/compaction.js.map +1 -0
  26. package/dist/memory-maintenance/context.d.ts +37 -0
  27. package/dist/memory-maintenance/context.js +52 -0
  28. package/dist/memory-maintenance/context.js.map +1 -0
  29. package/dist/memory-maintenance/index-prune.d.ts +22 -0
  30. package/dist/memory-maintenance/index-prune.js +243 -0
  31. package/dist/memory-maintenance/index-prune.js.map +1 -0
  32. package/dist/memory-maintenance/metrics.d.ts +5 -0
  33. package/dist/memory-maintenance/metrics.js +22 -0
  34. package/dist/memory-maintenance/metrics.js.map +1 -0
  35. package/dist/memory-maintenance/pending.d.ts +4 -0
  36. package/dist/memory-maintenance/pending.js +74 -0
  37. package/dist/memory-maintenance/pending.js.map +1 -0
  38. package/dist/memory-maintenance/purge.d.ts +7 -0
  39. package/dist/memory-maintenance/purge.js +115 -0
  40. package/dist/memory-maintenance/purge.js.map +1 -0
  41. package/dist/memory-maintenance/runner.d.ts +4 -0
  42. package/dist/memory-maintenance/runner.js +170 -0
  43. package/dist/memory-maintenance/runner.js.map +1 -0
  44. package/dist/memory-maintenance/sqlite.d.ts +10 -0
  45. package/dist/memory-maintenance/sqlite.js +67 -0
  46. package/dist/memory-maintenance/sqlite.js.map +1 -0
  47. package/dist/memory-maintenance/types.d.ts +86 -0
  48. package/dist/memory-maintenance/types.js +2 -0
  49. package/dist/memory-maintenance/types.js.map +1 -0
  50. package/dist/memory-maintenance.d.ts +5 -80
  51. package/dist/memory-maintenance.js +3 -536
  52. package/dist/memory-maintenance.js.map +1 -1
  53. package/dist/memory-recall.d.ts +3 -1
  54. package/dist/memory-recall.js +22 -0
  55. package/dist/memory-recall.js.map +1 -1
  56. package/dist/operation-scope.d.ts +63 -0
  57. package/dist/operation-scope.js +438 -0
  58. package/dist/operation-scope.js.map +1 -0
  59. package/dist/path-rules.d.ts +1 -0
  60. package/dist/path-rules.js +23 -1
  61. package/dist/path-rules.js.map +1 -1
  62. package/dist/pending-changes.js +4 -0
  63. package/dist/pending-changes.js.map +1 -1
  64. package/dist/server-instructions.js +5 -1
  65. package/dist/server-instructions.js.map +1 -1
  66. package/dist/tool-catalog.js +13 -7
  67. package/dist/tool-catalog.js.map +1 -1
  68. package/dist/tool-handlers/large-files.js +19 -1
  69. package/dist/tool-handlers/large-files.js.map +1 -1
  70. package/dist/tool-handlers/memory-diagnostics.js +53 -4
  71. package/dist/tool-handlers/memory-diagnostics.js.map +1 -1
  72. package/dist/tool-handlers/memory.js +20 -2
  73. package/dist/tool-handlers/memory.js.map +1 -1
  74. package/dist/tool-handlers/operations.d.ts +4 -0
  75. package/dist/tool-handlers/operations.js +62 -0
  76. package/dist/tool-handlers/operations.js.map +1 -0
  77. package/dist/tool-handlers/requirements.js +106 -17
  78. package/dist/tool-handlers/requirements.js.map +1 -1
  79. package/dist/tool-handlers.js +263 -1
  80. package/dist/tool-handlers.js.map +1 -1
  81. package/dist/tool-output.d.ts +92 -1
  82. package/dist/tool-output.js +76 -2
  83. package/dist/tool-output.js.map +1 -1
  84. package/dist/tool-schemas.d.ts +34 -0
  85. package/dist/tool-schemas.js +37 -1
  86. package/dist/tool-schemas.js.map +1 -1
  87. package/dist/types.d.ts +9 -1
  88. package/package.json +4 -1
  89. package/skills/vector-mind-autopilot/SKILL.md +24 -0
  90. package/skills/vector-mind-autopilot/references/claude-project-instructions.md +4 -0
  91. package/skills/vector-mind-autopilot/references/universal-system-prompt.md +4 -1
@@ -8,12 +8,15 @@ import { handleUpsertProjectSummary, handleAddNote, handleUpsertDecision, handle
8
8
  import { handleGetActivityLog, handleGetActivitySummary, handleClearActivityLog, handleDetectRtk, handleInstallRtk, handleGetTokenSavings } from "./tool-handlers/diagnostics.js";
9
9
  import { handleCreateCheckpoint, handleListCheckpoints, handleMemoryTimeline, handleRestoreCheckpointContext } from "./tool-handlers/context-recovery.js";
10
10
  import { handleAnalyzeMemoryConflicts, handleCompareCheckpointContext, handleMemoryQualityReport } from "./tool-handlers/memory-diagnostics.js";
11
+ import { handlePreflightOperationScope } from "./tool-handlers/operations.js";
12
+ import { runAutoMaintenanceIfDue } from "./memory-maintenance.js";
11
13
  import { oneLine, toolJson } from "./tool-output.js";
12
14
  const TOOL_HANDLERS = {
13
15
  start_requirement: handleStartRequirement,
14
16
  prune_index: handlePruneIndex,
15
17
  maintain_memory: handleMaintainMemory,
16
18
  preflight_change_scope: handlePreflightChangeScope,
19
+ preflight_operation_scope: handlePreflightOperationScope,
17
20
  plan_large_file_split: handlePlanLargeFileSplit,
18
21
  record_large_file_split: handleRecordLargeFileSplit,
19
22
  sync_change_intent: handleSyncChangeIntent,
@@ -78,12 +81,269 @@ function attachProjectContextAdvisory(result, advisory) {
78
81
  });
79
82
  return { ...result, content };
80
83
  }
84
+ function firstTextContent(result) {
85
+ const item = result.content?.find((content) => content.type === "text");
86
+ return item?.type === "text" && typeof item.text === "string" ? item.text : "";
87
+ }
88
+ function parseJsonToolOutput(result) {
89
+ const text = firstTextContent(result).trim();
90
+ if (!text.startsWith("{"))
91
+ return null;
92
+ try {
93
+ const parsed = JSON.parse(text);
94
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : null;
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ function warningCode(warning) {
101
+ if (!warning || typeof warning !== "object" || Array.isArray(warning))
102
+ return "";
103
+ const code = warning.code;
104
+ return typeof code === "string" ? code : "";
105
+ }
106
+ function warningMessage(warning) {
107
+ if (!warning || typeof warning !== "object" || Array.isArray(warning))
108
+ return "";
109
+ const record = warning;
110
+ for (const key of ["message", "detail", "title", "reason"]) {
111
+ const value = record[key];
112
+ if (typeof value === "string" && value.length > 0)
113
+ return value;
114
+ }
115
+ const code = warningCode(warning);
116
+ return code || "MCP guard warning";
117
+ }
118
+ function eventForWarningCode(code) {
119
+ switch (code) {
120
+ case "huge_file_modularization_required":
121
+ return {
122
+ eventType: "blocked_large_file",
123
+ severity: "critical",
124
+ title: "阻止大文件直接修改,要求先拆模块",
125
+ };
126
+ case "very_large_file":
127
+ case "large_file":
128
+ case "large_file_read":
129
+ return {
130
+ eventType: "large_file_guard",
131
+ severity: "warn",
132
+ title: "提醒大文件风险,避免继续堆叠实现",
133
+ };
134
+ case "scope_drift":
135
+ return {
136
+ eventType: "scope_drift_guard",
137
+ severity: "warn",
138
+ title: "发现需求范围漂移,提醒收窄改动",
139
+ };
140
+ case "requirement_mapping_missing":
141
+ return {
142
+ eventType: "requirement_mapping_guard",
143
+ severity: "warn",
144
+ title: "拦截未映射到需求项的改动",
145
+ };
146
+ case "scope_contract_missing":
147
+ return {
148
+ eventType: "scope_contract_guard",
149
+ severity: "warn",
150
+ title: "缺少需求范围契约,阻止直接编辑",
151
+ };
152
+ case "cross_project_path":
153
+ return {
154
+ eventType: "cross_project_guard",
155
+ severity: "warn",
156
+ title: "发现跨项目路径引用,提醒隔离上下文",
157
+ };
158
+ default:
159
+ return {
160
+ eventType: code ? `development_warning:${code}` : "development_warning",
161
+ severity: "info",
162
+ title: code ? `MCP 开发防护提示:${code}` : "MCP 开发防护提示",
163
+ };
164
+ }
165
+ }
166
+ function normalizedGuardSeverity(value, fallback = "info") {
167
+ if (value === "critical" || value === "warn" || value === "info")
168
+ return value;
169
+ if (value === "warning")
170
+ return "warn";
171
+ if (value === "blocker" || value === "error")
172
+ return "critical";
173
+ return fallback;
174
+ }
175
+ function eventForOperationWarningCode(code) {
176
+ const title = code === "stale_default_conflict"
177
+ ? "发现过期默认操作,阻止继续执行"
178
+ : code === "operation_constraint_conflict"
179
+ ? "发现操作约束冲突,阻止继续执行"
180
+ : `MCP 操作防护提示:${code}`;
181
+ return {
182
+ eventType: `operation_guard:${code}`,
183
+ severity: "warn",
184
+ title,
185
+ };
186
+ }
187
+ function parseCompactToolOutputEvents(toolName, text) {
188
+ const events = [];
189
+ const lines = text.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
190
+ if (!lines.length)
191
+ return events;
192
+ const hasDevelopmentWarnings = lines.some((line) => /^development warnings:$/i.test(line));
193
+ const hasOperationWarnings = lines.some((line) => /^operation warnings:$/i.test(line));
194
+ const header = lines[0] ?? "";
195
+ const okMatch = /\bok=(true|false)\b/.exec(header);
196
+ const safeToEditMatch = /\bsafe_to_edit=(true|false)\b/.exec(header);
197
+ const safeToProceedMatch = /\bsafe_to_proceed=(true|false)\b/.exec(header);
198
+ const compactState = {
199
+ ok: okMatch ? okMatch[1] === "true" : undefined,
200
+ safe_to_edit: safeToEditMatch ? safeToEditMatch[1] === "true" : undefined,
201
+ safe_to_proceed: safeToProceedMatch ? safeToProceedMatch[1] === "true" : undefined,
202
+ };
203
+ for (const line of lines) {
204
+ const advisory = /^project_context_advisory\s+([^:\s]+):\s*(.*)$/i.exec(line);
205
+ if (advisory) {
206
+ events.push({
207
+ eventType: "cross_project_reference",
208
+ severity: "info",
209
+ title: "识别跨项目上下文,只作为只读参考",
210
+ detail: advisory[2] || "MCP 检测到 project_root 切换或跨项目引用,提醒不要把外部项目当作当前需求范围。",
211
+ metadata: {
212
+ tool_name: toolName,
213
+ compact: true,
214
+ advisory_code: advisory[1],
215
+ },
216
+ });
217
+ continue;
218
+ }
219
+ const operationWarning = /^-\s+([a-z_-]+)\s+([^:\s]+)(?:\s+[^:]*)?:\s*(.*)$/i.exec(line);
220
+ if (operationWarning && hasOperationWarnings) {
221
+ const code = operationWarning[2];
222
+ const base = eventForOperationWarningCode(code);
223
+ const lineSeverity = normalizedGuardSeverity(operationWarning[1], base.severity);
224
+ events.push({
225
+ ...base,
226
+ severity: lineSeverity,
227
+ detail: operationWarning[3] || code,
228
+ metadata: {
229
+ tool_name: toolName,
230
+ compact: true,
231
+ warning: {
232
+ code,
233
+ severity: lineSeverity,
234
+ message: operationWarning[3] || code,
235
+ },
236
+ ...compactState,
237
+ },
238
+ });
239
+ continue;
240
+ }
241
+ const warning = /^-\s+([a-z_-]+)\s+([^:\s]+):\s*(.*)$/i.exec(line);
242
+ if (warning && hasDevelopmentWarnings) {
243
+ const code = warning[2];
244
+ const base = eventForWarningCode(code);
245
+ const lineSeverity = normalizedGuardSeverity(warning[1]);
246
+ events.push({
247
+ ...base,
248
+ severity: base.severity === "info" ? lineSeverity : base.severity,
249
+ detail: warning[3] || code,
250
+ metadata: {
251
+ tool_name: toolName,
252
+ compact: true,
253
+ warning: {
254
+ code,
255
+ severity: lineSeverity,
256
+ message: warning[3] || code,
257
+ },
258
+ ...compactState,
259
+ },
260
+ });
261
+ continue;
262
+ }
263
+ }
264
+ return events;
265
+ }
266
+ function outputEventsForToolResult(toolName, result) {
267
+ const text = firstTextContent(result).trim();
268
+ const parsed = parseJsonToolOutput(result);
269
+ if (!parsed)
270
+ return parseCompactToolOutputEvents(toolName, text);
271
+ const events = [];
272
+ const developmentWarnings = Array.isArray(parsed.development_warnings) ? parsed.development_warnings : [];
273
+ for (const warning of developmentWarnings) {
274
+ const code = warningCode(warning);
275
+ const base = eventForWarningCode(code);
276
+ events.push({
277
+ ...base,
278
+ detail: warningMessage(warning),
279
+ metadata: {
280
+ tool_name: toolName,
281
+ warning,
282
+ ok: parsed.ok,
283
+ safe_to_edit: parsed.safe_to_edit,
284
+ safe_to_proceed: parsed.safe_to_proceed,
285
+ },
286
+ });
287
+ }
288
+ const operationWarnings = Array.isArray(parsed.warnings) ? parsed.warnings : [];
289
+ for (const warning of operationWarnings) {
290
+ const code = warningCode(warning);
291
+ if (!code)
292
+ continue;
293
+ const base = eventForOperationWarningCode(code);
294
+ events.push({
295
+ ...base,
296
+ detail: warningMessage(warning),
297
+ metadata: {
298
+ tool_name: toolName,
299
+ warning,
300
+ ok: parsed.ok,
301
+ safe_to_proceed: parsed.safe_to_proceed,
302
+ },
303
+ });
304
+ }
305
+ if (parsed.project_context_advisory && typeof parsed.project_context_advisory === "object") {
306
+ events.push({
307
+ eventType: "cross_project_reference",
308
+ severity: "info",
309
+ title: "识别跨项目上下文,只作为只读参考",
310
+ detail: "MCP 检测到 project_root 切换或跨项目引用,提醒不要把外部项目当作当前需求范围。",
311
+ metadata: {
312
+ tool_name: toolName,
313
+ advisory: parsed.project_context_advisory,
314
+ },
315
+ });
316
+ }
317
+ return events;
318
+ }
319
+ function persistMcpGuardEvents(toolName, result, context) {
320
+ const events = outputEventsForToolResult(toolName, result);
321
+ if (!events.length)
322
+ return;
323
+ const stmt = context.getStatements().insertMcpGuardEventStmt;
324
+ if (!stmt)
325
+ return;
326
+ try {
327
+ const db = context.getDb();
328
+ const tx = db.transaction(() => {
329
+ for (const event of events) {
330
+ stmt.run(toolName, event.eventType, event.severity, event.title, event.detail, JSON.stringify(event.metadata));
331
+ }
332
+ });
333
+ tx();
334
+ }
335
+ catch {
336
+ // Guard-event persistence must never break the original MCP tool result.
337
+ }
338
+ }
81
339
  export function registerToolHandlers(server, context) {
82
340
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
83
341
  const toolName = request.params.name;
84
342
  const rawArgs = (request.params.arguments ?? {});
85
343
  try {
86
344
  await context.ensureInitializedForArgs(rawArgs);
345
+ if (toolName !== "maintain_memory")
346
+ runAutoMaintenanceIfDue();
87
347
  const handler = TOOL_HANDLERS[toolName];
88
348
  if (!handler) {
89
349
  return attachProjectContextAdvisory({
@@ -92,7 +352,9 @@ export function registerToolHandlers(server, context) {
92
352
  }, context.consumeProjectContextAdvisory());
93
353
  }
94
354
  const result = await handler(rawArgs, context);
95
- return attachProjectContextAdvisory(result, context.consumeProjectContextAdvisory());
355
+ const finalResult = attachProjectContextAdvisory(result, context.consumeProjectContextAdvisory());
356
+ persistMcpGuardEvents(toolName, finalResult, context);
357
+ return finalResult;
96
358
  }
97
359
  catch (err) {
98
360
  return attachProjectContextAdvisory({
@@ -1 +1 @@
1
- {"version":3,"file":"tool-handlers.js","sourceRoot":"","sources":["../src/tool-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-handlers.js","sourceRoot":"","sources":["../src/tool-handlers.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,9 @@ type CompactRequirementPreview = {
32
32
  };
33
33
  type CompactChangeLogPreview = {
34
34
  id: number;
35
- file_path: string;
35
+ file_path: string | null;
36
+ files?: string[];
37
+ file_count?: number;
36
38
  intent_preview: string;
37
39
  };
38
40
  type CompactSemanticSearchResult = {
@@ -44,9 +46,58 @@ type CompactSemanticSearchResult = {
44
46
  item: CompactMemoryItemPreview;
45
47
  }>;
46
48
  };
49
+ type CompactCurrentConstraint = {
50
+ id: number;
51
+ kind: string;
52
+ title?: string | null;
53
+ source: string;
54
+ preview?: string | null;
55
+ };
56
+ type CompactOperationScopeWarning = {
57
+ code: string;
58
+ severity: string;
59
+ message: string;
60
+ evidence?: Array<{
61
+ constraint_id: number;
62
+ kind: string;
63
+ title?: string | null;
64
+ source: string;
65
+ preview?: string | null;
66
+ }>;
67
+ };
68
+ type CompactRelevantFixPattern = {
69
+ memory_id: number;
70
+ symptom: string;
71
+ root_cause: string;
72
+ invariant: string;
73
+ avoid_regression?: string[];
74
+ relevance_score: number;
75
+ reason?: string;
76
+ };
77
+ type CompactQualitySignals = {
78
+ advisory_only: boolean;
79
+ does_not_control_model_reasoning?: boolean;
80
+ does_not_control_host_runtime?: boolean;
81
+ does_not_replace_model_judgment?: boolean;
82
+ does_not_change_ok_or_safe_to_edit?: boolean;
83
+ does_not_expand_requirement_scope?: boolean;
84
+ relevant_fix_patterns?: CompactRelevantFixPattern[];
85
+ };
47
86
  type CompactMaintenanceResult = {
48
87
  dry_run: boolean;
49
88
  trigger: string;
89
+ db_size_before?: {
90
+ total_bytes: number;
91
+ db_bytes: number;
92
+ wal_bytes: number;
93
+ shm_bytes: number;
94
+ };
95
+ db_size_after?: {
96
+ total_bytes: number;
97
+ db_bytes: number;
98
+ wal_bytes: number;
99
+ shm_bytes: number;
100
+ };
50
101
  compacted_memory: {
51
102
  candidates: number;
52
103
  compacted: number;
@@ -75,6 +126,30 @@ type CompactMaintenanceResult = {
75
126
  samples: string[];
76
127
  };
77
128
  };
129
+ pending_pruned?: {
130
+ ignored_deleted: number;
131
+ old_deleted: number;
132
+ overflow_deleted: number;
133
+ };
134
+ purged_hidden_memory?: {
135
+ memory_candidates: number;
136
+ memory_deleted: number;
137
+ archive_candidates: number;
138
+ archives_deleted: number;
139
+ samples: Array<{
140
+ id: number;
141
+ kind: string;
142
+ title?: string | null;
143
+ file_path?: string | null;
144
+ updated_at: string;
145
+ }>;
146
+ };
147
+ metrics_pruned?: {
148
+ token_savings_deleted: number;
149
+ };
150
+ fts_optimized?: boolean;
151
+ wal_checkpointed?: boolean;
152
+ vacuumed?: boolean;
78
153
  };
79
154
  type CompactTokenSavingsSummary = {
80
155
  summary: {
@@ -178,6 +253,20 @@ export declare function compactPreflightChangeScopeText(data: {
178
253
  };
179
254
  scope_contract: CompactRequirementScopeContract | null;
180
255
  development_warnings: CompactDevelopmentWarning[];
256
+ quality_signals?: CompactQualitySignals;
257
+ }): string;
258
+ export declare function compactPreflightOperationScopeText(data: {
259
+ ok: boolean;
260
+ safe_to_proceed: boolean;
261
+ advisory_only?: boolean;
262
+ operation: string;
263
+ intent: string;
264
+ planned_commands: string[];
265
+ planned_files: string[];
266
+ planned_targets: string[];
267
+ current_constraints: CompactCurrentConstraint[];
268
+ warnings: CompactOperationScopeWarning[];
269
+ recommended_action: string;
181
270
  }): string;
182
271
  export declare function compactLargeFileSplitPlanText(data: LargeFileSplitPlan): string;
183
272
  export declare function compactBootstrapText(data: {
@@ -189,6 +278,7 @@ export declare function compactBootstrapText(data: {
189
278
  project_summary: CompactMemoryItemPreview | null;
190
279
  decisions: Array<CompactMemoryItemPreview>;
191
280
  conventions: Array<CompactMemoryItemPreview>;
281
+ current_constraints?: Array<CompactCurrentConstraint>;
192
282
  current_context: Array<CompactMemoryItemPreview>;
193
283
  recent_notes: Array<CompactMemoryItemPreview>;
194
284
  pending_total: number;
@@ -197,6 +287,7 @@ export declare function compactBootstrapText(data: {
197
287
  pending_truncated: boolean;
198
288
  pending_changes: PendingChangeRow[];
199
289
  development_warnings?: CompactDevelopmentWarning[];
290
+ quality_signals?: CompactQualitySignals;
200
291
  items: Array<{
201
292
  requirement: CompactRequirementPreview;
202
293
  recent_changes: Array<CompactChangeLogPreview>;
@@ -9,6 +9,22 @@ function compactDevelopmentWarningsText(warnings) {
9
9
  }
10
10
  return lines;
11
11
  }
12
+ function compactQualitySignalsText(signals) {
13
+ const patterns = signals?.relevant_fix_patterns ?? [];
14
+ if (!patterns.length)
15
+ return [];
16
+ const lines = [
17
+ `quality signals advisory_only=${signals?.advisory_only === true} relevant_fix_patterns=${patterns.length}`,
18
+ ];
19
+ for (const p of patterns.slice(0, 3)) {
20
+ lines.push(`- fix_pattern #${p.memory_id} score=${Number(p.relevance_score).toFixed(2)} invariant=${oneLine(p.invariant, 150)}`);
21
+ if (p.avoid_regression?.length) {
22
+ lines.push(` avoid: ${p.avoid_regression.slice(0, 2).map((item) => oneLine(item, 90)).join("; ")}`);
23
+ }
24
+ }
25
+ lines.push("hint: fix_pattern matches are reminders only; do not expand scope or change ok/safe flags from them");
26
+ return lines;
27
+ }
12
28
  export function safeJson(value) {
13
29
  if (value === undefined)
14
30
  return null;
@@ -45,7 +61,11 @@ function compactRequirementLabel(req) {
45
61
  return `req#${req.id}${mem} [${req.status}] ${oneLine(req.title, 80)}${ctx}`;
46
62
  }
47
63
  function compactChangeLabel(change) {
48
- return `change#${change.id} ${change.file_path}: ${oneLine(change.intent_preview, 120)}`;
64
+ const files = change.files?.length
65
+ ? `${change.files.slice(0, 3).join(",")}${change.files.length > 3 ? "..." : ""}`
66
+ : (change.file_path ?? "unspecified");
67
+ const count = change.file_count && change.file_count > 1 ? ` files=${change.file_count}` : "";
68
+ return `change#${change.id}${count} ${files}: ${oneLine(change.intent_preview, 120)}`;
49
69
  }
50
70
  function compactPendingLabel(p) {
51
71
  const source = "source" in p && p.source === "git" ? " git" : "";
@@ -127,9 +147,20 @@ export function compactMaintenanceText(data) {
127
147
  const prunedSymbols = data.pruned.ignored_paths.symbols_deleted +
128
148
  data.pruned.filename_noise.symbols_deleted +
129
149
  data.pruned.stale_files.symbols_deleted;
150
+ const pendingPruned = data.pending_pruned
151
+ ? data.pending_pruned.ignored_deleted + data.pending_pruned.old_deleted + data.pending_pruned.overflow_deleted
152
+ : 0;
153
+ const hiddenDeleted = data.purged_hidden_memory?.memory_deleted ?? 0;
154
+ const archivesDeleted = data.purged_hidden_memory?.archives_deleted ?? 0;
155
+ const tokenSavingsDeleted = data.metrics_pruned?.token_savings_deleted ?? 0;
156
+ const beforeBytes = data.db_size_before?.total_bytes ?? 0;
157
+ const afterBytes = data.db_size_after?.total_bytes ?? 0;
130
158
  const lines = [
131
- `maintain_memory ok dry_run=${data.dry_run} trigger=${data.trigger} compacted=${data.compacted_memory.compacted}/${data.compacted_memory.candidates} archived=${data.compacted_memory.archived} pruned_chunks=${prunedChunks} pruned_symbols=${prunedSymbols}`,
159
+ `maintain_memory ok dry_run=${data.dry_run} trigger=${data.trigger} compacted=${data.compacted_memory.compacted}/${data.compacted_memory.candidates} archived=${data.compacted_memory.archived} pruned_chunks=${prunedChunks} pruned_symbols=${prunedSymbols} pending_pruned=${pendingPruned} hidden_deleted=${hiddenDeleted} archives_deleted=${archivesDeleted} token_savings_deleted=${tokenSavingsDeleted}`,
132
160
  ];
161
+ if (beforeBytes || afterBytes) {
162
+ lines.push(`db_size total ${beforeBytes} -> ${afterBytes} bytes`);
163
+ }
133
164
  if (data.compacted_memory.summary_memory_id) {
134
165
  lines.push(`summary memory_compaction #${data.compacted_memory.summary_memory_id}`);
135
166
  }
@@ -144,6 +175,15 @@ export function compactMaintenanceText(data) {
144
175
  for (const s of data.pruned.stale_files.samples.slice(0, 8))
145
176
  lines.push(`- ${s}`);
146
177
  }
178
+ if (data.purged_hidden_memory?.samples?.length) {
179
+ lines.push("hidden memory purge candidates:");
180
+ for (const s of data.purged_hidden_memory.samples.slice(0, 8)) {
181
+ lines.push(`- #${s.id} ${s.kind} ${s.file_path ?? ""} ${oneLine(s.title ?? "", 80)} ${s.updated_at}`);
182
+ }
183
+ }
184
+ if (data.fts_optimized || data.wal_checkpointed || data.vacuumed) {
185
+ lines.push(`sqlite maintenance fts_optimized=${data.fts_optimized === true} wal_checkpointed=${data.wal_checkpointed === true} vacuumed=${data.vacuumed === true}`);
186
+ }
147
187
  lines.push("hint: dry_run=false applies changes; vacuum=true reclaims sqlite file space after pruning");
148
188
  return lines.join("\n");
149
189
  }
@@ -164,10 +204,37 @@ export function compactPreflightChangeScopeText(data) {
164
204
  lines.push(`scope allow_terms=${data.scope_contract.allow_terms.length} deny_terms=${data.scope_contract.deny_terms.length} allowed_paths=${data.scope_contract.allowed_paths.length} denied_paths=${data.scope_contract.denied_paths.length}`);
165
205
  }
166
206
  lines.push(...compactDevelopmentWarningsText(data.development_warnings));
207
+ lines.push(...compactQualitySignalsText(data.quality_signals));
167
208
  if (!data.development_warnings.length)
168
209
  lines.push("- no development warnings");
169
210
  return lines.join("\n");
170
211
  }
212
+ export function compactPreflightOperationScopeText(data) {
213
+ const lines = [
214
+ `preflight_operation_scope ok=${data.ok} safe_to_proceed=${data.safe_to_proceed} advisory_only=${data.advisory_only === true} operation="${oneLine(data.operation, 80)}" commands=${data.planned_commands.length} files=${data.planned_files.length} targets=${data.planned_targets.length}`,
215
+ `action: ${oneLine(data.recommended_action, 200)}`,
216
+ ];
217
+ if (data.current_constraints.length) {
218
+ lines.push("current_constraints:");
219
+ for (const c of data.current_constraints.slice(0, 8)) {
220
+ lines.push(`- #${c.id} ${c.source}/${c.kind} ${oneLine(c.title ?? "", 60)} —${oneLine(c.preview ?? "", 140)}`);
221
+ }
222
+ }
223
+ else {
224
+ lines.push("current_constraints: none");
225
+ }
226
+ if (data.warnings.length) {
227
+ lines.push("operation warnings:");
228
+ for (const w of data.warnings.slice(0, 8)) {
229
+ const ev = w.evidence?.[0] ? ` evidence=#${w.evidence[0].constraint_id}` : "";
230
+ lines.push(`- ${w.severity} ${w.code}${ev}: ${oneLine(w.message, 180)}`);
231
+ }
232
+ }
233
+ else {
234
+ lines.push("- no operation warnings");
235
+ }
236
+ return lines.join("\n");
237
+ }
171
238
  export function compactLargeFileSplitPlanText(data) {
172
239
  const lines = [
173
240
  `large_file_split ok=${data.ok} file=${data.file_path} lines=${data.line_count} threshold=${data.huge_threshold_lines} action=${data.required_action}`,
@@ -198,6 +265,12 @@ export function compactBootstrapText(data) {
198
265
  for (const d of data.decisions.slice(0, 5))
199
266
  lines.push(`- ${compactMemoryLabel(d, 160)}`);
200
267
  }
268
+ if (data.current_constraints?.length) {
269
+ lines.push("current constraints:");
270
+ for (const c of data.current_constraints.slice(0, 6)) {
271
+ lines.push(`- #${c.id} ${c.source}/${c.kind} ${oneLine(c.title ?? "", 54)} —${oneLine(c.preview ?? "", 130)}`);
272
+ }
273
+ }
201
274
  if (data.current_context.length) {
202
275
  lines.push("current context:");
203
276
  for (const c of data.current_context.slice(0, 8))
@@ -213,6 +286,7 @@ export function compactBootstrapText(data) {
213
286
  lines.push("pending 0");
214
287
  }
215
288
  lines.push(...compactDevelopmentWarningsText(data.development_warnings ?? []));
289
+ lines.push(...compactQualitySignalsText(data.quality_signals));
216
290
  if (data.items.length) {
217
291
  lines.push("requirements:");
218
292
  for (const item of data.items) {