@coreyuan/vector-mind 1.0.53 → 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.
- package/README.md +1 -1
- 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/config.d.ts +4 -1
- package/dist/config.js +25 -1
- package/dist/config.js.map +1 -1
- package/dist/database-runtime.d.ts +3 -0
- package/dist/database-runtime.js +342 -19
- package/dist/database-runtime.js.map +1 -1
- package/dist/development-warnings.js +2 -2
- package/dist/development-warnings.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/large-file-split.d.ts +1 -0
- package/dist/large-file-split.js +8 -3
- package/dist/large-file-split.js.map +1 -1
- package/dist/memory-maintenance/compaction.d.ts +7 -0
- package/dist/memory-maintenance/compaction.js +132 -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 +22 -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 +4 -0
- package/dist/memory-maintenance/runner.js +170 -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 +86 -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-recall.d.ts +3 -1
- package/dist/memory-recall.js +17 -0
- package/dist/memory-recall.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.js +4 -0
- package/dist/pending-changes.js.map +1 -1
- package/dist/server-instructions.js +1 -1
- package/dist/server-instructions.js.map +1 -1
- package/dist/tool-catalog.js +2 -2
- package/dist/tool-catalog.js.map +1 -1
- package/dist/tool-handlers/large-files.js +19 -1
- package/dist/tool-handlers/large-files.js.map +1 -1
- package/dist/tool-handlers/requirements.js +66 -19
- package/dist/tool-handlers/requirements.js.map +1 -1
- package/dist/tool-handlers.js +261 -1
- package/dist/tool-handlers.js.map +1 -1
- package/dist/tool-output.d.ts +39 -1
- package/dist/tool-output.js +26 -2
- package/dist/tool-output.js.map +1 -1
- package/dist/tool-schemas.d.ts +8 -0
- package/dist/tool-schemas.js +15 -1
- package/dist/tool-schemas.js.map +1 -1
- package/dist/types.d.ts +9 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ VectorMind 会在背后自动恢复上下文、记录需求、检查改动范围
|
|
|
39
39
|
- 不要继续往这个文件里加新功能。
|
|
40
40
|
- 先做机械搬迁式模块化拆分。
|
|
41
41
|
- 使用真实模块名和清晰目录。
|
|
42
|
-
- 禁止 `*.generated.*`、`.parts`、`*.rs.parts`、`part1/part2`
|
|
42
|
+
- 禁止 `*.generated.*`、`.parts`、`*.rs.parts`、`part1/part2`、`1_xxx/2_xxx` 这类假拆分或排序式命名。
|
|
43
43
|
- 拆分计划和结果会被记录,后续会话知道这个文件正在或已经被治理。
|
|
44
44
|
|
|
45
45
|
## 它不做什么
|
|
@@ -37,7 +37,7 @@ export const BUILTIN_CONVENTIONS = [
|
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
key: "builtin:architecture_single_responsibility",
|
|
40
|
-
content: `${DEVELOPMENT_GUIDELINE_SCOPE} 单个模块和单个文件必须保持单一主职责。不得把路由、业务规则、数据访问、状态管理、渲染、工具函数、配置装配等多类职责混写在同一文件中;若职责已经混杂,应立即拆分,不得继续把新需求堆进该文件。实现文件接近 800 行时应优先拆模块;超过 1200 行时默认禁止继续追加新功能;达到巨量文件阈值时,应先做机械搬迁式模块化拆分,移动完整声明到真实命名的模块/目录,不得创建 generated/parts/partN
|
|
40
|
+
content: `${DEVELOPMENT_GUIDELINE_SCOPE} 单个模块和单个文件必须保持单一主职责。不得把路由、业务规则、数据访问、状态管理、渲染、工具函数、配置装配等多类职责混写在同一文件中;若职责已经混杂,应立即拆分,不得继续把新需求堆进该文件。实现文件接近 800 行时应优先拆模块;超过 1200 行时默认禁止继续追加新功能;达到巨量文件阈值时,应先做机械搬迁式模块化拆分,移动完整声明到真实命名的模块/目录,不得创建 generated/parts/partN 假拆分文件,也不得创建 1_xxx、2_xxx、03-xxx 这类序号排序文件;模块应使用稳定语义名称。`,
|
|
41
41
|
tags: ["builtin", "architecture", "single-responsibility", "modularity", "huge-file"],
|
|
42
42
|
},
|
|
43
43
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-conventions.js","sourceRoot":"","sources":["../src/builtin-conventions.ts"],"names":[],"mappings":"AAMA,MAAM,2BAA2B,GAC/B,yCAAyC,CAAC;AAE5C,MAAM,CAAC,MAAM,mBAAmB,GAA4B;IAC1D;QACE,GAAG,EAAE,qCAAqC;QAC1C,OAAO,EACL,GAAG,2BAA2B,2CAA2C;QAC3E,IAAI,EAAE,CAAC,SAAS,EAAE,uBAAuB,EAAE,OAAO,CAAC;KACpD;IACD;QACE,GAAG,EAAE,8BAA8B;QACnC,OAAO,EACL,GAAG,2BAA2B,6FAA6F;QAC7H,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,CAAC;KAC9D;IACD;QACE,GAAG,EAAE,+BAA+B;QACpC,OAAO,EACL,GAAG,2BAA2B,mEAAmE;QACnG,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC;KAC9C;IACD;QACE,GAAG,EAAE,iCAAiC;QACtC,OAAO,EACL,GAAG,2BAA2B,kDAAkD;QAClF,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC;KACzD;IACD;QACE,GAAG,EAAE,iCAAiC;QACtC,OAAO,EACL,GAAG,2BAA2B,oGAAoG;QACpI,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC;KACzD;IACD;QACE,GAAG,EAAE,qCAAqC;QAC1C,OAAO,EACL,GAAG,2BAA2B,6HAA6H;QAC7J,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC;KAC1C;IACD;QACE,GAAG,EAAE,qCAAqC;QAC1C,OAAO,EACL,GAAG,2BAA2B,kHAAkH;QAClJ,IAAI,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,CAAC;KAChE;IACD;QACE,GAAG,EAAE,4CAA4C;QACjD,OAAO,EACL,GAAG,2BAA2B,
|
|
1
|
+
{"version":3,"file":"builtin-conventions.js","sourceRoot":"","sources":["../src/builtin-conventions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const BUILTIN_WRITE_POLICY_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u4EE3\u7801\u5F00\u53D1\u3001\u6587\u4EF6\u521B\u5EFA\u3001\u6587\u4EF6\u4FEE\u6539\u3001\u6587\u4EF6\u5220\u9664\u3001\u6587\u4EF6\u79FB\u52A8\u7B49\u5199\u64CD\u4F5C\u4EFB\u52A1\u4E2D\u751F\u6548\uFF1B\u4E0D\u9650\u5236\u6A21\u578B\u7684\u5206\u6790\u3001\u51B3\u7B56\u3001\u5B9E\u73B0\u8DEF\u5F84\u4E0E\u666E\u901A\u975E\u5199\u64CD\u4F5C\u6D41\u7A0B\u3002\u6240\u6709\u4EE3\u7801\u6216\u6587\u4EF6\u6539\u52A8\u9ED8\u8BA4\u5728\u5F53\u524D\u6D3B\u8DC3\u5206\u652F\u4E2D\u8FDB\u884C\uFF1B\u7981\u6B62\u521B\u5EFA\u3001\u5207\u6362\u6216\u4F7F\u7528\u4E34\u65F6\u5206\u652F\u3001\u4E34\u65F6\u5B50\u5206\u652F\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u6216\u65E2\u6709\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u8FD9\u6837\u5B89\u6392\u3002\u4E3A\u907F\u514D\u5E76\u53D1\u8986\u76D6\uFF0C\u540C\u4E00\u4F1A\u8BDD\u5185\u540C\u4E00\u6587\u4EF6\u5E94\u4E32\u884C\u7F16\u8F91\uFF1B\u591A\u6587\u4EF6\u4EFB\u52A1\u5E94\u5148\u660E\u786E\u76EE\u6807\u6587\u4EF6\u96C6\u5408\u5E76\u6309\u7A33\u5B9A\u987A\u5E8F\u5904\u7406\u3002";
|
|
2
2
|
export declare const BUILTIN_PLAN_LITE_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u5206\u6790\u3001\u6392\u67E5\u3001\u5F00\u53D1\u3001\u8C03\u8BD5\u3001\u91CD\u6784\u3001\u6587\u4EF6\u4FEE\u6539\u3001\u65B9\u6848\u8BBE\u8BA1\u7B49\u591A\u6B65\u9AA4\u4EFB\u52A1\u578B\u8BF7\u6C42\u4E2D\u751F\u6548\uFF1B\u4E0D\u9650\u5236\u6A21\u578B\u5185\u90E8\u63A8\u7406\uFF0C\u53EA\u7EA6\u675F\u5916\u663E\u4EFB\u52A1\u7BA1\u7406\u4E0E\u5FC5\u8981\u6F84\u6E05\u3002\u5BF9\u8FD9\u7C7B\u8BF7\u6C42\uFF0C\u53EF\u7ED9\u51FA\u8F7B\u91CF\u6267\u884C\u5217\u8868\uFF1B\u82E5\u5BBF\u4E3B\u63D0\u4F9B\u539F\u751F\u8BA1\u5212/\u4EFB\u52A1\u5217\u8868\u5DE5\u5177\uFF0C\u5219\u4F18\u5148\u540C\u6B65\u5230\u8BE5\u5DE5\u5177\uFF0C\u5426\u5219\u4EE5\u7CBE\u7B80\u6587\u672C\u5217\u8868\u5C55\u793A\u3002\u53EA\u6709\u5F53\u9700\u6C42\u7F3A\u5C11\u4F1A\u5B9E\u8D28\u6539\u53D8\u7ED3\u679C\u7684\u5173\u952E\u6761\u4EF6\u3001\u5B58\u5728\u591A\u4E2A\u4E92\u65A5\u4E14\u65E0\u6CD5\u5408\u7406\u9ED8\u8BA4\u7684\u65B9\u5411\uFF0C\u6216\u7EE7\u7EED\u6267\u884C\u53EF\u80FD\u9020\u6210\u660E\u663E\u8FD4\u5DE5/\u6570\u636E\u98CE\u9669\u65F6\uFF0C\u624D\u8FDB\u5165\u6F84\u6E05\u6A21\u5F0F\u3002\u76EE\u6807\u548C\u8303\u56F4\u8DB3\u591F\u660E\u786E\u65F6\uFF0C\u5E94\u76F4\u63A5\u6267\u884C\u3002\u6267\u884C\u5217\u8868\u4FDD\u6301\u8F7B\u91CF\uFF0C\u901A\u5E38 3 \u81F3 7 \u9879\uFF1B\u4EC5\u5728\u4EFB\u52A1\u72B6\u6001\u53D8\u5316\u3001\u8303\u56F4\u53D8\u5316\u3001\u4EFB\u52A1\u9879\u53D8\u5316\u6216\u7528\u6237\u8981\u6C42\u65F6\u66F4\u65B0\uFF0C\u4E0D\u5F97\u4E3A\u4E86\u5C55\u793A\u8BA1\u5212\u800C\u5236\u9020\u5197\u957F\u6D41\u7A0B\u3002";
|
|
3
3
|
export declare const BUILTIN_DESTRUCTIVE_OPERATION_GUARD_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u771F\u6B63\u53EF\u80FD\u5BFC\u81F4\u73B0\u6709\u6E90\u6587\u4EF6\u3001\u914D\u7F6E\u3001\u6570\u636E\u3001\u7528\u6237\u5185\u5BB9\u6216\u5C1A\u672A\u4FDD\u5168\u6539\u52A8\u88AB\u5220\u9664\u3001\u8986\u76D6\u3001\u6E05\u7A7A\u3001\u56DE\u9000\u3001\u66FF\u6362\u7684\u7834\u574F\u6027\u64CD\u4F5C\u4E2D\u751F\u6548\uFF0C\u4F8B\u5982 reset\u3001clean\u3001\u5F3A\u5236\u8986\u76D6\u3001\u6279\u91CF\u5220\u9664/\u79FB\u52A8\u3001\u8986\u76D6\u5F0F\u540C\u6B65\u3001\u5371\u9669\u8FC1\u79FB\u6216\u4F1A\u8986\u76D6\u91CD\u8981\u76EE\u6807\u7684\u53D1\u5E03\u3002\u4E0D\u5E94\u628A\u666E\u901A build/rebuild\u3001test\u3001lint\u3001package\u3001\u751F\u6210\u53EF\u91CD\u590D\u4EA7\u7269\u3001\u8BFB\u53D6\u3001\u641C\u7D22\u6216\u5E38\u89C4\u4FEE\u6539\u89C6\u4E3A\u7834\u574F\u6027\u64CD\u4F5C\u3002\u9047\u5230\u771F\u6B63\u7834\u574F\u6027\u64CD\u4F5C\u65F6\uFF0C\u5E94\u5148\u8BC6\u522B\u53D7\u5F71\u54CD\u8303\u56F4\u4E0E\u98CE\u9669\uFF1B\u82E5\u7528\u6237\u5DF2\u7ECF\u660E\u786E\u8981\u6C42\u8BE5\u7834\u574F\u6027\u52A8\u4F5C\u6216\u76EE\u6807\u662F\u53EF\u518D\u751F\u4EA7\u7269\u3001\u4E34\u65F6\u6587\u4EF6\u3001\u660E\u786E\u6307\u5B9A\u5BF9\u8C61\uFF0C\u4E0D\u8981\u91CD\u590D\u7D22\u8981\u786E\u8BA4\u3002";
|
|
4
|
-
export declare const BUILTIN_ARCHITECTURE_AND_CODE_ORGANIZATION_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u9879\u76EE\u642D\u5EFA\u3001\u67B6\u6784\u8BBE\u8BA1\u3001\u529F\u80FD\u5B9E\u73B0\u3001\u6A21\u5757\u6269\u5C55\u3001\u91CD\u6784\u3001\u6587\u4EF6\u65B0\u589E\u6216\u4FEE\u6539\u7B49\u5DE5\u7A0B\u4EFB\u52A1\u4E2D\u751F\u6548\uFF1B\u4E0D\u9650\u5236\u6A21\u578B\u5185\u90E8\u63A8\u7406\uFF0C\u53EA\u7EA6\u675F\u67B6\u6784\u4E0E\u4EE3\u7801\u7EC4\u7EC7\u3002\u5F00\u59CB\u5B9E\u73B0\u524D\uFF0C\u5224\u65AD\u5F53\u524D\u9700\u6C42\u6240\u5C5E\u8FB9\u754C\uFF0C\u5E76\u8BA9\u76EE\u5F55\u7ED3\u6784\u3001\u6A21\u5757\u5212\u5206\u3001\u6587\u4EF6\u5F52\u5C5E\u3001\u547D\u540D\u65B9\u5F0F\u548C\u4F9D\u8D56\u65B9\u5411\u4E0E\u8BE5\u8FB9\u754C\u4E00\u81F4\uFF1B\u5E38\u89C1\u8FB9\u754C\u5305\u62EC\u63A5\u53E3\u5C42\u3001\u5E94\u7528\u5C42\u3001\u9886\u57DF\u5C42\u3001\u57FA\u7840\u8BBE\u65BD\u5C42\u3001\u5171\u4EAB\u5C42\u3001\u914D\u7F6E\u5C42\u3001\u811A\u672C\u5C42\u548C\u6D4B\u8BD5\u5C42\u3002\u65B0\u589E\u4EE3\u7801\u65F6\u4F18\u5148\u590D\u7528\u73B0\u6709\u7A33\u5B9A\u6A21\u5757\uFF1B\u53EA\u6709\u5F53\u76F4\u63A5\u590D\u7528\u4F1A\u9020\u6210\u8FB9\u754C\u6C61\u67D3\u3001\u804C\u8D23\u6DF7\u4E71\u3001\u8026\u5408\u5347\u9AD8\u6216\u9519\u8BEF\u62BD\u8C61\u65F6\uFF0C\u624D\u65B0\u589E\u62BD\u8C61\u3001\u6A21\u5757\u6216\u76EE\u5F55\u3002\u516C\u5171\u80FD\u529B\u5E94\u6C89\u6DC0\u4E3A\u53EF\u590D\u7528\u7EC4\u4EF6\u3001\u670D\u52A1\u3001\u5DE5\u5177\u6216\u5E93\uFF0C\u4F46\u4E0D\u5F97\u4E3A\u4E86\u590D\u7528\u800C\u8FC7\u5EA6\u62BD\u8C61\u3002\u5355\u4E2A\u6587\u4EF6\u548C\u5355\u4E2A\u6A21\u5757\u5FC5\u987B\u4FDD\u6301\u5355\u4E00\u4E3B\u804C\u8D23\uFF1B\u82E5\u4E00\u4E2A\u6587\u4EF6\u540C\u65F6\u627F\u62C5\u8DEF\u7531\u3001\u63A7\u5236\u3001\u4E1A\u52A1\u89C4\u5219\u3001\u6570\u636E\u8BBF\u95EE\u3001\u72B6\u6001\u7BA1\u7406\u3001\u89C6\u56FE\u6E32\u67D3\u3001\u5DE5\u5177\u51FD\u6570\u6216\u914D\u7F6E\u88C5\u914D\u7B49\u591A\u7C7B\u804C\u8D23\uFF0C\u5E94\u7ACB\u5373\u62C6\u5206\uFF0C\u4E0D\u5F97\u7EE7\u7EED\u628A\u65B0\u9700\u6C42\u5806\u8FDB\u8BE5\u6587\u4EF6\u3002\u5B9E\u73B0\u6587\u4EF6\u63A5\u8FD1 800 \u884C\u65F6\u5E94\u4F18\u5148\u62C6\u6A21\u5757\uFF1B\u8D85\u8FC7 1200 \u884C\u65F6\u9ED8\u8BA4\u7981\u6B62\u7EE7\u7EED\u8FFD\u52A0\u65B0\u529F\u80FD\uFF0C\u9664\u975E\u672C\u6B21\u4EFB\u52A1\u5C31\u662F\u6709\u8BA1\u5212\u5730\u62C6\u5206\u5B83\uFF1B\u8FBE\u5230\u5DE8\u91CF\u6587\u4EF6\u9608\u503C\u65F6\uFF0C\u5E94\u5148\u505A\u673A\u68B0\u642C\u8FC1\u5F0F\u6A21\u5757\u5316\u62C6\u5206\uFF0C\u79FB\u52A8\u5B8C\u6574\u58F0\u660E\u5230\u771F\u5B9E\u547D\u540D\u7684\u6A21\u5757/\u76EE\u5F55\uFF0C\u4E0D\u5F97\u521B\u5EFA generated/parts/partN \u5047\u62C6\u5206\u6587\u4EF6\u3002\u4F9D\u8D56\u65B9\u5411\u5FC5\u987B\u7A33\u5B9A\uFF1B\u7981\u6B62\u5FAA\u73AF\u4F9D\u8D56\u3001\u8DE8\u5C42\u7A7F\u900F\u548C\u5171\u4EAB\u6CE5\u7403\u3002\u9ED8\u8BA4\u4F18\u5148\u91C7\u7528\u6A21\u5757\u5316\u5355\u4F53\u3001\u6E05\u6670\u5206\u5C42\u3001\u53EF\u9006\u8BBE\u8BA1\u548C\u6E10\u8FDB\u6F14\u8FDB\u3002";
|
|
4
|
+
export declare const BUILTIN_ARCHITECTURE_AND_CODE_ORGANIZATION_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u9879\u76EE\u642D\u5EFA\u3001\u67B6\u6784\u8BBE\u8BA1\u3001\u529F\u80FD\u5B9E\u73B0\u3001\u6A21\u5757\u6269\u5C55\u3001\u91CD\u6784\u3001\u6587\u4EF6\u65B0\u589E\u6216\u4FEE\u6539\u7B49\u5DE5\u7A0B\u4EFB\u52A1\u4E2D\u751F\u6548\uFF1B\u4E0D\u9650\u5236\u6A21\u578B\u5185\u90E8\u63A8\u7406\uFF0C\u53EA\u7EA6\u675F\u67B6\u6784\u4E0E\u4EE3\u7801\u7EC4\u7EC7\u3002\u5F00\u59CB\u5B9E\u73B0\u524D\uFF0C\u5224\u65AD\u5F53\u524D\u9700\u6C42\u6240\u5C5E\u8FB9\u754C\uFF0C\u5E76\u8BA9\u76EE\u5F55\u7ED3\u6784\u3001\u6A21\u5757\u5212\u5206\u3001\u6587\u4EF6\u5F52\u5C5E\u3001\u547D\u540D\u65B9\u5F0F\u548C\u4F9D\u8D56\u65B9\u5411\u4E0E\u8BE5\u8FB9\u754C\u4E00\u81F4\uFF1B\u5E38\u89C1\u8FB9\u754C\u5305\u62EC\u63A5\u53E3\u5C42\u3001\u5E94\u7528\u5C42\u3001\u9886\u57DF\u5C42\u3001\u57FA\u7840\u8BBE\u65BD\u5C42\u3001\u5171\u4EAB\u5C42\u3001\u914D\u7F6E\u5C42\u3001\u811A\u672C\u5C42\u548C\u6D4B\u8BD5\u5C42\u3002\u65B0\u589E\u4EE3\u7801\u65F6\u4F18\u5148\u590D\u7528\u73B0\u6709\u7A33\u5B9A\u6A21\u5757\uFF1B\u53EA\u6709\u5F53\u76F4\u63A5\u590D\u7528\u4F1A\u9020\u6210\u8FB9\u754C\u6C61\u67D3\u3001\u804C\u8D23\u6DF7\u4E71\u3001\u8026\u5408\u5347\u9AD8\u6216\u9519\u8BEF\u62BD\u8C61\u65F6\uFF0C\u624D\u65B0\u589E\u62BD\u8C61\u3001\u6A21\u5757\u6216\u76EE\u5F55\u3002\u516C\u5171\u80FD\u529B\u5E94\u6C89\u6DC0\u4E3A\u53EF\u590D\u7528\u7EC4\u4EF6\u3001\u670D\u52A1\u3001\u5DE5\u5177\u6216\u5E93\uFF0C\u4F46\u4E0D\u5F97\u4E3A\u4E86\u590D\u7528\u800C\u8FC7\u5EA6\u62BD\u8C61\u3002\u5355\u4E2A\u6587\u4EF6\u548C\u5355\u4E2A\u6A21\u5757\u5FC5\u987B\u4FDD\u6301\u5355\u4E00\u4E3B\u804C\u8D23\uFF1B\u82E5\u4E00\u4E2A\u6587\u4EF6\u540C\u65F6\u627F\u62C5\u8DEF\u7531\u3001\u63A7\u5236\u3001\u4E1A\u52A1\u89C4\u5219\u3001\u6570\u636E\u8BBF\u95EE\u3001\u72B6\u6001\u7BA1\u7406\u3001\u89C6\u56FE\u6E32\u67D3\u3001\u5DE5\u5177\u51FD\u6570\u6216\u914D\u7F6E\u88C5\u914D\u7B49\u591A\u7C7B\u804C\u8D23\uFF0C\u5E94\u7ACB\u5373\u62C6\u5206\uFF0C\u4E0D\u5F97\u7EE7\u7EED\u628A\u65B0\u9700\u6C42\u5806\u8FDB\u8BE5\u6587\u4EF6\u3002\u5B9E\u73B0\u6587\u4EF6\u63A5\u8FD1 800 \u884C\u65F6\u5E94\u4F18\u5148\u62C6\u6A21\u5757\uFF1B\u8D85\u8FC7 1200 \u884C\u65F6\u9ED8\u8BA4\u7981\u6B62\u7EE7\u7EED\u8FFD\u52A0\u65B0\u529F\u80FD\uFF0C\u9664\u975E\u672C\u6B21\u4EFB\u52A1\u5C31\u662F\u6709\u8BA1\u5212\u5730\u62C6\u5206\u5B83\uFF1B\u8FBE\u5230\u5DE8\u91CF\u6587\u4EF6\u9608\u503C\u65F6\uFF0C\u5E94\u5148\u505A\u673A\u68B0\u642C\u8FC1\u5F0F\u6A21\u5757\u5316\u62C6\u5206\uFF0C\u79FB\u52A8\u5B8C\u6574\u58F0\u660E\u5230\u771F\u5B9E\u547D\u540D\u7684\u6A21\u5757/\u76EE\u5F55\uFF0C\u4E0D\u5F97\u521B\u5EFA generated/parts/partN \u5047\u62C6\u5206\u6587\u4EF6\uFF0C\u4E5F\u4E0D\u5F97\u521B\u5EFA 1_xxx\u30012_xxx\u300103-xxx \u8FD9\u7C7B\u5E8F\u53F7\u6392\u5E8F\u6587\u4EF6\uFF1B\u6A21\u5757\u6587\u4EF6\u5FC5\u987B\u4F7F\u7528 config\u3001api\u3001service\u3001storage\u3001ui\u3001maintenance \u7B49\u7A33\u5B9A\u8BED\u4E49\u547D\u540D\u3002\u4F9D\u8D56\u65B9\u5411\u5FC5\u987B\u7A33\u5B9A\uFF1B\u7981\u6B62\u5FAA\u73AF\u4F9D\u8D56\u3001\u8DE8\u5C42\u7A7F\u900F\u548C\u5171\u4EAB\u6CE5\u7403\u3002\u9ED8\u8BA4\u4F18\u5148\u91C7\u7528\u6A21\u5757\u5316\u5355\u4F53\u3001\u6E05\u6670\u5206\u5C42\u3001\u53EF\u9006\u8BBE\u8BA1\u548C\u6E10\u8FDB\u6F14\u8FDB\u3002";
|
|
5
5
|
export declare const BUILTIN_REQUIREMENT_BOUNDARY_AND_MODULARITY_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u65B0\u9700\u6C42\u3001\u9700\u6C42\u53D8\u66F4\u3001\u529F\u80FD\u4FEE\u590D\u3001\u91CD\u6784\u548C\u4EE3\u7801\u4FEE\u6539\u4EFB\u52A1\u4E2D\u751F\u6548\uFF1B\u4E0D\u9650\u5236\u6A21\u578B\u5185\u90E8\u63A8\u7406\uFF0C\u53EA\u7EA6\u675F\u9700\u6C42\u8FB9\u754C\u3001\u6539\u52A8\u8303\u56F4\u548C\u6587\u4EF6\u7EC4\u7EC7\u3002\u6BCF\u6B21\u4FEE\u6539\u524D\u5FC5\u987B\u628A\u5F53\u524D\u7528\u6237\u8981\u6C42\u89C6\u4E3A\u552F\u4E00\u9700\u6C42\u8FB9\u754C\uFF1A\u53EA\u5B9E\u73B0\u7528\u6237\u660E\u786E\u63D0\u51FA\u7684\u884C\u4E3A\u3001\u9A8C\u6536\u70B9\u548C\u4E3A\u5176\u5FC5\u9700\u7684\u6700\u5C0F\u914D\u5957\u6539\u52A8\uFF1B\u4E0D\u5F97\u81EA\u884C\u53E0\u52A0\u770B\u4F3C\u5408\u7406\u4F46\u7528\u6237\u672A\u63D0\u51FA\u7684\u65B0\u6D41\u7A0B\u3001\u65B0\u72B6\u6001\u3001\u65B0\u9875\u9762\u3001\u65B0\u63A5\u53E3\u3001\u65B0\u5B57\u6BB5\u3001\u65B0\u89D2\u8272\u6A21\u578B\u3001\u65B0\u5BA1\u6838\u94FE\u8DEF\u6216\u65B0\u4E1A\u52A1\u89C4\u5219\u3002\u5DF2\u5B8C\u6210\u3001\u5DF2\u9A8C\u6536\u6216\u5F53\u524D\u9700\u6C42\u672A\u8981\u6C42\u4FEE\u6539\u7684\u529F\u80FD\uFF0C\u9ED8\u8BA4\u4FDD\u6301\u4E0D\u53D8\uFF1B\u5373\u4F7F\u4EE3\u7801\u540D\u79F0\u3001\u6A21\u5757\u4F4D\u7F6E\u6216\u8BED\u4E49\u770B\u8D77\u6765\u76F8\u5173\uFF0C\u4E5F\u4E0D\u5F97\u4E3A\u4E86\u987A\u624B\u6574\u7406\u3001\u7EDF\u4E00\u98CE\u683C\u3001\u731C\u6D4B\u540E\u7EED\u9700\u6C42\u800C\u6539\u52A8\u3002\u82E5\u53D1\u73B0\u5FC5\u987B\u89E6\u78B0\u770B\u4F3C\u76F8\u5173\u4F46\u4E0D\u5C5E\u4E8E\u5F53\u524D\u9700\u6C42\u7684\u65E7\u903B\u8F91\uFF0C\u5E94\u5148\u7F29\u5C0F\u5230\u5FC5\u8981\u9002\u914D\u70B9\uFF0C\u5E76\u5728\u6539\u52A8\u610F\u56FE\u4E2D\u8BF4\u660E\u539F\u56E0\u3002\u65B0\u589E\u529F\u80FD\u4E0D\u5F97\u96C6\u4E2D\u5199\u8FDB\u4E00\u4E2A\u4E07\u80FD\u6587\u4EF6\uFF1B\u8DEF\u7531/\u63A7\u5236\u3001\u4E1A\u52A1\u89C4\u5219\u3001\u6570\u636E\u8BBF\u95EE\u3001\u72B6\u6001\u7BA1\u7406\u3001UI \u6E32\u67D3\u3001\u5DE5\u5177\u51FD\u6570\u548C\u914D\u7F6E\u88C5\u914D\u5E94\u6309\u65E2\u6709\u76EE\u5F55\u8FB9\u754C\u62C6\u5206\u3002\u82E5\u73B0\u6709\u76EE\u6807\u6587\u4EF6\u5DF2\u7ECF\u5F88\u5927\uFF0C\u5E94\u4F18\u5148\u521B\u5EFA\u540C\u5C42\u5B50\u6A21\u5757\u6216\u63D0\u53D6\u670D\u52A1/\u7EC4\u4EF6/\u5DE5\u5177\uFF0C\u5E76\u8BA9\u539F\u6587\u4EF6\u53EA\u4FDD\u7559\u8584\u5165\u53E3\u6216\u88C5\u914D\u4EE3\u7801\u3002";
|
|
6
6
|
export declare const BUILTIN_FRONTEND_OUTPUT_PURITY_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u751F\u6210\u3001\u4FEE\u6539\u3001\u91CD\u6784\u9875\u9762\u3001\u7EC4\u4EF6\u3001\u6A21\u677F\u3001\u524D\u7AEF\u89C6\u56FE\u6216\u5176\u4ED6\u4F1A\u76F4\u63A5\u8FDB\u5165\u7528\u6237\u53EF\u89C1\u754C\u9762\u7684\u5C55\u793A\u4EE3\u7801\u65F6\u751F\u6548\uFF1B\u4E0D\u9650\u5236\u6A21\u578B\u5185\u90E8\u63A8\u7406\uFF0C\u53EA\u7EA6\u675F\u6700\u7EC8\u4EA4\u4ED8\u4EE3\u7801\u4E0E\u6E32\u67D3\u7ED3\u679C\u3002\u9875\u9762\u4EE3\u7801\u3001\u6A21\u677F\u5185\u5BB9\u3001\u9759\u6001\u6570\u636E\u3001\u9ED8\u8BA4\u6587\u6848\u3001\u6CE8\u91CA\u4E0E\u6E32\u67D3\u8F93\u51FA\u4E2D\uFF0C\u4E0D\u5F97\u5305\u542B\u672C\u6B21\u5BF9\u8BDD\u4E2D\u7684\u63D0\u793A\u8BCD\u3001\u7CFB\u7EDF\u6307\u4EE4\u3001\u5DE5\u5177\u8BF4\u660E\u3001\u63A8\u7406\u75D5\u8FF9\u3001\u4EFB\u52A1\u5206\u89E3\u3001\u6267\u884C\u8BA1\u5212\u6216\u4EFB\u4F55\u5143\u6307\u4EE4\u56DE\u663E\u3002\u4E0D\u5F97\u4E3A\u4E86\u8BF4\u660E AI \u6B63\u5728\u505A\u4EC0\u4E48\u3001\u63D0\u9192\u7528\u6237\u5982\u4F55\u64CD\u4F5C\u3001\u89E3\u91CA\u5B9E\u73B0\u8FC7\u7A0B\uFF0C\u6216\u586B\u8865\u672A\u77E5\u9700\u6C42\uFF0C\u800C\u989D\u5916\u52A0\u5165\u4E0E\u771F\u5B9E\u4E1A\u52A1\u65E0\u5173\u7684\u63D0\u793A\u6027\u6587\u5B57\u3001\u8BF4\u660E\u6027\u6587\u6848\u3001\u5360\u4F4D\u6027\u63CF\u8FF0\u6216\u6F14\u793A\u6027\u8BDD\u672F\uFF1B\u82E5\u9875\u9762\u786E\u5B9E\u9700\u8981\u5C55\u793A\u6587\u6848\uFF0C\u5E94\u4F18\u5148\u4F7F\u7528\u4E0E\u5F53\u524D\u4E1A\u52A1\u76EE\u6807\u76F4\u63A5\u76F8\u5173\u4E14\u53EF\u4F5C\u4E3A\u6700\u7EC8\u4EA7\u54C1\u4EA4\u4ED8\u7684\u5185\u5BB9\u3002";
|
|
7
7
|
export declare const BUILTIN_GIT_COMMIT_SUMMARY_INSTRUCTIONS = "\u5F00\u53D1\u89C4\u8303\u8303\u56F4\uFF1A\u4EE5\u4E0B\u5185\u5BB9\u53EA\u5B9A\u4E49\u5F00\u53D1\u89C4\u8303\u3001\u9879\u76EE\u8BB0\u5FC6\u89C4\u8303\u3001\u4EE3\u7801\u7EC4\u7EC7\u89C4\u8303\u4E0E\u4EA4\u4ED8\u8D28\u91CF\u8981\u6C42\u3002 \u4EE5\u4E0B\u89C4\u5219\u4EC5\u5728\u7528\u6237\u8981\u6C42\u6267\u884C git \u63D0\u4EA4\u3001\u521B\u5EFA commit\u3001\u751F\u6210\u63D0\u4EA4\u4FE1\u606F\u6216\u4EE3\u4E3A\u5B8C\u6210\u7248\u672C\u63D0\u4EA4\u65F6\u751F\u6548\uFF1B\u4E0D\u9650\u5236\u666E\u901A\u4EE3\u7801\u4FEE\u6539\u3001\u5206\u6790\u6216\u672A\u6D89\u53CA\u63D0\u4EA4\u7684 git \u72B6\u6001\u68C0\u67E5\u3002\u53EA\u8981\u7528\u6237\u8BA9\u4F60\u63D0\u4EA4 git\uFF0C\u5E94\u5728\u63D0\u4EA4\u524D\u6216\u63D0\u4EA4\u8BF4\u660E\u4E2D\u5305\u542B\u672C\u6B21\u66F4\u6539\u7684\u5185\u5BB9\u63CF\u8FF0\u6216\u603B\u7ED3\uFF0C\u8BF4\u660E\u4E3B\u8981\u6539\u52A8\u3001\u5F71\u54CD\u8303\u56F4\uFF0C\u4EE5\u53CA\u5982\u6709\u5FC5\u8981\u7684\u9A8C\u8BC1\u7ED3\u679C\uFF1B\u4E0D\u5F97\u53EA\u7ED9\u7A7A\u6CDB\u63D0\u4EA4\u4FE1\u606F\u6216\u53EA\u6267\u884C git commit \u800C\u4E0D\u8BF4\u660E\u672C\u6B21\u6539\u52A8\u5185\u5BB9\u3002";
|
|
@@ -2,7 +2,7 @@ const DEVELOPMENT_GUIDELINE_SCOPE = "开发规范范围:以下内容只定义
|
|
|
2
2
|
export const BUILTIN_WRITE_POLICY_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在代码开发、文件创建、文件修改、文件删除、文件移动等写操作任务中生效;不限制模型的分析、决策、实现路径与普通非写操作流程。所有代码或文件改动默认在当前活跃分支中进行;禁止创建、切换或使用临时分支、临时子分支,除非用户明确要求或既有工作流已经这样安排。为避免并发覆盖,同一会话内同一文件应串行编辑;多文件任务应先明确目标文件集合并按稳定顺序处理。`;
|
|
3
3
|
export const BUILTIN_PLAN_LITE_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在分析、排查、开发、调试、重构、文件修改、方案设计等多步骤任务型请求中生效;不限制模型内部推理,只约束外显任务管理与必要澄清。对这类请求,可给出轻量执行列表;若宿主提供原生计划/任务列表工具,则优先同步到该工具,否则以精简文本列表展示。只有当需求缺少会实质改变结果的关键条件、存在多个互斥且无法合理默认的方向,或继续执行可能造成明显返工/数据风险时,才进入澄清模式。目标和范围足够明确时,应直接执行。执行列表保持轻量,通常 3 至 7 项;仅在任务状态变化、范围变化、任务项变化或用户要求时更新,不得为了展示计划而制造冗长流程。`;
|
|
4
4
|
export const BUILTIN_DESTRUCTIVE_OPERATION_GUARD_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在真正可能导致现有源文件、配置、数据、用户内容或尚未保全改动被删除、覆盖、清空、回退、替换的破坏性操作中生效,例如 reset、clean、强制覆盖、批量删除/移动、覆盖式同步、危险迁移或会覆盖重要目标的发布。不应把普通 build/rebuild、test、lint、package、生成可重复产物、读取、搜索或常规修改视为破坏性操作。遇到真正破坏性操作时,应先识别受影响范围与风险;若用户已经明确要求该破坏性动作或目标是可再生产物、临时文件、明确指定对象,不要重复索要确认。`;
|
|
5
|
-
export const BUILTIN_ARCHITECTURE_AND_CODE_ORGANIZATION_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在项目搭建、架构设计、功能实现、模块扩展、重构、文件新增或修改等工程任务中生效;不限制模型内部推理,只约束架构与代码组织。开始实现前,判断当前需求所属边界,并让目录结构、模块划分、文件归属、命名方式和依赖方向与该边界一致;常见边界包括接口层、应用层、领域层、基础设施层、共享层、配置层、脚本层和测试层。新增代码时优先复用现有稳定模块;只有当直接复用会造成边界污染、职责混乱、耦合升高或错误抽象时,才新增抽象、模块或目录。公共能力应沉淀为可复用组件、服务、工具或库,但不得为了复用而过度抽象。单个文件和单个模块必须保持单一主职责;若一个文件同时承担路由、控制、业务规则、数据访问、状态管理、视图渲染、工具函数或配置装配等多类职责,应立即拆分,不得继续把新需求堆进该文件。实现文件接近 800 行时应优先拆模块;超过 1200 行时默认禁止继续追加新功能,除非本次任务就是有计划地拆分它;达到巨量文件阈值时,应先做机械搬迁式模块化拆分,移动完整声明到真实命名的模块/目录,不得创建 generated/parts/partN
|
|
5
|
+
export const BUILTIN_ARCHITECTURE_AND_CODE_ORGANIZATION_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在项目搭建、架构设计、功能实现、模块扩展、重构、文件新增或修改等工程任务中生效;不限制模型内部推理,只约束架构与代码组织。开始实现前,判断当前需求所属边界,并让目录结构、模块划分、文件归属、命名方式和依赖方向与该边界一致;常见边界包括接口层、应用层、领域层、基础设施层、共享层、配置层、脚本层和测试层。新增代码时优先复用现有稳定模块;只有当直接复用会造成边界污染、职责混乱、耦合升高或错误抽象时,才新增抽象、模块或目录。公共能力应沉淀为可复用组件、服务、工具或库,但不得为了复用而过度抽象。单个文件和单个模块必须保持单一主职责;若一个文件同时承担路由、控制、业务规则、数据访问、状态管理、视图渲染、工具函数或配置装配等多类职责,应立即拆分,不得继续把新需求堆进该文件。实现文件接近 800 行时应优先拆模块;超过 1200 行时默认禁止继续追加新功能,除非本次任务就是有计划地拆分它;达到巨量文件阈值时,应先做机械搬迁式模块化拆分,移动完整声明到真实命名的模块/目录,不得创建 generated/parts/partN 假拆分文件,也不得创建 1_xxx、2_xxx、03-xxx 这类序号排序文件;模块文件必须使用 config、api、service、storage、ui、maintenance 等稳定语义命名。依赖方向必须稳定;禁止循环依赖、跨层穿透和共享泥球。默认优先采用模块化单体、清晰分层、可逆设计和渐进演进。`;
|
|
6
6
|
export const BUILTIN_REQUIREMENT_BOUNDARY_AND_MODULARITY_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在新需求、需求变更、功能修复、重构和代码修改任务中生效;不限制模型内部推理,只约束需求边界、改动范围和文件组织。每次修改前必须把当前用户要求视为唯一需求边界:只实现用户明确提出的行为、验收点和为其必需的最小配套改动;不得自行叠加看似合理但用户未提出的新流程、新状态、新页面、新接口、新字段、新角色模型、新审核链路或新业务规则。已完成、已验收或当前需求未要求修改的功能,默认保持不变;即使代码名称、模块位置或语义看起来相关,也不得为了顺手整理、统一风格、猜测后续需求而改动。若发现必须触碰看似相关但不属于当前需求的旧逻辑,应先缩小到必要适配点,并在改动意图中说明原因。新增功能不得集中写进一个万能文件;路由/控制、业务规则、数据访问、状态管理、UI 渲染、工具函数和配置装配应按既有目录边界拆分。若现有目标文件已经很大,应优先创建同层子模块或提取服务/组件/工具,并让原文件只保留薄入口或装配代码。`;
|
|
7
7
|
export const BUILTIN_FRONTEND_OUTPUT_PURITY_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在生成、修改、重构页面、组件、模板、前端视图或其他会直接进入用户可见界面的展示代码时生效;不限制模型内部推理,只约束最终交付代码与渲染结果。页面代码、模板内容、静态数据、默认文案、注释与渲染输出中,不得包含本次对话中的提示词、系统指令、工具说明、推理痕迹、任务分解、执行计划或任何元指令回显。不得为了说明 AI 正在做什么、提醒用户如何操作、解释实现过程,或填补未知需求,而额外加入与真实业务无关的提示性文字、说明性文案、占位性描述或演示性话术;若页面确实需要展示文案,应优先使用与当前业务目标直接相关且可作为最终产品交付的内容。`;
|
|
8
8
|
export const BUILTIN_GIT_COMMIT_SUMMARY_INSTRUCTIONS = `${DEVELOPMENT_GUIDELINE_SCOPE} 以下规则仅在用户要求执行 git 提交、创建 commit、生成提交信息或代为完成版本提交时生效;不限制普通代码修改、分析或未涉及提交的 git 状态检查。只要用户让你提交 git,应在提交前或提交说明中包含本次更改的内容描述或总结,说明主要改动、影响范围,以及如有必要的验证结果;不得只给空泛提交信息或只执行 git commit 而不说明本次改动内容。`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-instructions.js","sourceRoot":"","sources":["../src/builtin-instructions.ts"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,GAC/B,0CAA0C,CAAC;AAE7C,MAAM,CAAC,MAAM,iCAAiC,GAC5C,GAAG,2BAA2B,oLAAoL,CAAC;AAErN,MAAM,CAAC,MAAM,8BAA8B,GACzC,GAAG,2BAA2B,gRAAgR,CAAC;AAEjT,MAAM,CAAC,MAAM,gDAAgD,GAC3D,GAAG,2BAA2B,uPAAuP,CAAC;AAExR,MAAM,CAAC,MAAM,uDAAuD,GAClE,GAAG,2BAA2B,
|
|
1
|
+
{"version":3,"file":"builtin-instructions.js","sourceRoot":"","sources":["../src/builtin-instructions.ts"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,GAC/B,0CAA0C,CAAC;AAE7C,MAAM,CAAC,MAAM,iCAAiC,GAC5C,GAAG,2BAA2B,oLAAoL,CAAC;AAErN,MAAM,CAAC,MAAM,8BAA8B,GACzC,GAAG,2BAA2B,gRAAgR,CAAC;AAEjT,MAAM,CAAC,MAAM,gDAAgD,GAC3D,GAAG,2BAA2B,uPAAuP,CAAC;AAExR,MAAM,CAAC,MAAM,uDAAuD,GAClE,GAAG,2BAA2B,6mBAA6mB,CAAC;AAE9oB,MAAM,CAAC,MAAM,wDAAwD,GACnE,GAAG,2BAA2B,sZAAsZ,CAAC;AAEvb,MAAM,CAAC,MAAM,2CAA2C,GACtD,GAAG,2BAA2B,iRAAiR,CAAC;AAElT,MAAM,CAAC,MAAM,uCAAuC,GAClD,GAAG,2BAA2B,qLAAqL,CAAC;AAEtN,MAAM,CAAC,MAAM,0CAA0C,GACrD,GAAG,2BAA2B,iUAAiU,CAAC;AAElW,MAAM,CAAC,MAAM,kCAAkC,GAC7C,GAAG,2BAA2B,4TAA4T,CAAC;AAE7V,MAAM,CAAC,MAAM,0CAA0C,GACrD,GAAG,2BAA2B,8SAA8S,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const SERVER_NAME = "vector-mind";
|
|
2
|
-
export declare const SERVER_VERSION = "1.0.
|
|
2
|
+
export declare const SERVER_VERSION = "1.0.53";
|
|
3
3
|
export declare const prettyJsonOutput: boolean;
|
|
4
4
|
export declare const debugLogEnabled: boolean;
|
|
5
5
|
export declare const debugLogMaxEntries: number;
|
|
@@ -24,5 +24,8 @@ export declare const MAINTENANCE_INTERVAL_HOURS: number;
|
|
|
24
24
|
export declare const MAINTENANCE_COMPACT_AFTER_DAYS: number;
|
|
25
25
|
export declare const MAINTENANCE_MAX_MEMORY_ITEMS: number;
|
|
26
26
|
export declare const MAINTENANCE_MAX_INDEX_FILES: number;
|
|
27
|
+
export declare const MAINTENANCE_PURGE_HIDDEN_AFTER_DAYS: number;
|
|
28
|
+
export declare const MAINTENANCE_TOKEN_SAVINGS_RETENTION_DAYS: number;
|
|
29
|
+
export declare const MAINTENANCE_CHECKPOINT_WAL: boolean;
|
|
27
30
|
export declare const ROOTS_LIST_TIMEOUT_MS: number;
|
|
28
31
|
export declare const BOOTSTRAP_SEMANTIC_TIMEOUT_MS: number;
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const SERVER_NAME = "vector-mind";
|
|
2
|
-
export const SERVER_VERSION = "1.0.
|
|
2
|
+
export const SERVER_VERSION = "1.0.53";
|
|
3
3
|
export const prettyJsonOutput = ["1", "true", "on", "yes"].includes((process.env.VECTORMIND_PRETTY_JSON ?? "").trim().toLowerCase());
|
|
4
4
|
export const debugLogEnabled = ["1", "true", "on", "yes"].includes((process.env.VECTORMIND_DEBUG_LOG ?? "").trim().toLowerCase());
|
|
5
5
|
export const debugLogMaxEntries = (() => {
|
|
@@ -168,6 +168,30 @@ export const MAINTENANCE_MAX_INDEX_FILES = (() => {
|
|
|
168
168
|
return 1500;
|
|
169
169
|
return Math.min(50_000, n);
|
|
170
170
|
})();
|
|
171
|
+
export const MAINTENANCE_PURGE_HIDDEN_AFTER_DAYS = (() => {
|
|
172
|
+
const raw = process.env.VECTORMIND_PURGE_HIDDEN_AFTER_DAYS?.trim();
|
|
173
|
+
if (!raw)
|
|
174
|
+
return 60;
|
|
175
|
+
const n = Number.parseInt(raw, 10);
|
|
176
|
+
if (!Number.isFinite(n) || n < 1)
|
|
177
|
+
return 60;
|
|
178
|
+
return Math.min(3650, n);
|
|
179
|
+
})();
|
|
180
|
+
export const MAINTENANCE_TOKEN_SAVINGS_RETENTION_DAYS = (() => {
|
|
181
|
+
const raw = process.env.VECTORMIND_TOKEN_SAVINGS_RETENTION_DAYS?.trim();
|
|
182
|
+
if (!raw)
|
|
183
|
+
return 30;
|
|
184
|
+
const n = Number.parseInt(raw, 10);
|
|
185
|
+
if (!Number.isFinite(n) || n < 1)
|
|
186
|
+
return 30;
|
|
187
|
+
return Math.min(3650, n);
|
|
188
|
+
})();
|
|
189
|
+
export const MAINTENANCE_CHECKPOINT_WAL = (() => {
|
|
190
|
+
const raw = (process.env.VECTORMIND_CHECKPOINT_WAL ?? "").trim().toLowerCase();
|
|
191
|
+
if (!raw)
|
|
192
|
+
return true;
|
|
193
|
+
return ["1", "true", "on", "yes"].includes(raw);
|
|
194
|
+
})();
|
|
171
195
|
export const ROOTS_LIST_TIMEOUT_MS = (() => {
|
|
172
196
|
const raw = process.env.VECTORMIND_ROOTS_TIMEOUT_MS?.trim();
|
|
173
197
|
if (!raw)
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,9 @@ export type PreparedDatabaseStatements = {
|
|
|
12
12
|
completeRequirementMemoryItemByReqIdStmt: Database.Statement;
|
|
13
13
|
listChangeLogsForRequirementStmt: Database.Statement;
|
|
14
14
|
insertChangeLogStmt: Database.Statement;
|
|
15
|
+
upsertSyncedFileStateStmt: Database.Statement;
|
|
16
|
+
getSyncedFileStateStmt: Database.Statement;
|
|
17
|
+
insertMcpGuardEventStmt: Database.Statement;
|
|
15
18
|
insertMemoryItemStmt: Database.Statement;
|
|
16
19
|
getMemoryItemByIdStmt: Database.Statement;
|
|
17
20
|
getRequirementMemoryItemIdStmt: Database.Statement;
|
package/dist/database-runtime.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import Database from "better-sqlite3";
|
|
4
4
|
import { MEMORY_ITEMS_FTS_TABLE } from "./memory-recall.js";
|
|
5
|
+
import { shouldIgnoreDbFilePath } from "./path-rules.js";
|
|
5
6
|
export const FTS_TABLE_NAME = MEMORY_ITEMS_FTS_TABLE;
|
|
6
7
|
let db;
|
|
7
8
|
let dbPath = "";
|
|
@@ -16,6 +17,9 @@ let completeAllActiveRequirementMemoryItemsStmt;
|
|
|
16
17
|
let completeRequirementMemoryItemByReqIdStmt;
|
|
17
18
|
let listChangeLogsForRequirementStmt;
|
|
18
19
|
let insertChangeLogStmt;
|
|
20
|
+
let upsertSyncedFileStateStmt;
|
|
21
|
+
let getSyncedFileStateStmt;
|
|
22
|
+
let insertMcpGuardEventStmt;
|
|
19
23
|
let insertMemoryItemStmt;
|
|
20
24
|
let getMemoryItemByIdStmt;
|
|
21
25
|
let getRequirementMemoryItemIdStmt;
|
|
@@ -126,6 +130,270 @@ function columnExists(table, column) {
|
|
|
126
130
|
return false;
|
|
127
131
|
}
|
|
128
132
|
}
|
|
133
|
+
function safeParseObject(value) {
|
|
134
|
+
if (!value)
|
|
135
|
+
return {};
|
|
136
|
+
try {
|
|
137
|
+
const parsed = JSON.parse(value);
|
|
138
|
+
return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return {};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function stringValue(value) {
|
|
145
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
146
|
+
}
|
|
147
|
+
function nullableStringValue(value) {
|
|
148
|
+
if (value === null)
|
|
149
|
+
return null;
|
|
150
|
+
return stringValue(value);
|
|
151
|
+
}
|
|
152
|
+
function mergeStringArrays(values) {
|
|
153
|
+
const merged = [];
|
|
154
|
+
for (const value of values) {
|
|
155
|
+
if (!Array.isArray(value))
|
|
156
|
+
continue;
|
|
157
|
+
for (const item of value) {
|
|
158
|
+
if (typeof item === "string" && item.length > 0 && !merged.includes(item))
|
|
159
|
+
merged.push(item);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return merged;
|
|
163
|
+
}
|
|
164
|
+
function migrationFileKey(filePath) {
|
|
165
|
+
const normalized = filePath.replace(/\\/g, "/");
|
|
166
|
+
return process.platform === "win32" ? normalized.toLowerCase() : normalized;
|
|
167
|
+
}
|
|
168
|
+
function addMigrationFileEntry(filesByPath, filePath, metadata = {}) {
|
|
169
|
+
const normalizedFilePath = stringValue(filePath)?.replace(/\\/g, "/");
|
|
170
|
+
if (!normalizedFilePath || normalizedFilePath === "(multiple)" || normalizedFilePath === "(unspecified)")
|
|
171
|
+
return;
|
|
172
|
+
if (shouldIgnoreDbFilePath(normalizedFilePath))
|
|
173
|
+
return;
|
|
174
|
+
const key = migrationFileKey(normalizedFilePath);
|
|
175
|
+
const existing = filesByPath.get(key) ?? { file_path: normalizedFilePath };
|
|
176
|
+
const event = stringValue(metadata.event);
|
|
177
|
+
const source = stringValue(metadata.source);
|
|
178
|
+
const fileStateHash = nullableStringValue(metadata.file_state_hash);
|
|
179
|
+
if (event && !existing.event)
|
|
180
|
+
existing.event = event;
|
|
181
|
+
if (source && !existing.source)
|
|
182
|
+
existing.source = source;
|
|
183
|
+
if (fileStateHash !== undefined && existing.file_state_hash === undefined)
|
|
184
|
+
existing.file_state_hash = fileStateHash;
|
|
185
|
+
filesByPath.set(key, existing);
|
|
186
|
+
}
|
|
187
|
+
function addMigrationFilesFromMetadata(filesByPath, metadata) {
|
|
188
|
+
const files = metadata.files;
|
|
189
|
+
if (!Array.isArray(files))
|
|
190
|
+
return;
|
|
191
|
+
for (const item of files) {
|
|
192
|
+
if (!item || typeof item !== "object" || Array.isArray(item))
|
|
193
|
+
continue;
|
|
194
|
+
const entry = item;
|
|
195
|
+
addMigrationFileEntry(filesByPath, entry.file_path, entry);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function migrationFilesJson(filesByPath) {
|
|
199
|
+
return JSON.stringify([...filesByPath.values()].map((file) => ({
|
|
200
|
+
file_path: file.file_path,
|
|
201
|
+
event: file.event,
|
|
202
|
+
source: file.source,
|
|
203
|
+
file_state_hash: file.file_state_hash ?? null,
|
|
204
|
+
})));
|
|
205
|
+
}
|
|
206
|
+
function repairDuplicateChangeLogs() {
|
|
207
|
+
const groups = db
|
|
208
|
+
.prepare(`SELECT req_id, timestamp, intent_summary, MIN(id) AS keep_id, COUNT(*) AS row_count
|
|
209
|
+
FROM change_logs
|
|
210
|
+
GROUP BY req_id, timestamp, intent_summary
|
|
211
|
+
HAVING COUNT(*) > 1`)
|
|
212
|
+
.all();
|
|
213
|
+
if (!groups.length)
|
|
214
|
+
return 0;
|
|
215
|
+
const selectGroupRows = db.prepare(`SELECT id, req_id, file_path, intent_summary, files_json, file_count, timestamp
|
|
216
|
+
FROM change_logs
|
|
217
|
+
WHERE req_id IS ? AND timestamp IS ? AND intent_summary IS ?
|
|
218
|
+
ORDER BY id ASC`);
|
|
219
|
+
const updateKeepRow = db.prepare(`UPDATE change_logs
|
|
220
|
+
SET file_path = ?, files_json = ?, file_count = ?
|
|
221
|
+
WHERE id = ?`);
|
|
222
|
+
const deleteRow = db.prepare(`DELETE FROM change_logs WHERE id = ?`);
|
|
223
|
+
let removedRows = 0;
|
|
224
|
+
const tx = db.transaction(() => {
|
|
225
|
+
for (const group of groups) {
|
|
226
|
+
const rows = selectGroupRows.all(group.req_id, group.timestamp, group.intent_summary);
|
|
227
|
+
if (rows.length <= 1)
|
|
228
|
+
continue;
|
|
229
|
+
const filesByPath = new Map();
|
|
230
|
+
for (const row of rows) {
|
|
231
|
+
addMigrationFilesFromMetadata(filesByPath, safeParseObject(row.files_json));
|
|
232
|
+
addMigrationFileEntry(filesByPath, row.file_path);
|
|
233
|
+
}
|
|
234
|
+
const files = [...filesByPath.values()];
|
|
235
|
+
const primaryFilePath = files.length === 1 ? files[0].file_path : files.length > 1 ? "(multiple)" : null;
|
|
236
|
+
const keepId = Number(group.keep_id);
|
|
237
|
+
updateKeepRow.run(primaryFilePath, migrationFilesJson(filesByPath), files.length, keepId);
|
|
238
|
+
for (const row of rows) {
|
|
239
|
+
if (row.id === keepId)
|
|
240
|
+
continue;
|
|
241
|
+
deleteRow.run(row.id);
|
|
242
|
+
removedRows += 1;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
tx();
|
|
247
|
+
return removedRows;
|
|
248
|
+
}
|
|
249
|
+
function repairDuplicateChangeIntentMemoryItems() {
|
|
250
|
+
const groups = db
|
|
251
|
+
.prepare(`SELECT req_id, content, MIN(id) AS keep_id, COUNT(*) AS row_count
|
|
252
|
+
FROM memory_items
|
|
253
|
+
WHERE kind = 'change_intent'
|
|
254
|
+
GROUP BY req_id, content
|
|
255
|
+
HAVING COUNT(*) > 1`)
|
|
256
|
+
.all();
|
|
257
|
+
if (!groups.length)
|
|
258
|
+
return 0;
|
|
259
|
+
const selectGroupRows = db.prepare(`SELECT id, title, content, file_path, req_id, metadata_json, updated_at
|
|
260
|
+
FROM memory_items
|
|
261
|
+
WHERE kind = 'change_intent'
|
|
262
|
+
AND req_id IS ?
|
|
263
|
+
AND content IS ?
|
|
264
|
+
ORDER BY id ASC`);
|
|
265
|
+
const updateKeepRow = db.prepare(`UPDATE memory_items
|
|
266
|
+
SET file_path = ?, metadata_json = ?
|
|
267
|
+
WHERE id = ?`);
|
|
268
|
+
const deleteRow = db.prepare(`DELETE FROM memory_items WHERE id = ?`);
|
|
269
|
+
let removedRows = 0;
|
|
270
|
+
const tx = db.transaction(() => {
|
|
271
|
+
for (const group of groups) {
|
|
272
|
+
const rows = selectGroupRows.all(group.req_id, group.content);
|
|
273
|
+
if (rows.length <= 1)
|
|
274
|
+
continue;
|
|
275
|
+
const filesByPath = new Map();
|
|
276
|
+
const metadataList = rows.map((row) => safeParseObject(row.metadata_json));
|
|
277
|
+
for (let i = 0; i < rows.length; i += 1) {
|
|
278
|
+
const row = rows[i];
|
|
279
|
+
const metadata = metadataList[i] ?? {};
|
|
280
|
+
addMigrationFilesFromMetadata(filesByPath, metadata);
|
|
281
|
+
addMigrationFileEntry(filesByPath, row.file_path, metadata);
|
|
282
|
+
}
|
|
283
|
+
const files = [...filesByPath.values()];
|
|
284
|
+
const keepId = Number(group.keep_id);
|
|
285
|
+
const keepRow = rows.find((row) => row.id === keepId) ?? rows[0];
|
|
286
|
+
const keepMetadata = safeParseObject(keepRow.metadata_json);
|
|
287
|
+
const sourceChangeIds = new Set();
|
|
288
|
+
for (const metadata of metadataList) {
|
|
289
|
+
if (typeof metadata.change_log_id === "number")
|
|
290
|
+
sourceChangeIds.add(metadata.change_log_id);
|
|
291
|
+
if (Array.isArray(metadata.source_change_ids)) {
|
|
292
|
+
for (const id of metadata.source_change_ids) {
|
|
293
|
+
if (typeof id === "number")
|
|
294
|
+
sourceChangeIds.add(id);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const nextMetadata = {
|
|
299
|
+
...keepMetadata,
|
|
300
|
+
files: files.map((file) => ({
|
|
301
|
+
file_path: file.file_path,
|
|
302
|
+
event: file.event,
|
|
303
|
+
source: file.source,
|
|
304
|
+
file_state_hash: file.file_state_hash ?? null,
|
|
305
|
+
})),
|
|
306
|
+
file_count: files.length,
|
|
307
|
+
};
|
|
308
|
+
const verification = mergeStringArrays(metadataList.map((metadata) => metadata.verification));
|
|
309
|
+
const verificationGaps = mergeStringArrays(metadataList.map((metadata) => metadata.verification_gaps));
|
|
310
|
+
if (verification.length)
|
|
311
|
+
nextMetadata.verification = verification;
|
|
312
|
+
if (verificationGaps.length)
|
|
313
|
+
nextMetadata.verification_gaps = verificationGaps;
|
|
314
|
+
if (sourceChangeIds.size)
|
|
315
|
+
nextMetadata.source_change_ids = [...sourceChangeIds];
|
|
316
|
+
if (files.length === 1) {
|
|
317
|
+
const onlyFile = files[0];
|
|
318
|
+
nextMetadata.event = onlyFile.event;
|
|
319
|
+
nextMetadata.source = onlyFile.source;
|
|
320
|
+
nextMetadata.file_state_hash = onlyFile.file_state_hash ?? null;
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
delete nextMetadata.event;
|
|
324
|
+
delete nextMetadata.source;
|
|
325
|
+
delete nextMetadata.file_state_hash;
|
|
326
|
+
}
|
|
327
|
+
updateKeepRow.run(files.length === 1 ? files[0].file_path : null, JSON.stringify(nextMetadata), keepId);
|
|
328
|
+
for (const row of rows) {
|
|
329
|
+
if (row.id === keepId)
|
|
330
|
+
continue;
|
|
331
|
+
deleteRow.run(row.id);
|
|
332
|
+
removedRows += 1;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
tx();
|
|
337
|
+
return removedRows;
|
|
338
|
+
}
|
|
339
|
+
function backfillSyncedFileStatesFromChangeIntentMemory() {
|
|
340
|
+
const rows = db
|
|
341
|
+
.prepare(`SELECT id, file_path, metadata_json, updated_at
|
|
342
|
+
FROM memory_items
|
|
343
|
+
WHERE kind = 'change_intent'
|
|
344
|
+
ORDER BY updated_at ASC, id ASC`)
|
|
345
|
+
.all();
|
|
346
|
+
if (!rows.length)
|
|
347
|
+
return 0;
|
|
348
|
+
const upsert = db.prepare(`INSERT INTO synced_file_states (file_path, file_state_hash, source_change_id, updated_at)
|
|
349
|
+
VALUES (?, ?, ?, CURRENT_TIMESTAMP)
|
|
350
|
+
ON CONFLICT(file_path) DO UPDATE SET
|
|
351
|
+
file_state_hash = excluded.file_state_hash,
|
|
352
|
+
source_change_id = excluded.source_change_id,
|
|
353
|
+
updated_at = CURRENT_TIMESTAMP`);
|
|
354
|
+
let written = 0;
|
|
355
|
+
const tx = db.transaction(() => {
|
|
356
|
+
for (const row of rows) {
|
|
357
|
+
const metadata = safeParseObject(row.metadata_json);
|
|
358
|
+
const sourceChangeId = typeof metadata.change_log_id === "number"
|
|
359
|
+
? metadata.change_log_id
|
|
360
|
+
: Array.isArray(metadata.source_change_ids) && typeof metadata.source_change_ids[0] === "number"
|
|
361
|
+
? metadata.source_change_ids[0]
|
|
362
|
+
: null;
|
|
363
|
+
const filesByPath = new Map();
|
|
364
|
+
addMigrationFilesFromMetadata(filesByPath, metadata);
|
|
365
|
+
addMigrationFileEntry(filesByPath, row.file_path, metadata);
|
|
366
|
+
for (const file of filesByPath.values()) {
|
|
367
|
+
if (typeof file.file_state_hash !== "string")
|
|
368
|
+
continue;
|
|
369
|
+
upsert.run(file.file_path, file.file_state_hash, sourceChangeId);
|
|
370
|
+
written += 1;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
tx();
|
|
375
|
+
return written;
|
|
376
|
+
}
|
|
377
|
+
function repairHistoricalDuplicateChangeRecords() {
|
|
378
|
+
try {
|
|
379
|
+
const removedChangeLogs = repairDuplicateChangeLogs();
|
|
380
|
+
const removedChangeIntentMemory = repairDuplicateChangeIntentMemoryItems();
|
|
381
|
+
const syncedFileStates = backfillSyncedFileStatesFromChangeIntentMemory();
|
|
382
|
+
if (removedChangeLogs || removedChangeIntentMemory || syncedFileStates) {
|
|
383
|
+
db.prepare(`INSERT INTO meta_kv (key, value, updated_at)
|
|
384
|
+
VALUES ('maintenance:dedupe_change_records:last_run', ?, CURRENT_TIMESTAMP)
|
|
385
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = CURRENT_TIMESTAMP`).run(JSON.stringify({
|
|
386
|
+
removed_change_logs: removedChangeLogs,
|
|
387
|
+
removed_change_intent_memory: removedChangeIntentMemory,
|
|
388
|
+
synced_file_states: syncedFileStates,
|
|
389
|
+
ran_at: new Date().toISOString(),
|
|
390
|
+
}));
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
catch (err) {
|
|
394
|
+
console.error("[vectormind] historical duplicate change-record repair failed:", err);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
129
397
|
export function openDatabaseRuntime(projectRoot) {
|
|
130
398
|
const vmDir = path.join(projectRoot, ".vectormind");
|
|
131
399
|
try {
|
|
@@ -148,14 +416,16 @@ export function openDatabaseRuntime(projectRoot) {
|
|
|
148
416
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
149
417
|
);
|
|
150
418
|
|
|
151
|
-
CREATE TABLE IF NOT EXISTS change_logs (
|
|
152
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
153
|
-
req_id INTEGER,
|
|
154
|
-
file_path TEXT,
|
|
155
|
-
intent_summary TEXT,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
419
|
+
CREATE TABLE IF NOT EXISTS change_logs (
|
|
420
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
421
|
+
req_id INTEGER,
|
|
422
|
+
file_path TEXT,
|
|
423
|
+
intent_summary TEXT,
|
|
424
|
+
files_json TEXT,
|
|
425
|
+
file_count INTEGER DEFAULT 1,
|
|
426
|
+
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
427
|
+
FOREIGN KEY(req_id) REFERENCES requirements(id)
|
|
428
|
+
);
|
|
159
429
|
|
|
160
430
|
CREATE TABLE IF NOT EXISTS symbols (
|
|
161
431
|
name TEXT,
|
|
@@ -165,11 +435,38 @@ export function openDatabaseRuntime(projectRoot) {
|
|
|
165
435
|
PRIMARY KEY(name, file_path)
|
|
166
436
|
);
|
|
167
437
|
|
|
168
|
-
CREATE INDEX IF NOT EXISTS idx_change_logs_req_id_timestamp
|
|
169
|
-
ON change_logs(req_id, timestamp DESC);
|
|
170
|
-
|
|
171
|
-
CREATE
|
|
172
|
-
|
|
438
|
+
CREATE INDEX IF NOT EXISTS idx_change_logs_req_id_timestamp
|
|
439
|
+
ON change_logs(req_id, timestamp DESC);
|
|
440
|
+
|
|
441
|
+
CREATE TABLE IF NOT EXISTS synced_file_states (
|
|
442
|
+
file_path TEXT PRIMARY KEY,
|
|
443
|
+
file_state_hash TEXT,
|
|
444
|
+
source_change_id INTEGER,
|
|
445
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
446
|
+
);
|
|
447
|
+
|
|
448
|
+
CREATE INDEX IF NOT EXISTS idx_synced_file_states_updated_at
|
|
449
|
+
ON synced_file_states(updated_at DESC);
|
|
450
|
+
|
|
451
|
+
CREATE TABLE IF NOT EXISTS mcp_guard_events (
|
|
452
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
453
|
+
tool_name TEXT NOT NULL,
|
|
454
|
+
event_type TEXT NOT NULL,
|
|
455
|
+
severity TEXT DEFAULT 'info',
|
|
456
|
+
title TEXT NOT NULL,
|
|
457
|
+
detail TEXT,
|
|
458
|
+
metadata_json TEXT,
|
|
459
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
460
|
+
);
|
|
461
|
+
|
|
462
|
+
CREATE INDEX IF NOT EXISTS idx_mcp_guard_events_created_at
|
|
463
|
+
ON mcp_guard_events(created_at DESC, id DESC);
|
|
464
|
+
|
|
465
|
+
CREATE INDEX IF NOT EXISTS idx_mcp_guard_events_type_created_at
|
|
466
|
+
ON mcp_guard_events(event_type, created_at DESC);
|
|
467
|
+
|
|
468
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_name
|
|
469
|
+
ON symbols(name);
|
|
173
470
|
|
|
174
471
|
CREATE TABLE IF NOT EXISTS memory_items (
|
|
175
472
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -263,7 +560,14 @@ export function openDatabaseRuntime(projectRoot) {
|
|
|
263
560
|
db.exec(`ALTER TABLE requirements ADD COLUMN updated_at DATETIME`);
|
|
264
561
|
db.exec(`UPDATE requirements SET updated_at = COALESCE(created_at, CURRENT_TIMESTAMP) WHERE updated_at IS NULL`);
|
|
265
562
|
}
|
|
266
|
-
|
|
563
|
+
if (!columnExists("change_logs", "files_json")) {
|
|
564
|
+
db.exec(`ALTER TABLE change_logs ADD COLUMN files_json TEXT`);
|
|
565
|
+
}
|
|
566
|
+
if (!columnExists("change_logs", "file_count")) {
|
|
567
|
+
db.exec(`ALTER TABLE change_logs ADD COLUMN file_count INTEGER DEFAULT 1`);
|
|
568
|
+
db.exec(`UPDATE change_logs SET file_count = 1 WHERE file_count IS NULL`);
|
|
569
|
+
}
|
|
570
|
+
db.exec(`
|
|
267
571
|
UPDATE requirements SET updated_at = COALESCE(updated_at, created_at, CURRENT_TIMESTAMP) WHERE updated_at IS NULL;
|
|
268
572
|
CREATE INDEX IF NOT EXISTS idx_requirements_status_updated_at
|
|
269
573
|
ON requirements(status, updated_at DESC, id DESC);
|
|
@@ -276,6 +580,7 @@ export function openDatabaseRuntime(projectRoot) {
|
|
|
276
580
|
END;
|
|
277
581
|
`);
|
|
278
582
|
initMemoryItemsFts();
|
|
583
|
+
repairHistoricalDuplicateChangeRecords();
|
|
279
584
|
insertRequirementStmt = db.prepare(`INSERT INTO requirements (title, context_data, status) VALUES (?, ?, 'active')`);
|
|
280
585
|
completeAllActiveRequirementsStmt = db.prepare(`UPDATE requirements SET status = 'completed' WHERE status = 'active'`);
|
|
281
586
|
completeRequirementByIdStmt = db.prepare(`UPDATE requirements SET status = 'completed' WHERE id = ?`);
|
|
@@ -323,12 +628,27 @@ export function openDatabaseRuntime(projectRoot) {
|
|
|
323
628
|
updated_at = CURRENT_TIMESTAMP
|
|
324
629
|
WHERE kind = 'requirement'
|
|
325
630
|
AND req_id = ?`);
|
|
326
|
-
listChangeLogsForRequirementStmt = db.prepare(`SELECT id, req_id, file_path, intent_summary, timestamp
|
|
327
|
-
FROM change_logs
|
|
328
|
-
WHERE req_id = ?
|
|
329
|
-
ORDER BY timestamp DESC, id DESC
|
|
631
|
+
listChangeLogsForRequirementStmt = db.prepare(`SELECT id, req_id, file_path, intent_summary, files_json, file_count, timestamp
|
|
632
|
+
FROM change_logs
|
|
633
|
+
WHERE req_id = ?
|
|
634
|
+
ORDER BY timestamp DESC, id DESC
|
|
330
635
|
LIMIT ?`);
|
|
331
|
-
insertChangeLogStmt = db.prepare(`INSERT INTO change_logs (req_id, file_path, intent_summary
|
|
636
|
+
insertChangeLogStmt = db.prepare(`INSERT INTO change_logs (req_id, file_path, intent_summary, files_json, file_count)
|
|
637
|
+
VALUES (?, ?, ?, ?, ?)`);
|
|
638
|
+
upsertSyncedFileStateStmt = db.prepare(`INSERT INTO synced_file_states (file_path, file_state_hash, source_change_id, updated_at)
|
|
639
|
+
VALUES (?, ?, ?, CURRENT_TIMESTAMP)
|
|
640
|
+
ON CONFLICT(file_path) DO UPDATE SET
|
|
641
|
+
file_state_hash = excluded.file_state_hash,
|
|
642
|
+
source_change_id = excluded.source_change_id,
|
|
643
|
+
updated_at = CURRENT_TIMESTAMP`);
|
|
644
|
+
getSyncedFileStateStmt = db.prepare(`SELECT file_path, file_state_hash, source_change_id, updated_at
|
|
645
|
+
FROM synced_file_states
|
|
646
|
+
WHERE file_path = ?
|
|
647
|
+
LIMIT 1`);
|
|
648
|
+
insertMcpGuardEventStmt = db.prepare(`INSERT INTO mcp_guard_events
|
|
649
|
+
(tool_name, event_type, severity, title, detail, metadata_json)
|
|
650
|
+
VALUES
|
|
651
|
+
(?, ?, ?, ?, ?, ?)`);
|
|
332
652
|
insertMemoryItemStmt = db.prepare(`INSERT INTO memory_items
|
|
333
653
|
(kind, title, content, file_path, start_line, end_line, req_id, metadata_json, content_hash)
|
|
334
654
|
VALUES
|
|
@@ -476,6 +796,9 @@ export function openDatabaseRuntime(projectRoot) {
|
|
|
476
796
|
completeRequirementMemoryItemByReqIdStmt,
|
|
477
797
|
listChangeLogsForRequirementStmt,
|
|
478
798
|
insertChangeLogStmt,
|
|
799
|
+
upsertSyncedFileStateStmt,
|
|
800
|
+
getSyncedFileStateStmt,
|
|
801
|
+
insertMcpGuardEventStmt,
|
|
479
802
|
insertMemoryItemStmt,
|
|
480
803
|
getMemoryItemByIdStmt,
|
|
481
804
|
getRequirementMemoryItemIdStmt,
|