dominds 1.2.5 → 1.2.7
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/dist/agent-priming.js +2051 -0
- package/dist/apps/app-lock-file.js +228 -0
- package/dist/apps/assigned-port.js +124 -0
- package/dist/apps/enabled-apps.js +472 -7
- package/dist/apps/manifest.js +37 -0
- package/dist/apps/override-paths.js +19 -6
- package/dist/apps/problems.js +43 -0
- package/dist/apps/resolution-file.js +370 -0
- package/dist/apps/runtime.js +5 -17
- package/dist/apps/teammates.js +102 -1
- package/dist/cli/disable.js +10 -6
- package/dist/cli/enable.js +21 -19
- package/dist/cli/install.js +40 -18
- package/dist/cli/uninstall.js +6 -6
- package/dist/cli/update.js +38 -13
- package/dist/dialog.js +5 -0
- package/dist/docs/app-constitution.md +85 -18
- package/dist/docs/app-constitution.zh.md +86 -21
- package/dist/docs/dialog-system.md +1 -1
- package/dist/docs/dialog-system.zh.md +1 -1
- package/dist/docs/dominds-agent-priming.md +218 -0
- package/dist/docs/dominds-agent-priming.zh.md +196 -0
- package/dist/docs/drive-logic-context-refactor-plan.zh.md +338 -0
- package/dist/docs/keep-going.md +176 -0
- package/dist/docs/keep-going.zh.md +162 -0
- package/dist/docs/showing-by-doing.md +208 -0
- package/dist/docs/showing-by-doing.zh.md +177 -0
- package/dist/docs/team-mgmt-toolset.md +482 -0
- package/dist/docs/team-mgmt-toolset.zh.md +426 -0
- package/dist/llm/defaults.yaml +1 -1
- package/dist/llm/driver.js +4093 -0
- package/dist/llm/kernel-driver/drive.js +5 -2
- package/dist/llm/kernel-driver/flow.js +3 -0
- package/dist/minds/promptdocs.js +263 -0
- package/dist/problems.js +67 -16
- package/dist/server/api-routes.js +333 -0
- package/dist/server/prompts-routes.js +545 -0
- package/dist/server/server-core.js +4 -0
- package/dist/server/websocket-handler.js +17 -0
- package/dist/shared/team-mgmt-manual.js +120 -0
- package/dist/shared/types/prompts.js +2 -0
- package/dist/shared/types/tellask.js +8 -0
- package/dist/showing-by-doing.js +1091 -0
- package/dist/snippets/README.en.md +3 -0
- package/dist/snippets/README.md +4 -0
- package/dist/static/assets/{_basePickBy-CF9r08iy.js → _basePickBy-BMCtwrV7.js} +3 -3
- package/dist/static/assets/{_basePickBy-CF9r08iy.js.map → _basePickBy-BMCtwrV7.js.map} +1 -1
- package/dist/static/assets/{_baseUniq-CxKv0cd4.js → _baseUniq-BuyCgJiA.js} +2 -2
- package/dist/static/assets/{_baseUniq-CxKv0cd4.js.map → _baseUniq-BuyCgJiA.js.map} +1 -1
- package/dist/static/assets/{arc-C9JyvnlB.js → arc-BDuN8lwA.js} +2 -2
- package/dist/static/assets/{arc-C9JyvnlB.js.map → arc-BDuN8lwA.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-CpcUgjHf.js → architectureDiagram-VXUJARFQ-C-ekqGAD.js} +7 -7
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-CpcUgjHf.js.map → architectureDiagram-VXUJARFQ-C-ekqGAD.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-BA9vtmm7.js → blockDiagram-VD42YOAC-CgQiNuuQ.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-BA9vtmm7.js.map → blockDiagram-VD42YOAC-CgQiNuuQ.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-D49MGNdF.js → c4Diagram-YG6GDRKO-DONC39q-.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-D49MGNdF.js.map → c4Diagram-YG6GDRKO-DONC39q-.js.map} +1 -1
- package/dist/static/assets/{channel-B4KzL0Kg.js → channel-CJTFwXIG.js} +2 -2
- package/dist/static/assets/{channel-B4KzL0Kg.js.map → channel-CJTFwXIG.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-0F-1ayl0.js → chunk-4BX2VUAB-NaIy4uLJ.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-0F-1ayl0.js.map → chunk-4BX2VUAB-NaIy4uLJ.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-Dnl2HDTZ.js → chunk-55IACEB6-JUKI_Ayx.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-Dnl2HDTZ.js.map → chunk-55IACEB6-JUKI_Ayx.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-Bhx5RbkQ.js → chunk-B4BG7PRW-dIswFJDn.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-Bhx5RbkQ.js.map → chunk-B4BG7PRW-dIswFJDn.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-EYd1wL3E.js → chunk-DI55MBZ5-DU2b_N30.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-EYd1wL3E.js.map → chunk-DI55MBZ5-DU2b_N30.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-DAjkhhUU.js → chunk-FMBD7UC4-BgExcScw.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-DAjkhhUU.js.map → chunk-FMBD7UC4-BgExcScw.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-CK6TY7IE.js → chunk-QN33PNHL-bitxyqh7.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-CK6TY7IE.js.map → chunk-QN33PNHL-bitxyqh7.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-CketngiE.js → chunk-QZHKN3VN-Cor8u7DT.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-CketngiE.js.map → chunk-QZHKN3VN-Cor8u7DT.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-Bcuvqo45.js → chunk-TZMSLE5B-Aceoxav_.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-Bcuvqo45.js.map → chunk-TZMSLE5B-Aceoxav_.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-CaP4T3r4.js → classDiagram-2ON5EDUG-D1Q6a8Hg.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-CaP4T3r4.js.map → classDiagram-2ON5EDUG-D1Q6a8Hg.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-CaP4T3r4.js → classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-CaP4T3r4.js.map → classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js.map} +1 -1
- package/dist/static/assets/{clone-C-JULvnG.js → clone-MlWbv1V0.js} +2 -2
- package/dist/static/assets/{clone-C-JULvnG.js.map → clone-MlWbv1V0.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-vXCmi_eC.js → cose-bilkent-S5V4N54A-DWPCXSrn.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-vXCmi_eC.js.map → cose-bilkent-S5V4N54A-DWPCXSrn.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-bhGzX6kO.js → dagre-6UL2VRFP-C8ptQ9V3.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-bhGzX6kO.js.map → dagre-6UL2VRFP-C8ptQ9V3.js.map} +1 -1
- package/dist/static/assets/{diagram-PSM6KHXK-BUKfmfGk.js → diagram-PSM6KHXK-Bgf1FqkE.js} +8 -8
- package/dist/static/assets/{diagram-PSM6KHXK-BUKfmfGk.js.map → diagram-PSM6KHXK-Bgf1FqkE.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-DYlq3uFq.js → diagram-QEK2KX5R-BZ5xzofU.js} +7 -7
- package/dist/static/assets/{diagram-QEK2KX5R-DYlq3uFq.js.map → diagram-QEK2KX5R-BZ5xzofU.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-CjxkLHWG.js → diagram-S2PKOQOG-Dwp47T9I.js} +7 -7
- package/dist/static/assets/{diagram-S2PKOQOG-CjxkLHWG.js.map → diagram-S2PKOQOG-Dwp47T9I.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-S3hR85On.js → erDiagram-Q2GNP2WA-Cx4weIHl.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-S3hR85On.js.map → erDiagram-Q2GNP2WA-Cx4weIHl.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-aBmNMuQ0.js → flowDiagram-NV44I4VS-vNUuIeRk.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-aBmNMuQ0.js.map → flowDiagram-NV44I4VS-vNUuIeRk.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-DJxXaiW1.js → ganttDiagram-JELNMOA3-BEfozJAr.js} +3 -3
- package/dist/static/assets/{ganttDiagram-JELNMOA3-DJxXaiW1.js.map → ganttDiagram-JELNMOA3-BEfozJAr.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DEOBCM0G.js → gitGraphDiagram-V2S2FVAM-eHxwc3d9.js} +8 -8
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DEOBCM0G.js.map → gitGraphDiagram-V2S2FVAM-eHxwc3d9.js.map} +1 -1
- package/dist/static/assets/{graph-DwrKSIE7.js → graph-C6a6uAok.js} +3 -3
- package/dist/static/assets/{graph-DwrKSIE7.js.map → graph-C6a6uAok.js.map} +1 -1
- package/dist/static/assets/{index-HWTRvE2k.js → index-D3TQbAKh.js} +383 -59
- package/dist/static/assets/index-D3TQbAKh.js.map +1 -0
- package/dist/static/assets/{infoDiagram-HS3SLOUP-BH9kVuYd.js → infoDiagram-HS3SLOUP-CX0NiId3.js} +6 -6
- package/dist/static/assets/{infoDiagram-HS3SLOUP-BH9kVuYd.js.map → infoDiagram-HS3SLOUP-CX0NiId3.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dap7AcjR.js → journeyDiagram-XKPGCS4Q-C1IepPZ-.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dap7AcjR.js.map → journeyDiagram-XKPGCS4Q-C1IepPZ-.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-4NOl8MEj.js → kanban-definition-3W4ZIXB7-uMNX4Z1W.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-4NOl8MEj.js.map → kanban-definition-3W4ZIXB7-uMNX4Z1W.js.map} +1 -1
- package/dist/static/assets/{layout-D6uIxu1E.js → layout-CpE3kk5z.js} +5 -5
- package/dist/static/assets/{layout-D6uIxu1E.js.map → layout-CpE3kk5z.js.map} +1 -1
- package/dist/static/assets/{linear-CvBOGQA2.js → linear-DV8laXr9.js} +2 -2
- package/dist/static/assets/{linear-CvBOGQA2.js.map → linear-DV8laXr9.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-ugsrLNY5.js → mindmap-definition-VGOIOE7T-CKjgVM9S.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-ugsrLNY5.js.map → mindmap-definition-VGOIOE7T-CKjgVM9S.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-CdVZjM8g.js → pieDiagram-ADFJNKIX-BBonlNyT.js} +8 -8
- package/dist/static/assets/{pieDiagram-ADFJNKIX-CdVZjM8g.js.map → pieDiagram-ADFJNKIX-BBonlNyT.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-A6m5lZKd.js → quadrantDiagram-AYHSOK5B-BTI8HbBu.js} +3 -3
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-A6m5lZKd.js.map → quadrantDiagram-AYHSOK5B-BTI8HbBu.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Cac3zSJH.js → requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Cac3zSJH.js.map → requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DXDdUUl1.js → sankeyDiagram-TZEHDZUN-DibLVGzg.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DXDdUUl1.js.map → sankeyDiagram-TZEHDZUN-DibLVGzg.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-Domsjl5Y.js → sequenceDiagram-WL72ISMW-qXatfzVt.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-Domsjl5Y.js.map → sequenceDiagram-WL72ISMW-qXatfzVt.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bu0lRQK1.js → stateDiagram-FKZM4ZOC-7fgxCQHo.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bu0lRQK1.js.map → stateDiagram-FKZM4ZOC-7fgxCQHo.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-D0K-n3ic.js → stateDiagram-v2-4FDKWEC3-DcWlOAnF.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-D0K-n3ic.js.map → stateDiagram-v2-4FDKWEC3-DcWlOAnF.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-BGvpddwR.js → timeline-definition-IT6M3QCI-iX2MRdpY.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-BGvpddwR.js.map → timeline-definition-IT6M3QCI-iX2MRdpY.js.map} +1 -1
- package/dist/static/assets/{treemap-GDKQZRPO-BoOzOm2j.js → treemap-GDKQZRPO-AVRnyXu1.js} +5 -5
- package/dist/static/assets/{treemap-GDKQZRPO-BoOzOm2j.js.map → treemap-GDKQZRPO-AVRnyXu1.js.map} +1 -1
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-C_h3_ICR.js → xychartDiagram-PRI3JC2R-DVYEo5aJ.js} +3 -3
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-C_h3_ICR.js.map → xychartDiagram-PRI3JC2R-DVYEo5aJ.js.map} +1 -1
- package/dist/static/index.html +1 -1
- package/dist/team.js +52 -48
- package/dist/tellask.js +439 -0
- package/dist/tools/context-health.js +177 -0
- package/dist/tools/diag.js +583 -0
- package/dist/tools/fs.js +194 -68
- package/dist/tools/prompts/memory/en/principles.md +13 -5
- package/dist/tools/prompts/memory/en/tools.md +11 -36
- package/dist/tools/prompts/memory/zh/principles.md +18 -8
- package/dist/tools/prompts/memory/zh/tools.md +11 -36
- package/dist/tools/team-mgmt.js +3487 -0
- package/dist/utils/task-doc.js +236 -0
- package/package.json +1 -1
- package/dist/static/assets/index-HWTRvE2k.js.map +0 -1
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.formatTaskDocContent = formatTaskDocContent;
|
|
37
|
+
/**
|
|
38
|
+
* Module: utils/task-doc
|
|
39
|
+
*
|
|
40
|
+
* Utilities for formatting task document content for display in LLM context.
|
|
41
|
+
*/
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const runtime_language_1 = require("../shared/runtime-language");
|
|
45
|
+
const task_package_1 = require("./task-package");
|
|
46
|
+
/**
|
|
47
|
+
* Format task document content for display in the LLM context.
|
|
48
|
+
* Task Docs are encapsulated `*.tsk/` directories.
|
|
49
|
+
*/
|
|
50
|
+
async function formatTaskDocContent(taskDocPath) {
|
|
51
|
+
const language = (0, runtime_language_1.getWorkLanguage)();
|
|
52
|
+
const workspaceRoot = path.resolve(process.cwd());
|
|
53
|
+
const fullPath = path.resolve(workspaceRoot, taskDocPath);
|
|
54
|
+
// Security check - ensure path is within workspace
|
|
55
|
+
if (!fullPath.startsWith(workspaceRoot)) {
|
|
56
|
+
const head = language === 'zh' ? `**差遣牒:** \`${taskDocPath}\`` : `**Task Doc:** \`${taskDocPath}\``;
|
|
57
|
+
const err = language === 'zh'
|
|
58
|
+
? '❌ **错误:** 路径必须在 workspace 内'
|
|
59
|
+
: '❌ **Error:** Path must be within workspace';
|
|
60
|
+
return {
|
|
61
|
+
type: 'environment_msg',
|
|
62
|
+
role: 'user',
|
|
63
|
+
content: `${head}
|
|
64
|
+
${err}`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
if (!(0, task_package_1.isTaskPackagePath)(taskDocPath)) {
|
|
69
|
+
if (language === 'zh') {
|
|
70
|
+
return {
|
|
71
|
+
type: 'environment_msg',
|
|
72
|
+
role: 'user',
|
|
73
|
+
content: `**差遣牒:** \`${taskDocPath}\`
|
|
74
|
+
❌ **错误:** 无效的差遣牒路径:差遣牒必须是一个以 \`.tsk\` 结尾的目录(\`*.tsk/\`)。
|
|
75
|
+
|
|
76
|
+
如果你提供的是一个普通文件路径(例如 \`.md\`),这是不符合预期的。请改为指向一个 \`.tsk/\` 目录。`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
type: 'environment_msg',
|
|
81
|
+
role: 'user',
|
|
82
|
+
content: `**Task Doc:** \`${taskDocPath}\`
|
|
83
|
+
❌ **Error:** Invalid Task Doc path: Task Doc must be a directory ending with \`.tsk\` (\`*.tsk/\`).
|
|
84
|
+
|
|
85
|
+
If you provided a regular file path (e.g. a \`.md\`), that is unexpected. Please point to a \`.tsk/\` directory instead.`,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Task Docs (`*.tsk/`) are directory-based, but the content is still injected deterministically.
|
|
89
|
+
// General file tools must NOT be used to access anything under `*.tsk/`.
|
|
90
|
+
const sections = await (async () => {
|
|
91
|
+
try {
|
|
92
|
+
const st = await fs.promises.stat(fullPath);
|
|
93
|
+
if (!st.isDirectory()) {
|
|
94
|
+
throw new Error(`Task Doc path exists but is not a directory: '${taskDocPath}'`);
|
|
95
|
+
}
|
|
96
|
+
return await (0, task_package_1.readTaskPackageSections)(fullPath);
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
if (typeof err === 'object' &&
|
|
100
|
+
err !== null &&
|
|
101
|
+
'code' in err &&
|
|
102
|
+
err.code === 'ENOENT') {
|
|
103
|
+
return {
|
|
104
|
+
goals: { kind: 'missing' },
|
|
105
|
+
constraints: { kind: 'missing' },
|
|
106
|
+
progress: { kind: 'missing' },
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
throw err;
|
|
110
|
+
}
|
|
111
|
+
})();
|
|
112
|
+
const goalsStatus = sections.goals.kind === 'present' ? 'present' : 'missing';
|
|
113
|
+
const constraintsStatus = sections.constraints.kind === 'present' ? 'present' : 'missing';
|
|
114
|
+
const progressStatus = sections.progress.kind === 'present' ? 'present' : 'missing';
|
|
115
|
+
const statusBlock = (() => {
|
|
116
|
+
if (language === 'zh') {
|
|
117
|
+
const goalsZh = goalsStatus === 'present' ? '存在' : '缺失';
|
|
118
|
+
const constraintsZh = constraintsStatus === 'present' ? '存在' : '缺失';
|
|
119
|
+
const progressZh = progressStatus === 'present' ? '存在' : '缺失';
|
|
120
|
+
return [
|
|
121
|
+
`**差遣牒结构(封装差遣牒 \`*.tsk/\`):**`,
|
|
122
|
+
`- 我们的差遣牒是一个 \`*.tsk/\` 目录,分为 3 个分段:\`goals\` / \`constraints\` / \`progress\`。`,
|
|
123
|
+
`- 维护方式:每次调用函数工具 \`change_mind\` 必须指定一个分段(selector: \`!goals\` / \`!constraints\` / \`!progress\`);可在同一轮中多次调用 \`change_mind\` 来一次更新多个分段。`,
|
|
124
|
+
``,
|
|
125
|
+
`**分段状态:**`,
|
|
126
|
+
`- \`goals.md\`:${goalsZh}`,
|
|
127
|
+
`- \`constraints.md\`:${constraintsZh}`,
|
|
128
|
+
`- \`progress.md\`:${progressZh}`,
|
|
129
|
+
``,
|
|
130
|
+
`若某个分段缺失,请用函数工具 \`change_mind\` 创建(不要用通用文件工具):`,
|
|
131
|
+
`- \`change_mind({\"selector\":\"!goals\",\"content\":\"...\"})\``,
|
|
132
|
+
`- \`change_mind({\"selector\":\"!constraints\",\"content\":\"...\"})\``,
|
|
133
|
+
`- \`change_mind({\"selector\":\"!progress\",\"content\":\"...\"})\``,
|
|
134
|
+
].join('\n');
|
|
135
|
+
}
|
|
136
|
+
return [
|
|
137
|
+
`**Task Doc Constitution (Encapsulated \`*.tsk/\`):**`,
|
|
138
|
+
`- Our Task Doc is a \`*.tsk/\` directory with exactly 3 sections: \`goals\` / \`constraints\` / \`progress\`.`,
|
|
139
|
+
`- Maintenance: each function tool call \`change_mind\` must target one section (selector: \`!goals\` / \`!constraints\` / \`!progress\`). You may call \`change_mind\` multiple times in a single turn to update multiple sections.`,
|
|
140
|
+
``,
|
|
141
|
+
`**Sections:**`,
|
|
142
|
+
`- \`goals.md\`: ${goalsStatus}`,
|
|
143
|
+
`- \`constraints.md\`: ${constraintsStatus}`,
|
|
144
|
+
`- \`progress.md\`: ${progressStatus}`,
|
|
145
|
+
``,
|
|
146
|
+
`If any section is missing, create it with the function tool \`change_mind\` (never via general file tools):`,
|
|
147
|
+
`- \`change_mind({\"selector\":\"!goals\",\"content\":\"...\"})\``,
|
|
148
|
+
`- \`change_mind({\"selector\":\"!constraints\",\"content\":\"...\"})\``,
|
|
149
|
+
`- \`change_mind({\"selector\":\"!progress\",\"content\":\"...\"})\``,
|
|
150
|
+
].join('\n');
|
|
151
|
+
})();
|
|
152
|
+
const effectiveDoc = (0, task_package_1.formatEffectiveTaskDocFromSections)(language, sections);
|
|
153
|
+
const bytes = Buffer.byteLength(effectiveDoc, 'utf8');
|
|
154
|
+
const maxSize = 100 * 1024; // 100KB
|
|
155
|
+
if (bytes > maxSize) {
|
|
156
|
+
if (language === 'zh') {
|
|
157
|
+
return {
|
|
158
|
+
type: 'environment_msg',
|
|
159
|
+
role: 'user',
|
|
160
|
+
content: `**差遣牒:** \`${taskDocPath}\`
|
|
161
|
+
📦 **类型:** 封装差遣牒(\`*.tsk/\`)
|
|
162
|
+
📊 **大小:** ${(bytes / 1024).toFixed(1)} KB(过大,无法内联)
|
|
163
|
+
|
|
164
|
+
${statusBlock}
|
|
165
|
+
|
|
166
|
+
⚠️ **注意:** 差遣牒是封装的。不要用文件工具去读/写/列目录 \`*.tsk/\` 下的任何路径。
|
|
167
|
+
请用函数工具 \`change_mind\` 来更新(每次调用只更新一个分段;你可以在同一轮中多次调用来批量更新),例如:\`change_mind({\"selector\":\"!goals\",\"content\":\"...\"})\` / \`change_mind({\"selector\":\"!constraints\",\"content\":\"...\"})\` / \`change_mind({\"selector\":\"!progress\",\"content\":\"...\"})\`。`,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
type: 'environment_msg',
|
|
172
|
+
role: 'user',
|
|
173
|
+
content: `**Task Doc:** \`${taskDocPath}\`
|
|
174
|
+
📦 **Type:** Encapsulated Task Doc (\`*.tsk/\`)
|
|
175
|
+
📊 **Size:** ${(bytes / 1024).toFixed(1)} KB (too large to inline)
|
|
176
|
+
|
|
177
|
+
${statusBlock}
|
|
178
|
+
|
|
179
|
+
⚠️ **Note:** Task Docs are encapsulated. Do not use file tools to read/write/list anything under \`*.tsk/\`.
|
|
180
|
+
Use the function tool \`change_mind\` to update (each call updates one section; you may call it multiple times in a single turn to batch updates), e.g. \`change_mind({\"selector\":\"!goals\",\"content\":\"...\"})\` / \`change_mind({\"selector\":\"!constraints\",\"content\":\"...\"})\` / \`change_mind({\"selector\":\"!progress\",\"content\":\"...\"})\`.`,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
if (language === 'zh') {
|
|
184
|
+
return {
|
|
185
|
+
type: 'environment_msg',
|
|
186
|
+
role: 'user',
|
|
187
|
+
content: `**差遣牒:** \`${taskDocPath}\`
|
|
188
|
+
📦 **类型:** 封装差遣牒(\`*.tsk/\`)
|
|
189
|
+
📄 **大小:** ${bytes} bytes
|
|
190
|
+
|
|
191
|
+
${statusBlock}
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
${effectiveDoc}
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
*用函数工具 \`change_mind\` 来替换分段(每次调用只替换一个分段;你可以在同一轮中多次调用来批量替换)。*
|
|
198
|
+
|
|
199
|
+
指令:不要对 \`*.tsk/\` 下的任何路径调用通用文件工具(\`read_file\`, \`overwrite_entire_file\`, \`preview_file_modification\`, \`apply_file_modification\`, \`list_dir\`, \`rm_file\`, \`rm_dir\`)。差遣牒状态只能通过显式的差遣牒操作进行管理。`,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
type: 'environment_msg',
|
|
204
|
+
role: 'user',
|
|
205
|
+
content: `**Task Doc:** \`${taskDocPath}\`
|
|
206
|
+
📦 **Type:** Encapsulated Task Doc (\`*.tsk/\`)
|
|
207
|
+
📄 **Size:** ${bytes} bytes
|
|
208
|
+
|
|
209
|
+
${statusBlock}
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
${effectiveDoc}
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
*Use the function tool \`change_mind\` to replace sections (each call replaces one section; you may call it multiple times in a single turn to batch replacements).*
|
|
216
|
+
|
|
217
|
+
Directive: Do not invoke any general file tools (\`read_file\`, \`overwrite_entire_file\`, \`preview_file_modification\`, \`apply_file_modification\`, \`list_dir\`, \`rm_file\`, \`rm_dir\`) on any path under \`*.tsk/\`. Task package state is managed only through explicit task-doc actions.`,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
if (language === 'zh') {
|
|
222
|
+
return {
|
|
223
|
+
type: 'environment_msg',
|
|
224
|
+
role: 'user',
|
|
225
|
+
content: `**差遣牒:** \`${taskDocPath}\`
|
|
226
|
+
❌ **错误:** ${error instanceof Error ? error.message : String(error)}`,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
type: 'environment_msg',
|
|
231
|
+
role: 'user',
|
|
232
|
+
content: `**Task Doc:** \`${taskDocPath}\`
|
|
233
|
+
❌ **Error:** ${error instanceof Error ? error.message : String(error)}`,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|