dominds 1.17.3 → 1.17.5
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/apps-host/host.js +13 -2
- package/dist/apps-host/ipc-types.js +18 -1
- package/dist/dialog-fork.js +1 -0
- package/dist/dialog.d.ts +1 -0
- package/dist/dialog.js +8 -0
- package/dist/docs/dialog-system.md +6 -5
- package/dist/docs/dialog-system.zh.md +2 -1
- package/dist/docs/fbr.md +1 -1
- package/dist/docs/fbr.zh.md +1 -1
- package/dist/docs/mcp-support.md +4 -1
- package/dist/docs/team_mgmt-toolset.md +8 -7
- package/dist/docs/team_mgmt-toolset.zh.md +6 -5
- package/dist/docs/tellask-collab.md +6 -6
- package/dist/docs/tellask-collab.zh.md +2 -2
- package/dist/mcp/manual-problems.d.ts +33 -0
- package/dist/mcp/manual-problems.js +323 -0
- package/dist/mcp/supervisor.js +23 -1
- package/dist/minds/system-prompt.js +6 -6
- package/dist/persistence.js +227 -16
- package/dist/priming.js +7 -0
- package/dist/shared-reminders.js +2 -0
- package/dist/tool.d.ts +5 -0
- package/dist/tool.js +15 -0
- package/dist/tools/app-reminders.js +20 -3
- package/dist/tools/ctrl.js +43 -4
- package/dist/tools/manual/output-limit.d.ts +9 -0
- package/dist/tools/manual/output-limit.js +12 -0
- package/dist/tools/os.js +17 -16
- package/dist/tools/pending-tellask-reminder.js +4 -2
- package/dist/tools/team_mgmt-manual.d.ts +2 -0
- package/dist/tools/team_mgmt-manual.js +160 -0
- package/dist/tools/team_mgmt-mcp-manual.d.ts +27 -0
- package/dist/tools/team_mgmt-mcp-manual.js +643 -0
- package/dist/tools/team_mgmt.d.ts +11 -1
- package/dist/tools/team_mgmt.js +22 -867
- package/dist/tools/toolset-manual.js +5 -5
- package/package.json +5 -5
- package/webapp/dist/assets/{_basePickBy-LNaSxjvr.js → _basePickBy-CpHP1wBo.js} +3 -3
- package/webapp/dist/assets/_basePickBy-CpHP1wBo.js.map +1 -0
- package/webapp/dist/assets/{_baseUniq-Bj1hx6jk.js → _baseUniq-CvZnDuif.js} +2 -2
- package/webapp/dist/assets/_baseUniq-CvZnDuif.js.map +1 -0
- package/webapp/dist/assets/{arc-Bpj1nPA2.js → arc-BHFujbnL.js} +2 -2
- package/webapp/dist/assets/arc-BHFujbnL.js.map +1 -0
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CoXbtvnz.js → architectureDiagram-VXUJARFQ-Di1oQVRu.js} +8 -26
- package/webapp/dist/assets/architectureDiagram-VXUJARFQ-Di1oQVRu.js.map +1 -0
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-CIN9vlJ6.js → blockDiagram-VD42YOAC-DQvfo_FK.js} +170 -187
- package/webapp/dist/assets/blockDiagram-VD42YOAC-DQvfo_FK.js.map +1 -0
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-C5JZR-oM.js → c4Diagram-YG6GDRKO-ZhmyLfpa.js} +4 -4
- package/webapp/dist/assets/c4Diagram-YG6GDRKO-ZhmyLfpa.js.map +1 -0
- package/webapp/dist/assets/{channel-D5Xdg9yM.js → channel-BzUmZVV0.js} +2 -2
- package/webapp/dist/assets/channel-BzUmZVV0.js.map +1 -0
- package/webapp/dist/assets/{chunk-4BX2VUAB-D4Rve4FO.js → chunk-4BX2VUAB-btqBd7Au.js} +2 -2
- package/webapp/dist/assets/chunk-4BX2VUAB-btqBd7Au.js.map +1 -0
- package/webapp/dist/assets/{chunk-55IACEB6-DpabCDXg.js → chunk-55IACEB6-Dd88jUsB.js} +2 -2
- package/webapp/dist/assets/chunk-55IACEB6-Dd88jUsB.js.map +1 -0
- package/webapp/dist/assets/{chunk-WL4C6EOR-C13IEcmo.js → chunk-B4BG7PRW-CF0szfFw.js} +121 -171
- package/webapp/dist/assets/chunk-B4BG7PRW-CF0szfFw.js.map +1 -0
- package/webapp/dist/assets/{chunk-NQ4KR5QH-_1ihDJTW.js → chunk-DI55MBZ5-CuueZ5mR.js} +7 -9
- package/webapp/dist/assets/chunk-DI55MBZ5-CuueZ5mR.js.map +1 -0
- package/webapp/dist/assets/{chunk-FMBD7UC4-BoBj8MAm.js → chunk-FMBD7UC4-BWirvwW5.js} +2 -2
- package/webapp/dist/assets/chunk-FMBD7UC4-BWirvwW5.js.map +1 -0
- package/webapp/dist/assets/{chunk-KX2RTZJC-CDdtREQb.js → chunk-QN33PNHL-C8y0hbMe.js} +2 -2
- package/webapp/dist/assets/chunk-QN33PNHL-C8y0hbMe.js.map +1 -0
- package/webapp/dist/assets/{chunk-QZHKN3VN-B4dXlOb4.js → chunk-QZHKN3VN-CYBh9MjS.js} +2 -2
- package/webapp/dist/assets/chunk-QZHKN3VN-CYBh9MjS.js.map +1 -0
- package/webapp/dist/assets/{chunk-JSJVCQXG-CEy0qXdN.js → chunk-TZMSLE5B-Dp3nxkVa.js} +6 -14
- package/webapp/dist/assets/chunk-TZMSLE5B-Dp3nxkVa.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-CFBgFxCH.js → classDiagram-2ON5EDUG-DqWZ8QKp.js} +6 -7
- package/webapp/dist/assets/classDiagram-2ON5EDUG-DqWZ8QKp.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-CFBgFxCH.js → classDiagram-v2-WZHVMYZB-DqWZ8QKp.js} +6 -7
- package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-DqWZ8QKp.js.map +1 -0
- package/webapp/dist/assets/{clone-TK1nHACc.js → clone-CUPRkFmQ.js} +2 -2
- package/webapp/dist/assets/clone-CUPRkFmQ.js.map +1 -0
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BKcU9sie.js → cose-bilkent-S5V4N54A-DMy7cbOH.js} +2 -2
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-DMy7cbOH.js.map +1 -0
- package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-h-3iGD6Y.js → dagre-6UL2VRFP-oKcmfGzQ.js} +7 -7
- package/webapp/dist/assets/dagre-6UL2VRFP-oKcmfGzQ.js.map +1 -0
- package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-ekBLF-yk.js → diagram-PSM6KHXK-DaqJJraw.js} +10 -10
- package/webapp/dist/assets/diagram-PSM6KHXK-DaqJJraw.js.map +1 -0
- package/webapp/dist/assets/{diagram-IFDJBPK2-D_G2oKiI.js → diagram-QEK2KX5R-CYJxrEIt.js} +8 -9
- package/webapp/dist/assets/diagram-QEK2KX5R-CYJxrEIt.js.map +1 -0
- package/webapp/dist/assets/{diagram-P4PSJMXO-27xx1y5D.js → diagram-S2PKOQOG-CLU09icu.js} +8 -8
- package/webapp/dist/assets/diagram-S2PKOQOG-CLU09icu.js.map +1 -0
- package/webapp/dist/assets/{erDiagram-INFDFZHY-CZSSh9wl.js → erDiagram-Q2GNP2WA-DSZdQ4Um.js} +75 -96
- package/webapp/dist/assets/erDiagram-Q2GNP2WA-DSZdQ4Um.js.map +1 -0
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-Bm92lWNi.js → flowDiagram-NV44I4VS-BMQN6R95.js} +81 -98
- package/webapp/dist/assets/flowDiagram-NV44I4VS-BMQN6R95.js.map +1 -0
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C5VpKam7.js → ganttDiagram-JELNMOA3-Bsx24uHi.js} +3 -28
- package/webapp/dist/assets/ganttDiagram-JELNMOA3-Bsx24uHi.js.map +1 -0
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-DzPVChwE.js → gitGraphDiagram-V2S2FVAM-zwxKKypo.js} +46 -38
- package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-zwxKKypo.js.map +1 -0
- package/webapp/dist/assets/graph-E0vpJDes.js +425 -0
- package/webapp/dist/assets/graph-E0vpJDes.js.map +1 -0
- package/webapp/dist/assets/{index-Btsmlz6h.js → index-DN9U1zRL.js} +1711 -1137
- package/webapp/dist/assets/{index-Btsmlz6h.js.map → index-DN9U1zRL.js.map} +1 -1
- package/webapp/dist/assets/{index-YaxF76or.css → index-xvYYeHuy.css} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-yRov6uGE.js → infoDiagram-HS3SLOUP-DTsziUlk.js} +7 -7
- package/webapp/dist/assets/infoDiagram-HS3SLOUP-DTsziUlk.js.map +1 -0
- package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-DFHL6Mn9.js → journeyDiagram-XKPGCS4Q-BRCxHm94.js} +5 -5
- package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-BRCxHm94.js.map +1 -0
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-Dn8AcHXb.js → kanban-definition-3W4ZIXB7-CpQyoAYJ.js} +3 -5
- package/webapp/dist/assets/kanban-definition-3W4ZIXB7-CpQyoAYJ.js.map +1 -0
- package/webapp/dist/assets/{layout-BdLHhC4z.js → layout-CbfoT0O3.js} +5 -5
- package/webapp/dist/assets/layout-CbfoT0O3.js.map +1 -0
- package/webapp/dist/assets/{linear-Czx4z_fP.js → linear-D1HwcPmT.js} +2 -2
- package/webapp/dist/assets/linear-D1HwcPmT.js.map +1 -0
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-CXqQMYCg.js → mindmap-definition-VGOIOE7T-C9bCAYD2.js} +5 -7
- package/webapp/dist/assets/mindmap-definition-VGOIOE7T-C9bCAYD2.js.map +1 -0
- package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-CqDocKnB.js → pieDiagram-ADFJNKIX-CkWs3EqH.js} +8 -8
- package/webapp/dist/assets/pieDiagram-ADFJNKIX-CkWs3EqH.js.map +1 -0
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-CiWVSFIH.js → quadrantDiagram-AYHSOK5B-lePBdGYd.js} +3 -3
- package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-lePBdGYd.js.map +1 -0
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-CZJEyik8.js → requirementDiagram-UZGBJVZJ-BM_GNlHQ.js} +6 -16
- package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-BM_GNlHQ.js.map +1 -0
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-Dw75ByKP.js → sankeyDiagram-TZEHDZUN-Z3UUlzwo.js} +2 -2
- package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-Z3UUlzwo.js.map +1 -0
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-Bb-cjLgg.js → sequenceDiagram-WL72ISMW-BmcsPWXz.js} +201 -601
- package/webapp/dist/assets/sequenceDiagram-WL72ISMW-BmcsPWXz.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-BvpG0ZSP.js → stateDiagram-FKZM4ZOC-THsxiqRA.js} +9 -9
- package/webapp/dist/assets/stateDiagram-FKZM4ZOC-THsxiqRA.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-7bxKEt97.js → stateDiagram-v2-4FDKWEC3-B2oIvgOa.js} +5 -5
- package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-B2oIvgOa.js.map +1 -0
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-CRqRYWEl.js → timeline-definition-IT6M3QCI-DRB7VKTt.js} +3 -3
- package/webapp/dist/assets/timeline-definition-IT6M3QCI-DRB7VKTt.js.map +1 -0
- package/webapp/dist/assets/{treemap-KZPCXAKY-Bu5JpxPM.js → treemap-GDKQZRPO-h6k2E_-V.js} +24 -37
- package/webapp/dist/assets/treemap-GDKQZRPO-h6k2E_-V.js.map +1 -0
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-D0U7VqPG.js → xychartDiagram-PRI3JC2R-CeoSM0y_.js} +4 -4
- package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CeoSM0y_.js.map +1 -0
- package/webapp/dist/index.html +2 -2
- package/webapp/dist/assets/_basePickBy-LNaSxjvr.js.map +0 -1
- package/webapp/dist/assets/_baseUniq-Bj1hx6jk.js.map +0 -1
- package/webapp/dist/assets/arc-Bpj1nPA2.js.map +0 -1
- package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CoXbtvnz.js.map +0 -1
- package/webapp/dist/assets/blockDiagram-WCTKOSBZ-CIN9vlJ6.js.map +0 -1
- package/webapp/dist/assets/c4Diagram-IC4MRINW-C5JZR-oM.js.map +0 -1
- package/webapp/dist/assets/channel-D5Xdg9yM.js.map +0 -1
- package/webapp/dist/assets/chunk-4BX2VUAB-D4Rve4FO.js.map +0 -1
- package/webapp/dist/assets/chunk-55IACEB6-DpabCDXg.js.map +0 -1
- package/webapp/dist/assets/chunk-FMBD7UC4-BoBj8MAm.js.map +0 -1
- package/webapp/dist/assets/chunk-JSJVCQXG-CEy0qXdN.js.map +0 -1
- package/webapp/dist/assets/chunk-KX2RTZJC-CDdtREQb.js.map +0 -1
- package/webapp/dist/assets/chunk-NQ4KR5QH-_1ihDJTW.js.map +0 -1
- package/webapp/dist/assets/chunk-QZHKN3VN-B4dXlOb4.js.map +0 -1
- package/webapp/dist/assets/chunk-WL4C6EOR-C13IEcmo.js.map +0 -1
- package/webapp/dist/assets/classDiagram-VBA2DB6C-CFBgFxCH.js.map +0 -1
- package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-CFBgFxCH.js.map +0 -1
- package/webapp/dist/assets/clone-TK1nHACc.js.map +0 -1
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-BKcU9sie.js.map +0 -1
- package/webapp/dist/assets/dagre-KLK3FWXG-h-3iGD6Y.js.map +0 -1
- package/webapp/dist/assets/diagram-E7M64L7V-ekBLF-yk.js.map +0 -1
- package/webapp/dist/assets/diagram-IFDJBPK2-D_G2oKiI.js.map +0 -1
- package/webapp/dist/assets/diagram-P4PSJMXO-27xx1y5D.js.map +0 -1
- package/webapp/dist/assets/erDiagram-INFDFZHY-CZSSh9wl.js.map +0 -1
- package/webapp/dist/assets/flowDiagram-PKNHOUZH-Bm92lWNi.js.map +0 -1
- package/webapp/dist/assets/ganttDiagram-A5KZAMGK-C5VpKam7.js.map +0 -1
- package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-DzPVChwE.js.map +0 -1
- package/webapp/dist/assets/graph-DZP1hBZG.js +0 -782
- package/webapp/dist/assets/graph-DZP1hBZG.js.map +0 -1
- package/webapp/dist/assets/infoDiagram-LFFYTUFH-yRov6uGE.js.map +0 -1
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DFo_y5-j.js +0 -966
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DFo_y5-j.js.map +0 -1
- package/webapp/dist/assets/journeyDiagram-4ABVD52K-DFHL6Mn9.js.map +0 -1
- package/webapp/dist/assets/kanban-definition-K7BYSVSG-Dn8AcHXb.js.map +0 -1
- package/webapp/dist/assets/layout-BdLHhC4z.js.map +0 -1
- package/webapp/dist/assets/linear-Czx4z_fP.js.map +0 -1
- package/webapp/dist/assets/mindmap-definition-YRQLILUH-CXqQMYCg.js.map +0 -1
- package/webapp/dist/assets/pieDiagram-SKSYHLDU-CqDocKnB.js.map +0 -1
- package/webapp/dist/assets/quadrantDiagram-337W2JSQ-CiWVSFIH.js.map +0 -1
- package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-CZJEyik8.js.map +0 -1
- package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-Dw75ByKP.js.map +0 -1
- package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-Bb-cjLgg.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-RAJIS63D-BvpG0ZSP.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-7bxKEt97.js.map +0 -1
- package/webapp/dist/assets/timeline-definition-YZTLITO2-CRqRYWEl.js.map +0 -1
- package/webapp/dist/assets/treemap-KZPCXAKY-Bu5JpxPM.js.map +0 -1
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-DAB652Qx.js +0 -2487
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-DAB652Qx.js.map +0 -1
- package/webapp/dist/assets/xychartDiagram-JWTSCODW-D0U7VqPG.js.map +0 -1
package/dist/apps-host/host.js
CHANGED
|
@@ -82,7 +82,16 @@ function parseReminderRequest(value) {
|
|
|
82
82
|
if (echoback === null) {
|
|
83
83
|
throw new Error('Invalid app tool reminder request: upsert.echoback must be boolean');
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
const renderModeRaw = value['renderMode'];
|
|
86
|
+
const renderMode = renderModeRaw === undefined
|
|
87
|
+
? undefined
|
|
88
|
+
: renderModeRaw === 'plain' || renderModeRaw === 'markdown'
|
|
89
|
+
? renderModeRaw
|
|
90
|
+
: null;
|
|
91
|
+
if (renderMode === null) {
|
|
92
|
+
throw new Error('Invalid app tool reminder request: upsert.renderMode must be plain|markdown');
|
|
93
|
+
}
|
|
94
|
+
return { kind: 'upsert', ownerRef, content, meta, position, echoback, renderMode };
|
|
86
95
|
}
|
|
87
96
|
throw new Error(`Invalid app tool reminder request kind: ${String(kind)}`);
|
|
88
97
|
}
|
|
@@ -138,7 +147,9 @@ function isReminderState(value) {
|
|
|
138
147
|
if (meta !== undefined && !isJsonValue(meta))
|
|
139
148
|
return false;
|
|
140
149
|
const echoback = value['echoback'];
|
|
141
|
-
|
|
150
|
+
const renderMode = value['renderMode'];
|
|
151
|
+
return ((echoback === undefined || typeof echoback === 'boolean') &&
|
|
152
|
+
(renderMode === undefined || renderMode === 'plain' || renderMode === 'markdown'));
|
|
142
153
|
}
|
|
143
154
|
function isReminderApplyResult(value) {
|
|
144
155
|
if (!isRecord(value))
|
|
@@ -46,7 +46,15 @@ function parseReminderState(v, at) {
|
|
|
46
46
|
const echoback = echobackRaw === undefined ? undefined : typeof echobackRaw === 'boolean' ? echobackRaw : null;
|
|
47
47
|
if (echoback === null)
|
|
48
48
|
throw new Error(`Invalid ${at}.echoback: must be boolean`);
|
|
49
|
-
|
|
49
|
+
const renderModeRaw = v['renderMode'];
|
|
50
|
+
const renderMode = renderModeRaw === undefined
|
|
51
|
+
? undefined
|
|
52
|
+
: renderModeRaw === 'plain' || renderModeRaw === 'markdown'
|
|
53
|
+
? renderModeRaw
|
|
54
|
+
: null;
|
|
55
|
+
if (renderMode === null)
|
|
56
|
+
throw new Error(`Invalid ${at}.renderMode: must be plain|markdown`);
|
|
57
|
+
return { content, meta: metaRaw, echoback, renderMode };
|
|
50
58
|
}
|
|
51
59
|
function parseReminderApplyRequest(v, at) {
|
|
52
60
|
if (!isRecord(v))
|
|
@@ -75,6 +83,14 @@ function parseReminderApplyRequest(v, at) {
|
|
|
75
83
|
const echoback = echobackRaw === undefined ? undefined : typeof echobackRaw === 'boolean' ? echobackRaw : null;
|
|
76
84
|
if (echoback === null)
|
|
77
85
|
throw new Error(`Invalid ${at}.echoback: must be boolean`);
|
|
86
|
+
const renderModeRaw = v['renderMode'];
|
|
87
|
+
const renderMode = renderModeRaw === undefined
|
|
88
|
+
? undefined
|
|
89
|
+
: renderModeRaw === 'plain' || renderModeRaw === 'markdown'
|
|
90
|
+
? renderModeRaw
|
|
91
|
+
: null;
|
|
92
|
+
if (renderMode === null)
|
|
93
|
+
throw new Error(`Invalid ${at}.renderMode: must be plain|markdown`);
|
|
78
94
|
return {
|
|
79
95
|
kind: 'upsert',
|
|
80
96
|
ownerRef,
|
|
@@ -82,6 +98,7 @@ function parseReminderApplyRequest(v, at) {
|
|
|
82
98
|
meta: metaRaw,
|
|
83
99
|
position,
|
|
84
100
|
echoback,
|
|
101
|
+
renderMode,
|
|
85
102
|
};
|
|
86
103
|
}
|
|
87
104
|
if (kind === 'delete') {
|
package/dist/dialog-fork.js
CHANGED
package/dist/dialog.d.ts
CHANGED
|
@@ -294,6 +294,7 @@ export declare abstract class Dialog {
|
|
|
294
294
|
get activeGenSeq(): number;
|
|
295
295
|
get activeGenSeqOrUndefined(): number | undefined;
|
|
296
296
|
get activeGenCourseOrUndefined(): number | undefined;
|
|
297
|
+
get hasActiveGeneration(): boolean;
|
|
297
298
|
/**
|
|
298
299
|
* Check if generation has started for the current course.
|
|
299
300
|
* Used to ensure subdialog_final_response_evt arrives after parent events.
|
package/dist/dialog.js
CHANGED
|
@@ -374,6 +374,7 @@ class Dialog {
|
|
|
374
374
|
meta,
|
|
375
375
|
echoback: options?.echoback,
|
|
376
376
|
scope: options?.scope ?? 'dialog',
|
|
377
|
+
renderMode: options?.renderMode,
|
|
377
378
|
});
|
|
378
379
|
const insertIndex = position !== undefined ? position : this.reminders.length;
|
|
379
380
|
if (insertIndex < 0 || insertIndex > this.reminders.length) {
|
|
@@ -405,6 +406,7 @@ class Dialog {
|
|
|
405
406
|
scope: oldReminder.scope,
|
|
406
407
|
createdAt: oldReminder.createdAt,
|
|
407
408
|
priority: oldReminder.priority,
|
|
409
|
+
renderMode: options?.renderMode ?? oldReminder.renderMode,
|
|
408
410
|
});
|
|
409
411
|
this.reminders[index] = updatedReminder;
|
|
410
412
|
this.touchReminders();
|
|
@@ -479,6 +481,7 @@ class Dialog {
|
|
|
479
481
|
scope: reminder.scope,
|
|
480
482
|
createdAt: reminder.createdAt,
|
|
481
483
|
priority: reminder.priority,
|
|
484
|
+
renderMode: reminder.renderMode,
|
|
482
485
|
});
|
|
483
486
|
const contentChanged = updatedReminder.content !== reminder.content;
|
|
484
487
|
const metaChanged = updatedReminder.meta !== reminder.meta;
|
|
@@ -539,8 +542,10 @@ class Dialog {
|
|
|
539
542
|
content: r.content,
|
|
540
543
|
meta: r.meta,
|
|
541
544
|
reminder_id: r.id,
|
|
545
|
+
renderRevision: (0, tool_1.computeReminderRenderRevision)(r),
|
|
542
546
|
echoback: (0, tool_1.reminderEchoBackEnabled)(r),
|
|
543
547
|
scope: r.scope,
|
|
548
|
+
renderMode: r.renderMode ?? 'markdown',
|
|
544
549
|
}));
|
|
545
550
|
// Emit full_reminders_update event with complete reminder list including metadata
|
|
546
551
|
const fullRemindersEvt = {
|
|
@@ -581,6 +586,9 @@ class Dialog {
|
|
|
581
586
|
get activeGenCourseOrUndefined() {
|
|
582
587
|
return this._activeGenCourse;
|
|
583
588
|
}
|
|
589
|
+
get hasActiveGeneration() {
|
|
590
|
+
return this._activeGenCourse !== undefined;
|
|
591
|
+
}
|
|
584
592
|
/**
|
|
585
593
|
* Check if generation has started for the current course.
|
|
586
594
|
* Used to ensure subdialog_final_response_evt arrives after parent events.
|
|
@@ -246,9 +246,9 @@ flowchart TD
|
|
|
246
246
|
**Sideline delivery rule (normative)**:
|
|
247
247
|
|
|
248
248
|
- If a sideline dialog has completed all assigned goals and can deliver the final result, it MUST reply directly with the response body; do not use `tellaskBack` to send final delivery.
|
|
249
|
-
- Runtime treats that direct reply as the completion delivery to the tellasker dialog and injects the work-language marker automatically (`【Completed】` in English work language,
|
|
249
|
+
- Runtime treats that direct reply as the completion delivery to the tellasker dialog and injects the work-language marker automatically (`【Completed】` in English work language, `【最终完成】` in Chinese work language).
|
|
250
250
|
- If any goal is incomplete, the dialog is blocked, or critical context is missing, it MUST issue `tellaskBack({ tellaskContent: "..." })` to request clarification or next-step confirmation before proceeding.
|
|
251
|
-
- **FBR exception**: FBR sideline dialogs
|
|
251
|
+
- **FBR exception**: FBR sideline dialogs forbid all tellask calls (including `tellaskBack` / `tellask` / `tellaskSessionless` / `askHuman`); they must list missing context and return.
|
|
252
252
|
|
|
253
253
|
**Inter-dialog transfer and markers (normative)**:
|
|
254
254
|
|
|
@@ -259,9 +259,10 @@ flowchart TD
|
|
|
259
259
|
- Regular completed sideline reply: `【Completed】`
|
|
260
260
|
- FBR sideline reply: `【FBR-Direct Reply】` or `【FBR-Reasoning Only】`
|
|
261
261
|
- Chinese work language:
|
|
262
|
-
- Ask-back reply:
|
|
263
|
-
- Regular completed sideline reply:
|
|
264
|
-
- FBR sideline reply: `【FBR
|
|
262
|
+
- Ask-back reply: `【回问诉请】`
|
|
263
|
+
- Regular completed sideline reply: `【最终完成】`
|
|
264
|
+
- FBR sideline reply: `【FBR-直接回复】` or `【FBR-仅推理】`
|
|
265
|
+
- If the requester defines a “reply/delivery format” inside the tellask body, keep it to the business delivery structure; do not require responder-side hand-written markers, because runtime injects those markers automatically.
|
|
265
266
|
- Source-dialog model raw is naturally preserved in source-dialog persistence; inter-dialog transfer must not rewrite or overwrite that source raw.
|
|
266
267
|
- Template-wrapped transfer is allowed: a model output from one dialog may be embedded into a runtime template and sent as the body to another dialog.
|
|
267
268
|
|
|
@@ -242,7 +242,7 @@ flowchart TD
|
|
|
242
242
|
|
|
243
243
|
- 只有当所有目标完成时,支线对话才可直接正常回复诉请者对话。
|
|
244
244
|
- 若任何目标未完成或关键信息缺失,必须先用 `tellaskBack({ tellaskContent: "..." })` 回问诉请者对话再继续。
|
|
245
|
-
- **FBR 例外**:FBR
|
|
245
|
+
- **FBR 例外**:FBR 支线对话禁止一切 tellask(包括 `tellaskBack` / `tellask` / `tellaskSessionless` / `askHuman`),只能列出缺口与阻塞原因并直接回复。
|
|
246
246
|
|
|
247
247
|
**跨对话传递与标记(强制)**:
|
|
248
248
|
|
|
@@ -256,6 +256,7 @@ flowchart TD
|
|
|
256
256
|
- 回问诉请回贴:`【TellaskBack】`
|
|
257
257
|
- 常规支线完成回贴:`【Completed】`
|
|
258
258
|
- FBR 回贴:`【FBR-Direct Reply】` 或 `【FBR-Reasoning Only】`
|
|
259
|
+
- 若诉请方在正文中定义“回贴格式/交付格式”,只写业务交付结构即可;不得要求被诉请者手写任何标记,因为这些标记由运行时自动注入。
|
|
259
260
|
- 源对话的模型原始输出(raw)天然保留在源对话持久记录中;跨对话传递不得改写或覆盖该源 raw。
|
|
260
261
|
- 允许将“某对话的模型原文”拼接进运行时模板后,作为传递到另一对话的正文(即模板化传递是规范路径)。
|
|
261
262
|
|
package/dist/docs/fbr.md
CHANGED
|
@@ -126,7 +126,7 @@ If the model attempts any other tool/function call, runtime MUST hard-reject it
|
|
|
126
126
|
|
|
127
127
|
### 4.3 Tellask restriction: none allowed
|
|
128
128
|
|
|
129
|
-
FBR sideline dialogs MUST NOT issue any
|
|
129
|
+
FBR sideline dialogs MUST NOT issue any tellask call (including `tellaskBack({ tellaskContent: "..." })`, `tellask({ ... })`, `tellaskSessionless({ ... })`, or `askHuman({ tellaskContent: "..." })`).
|
|
130
130
|
If critical context is missing, the FBR sideline should **list the missing items** and why they block reasoning, then return.
|
|
131
131
|
|
|
132
132
|
### 4.4 Output contract (easy to distill)
|
package/dist/docs/fbr.zh.md
CHANGED
|
@@ -122,7 +122,7 @@ FBR 支线对话的 system prompt 必须明确包含(措辞可不同,但语
|
|
|
122
122
|
|
|
123
123
|
### 4.3 诉请限制:一律禁止
|
|
124
124
|
|
|
125
|
-
FBR
|
|
125
|
+
FBR 支线对话不得发起任何 tellask 调用(包括 `tellaskBack({ tellaskContent: "..." })`、`tellask({ ... })`、`tellaskSessionless({ ... })` 或 `askHuman({ tellaskContent: "..." })`)。
|
|
126
126
|
若关键上下文缺失,应**列出缺口与阻塞原因**,然后直接回复。
|
|
127
127
|
|
|
128
128
|
### 4.4 输出契约(在 FBR 内部完成去噪)
|
package/dist/docs/mcp-support.md
CHANGED
|
@@ -423,9 +423,12 @@ servers:
|
|
|
423
423
|
# Tool name transforms (optional)
|
|
424
424
|
transform: []
|
|
425
425
|
|
|
426
|
-
# Optional
|
|
426
|
+
# Optional manual information
|
|
427
|
+
# - contentFile: formal runtime manual for man({ "toolsetId": "<serverId>" })
|
|
428
|
+
# - content/sections: extra inline team-management guidance
|
|
427
429
|
# (missing manual does NOT make the toolset unavailable)
|
|
428
430
|
manual:
|
|
431
|
+
contentFile: ".minds/manuals/<serverId>"
|
|
429
432
|
content: "What this MCP toolset is for"
|
|
430
433
|
sections:
|
|
431
434
|
- title: "When To Use"
|
|
@@ -385,15 +385,15 @@ Notes:
|
|
|
385
385
|
- MCP tool names are global across all toolsets (built-in + MCP). Collisions cause tools to be
|
|
386
386
|
skipped and should surface via Problems + logs.
|
|
387
387
|
- `mcp_admin` is a built-in toolset that contains `mcp_restart` (best-effort per-server restart).
|
|
388
|
-
- Optional
|
|
389
|
-
- `
|
|
390
|
-
- `sections`:
|
|
388
|
+
- Optional manual information can live in `.minds/mcp.yaml` at `servers.<serverId>.manual`:
|
|
389
|
+
- `contentFile`: the topic-file directory prefix for the formal runtime manual; the final `man({ "toolsetId": "<serverId>" })` content shown to the LLM is loaded from here
|
|
390
|
+
- `content` / `sections`: inline team-management guidance shown in the `team_mgmt` MCP chapter (`sections` supports `[{ title, content }]` or `{ "<title>": "<content>" }`)
|
|
391
391
|
- Missing manual does **not** mean the toolset is unavailable; it means team-manager documentation
|
|
392
392
|
is incomplete. Agents should continue by reading each tool’s own description/arguments.
|
|
393
393
|
- Team-manager recommendation: after MCP config validation passes, carefully read each exposed tool
|
|
394
|
-
description, discuss intended rtws usage with the human user, then write
|
|
395
|
-
`
|
|
396
|
-
|
|
394
|
+
description, discuss intended rtws usage with the human user, then write the formal manual into
|
|
395
|
+
`manual.contentFile`; if extra team-management interpretation is still useful, add inline
|
|
396
|
+
`content + sections` alongside it.
|
|
397
397
|
- Use a semi-structured chapter shape: high-value sections often include `When To Use`,
|
|
398
398
|
`Guardrails`, and `Business Handling When Unavailable`, but do not force every toolset into one
|
|
399
399
|
fixed template. Start from the real business goal, then decide which sections deserve depth,
|
|
@@ -431,8 +431,9 @@ servers:
|
|
|
431
431
|
# Tool name transforms
|
|
432
432
|
transform: [] # optional
|
|
433
433
|
|
|
434
|
-
# Optional
|
|
434
|
+
# Optional manual information
|
|
435
435
|
manual:
|
|
436
|
+
contentFile: ".minds/manuals/<serverId>" # formal runtime manual for man({ "toolsetId": "<serverId>" })
|
|
436
437
|
content: "What this MCP toolset is for"
|
|
437
438
|
sections:
|
|
438
439
|
- title: "When To Use"
|
|
@@ -322,11 +322,11 @@ members:
|
|
|
322
322
|
|
|
323
323
|
- MCP 工具名称在所有工具集(内置 + MCP)中是全局的。冲突导致工具被跳过,应通过问题 + 日志暴露
|
|
324
324
|
- `mcp_admin` 是一个内置工具集,包含 `mcp_restart`(每个服务器最佳努力重启)
|
|
325
|
-
- 可选手册:可在 `.minds/mcp.yaml` 的 `servers.<serverId>.manual`
|
|
326
|
-
- `
|
|
327
|
-
- `sections
|
|
325
|
+
- 可选手册:可在 `.minds/mcp.yaml` 的 `servers.<serverId>.manual` 提供手册相关信息:
|
|
326
|
+
- `contentFile`:正式 runtime 手册的 topic 文件目录前缀;`man({ "toolsetId": "<serverId>" })` 最终给 LLM 看的正文从这里加载
|
|
327
|
+
- `content` / `sections`:补充给 `team_mgmt` MCP 章节看的 inline 团队管理说明(`sections` 支持 `[{ title, content }]` 或 `{ "<title>": "<content>" }`)
|
|
328
328
|
- 没有手册 **不代表** 该 toolset 不可用;这只表示团队管理文档覆盖不足。智能体应继续依据每个工具自身的 description/参数来使用。
|
|
329
|
-
- 建议团队管理者在 MCP 配置验证通过后:先精读该 server 暴露的每个工具说明,再与人类用户讨论本 rtws
|
|
329
|
+
- 建议团队管理者在 MCP 配置验证通过后:先精读该 server 暴露的每个工具说明,再与人类用户讨论本 rtws 的使用意图,然后把正式手册沉淀到 `manual.contentFile`;如仍需额外写团队管理层解释,再补 inline `content + sections`。
|
|
330
330
|
- 章节组织建议采用“半结构化”:可优先考虑 `何时使用`、`安全边界`、`不可用时业务处置` 这类高价值章节,但不要求所有 toolset 都照抄同一模板。应从真实业务目标出发,决定哪些章节需要展开、哪些只需一句话、哪些可以合并或改名成更贴切的标题。
|
|
331
331
|
- 对每个 MCP toolset,建议刻意写明“不可用时业务处置规约”,至少回答:
|
|
332
332
|
- 当前 toolset 暂不可达时,是否必须找协调者/专员接手
|
|
@@ -360,8 +360,9 @@ servers:
|
|
|
360
360
|
# 工具名称转换
|
|
361
361
|
transform: [] # 可选
|
|
362
362
|
|
|
363
|
-
#
|
|
363
|
+
# 可选:手册相关信息
|
|
364
364
|
manual:
|
|
365
|
+
contentFile: ".minds/manuals/<serverId>" # 正式 runtime 手册(供 man({ "toolsetId": "<serverId>" }) 读取)
|
|
365
366
|
content: "该 MCP toolset 的用途说明"
|
|
366
367
|
sections:
|
|
367
368
|
- title: "何时使用"
|
|
@@ -109,19 +109,19 @@ That is a workflow break. The model should send the Tellask directly.
|
|
|
109
109
|
- Regular completed sideline reply: `【Completed】`
|
|
110
110
|
- FBR reply: `【FBR-Direct Reply】` or `【FBR-Reasoning Only】`
|
|
111
111
|
- Chinese work language:
|
|
112
|
-
- Ask-back reply:
|
|
113
|
-
- Regular completed sideline reply:
|
|
114
|
-
- FBR reply: `【FBR
|
|
115
|
-
- If the requester defines a “reply format” in tellask body, it
|
|
112
|
+
- Ask-back reply: `【回问诉请】`
|
|
113
|
+
- Regular completed sideline reply: `【最终完成】`
|
|
114
|
+
- FBR reply: `【FBR-直接回复】` or `【FBR-仅推理】`
|
|
115
|
+
- If the requester defines a “reply/delivery format” in tellask body, keep it to the business delivery structure; do not require responder-side hand-written markers, because Dominds runtime injects those markers automatically.
|
|
116
116
|
- Source-dialog model raw is naturally preserved in source-dialog persistence; inter-dialog transfer must not rewrite or overwrite that source raw.
|
|
117
117
|
- Template-wrapped transfer is allowed: model output from one dialog can be embedded into a runtime template and sent as another dialog body.
|
|
118
118
|
|
|
119
119
|
**Sideline delivery rule**:
|
|
120
120
|
|
|
121
121
|
- If a sideline dialog has completed all goals and can deliver the final result, it MUST reply directly with the response body; do not use `tellaskBack` to send final delivery.
|
|
122
|
-
- Runtime treats that direct reply as the completion delivery to the tellasker dialog and injects the work-language marker automatically (`【Completed】` in English work language,
|
|
122
|
+
- Runtime treats that direct reply as the completion delivery to the tellasker dialog and injects the work-language marker automatically (`【Completed】` in English work language, `【最终完成】` in Chinese work language).
|
|
123
123
|
- If any goal is incomplete, the dialog is blocked, or critical context is missing, it MUST issue `tellaskBack({ tellaskContent: "..." })` before proceeding; do not post plain-text intermediate status updates while unfinished.
|
|
124
|
-
- **FBR exception**: FBR forbids all
|
|
124
|
+
- **FBR exception**: FBR forbids all tellask calls (including `tellaskBack` / `tellask` / `tellaskSessionless` / `askHuman`); list missing context + reasoning and return.
|
|
125
125
|
- If a human user inserts a message or asks a follow-up in the sideline: just reply normally; no need to report back to the upstream requester.
|
|
126
126
|
|
|
127
127
|
Note: no extra "Status: ..." line is required; the first-line marker is the stage reminder.
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
- 回问诉请回贴:`【TellaskBack】`
|
|
110
110
|
- 常规支线完成回贴:`【Completed】`
|
|
111
111
|
- FBR 回贴:`【FBR-Direct Reply】` 或 `【FBR-Reasoning Only】`
|
|
112
|
-
-
|
|
112
|
+
- 若诉请方在正文中定义“回贴格式/交付格式”,只写业务交付结构即可;不得要求被诉请者手写任何标记,这些标记由 Dominds 运行时自动注入。
|
|
113
113
|
- 源对话模型原始输出(raw)天然保留在源对话持久记录中;跨对话传递不得改写或覆盖该源 raw。
|
|
114
114
|
- 允许将“某对话的模型原文”拼接进运行时模板后,作为传递到另一对话的正文(模板化传递是规范路径)。
|
|
115
115
|
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
|
|
118
118
|
- 只有当所有目标完成时,支线对话才可直接正常回复诉请者对话(直接发正文即可,不需要调用 tellaskBack;运行时自动注入完成标记)。
|
|
119
119
|
- 若任何目标未完成或关键信息缺失,必须先用 `tellaskBack({ tellaskContent: "..." })` 回问诉请者对话再继续;不得发送普通文本中间汇报。
|
|
120
|
-
- **FBR 例外**:FBR
|
|
120
|
+
- **FBR 例外**:FBR 禁止一切 tellask(包括 `tellaskBack` / `tellask` / `tellaskSessionless` / `askHuman`);只列缺口 + 推理与摘要并直接回复。
|
|
121
121
|
- 若人类用户在支线对话中插入消息或补问:直接正常回复,不需要向诉请者汇报。
|
|
122
122
|
|
|
123
123
|
说明:不需要额外的 “Status: …” 行;首行标记即为阶段提醒。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type McpToolsetManualSection = {
|
|
2
|
+
title: string;
|
|
3
|
+
content: string;
|
|
4
|
+
};
|
|
5
|
+
export type McpToolsetManual = {
|
|
6
|
+
content?: string;
|
|
7
|
+
contentFile?: string;
|
|
8
|
+
sections: ReadonlyArray<McpToolsetManualSection>;
|
|
9
|
+
};
|
|
10
|
+
export type McpToolsetManualState = {
|
|
11
|
+
kind: 'missing';
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'invalid';
|
|
14
|
+
errorText: string;
|
|
15
|
+
} | {
|
|
16
|
+
kind: 'present';
|
|
17
|
+
manual: McpToolsetManual;
|
|
18
|
+
};
|
|
19
|
+
export type McpToolsetManualByServer = {
|
|
20
|
+
manualByServerId: ReadonlyMap<string, McpToolsetManual>;
|
|
21
|
+
invalidByServerId: ReadonlyMap<string, string>;
|
|
22
|
+
warningTextByServerId: ReadonlyMap<string, string>;
|
|
23
|
+
};
|
|
24
|
+
export declare function emptyMcpToolsetManualByServer(): McpToolsetManualByServer;
|
|
25
|
+
export declare function mcpToolsetManualProblemPrefix(serverId: string): string;
|
|
26
|
+
export declare function mcpWorkspaceManualProblemPrefix(): string;
|
|
27
|
+
export declare function parseMcpManualByServer(rawText: string): McpToolsetManualByServer;
|
|
28
|
+
export declare function reconcileMcpToolsetManualProblems(params: {
|
|
29
|
+
serverIds: ReadonlyArray<string>;
|
|
30
|
+
manualInfo: McpToolsetManualByServer;
|
|
31
|
+
measureRenderedWorkspaceMcpTopicRawChars: () => Promise<number>;
|
|
32
|
+
workspaceManualPath: string;
|
|
33
|
+
}): Promise<void>;
|