dominds 1.17.2 → 1.17.4
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.js +5 -0
- 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/mcp/manual-problems.d.ts +33 -0
- package/dist/mcp/manual-problems.js +323 -0
- package/dist/mcp/supervisor.js +23 -1
- package/dist/persistence.js +12 -0
- package/dist/priming.js +7 -0
- package/dist/shared-reminders.js +2 -0
- package/dist/tool.d.ts +5 -0
- package/dist/tool.js +66 -4
- 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 +173 -37
- package/dist/tools/pending-tellask-reminder.d.ts +1 -1
- package/dist/tools/pending-tellask-reminder.js +39 -19
- 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 +4 -4
- package/webapp/dist/assets/{_basePickBy-EK9iGcOl.js → _basePickBy-CgM-M_q8.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-EK9iGcOl.js.map → _basePickBy-CgM-M_q8.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-BHtz-XvO.js → _baseUniq-B06twih4.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-BHtz-XvO.js.map → _baseUniq-B06twih4.js.map} +1 -1
- package/webapp/dist/assets/{arc-NqUmMwkS.js → arc-CoXJvjeB.js} +2 -2
- package/webapp/dist/assets/{arc-NqUmMwkS.js.map → arc-CoXJvjeB.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CJ7Jb15a.js → architectureDiagram-2XIMDMQ5-BLFRWTKn.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CJ7Jb15a.js.map → architectureDiagram-2XIMDMQ5-BLFRWTKn.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-RNM7ujN4.js → blockDiagram-WCTKOSBZ-CYRE6deu.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-RNM7ujN4.js.map → blockDiagram-WCTKOSBZ-CYRE6deu.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-DKra5-za.js → c4Diagram-IC4MRINW-B26QTIJt.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-DKra5-za.js.map → c4Diagram-IC4MRINW-B26QTIJt.js.map} +1 -1
- package/webapp/dist/assets/{channel-CxE9sL_E.js → channel-C5U2W0P9.js} +2 -2
- package/webapp/dist/assets/{channel-CxE9sL_E.js.map → channel-C5U2W0P9.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-BlyIt9uv.js → chunk-4BX2VUAB-7z2PgnSv.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-BlyIt9uv.js.map → chunk-4BX2VUAB-7z2PgnSv.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-DsPShmjL.js → chunk-55IACEB6-6sRVmXqs.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-DsPShmjL.js.map → chunk-55IACEB6-6sRVmXqs.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-C2i0rEFF.js → chunk-FMBD7UC4-BwYp8OtY.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-C2i0rEFF.js.map → chunk-FMBD7UC4-BwYp8OtY.js.map} +1 -1
- package/webapp/dist/assets/{chunk-JSJVCQXG-CK8inzJx.js → chunk-JSJVCQXG-CRq8LK53.js} +2 -2
- package/webapp/dist/assets/{chunk-JSJVCQXG-CK8inzJx.js.map → chunk-JSJVCQXG-CRq8LK53.js.map} +1 -1
- package/webapp/dist/assets/{chunk-KX2RTZJC-BjEK5_oI.js → chunk-KX2RTZJC-CzFE355P.js} +2 -2
- package/webapp/dist/assets/{chunk-KX2RTZJC-BjEK5_oI.js.map → chunk-KX2RTZJC-CzFE355P.js.map} +1 -1
- package/webapp/dist/assets/{chunk-NQ4KR5QH-Clf489xc.js → chunk-NQ4KR5QH-3cQSOzCt.js} +4 -4
- package/webapp/dist/assets/{chunk-NQ4KR5QH-Clf489xc.js.map → chunk-NQ4KR5QH-3cQSOzCt.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-CMikir3s.js → chunk-QZHKN3VN-DWkpxb-w.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-CMikir3s.js.map → chunk-QZHKN3VN-DWkpxb-w.js.map} +1 -1
- package/webapp/dist/assets/{chunk-WL4C6EOR-1gtCLicd.js → chunk-WL4C6EOR-DkpfoQzK.js} +6 -6
- package/webapp/dist/assets/{chunk-WL4C6EOR-1gtCLicd.js.map → chunk-WL4C6EOR-DkpfoQzK.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-kzzlkQ_D.js → classDiagram-VBA2DB6C-mVfJeuZL.js} +7 -7
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-kzzlkQ_D.js.map → classDiagram-VBA2DB6C-mVfJeuZL.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-kzzlkQ_D.js → classDiagram-v2-RAHNMMFH-mVfJeuZL.js} +7 -7
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-kzzlkQ_D.js.map → classDiagram-v2-RAHNMMFH-mVfJeuZL.js.map} +1 -1
- package/webapp/dist/assets/{clone-XglJh1R0.js → clone-5uLJc7AC.js} +2 -2
- package/webapp/dist/assets/{clone-XglJh1R0.js.map → clone-5uLJc7AC.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A--gZrh2tG.js → cose-bilkent-S5V4N54A-CoiJzdQi.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A--gZrh2tG.js.map → cose-bilkent-S5V4N54A-CoiJzdQi.js.map} +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-D_JMhNNL.js → dagre-KLK3FWXG-DU_3BSOq.js} +7 -7
- package/webapp/dist/assets/{dagre-KLK3FWXG-D_JMhNNL.js.map → dagre-KLK3FWXG-DU_3BSOq.js.map} +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-HkYhqJDL.js → diagram-E7M64L7V-DgqOvF1U.js} +8 -8
- package/webapp/dist/assets/{diagram-E7M64L7V-HkYhqJDL.js.map → diagram-E7M64L7V-DgqOvF1U.js.map} +1 -1
- package/webapp/dist/assets/{diagram-IFDJBPK2-BFv5iU5U.js → diagram-IFDJBPK2-CFWMc1oD.js} +7 -7
- package/webapp/dist/assets/{diagram-IFDJBPK2-BFv5iU5U.js.map → diagram-IFDJBPK2-CFWMc1oD.js.map} +1 -1
- package/webapp/dist/assets/{diagram-P4PSJMXO-Dg46tTnk.js → diagram-P4PSJMXO-lrqvXDXp.js} +7 -7
- package/webapp/dist/assets/{diagram-P4PSJMXO-Dg46tTnk.js.map → diagram-P4PSJMXO-lrqvXDXp.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-INFDFZHY-BzJClUtq.js → erDiagram-INFDFZHY-C28KjRkA.js} +5 -5
- package/webapp/dist/assets/{erDiagram-INFDFZHY-BzJClUtq.js.map → erDiagram-INFDFZHY-C28KjRkA.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-IBGgxeki.js → flowDiagram-PKNHOUZH-DkxGh-JF.js} +7 -7
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-IBGgxeki.js.map → flowDiagram-PKNHOUZH-DkxGh-JF.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DdxgzFKe.js → ganttDiagram-A5KZAMGK-BmZnHD96.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DdxgzFKe.js.map → ganttDiagram-A5KZAMGK-BmZnHD96.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C14OpSSI.js → gitGraphDiagram-K3NZZRJ6-xiHqomZC.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C14OpSSI.js.map → gitGraphDiagram-K3NZZRJ6-xiHqomZC.js.map} +1 -1
- package/webapp/dist/assets/{graph-BrKKvSVx.js → graph-ozb0amP0.js} +3 -3
- package/webapp/dist/assets/{graph-BrKKvSVx.js.map → graph-ozb0amP0.js.map} +1 -1
- package/webapp/dist/assets/{index-BV_dDe3L.js → index-Cyx7eev_.js} +700 -165
- package/webapp/dist/assets/{index-BV_dDe3L.js.map → index-Cyx7eev_.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-k0Yv94VI.js → infoDiagram-LFFYTUFH-fLl_TA1F.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-k0Yv94VI.js.map → infoDiagram-LFFYTUFH-fLl_TA1F.js.map} +1 -1
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-C3EYBxjN.js → ishikawaDiagram-PHBUUO56-ZL9tBKUr.js} +2 -2
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-C3EYBxjN.js.map → ishikawaDiagram-PHBUUO56-ZL9tBKUr.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BnSlOrbq.js → journeyDiagram-4ABVD52K--aRyymZs.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BnSlOrbq.js.map → journeyDiagram-4ABVD52K--aRyymZs.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-CNYH0HDF.js → kanban-definition-K7BYSVSG-BO_QdW_O.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-CNYH0HDF.js.map → kanban-definition-K7BYSVSG-BO_QdW_O.js.map} +1 -1
- package/webapp/dist/assets/{layout-NtmBC9CZ.js → layout-Bu3Xw0z2.js} +5 -5
- package/webapp/dist/assets/{layout-NtmBC9CZ.js.map → layout-Bu3Xw0z2.js.map} +1 -1
- package/webapp/dist/assets/{linear-BrqwApt9.js → linear-Bq77itJm.js} +2 -2
- package/webapp/dist/assets/{linear-BrqwApt9.js.map → linear-Bq77itJm.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DcknQb8H.js → mindmap-definition-YRQLILUH-CHB8qv8L.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DcknQb8H.js.map → mindmap-definition-YRQLILUH-CHB8qv8L.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-wydKHXzN.js → pieDiagram-SKSYHLDU-Cxg_wh4K.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-wydKHXzN.js.map → pieDiagram-SKSYHLDU-Cxg_wh4K.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-D6i3VaFO.js → quadrantDiagram-337W2JSQ-DFguuaS9.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-D6i3VaFO.js.map → quadrantDiagram-337W2JSQ-DFguuaS9.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-C0sBwH6H.js → requirementDiagram-Z7DCOOCP--tJ_dfsT.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-C0sBwH6H.js.map → requirementDiagram-Z7DCOOCP--tJ_dfsT.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-33jPg4PK.js → sankeyDiagram-WA2Y5GQK-f0zWimMc.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-33jPg4PK.js.map → sankeyDiagram-WA2Y5GQK-f0zWimMc.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-CJsKHnh5.js → sequenceDiagram-2WXFIKYE-dwXRRnyq.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-CJsKHnh5.js.map → sequenceDiagram-2WXFIKYE-dwXRRnyq.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-B6A5jTdU.js → stateDiagram-RAJIS63D-DToxcEC2.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-B6A5jTdU.js.map → stateDiagram-RAJIS63D-DToxcEC2.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-6YIjpVKr.js → stateDiagram-v2-FVOUBMTO-BY5hDUqz.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-6YIjpVKr.js.map → stateDiagram-v2-FVOUBMTO-BY5hDUqz.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BQS5KHfj.js → timeline-definition-YZTLITO2-CT3WRcFt.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BQS5KHfj.js.map → timeline-definition-YZTLITO2-CT3WRcFt.js.map} +1 -1
- package/webapp/dist/assets/{treemap-KZPCXAKY-DB1uUX8l.js → treemap-KZPCXAKY-Lnkh2bpd.js} +5 -5
- package/webapp/dist/assets/{treemap-KZPCXAKY-DB1uUX8l.js.map → treemap-KZPCXAKY-Lnkh2bpd.js.map} +1 -1
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BtcfWZJx.js → vennDiagram-LZ73GAT5-CYSLSh1w.js} +2 -2
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BtcfWZJx.js.map → vennDiagram-LZ73GAT5-CYSLSh1w.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-CfIdcI74.js → xychartDiagram-JWTSCODW-DgvaqrGO.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-CfIdcI74.js.map → xychartDiagram-JWTSCODW-DgvaqrGO.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderTeamMgmtGuideContent = renderTeamMgmtGuideContent;
|
|
4
|
+
const kernel_1 = require("@longrun-ai/kernel");
|
|
5
|
+
const time_1 = require("@longrun-ai/kernel/utils/time");
|
|
6
|
+
const team_mgmt_1 = require("./team_mgmt");
|
|
7
|
+
const team_mgmt_mcp_manual_1 = require("./team_mgmt-mcp-manual");
|
|
8
|
+
function fmtHeader(title) {
|
|
9
|
+
return `# ${title}\n`;
|
|
10
|
+
}
|
|
11
|
+
function fmtList(items) {
|
|
12
|
+
return (items
|
|
13
|
+
.filter((s) => s.trim() !== '')
|
|
14
|
+
.map((s) => `- ${s}`)
|
|
15
|
+
.join('\n') + '\n');
|
|
16
|
+
}
|
|
17
|
+
function parseTeamMgmtGuideTopics(topicsRaw) {
|
|
18
|
+
const topics = [];
|
|
19
|
+
for (const token0 of topicsRaw) {
|
|
20
|
+
const token = token0.trim().startsWith('!') ? token0.trim().slice(1) : token0.trim();
|
|
21
|
+
if (token === '')
|
|
22
|
+
continue;
|
|
23
|
+
if ((0, kernel_1.isTeamMgmtGuideTopicKey)(token)) {
|
|
24
|
+
topics.push(token);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`Unknown topic: ${token0}`);
|
|
28
|
+
}
|
|
29
|
+
return topics;
|
|
30
|
+
}
|
|
31
|
+
async function renderTeamMgmtGuideContent(language, topicsRaw = []) {
|
|
32
|
+
const topics = parseTeamMgmtGuideTopics(topicsRaw);
|
|
33
|
+
const msgPrefix = language === 'zh'
|
|
34
|
+
? `(生成时间:${(0, time_1.formatUnifiedTimestamp)(new Date())})\n\n`
|
|
35
|
+
: `(Generated: ${(0, time_1.formatUnifiedTimestamp)(new Date())})\n\n`;
|
|
36
|
+
const renderIndex = () => {
|
|
37
|
+
const topicTitle = (key) => (0, kernel_1.getTeamMgmtGuideTopicTitle)(language, key);
|
|
38
|
+
if (language === 'zh') {
|
|
39
|
+
return (fmtHeader('Team Management Manual') +
|
|
40
|
+
msgPrefix +
|
|
41
|
+
fmtList([
|
|
42
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["topics"] })\`:${topicTitle('topics')}(你在这里)`,
|
|
43
|
+
'新手最常见流程:先 `team_mgmt_list_providers({})` / `team_mgmt_list_models({ provider_pattern: "*", model_pattern: "*" })` 确认 provider/model keys → 再写 `.minds/team.yaml` → 再写 `.minds/team/<id>/persona.*.md` → 再跑 `team_mgmt_check_provider({ provider_key: "<providerKey>", model: "", all_models: false, live: false })`。',
|
|
44
|
+
'',
|
|
45
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["team"] })\`:${topicTitle('team')} — .minds/team.yaml(团队花名册、工具集、目录权限入口)`,
|
|
46
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["minds"] })\`:${topicTitle('minds')} — .minds/team/<id>/*(persona/knowhow/pitfalls 资产怎么写)`,
|
|
47
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["skills"] })\`:${topicTitle('skills')} — .minds/skills/*(公开 skill 格式迁移、字段映射、app 化边界)`,
|
|
48
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["priming"] })\`:${topicTitle('priming')} — .minds/priming/*(启动脚本如何编写、维护与复用)`,
|
|
49
|
+
'`启动脚本修改后建议立即运行:`team_mgmt_validate_priming_scripts({})`',
|
|
50
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["env"] })\`:${topicTitle('env')} — .minds/env.*.md(运行环境提示:在团队介绍之前注入)`,
|
|
51
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["permissions"] })\`:${topicTitle('permissions')} — 目录+扩展名权限(*_dirs/no_*_dirs/*_file_ext_names/no_*_file_ext_names 语义与冲突规则)`,
|
|
52
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["toolsets"] })\`:${topicTitle('toolsets')} — toolsets 列表(当前已注册 toolsets;常见三种授权模式)`,
|
|
53
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["llm"] })\`:${topicTitle('llm')} — .minds/llm.yaml(provider key 如何定义/引用;env var 安全边界)`,
|
|
54
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["mcp"] })\`:${topicTitle('mcp')} — .minds/mcp.yaml(MCP serverId→toolset;热重载与租用;可复制最小模板)`,
|
|
55
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["troubleshooting"] })\`:${topicTitle('troubleshooting')} — 按症状定位;优先 list_providers/list_models → check_provider`,
|
|
56
|
+
'',
|
|
57
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["team","member-properties"] })\`:${topicTitle('team')} + ${topicTitle('member-properties')} — 成员字段表(members.<id> 字段参考)`,
|
|
58
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["llm","builtin-defaults"] })\`:${topicTitle('llm')} + ${topicTitle('builtin-defaults')} — 内置 defaults 摘要(内置 provider/model 概览与合并语义)`,
|
|
59
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["llm","model-params"] })\`:${topicTitle('llm')} + ${topicTitle('model-params')} — 模型参数参考(model_params / model_param_options)`,
|
|
60
|
+
]));
|
|
61
|
+
}
|
|
62
|
+
return (fmtHeader('Team Management Manual') +
|
|
63
|
+
msgPrefix +
|
|
64
|
+
fmtList([
|
|
65
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["topics"] })\`: ${topicTitle('topics')} (you are here)`,
|
|
66
|
+
'Common starter flow: run `team_mgmt_list_providers({})` / `team_mgmt_list_models({ provider_pattern: "*", model_pattern: "*" })` to confirm provider/model keys → write `.minds/team.yaml` → write `.minds/team/<id>/persona.*.md` → run `team_mgmt_check_provider({ provider_key: "<providerKey>", model: "", all_models: false, live: false })`. ',
|
|
67
|
+
'',
|
|
68
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["team"] })\`: ${topicTitle('team')} — .minds/team.yaml (roster/toolsets/permissions entrypoint)`,
|
|
69
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["minds"] })\`: ${topicTitle('minds')} — .minds/team/<id>/* (persona/knowhow/pitfalls assets)`,
|
|
70
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["skills"] })\`: ${topicTitle('skills')} — .minds/skills/* (public skill migration, field mapping, app boundary)`,
|
|
71
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["priming"] })\`: ${topicTitle('priming')} — .minds/priming/* (how to author, maintain, and reuse startup scripts)`,
|
|
72
|
+
'After editing startup scripts, run: `team_mgmt_validate_priming_scripts({})`.',
|
|
73
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["env"] })\`: ${topicTitle('env')} — .minds/env.*.md (runtime intro injected before Team Directory)`,
|
|
74
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["permissions"] })\`: ${topicTitle('permissions')} — directory + extension permissions (semantics + conflict rules)`,
|
|
75
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["toolsets"] })\`: ${topicTitle('toolsets')} — toolsets list (registered toolsets + common patterns)`,
|
|
76
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["llm"] })\`: ${topicTitle('llm')} — .minds/llm.yaml (provider keys, env var boundaries)`,
|
|
77
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["mcp"] })\`: ${topicTitle('mcp')} — .minds/mcp.yaml (serverId→toolset, hot reload, leasing, minimal templates)`,
|
|
78
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["troubleshooting"] })\`: ${topicTitle('troubleshooting')} — symptom → steps; start with list_providers/list_models, then check_provider`,
|
|
79
|
+
'',
|
|
80
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["team","member-properties"] })\`: ${topicTitle('team')} + ${topicTitle('member-properties')} — member field reference (members.<id>)`,
|
|
81
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["llm","builtin-defaults"] })\`: ${topicTitle('llm')} + ${topicTitle('builtin-defaults')} — built-in defaults summary (what/when/merge behavior)`,
|
|
82
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["llm","model-params"] })\`: ${topicTitle('llm')} + ${topicTitle('model-params')} — \`model_params\` and \`model_param_options\` reference`,
|
|
83
|
+
]));
|
|
84
|
+
};
|
|
85
|
+
const want = (t) => topics.includes(t);
|
|
86
|
+
if (topics.length === 0) {
|
|
87
|
+
return renderIndex();
|
|
88
|
+
}
|
|
89
|
+
if (want('topics')) {
|
|
90
|
+
return renderIndex();
|
|
91
|
+
}
|
|
92
|
+
if (want('team') && want('member-properties')) {
|
|
93
|
+
return (0, team_mgmt_1.renderMemberProperties)(language);
|
|
94
|
+
}
|
|
95
|
+
if (want('team')) {
|
|
96
|
+
return (0, team_mgmt_1.renderTeamManual)(language);
|
|
97
|
+
}
|
|
98
|
+
if (want('llm') && want('builtin-defaults')) {
|
|
99
|
+
return await (0, team_mgmt_1.renderBuiltinDefaults)(language);
|
|
100
|
+
}
|
|
101
|
+
if (want('llm') && want('model-params')) {
|
|
102
|
+
return await (0, team_mgmt_1.renderModelParamsManual)(language);
|
|
103
|
+
}
|
|
104
|
+
if (want('llm')) {
|
|
105
|
+
return language === 'zh'
|
|
106
|
+
? fmtHeader('.minds/llm.yaml') +
|
|
107
|
+
fmtList([
|
|
108
|
+
'定义 provider key → model 映射(用于 `.minds/team.yaml` 的 `member_defaults.provider` / `members.<id>.provider` 引用)。',
|
|
109
|
+
'快速自检:用 `team_mgmt_list_providers({})` 列出内置/rtws provider keys、env var 是否配置;用 `team_mgmt_list_models({ source: "effective", provider_pattern: "*", model_pattern: "*" })` 列出“合并后”的模型与 `model_param_options`。',
|
|
110
|
+
'最小示例:\n```yaml\nproviders:\n my_provider:\n apiKeyEnvVar: MY_PROVIDER_API_KEY\n models:\n my_model: { name: "my-model-id" }\n```\n然后在 `.minds/team.yaml` 里引用 `provider: my_provider` / `model: my_model`。',
|
|
111
|
+
'覆盖/合并语义:`.minds/llm.yaml` 会在内置 defaults 之上做覆盖(以当前实现为准);定义一个 provider key 并不意味着“禁用其他内置 provider”。',
|
|
112
|
+
'不要在文件里存 API key,使用环境变量(apiKeyEnvVar)。',
|
|
113
|
+
'member_defaults.provider/model 需要引用这里的 key。',
|
|
114
|
+
'`model_param_options` 可选:用于记录该 provider 支持的 `.minds/team.yaml model_params` 选项(文档用途)。',
|
|
115
|
+
'`apiQuirks` 可选:写在 `providers.<providerKey>.apiQuirks`,类型是 `string|string[]`。它是 provider 级 transport / 网关兼容开关,用来描述“这个供应商/网关的 API 有非标准行为”,不是 `.minds/team.yaml` 的成员参数,也不是 `model_params`。',
|
|
116
|
+
'使用原则:只有在你确认某个上游网关确实偏离了标准协议,而且 Dominds 已为这个偏差实现了命名 quirk 时才配置;不要把它当作随意调参入口。当前实现里,未知 quirk 值通常不会报错,但也不会带来任何效果。',
|
|
117
|
+
'当前已知示例:OpenAI Responses 包装层支持 `apiQuirks: xcode.best`(或数组里包含它)。它一方面会把供应商额外发出的 `keepalive` 流事件识别为 heartbeat,而不是当作异常事件处理;另一方面也会对该网关特有的失败模式做 provider-specific failure handling,包括“同一对话上下文连续返回 empty response”时先做少量临时重试;如果在同一未变化上下文里连续达到阈值,就判定这是 provider 侧 same-context deadlock,而不是普通基础设施抖动:此时继续沿用同一上下文自动重试大概率仍然不会有真实进展,必须引入新的信息或新的指令(例如补充上下文、改写问题、换一个切入方式,或在确实需要人类判断时调用 askHuman)。这类 provider/API retry 状态在同一次 driver 自动续跑链里会继续沿用,不因中途换 course 而自动清零;若当前对话启用了鞭策,driver 也会优先判断是否能按鞭策逻辑直接续跑一次,而不是先落入 stopped,并且一旦 driver 接受这次自动恢复资格,就会立刻记作已消费;以及把网关返回的 HTML 版 502 Bad Gateway 错误页和 `500 auth_unavailable: no auth available` 这类基础设施失败归类为 conservative 策略重试。最小示例:\n```yaml\nproviders:\n my_gateway:\n apiType: openai\n baseUrl: https://example.invalid/v1\n apiKeyEnvVar: MY_GATEWAY_API_KEY\n apiQuirks: xcode.best\n models:\n my_model: { name: "upstream-model-id" }\n```',
|
|
118
|
+
'边界提醒:`apiQuirks` 只影响实现里显式消费它的 provider/generator。就当前实现看,至少 OpenAI Responses 路径会读取它;不要假设所有 `apiType` 都支持或需要它。若配置后行为仍异常,应继续检查上游网关文档、抓流事件类型,并结合 `team_mgmt_check_provider(...)` / 运行日志排查。',
|
|
119
|
+
])
|
|
120
|
+
: fmtHeader('.minds/llm.yaml') +
|
|
121
|
+
fmtList([
|
|
122
|
+
'Defines provider keys → model keys (referenced by `.minds/team.yaml` via `member_defaults.provider` / `members.<id>.provider`).',
|
|
123
|
+
'Quick checks: use `team_mgmt_list_providers({})` to list built-in/rtws providers + env-var readiness; use `team_mgmt_list_models({ source: "effective", provider_pattern: "*", model_pattern: "*" })` to list merged models and `model_param_options`.',
|
|
124
|
+
'Minimal example:\n```yaml\nproviders:\n my_provider:\n apiKeyEnvVar: MY_PROVIDER_API_KEY\n models:\n my_model: { name: "my-model-id" }\n```\nThen reference `provider: my_provider` and `model: my_model` in `.minds/team.yaml`.',
|
|
125
|
+
'Merge/override: `.minds/llm.yaml` overrides built-in defaults (per current implementation); defining one provider does not imply disabling other built-in providers.',
|
|
126
|
+
'Do not store API keys in the file; use env vars via apiKeyEnvVar.',
|
|
127
|
+
'member_defaults.provider/model must reference these keys.',
|
|
128
|
+
'Optional: `model_param_options` documents `.minds/team.yaml model_params` knobs (documentation only).',
|
|
129
|
+
'`apiQuirks` is optional under `providers.<providerKey>.apiQuirks`, with type `string|string[]`. It is a provider-level transport / gateway compatibility switch for non-standard upstream API behavior. It is not a `.minds/team.yaml` member field and not part of `model_params`.',
|
|
130
|
+
'Use it only when you have confirmed that an upstream gateway deviates from the expected protocol and Dominds has an explicitly named quirk for that deviation. Do not treat it as a generic tuning field. In the current implementation, unknown quirk values are usually ignored rather than rejected, so a typo may silently do nothing.',
|
|
131
|
+
'Known current example: the OpenAI Responses wrapper supports `apiQuirks: xcode.best` (or an array containing it). It not only treats vendor-emitted `keepalive` stream events as heartbeat events instead of unexpected protocol noise, but also applies provider-specific failure handling for gateway-specific failures, including repeated empty responses in the same unchanged dialog context (a few temporary retries first; once the unchanged-context streak reaches the threshold, Dominds treats it as a provider-side same-context deadlock rather than ordinary infrastructure flakiness, which means repeating the same automatic retry path is no longer expected to make real progress and fresh information or fresh instructions are required, such as adding context, reframing the ask, changing the angle, or calling askHuman when human judgment is genuinely needed; this provider/API retry state intentionally continues across course changes within the same driver auto-continue chain; if Diligence Push is enabled for the dialog, the driver will first see whether it can continue once through that path before falling into stopped, and that recovery budget is considered consumed as soon as the driver accepts that path) and gateway-returned HTML 502 Bad Gateway pages plus `500 auth_unavailable: no auth available` infrastructure failures classified into conservative retry. Minimal example:\n```yaml\nproviders:\n my_gateway:\n apiType: openai\n baseUrl: https://example.invalid/v1\n apiKeyEnvVar: MY_GATEWAY_API_KEY\n apiQuirks: xcode.best\n models:\n my_model: { name: "upstream-model-id" }\n```',
|
|
132
|
+
'Boundary reminder: `apiQuirks` only affects providers/generators that explicitly read it in code. In the current implementation, at least the OpenAI Responses path consumes it; do not assume every `apiType` supports or needs it. If behavior is still wrong after setting it, continue with upstream gateway docs, raw stream event inspection, and `team_mgmt_check_provider(...)` / runtime logs.',
|
|
133
|
+
]);
|
|
134
|
+
}
|
|
135
|
+
if (want('mcp')) {
|
|
136
|
+
return await (0, team_mgmt_mcp_manual_1.renderMcpManual)(language);
|
|
137
|
+
}
|
|
138
|
+
if (want('minds')) {
|
|
139
|
+
return (0, team_mgmt_1.renderMindsManual)(language);
|
|
140
|
+
}
|
|
141
|
+
if (want('skills')) {
|
|
142
|
+
return (0, team_mgmt_1.renderSkillsManual)(language);
|
|
143
|
+
}
|
|
144
|
+
if (want('priming')) {
|
|
145
|
+
return (0, team_mgmt_1.renderPrimingManual)(language);
|
|
146
|
+
}
|
|
147
|
+
if (want('env')) {
|
|
148
|
+
return (0, team_mgmt_1.renderEnvManual)(language);
|
|
149
|
+
}
|
|
150
|
+
if (want('permissions')) {
|
|
151
|
+
return (0, team_mgmt_1.renderPermissionsManual)(language);
|
|
152
|
+
}
|
|
153
|
+
if (want('toolsets')) {
|
|
154
|
+
return await (0, team_mgmt_1.renderToolsets)(language);
|
|
155
|
+
}
|
|
156
|
+
if (want('troubleshooting')) {
|
|
157
|
+
return (0, team_mgmt_1.renderTroubleshooting)(language);
|
|
158
|
+
}
|
|
159
|
+
return renderIndex();
|
|
160
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LanguageCode } from '@longrun-ai/kernel/types/language';
|
|
2
|
+
import { type McpToolsetManualState } from '../mcp/manual-problems';
|
|
3
|
+
export type McpToolsetMappingEntry = {
|
|
4
|
+
serverId: string;
|
|
5
|
+
transport: 'stdio' | 'streamable_http' | 'invalid';
|
|
6
|
+
status: 'registered' | 'declared_unloaded' | 'declared_invalid';
|
|
7
|
+
loadedToolCount?: number;
|
|
8
|
+
loadedToolNames?: string[];
|
|
9
|
+
loadedToolNamesPreview?: string[];
|
|
10
|
+
errorText?: string;
|
|
11
|
+
manualState: McpToolsetManualState;
|
|
12
|
+
};
|
|
13
|
+
export type McpToolsetMappingSnapshot = {
|
|
14
|
+
kind: 'missing';
|
|
15
|
+
} | {
|
|
16
|
+
kind: 'invalid_yaml';
|
|
17
|
+
errorText: string;
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'loaded';
|
|
20
|
+
entries: ReadonlyArray<McpToolsetMappingEntry>;
|
|
21
|
+
};
|
|
22
|
+
export declare function renderMcpToolsetManualDetailsSection(language: LanguageCode, snapshot: McpToolsetMappingSnapshot): string;
|
|
23
|
+
export declare function readMcpToolsetMappingSnapshot(): Promise<McpToolsetMappingSnapshot>;
|
|
24
|
+
export declare function renderMcpToolsetMappingSection(language: LanguageCode, snapshot: McpToolsetMappingSnapshot): string;
|
|
25
|
+
export declare function renderMcpToolsetSetupGuideSection(language: LanguageCode, snapshot: McpToolsetMappingSnapshot): string;
|
|
26
|
+
export declare function renderMcpManual(language: LanguageCode): Promise<string>;
|
|
27
|
+
export declare function measureRenderedTeamMgmtMcpTopicRawChars(): Promise<number>;
|