dominds 1.22.0 → 1.22.1
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/dialog-instance-registry.js +3 -4
- package/dist/dialog.d.ts +2 -2
- package/dist/dialog.js +3 -3
- package/dist/docs/diligence-push.md +19 -12
- package/dist/docs/diligence-push.zh.md +11 -9
- package/dist/docs/dominds-terminology.md +3 -3
- package/dist/docs/llm-provider-isolation.md +1 -1
- package/dist/docs/llm-provider-isolation.zh.md +1 -1
- package/dist/docs/team_mgmt-toolset.md +1 -1
- package/dist/docs/team_mgmt-toolset.zh.md +1 -1
- package/dist/docs/volcengine-coding-plan-openai-compatible.zh.md +11 -10
- package/dist/llm/api-quirks.d.ts +0 -2
- package/dist/llm/api-quirks.js +1 -3
- package/dist/llm/client.d.ts +1 -0
- package/dist/llm/defaults.yaml +2 -6
- package/dist/llm/gen/anthropic.d.ts +0 -6
- package/dist/llm/gen/anthropic.js +21 -468
- package/dist/llm/gen/openai-compatible.d.ts +11 -1
- package/dist/llm/gen/openai-compatible.js +188 -8
- package/dist/llm/gen.d.ts +4 -2
- package/dist/llm/kernel-driver/drive.js +164 -114
- package/dist/llm/kernel-driver/runtime.js +36 -11
- package/dist/llm/kernel-driver/tellask-special.js +12 -9
- package/dist/persistence.d.ts +2 -3
- package/dist/persistence.js +53 -76
- package/dist/problems.js +2 -1
- package/dist/server/websocket-handler.js +17 -3
- package/dist/tools/team_mgmt-manual.js +4 -4
- package/dist/tools/team_mgmt.js +13 -3
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-BYnYcdaa.js → _basePickBy-DUbW5G8a.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-BYnYcdaa.js.map → _basePickBy-DUbW5G8a.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-CHLBB955.js → _baseUniq-vou1IeXB.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-CHLBB955.js.map → _baseUniq-vou1IeXB.js.map} +1 -1
- package/webapp/dist/assets/{arc-DQXtgZdO.js → arc-D_O9oO0B.js} +2 -2
- package/webapp/dist/assets/{arc-DQXtgZdO.js.map → arc-D_O9oO0B.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CzP5Yf9x.js → architectureDiagram-2XIMDMQ5-B7k9SWSL.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CzP5Yf9x.js.map → architectureDiagram-2XIMDMQ5-B7k9SWSL.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-sOx5Byq8.js → blockDiagram-WCTKOSBZ-e3xTmffi.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-sOx5Byq8.js.map → blockDiagram-WCTKOSBZ-e3xTmffi.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-D8-GiS6c.js → c4Diagram-IC4MRINW-DVvi-N2o.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-D8-GiS6c.js.map → c4Diagram-IC4MRINW-DVvi-N2o.js.map} +1 -1
- package/webapp/dist/assets/{channel-Bvke0iMP.js → channel-CH387UD2.js} +2 -2
- package/webapp/dist/assets/{channel-Bvke0iMP.js.map → channel-CH387UD2.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-C9pln2M7.js → chunk-4BX2VUAB-BOo0Xj3m.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-C9pln2M7.js.map → chunk-4BX2VUAB-BOo0Xj3m.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-BLDXNtAM.js → chunk-55IACEB6-CI4uRAx_.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-BLDXNtAM.js.map → chunk-55IACEB6-CI4uRAx_.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-dYd3QdHa.js → chunk-FMBD7UC4-C4N1ovxD.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-dYd3QdHa.js.map → chunk-FMBD7UC4-C4N1ovxD.js.map} +1 -1
- package/webapp/dist/assets/{chunk-JSJVCQXG-SqHEmHHd.js → chunk-JSJVCQXG-5U4Hu7pC.js} +2 -2
- package/webapp/dist/assets/{chunk-JSJVCQXG-SqHEmHHd.js.map → chunk-JSJVCQXG-5U4Hu7pC.js.map} +1 -1
- package/webapp/dist/assets/{chunk-KX2RTZJC-CRXgzI2d.js → chunk-KX2RTZJC-BXPDNuct.js} +2 -2
- package/webapp/dist/assets/{chunk-KX2RTZJC-CRXgzI2d.js.map → chunk-KX2RTZJC-BXPDNuct.js.map} +1 -1
- package/webapp/dist/assets/{chunk-NQ4KR5QH-IMA2JZhH.js → chunk-NQ4KR5QH-oVsExnnn.js} +4 -4
- package/webapp/dist/assets/{chunk-NQ4KR5QH-IMA2JZhH.js.map → chunk-NQ4KR5QH-oVsExnnn.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-DBaGWjY3.js → chunk-QZHKN3VN-C6FzEv2C.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-DBaGWjY3.js.map → chunk-QZHKN3VN-C6FzEv2C.js.map} +1 -1
- package/webapp/dist/assets/{chunk-WL4C6EOR-QLmsLbcS.js → chunk-WL4C6EOR-Ir7e_B7t.js} +6 -6
- package/webapp/dist/assets/{chunk-WL4C6EOR-QLmsLbcS.js.map → chunk-WL4C6EOR-Ir7e_B7t.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-jN4lhUtx.js → classDiagram-VBA2DB6C-CPYs_LAr.js} +7 -7
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-jN4lhUtx.js.map → classDiagram-VBA2DB6C-CPYs_LAr.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-jN4lhUtx.js → classDiagram-v2-RAHNMMFH-CPYs_LAr.js} +7 -7
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-jN4lhUtx.js.map → classDiagram-v2-RAHNMMFH-CPYs_LAr.js.map} +1 -1
- package/webapp/dist/assets/{clone-DPC4Vt09.js → clone-CToca8rS.js} +2 -2
- package/webapp/dist/assets/{clone-DPC4Vt09.js.map → clone-CToca8rS.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BtVgObsc.js → cose-bilkent-S5V4N54A-DLNtqY7a.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BtVgObsc.js.map → cose-bilkent-S5V4N54A-DLNtqY7a.js.map} +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-Bv6mn-UV.js → dagre-KLK3FWXG-Bkt-O9uW.js} +7 -7
- package/webapp/dist/assets/{dagre-KLK3FWXG-Bv6mn-UV.js.map → dagre-KLK3FWXG-Bkt-O9uW.js.map} +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-D2OPgDkq.js → diagram-E7M64L7V-B4JR_u4V.js} +8 -8
- package/webapp/dist/assets/{diagram-E7M64L7V-D2OPgDkq.js.map → diagram-E7M64L7V-B4JR_u4V.js.map} +1 -1
- package/webapp/dist/assets/{diagram-IFDJBPK2-CZpDu-e5.js → diagram-IFDJBPK2-D9zRh8b7.js} +7 -7
- package/webapp/dist/assets/{diagram-IFDJBPK2-CZpDu-e5.js.map → diagram-IFDJBPK2-D9zRh8b7.js.map} +1 -1
- package/webapp/dist/assets/{diagram-P4PSJMXO-BkMbbW0p.js → diagram-P4PSJMXO-CAaXVWnX.js} +7 -7
- package/webapp/dist/assets/{diagram-P4PSJMXO-BkMbbW0p.js.map → diagram-P4PSJMXO-CAaXVWnX.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-INFDFZHY-Kf17ek1z.js → erDiagram-INFDFZHY-DDeoaSkJ.js} +5 -5
- package/webapp/dist/assets/{erDiagram-INFDFZHY-Kf17ek1z.js.map → erDiagram-INFDFZHY-DDeoaSkJ.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-Cort4hNL.js → flowDiagram-PKNHOUZH-DEYqzSEJ.js} +7 -7
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-Cort4hNL.js.map → flowDiagram-PKNHOUZH-DEYqzSEJ.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DcXFKB1Y.js → ganttDiagram-A5KZAMGK-BuLOSh0d.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DcXFKB1Y.js.map → ganttDiagram-A5KZAMGK-BuLOSh0d.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-BORnqZ0-.js → gitGraphDiagram-K3NZZRJ6-CBrwZvBf.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-BORnqZ0-.js.map → gitGraphDiagram-K3NZZRJ6-CBrwZvBf.js.map} +1 -1
- package/webapp/dist/assets/{graph-D4Uth-MK.js → graph-fX6cvjwR.js} +3 -3
- package/webapp/dist/assets/{graph-D4Uth-MK.js.map → graph-fX6cvjwR.js.map} +1 -1
- package/webapp/dist/assets/{index-YBIJr7jH.js → index-B3WzTLcD.js} +67 -40
- package/webapp/dist/assets/{index-YBIJr7jH.js.map → index-B3WzTLcD.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-DDjsEPg3.js → infoDiagram-LFFYTUFH-Ci3XYvve.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-DDjsEPg3.js.map → infoDiagram-LFFYTUFH-Ci3XYvve.js.map} +1 -1
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-Bb2sPnCX.js → ishikawaDiagram-PHBUUO56-DOH5ua9R.js} +2 -2
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-Bb2sPnCX.js.map → ishikawaDiagram-PHBUUO56-DOH5ua9R.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BtRY6eBa.js → journeyDiagram-4ABVD52K-DM_fiZlj.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BtRY6eBa.js.map → journeyDiagram-4ABVD52K-DM_fiZlj.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-aGmxT2H9.js → kanban-definition-K7BYSVSG-CSh2hqc2.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-aGmxT2H9.js.map → kanban-definition-K7BYSVSG-CSh2hqc2.js.map} +1 -1
- package/webapp/dist/assets/{layout-BuLicmwh.js → layout-yZEK1LgL.js} +5 -5
- package/webapp/dist/assets/{layout-BuLicmwh.js.map → layout-yZEK1LgL.js.map} +1 -1
- package/webapp/dist/assets/{linear-DIPh96mp.js → linear-m76SmdtZ.js} +2 -2
- package/webapp/dist/assets/{linear-DIPh96mp.js.map → linear-m76SmdtZ.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-ofWsysn9.js → mindmap-definition-YRQLILUH-NiwP-SLH.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-ofWsysn9.js.map → mindmap-definition-YRQLILUH-NiwP-SLH.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DQqCTITO.js → pieDiagram-SKSYHLDU-CSCapDSD.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DQqCTITO.js.map → pieDiagram-SKSYHLDU-CSCapDSD.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-DxWc0avu.js → quadrantDiagram-337W2JSQ-CbDGQH91.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-DxWc0avu.js.map → quadrantDiagram-337W2JSQ-CbDGQH91.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DHgYfzwt.js → requirementDiagram-Z7DCOOCP-CeG2yodp.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DHgYfzwt.js.map → requirementDiagram-Z7DCOOCP-CeG2yodp.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-Cuhwe80W.js → sankeyDiagram-WA2Y5GQK-B_l8tKqa.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-Cuhwe80W.js.map → sankeyDiagram-WA2Y5GQK-B_l8tKqa.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqSNoro8.js → sequenceDiagram-2WXFIKYE-Dc5gBIi5.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqSNoro8.js.map → sequenceDiagram-2WXFIKYE-Dc5gBIi5.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-D1mvuJi6.js → stateDiagram-RAJIS63D-DMYeNS1r.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-D1mvuJi6.js.map → stateDiagram-RAJIS63D-DMYeNS1r.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BCYX5Gy-.js → stateDiagram-v2-FVOUBMTO-MfUJuUEe.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BCYX5Gy-.js.map → stateDiagram-v2-FVOUBMTO-MfUJuUEe.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-DDLYGao7.js → timeline-definition-YZTLITO2-Ci2CZEky.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-DDLYGao7.js.map → timeline-definition-YZTLITO2-Ci2CZEky.js.map} +1 -1
- package/webapp/dist/assets/{treemap-KZPCXAKY-DXkv1e6y.js → treemap-KZPCXAKY-CNgzp4sT.js} +5 -5
- package/webapp/dist/assets/{treemap-KZPCXAKY-DXkv1e6y.js.map → treemap-KZPCXAKY-CNgzp4sT.js.map} +1 -1
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-DMxsg9P0.js → vennDiagram-LZ73GAT5-BYxtNx2s.js} +2 -2
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-DMxsg9P0.js.map → vennDiagram-LZ73GAT5-BYxtNx2s.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-BJ2qipzT.js → xychartDiagram-JWTSCODW-BUS3bn9p.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-BJ2qipzT.js.map → xychartDiagram-JWTSCODW-BUS3bn9p.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
|
@@ -85,10 +85,9 @@ async function getOrRestoreMainDialog(rootId, status) {
|
|
|
85
85
|
? latest.diligencePushRemainingBudget
|
|
86
86
|
: undefined;
|
|
87
87
|
const normalizedRemainingBudget = clampNonNegativeFiniteInt(persistedRemainingBudget, diligencePushMax > 0 ? diligencePushMax : 0);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
: normalizedRemainingBudget;
|
|
88
|
+
// `diligence-push-max` only seeds defaults. Persisted per-dialog budget is the runtime source of
|
|
89
|
+
// truth, including operator-added budget above (or despite) the current team default.
|
|
90
|
+
mainDialog.diligencePushRemainingBudget = normalizedRemainingBudget;
|
|
92
91
|
mainDialog.setPersistenceStatus(status);
|
|
93
92
|
dialog_global_registry_1.globalDialogRegistry.register(mainDialog);
|
|
94
93
|
// Keep the in-memory main dialog fully hydrated regardless of persistence status
|
package/dist/dialog.d.ts
CHANGED
|
@@ -438,7 +438,7 @@ export declare abstract class Dialog {
|
|
|
438
438
|
}): Promise<void>;
|
|
439
439
|
persistAgentMessage(content: string, genseq: number, type: 'thinking_msg' | 'saying_msg', provider_data?: ProviderData, reasoning?: ReasoningPayload): Promise<void>;
|
|
440
440
|
persistUiOnlyMarkdown(content: string, genseq: number): Promise<void>;
|
|
441
|
-
persistFunctionCall(id: string, name: string, rawArgumentsText: string, genseq: number): Promise<void>;
|
|
441
|
+
persistFunctionCall(id: string, name: string, rawArgumentsText: string, genseq: number, rawId?: string): Promise<void>;
|
|
442
442
|
persistTellaskCall(id: string, name: TellaskCallRecordName, rawArgumentsText: string, genseq: number, options?: {
|
|
443
443
|
deliveryMode?: 'tellask_call_start' | 'func_call_requested';
|
|
444
444
|
}): Promise<void>;
|
|
@@ -670,7 +670,7 @@ export declare abstract class DialogStore {
|
|
|
670
670
|
/**
|
|
671
671
|
* Persist a function call to storage
|
|
672
672
|
*/
|
|
673
|
-
persistFunctionCall(_dialog: Dialog, _id: string, _name: string, _rawArgumentsText: string, _genseq: number): Promise<void>;
|
|
673
|
+
persistFunctionCall(_dialog: Dialog, _id: string, _name: string, _rawArgumentsText: string, _genseq: number, _rawId?: string): Promise<void>;
|
|
674
674
|
persistTellaskCall(_dialog: Dialog, _id: string, _name: TellaskCallRecordName, _rawArgumentsText: string, _genseq: number, _options?: {
|
|
675
675
|
deliveryMode?: 'tellask_call_start' | 'func_call_requested';
|
|
676
676
|
}): Promise<void>;
|
package/dist/dialog.js
CHANGED
|
@@ -1452,8 +1452,8 @@ class Dialog {
|
|
|
1452
1452
|
async persistUiOnlyMarkdown(content, genseq) {
|
|
1453
1453
|
return await this.dlgStore.persistUiOnlyMarkdown(this, content, genseq);
|
|
1454
1454
|
}
|
|
1455
|
-
async persistFunctionCall(id, name, rawArgumentsText, genseq) {
|
|
1456
|
-
return await this.dlgStore.persistFunctionCall(this, id, name, rawArgumentsText, genseq);
|
|
1455
|
+
async persistFunctionCall(id, name, rawArgumentsText, genseq, rawId) {
|
|
1456
|
+
return await this.dlgStore.persistFunctionCall(this, id, name, rawArgumentsText, genseq, rawId);
|
|
1457
1457
|
}
|
|
1458
1458
|
async persistTellaskCall(id, name, rawArgumentsText, genseq, options) {
|
|
1459
1459
|
return await this.dlgStore.persistTellaskCall(this, id, name, rawArgumentsText, genseq, options);
|
|
@@ -1895,7 +1895,7 @@ class DialogStore {
|
|
|
1895
1895
|
/**
|
|
1896
1896
|
* Persist a function call to storage
|
|
1897
1897
|
*/
|
|
1898
|
-
async persistFunctionCall(_dialog, _id, _name, _rawArgumentsText, _genseq) { }
|
|
1898
|
+
async persistFunctionCall(_dialog, _id, _name, _rawArgumentsText, _genseq, _rawId) { }
|
|
1899
1899
|
async persistTellaskCall(_dialog, _id, _name, _rawArgumentsText, _genseq, _options) { }
|
|
1900
1900
|
/**
|
|
1901
1901
|
* Start a new course in storage
|
|
@@ -82,15 +82,20 @@ To avoid infinite loops, diligence-push has a per-dialog budget (per-member `dil
|
|
|
82
82
|
how many auto-continued diligence prompts can be injected for a given dialog before the runtime stops
|
|
83
83
|
issuing further automatic Diligence Pushes for that budget.
|
|
84
84
|
|
|
85
|
-
- Default: **
|
|
86
|
-
- If `< 1`,
|
|
85
|
+
- Default: **99**
|
|
86
|
+
- If `< 1`, new dialogs start with no automatic Diligence Push budget
|
|
87
87
|
- Configurable per-member via `diligence-push-max` in `.minds/team.yaml`
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
Important: `diligence-push-max` is only the default budget used when a dialog instance is created
|
|
90
|
+
or reset. Runtime decisions must use the concrete dialog's remaining budget
|
|
91
|
+
(`diligencePushRemainingBudget`), so a manually refilled dialog can keep auto-continuing even when
|
|
92
|
+
the team default is `0`.
|
|
90
93
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
dialog
|
|
94
|
+
### Q4H suspension
|
|
95
|
+
|
|
96
|
+
When a dialog becomes suspended due to a pending Q4H (Questions for Human), Diligence Push stops
|
|
97
|
+
while that suspension is active. Q4H does not reapply the member default budget; the dialog keeps its
|
|
98
|
+
own remaining budget so operator adjustments survive the suspension boundary.
|
|
94
99
|
|
|
95
100
|
### Budget exhausted → stop auto-pushing for that budget
|
|
96
101
|
|
|
@@ -103,9 +108,8 @@ Diligence-push can be disabled per-rtws in either of these ways:
|
|
|
103
108
|
|
|
104
109
|
- If the selected diligence file exists but its content is empty/whitespace, diligence-push is disabled (no injection).
|
|
105
110
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
- If `diligence-push-max < 1`, diligence-push is disabled for that member (no injection).
|
|
111
|
+
To stop auto-continue for a specific dialog, set that dialog's remaining budget to `0` or use the
|
|
112
|
+
per-dialog Diligence Push disable switch.
|
|
109
113
|
|
|
110
114
|
## Diligence prompt resolution
|
|
111
115
|
|
|
@@ -122,9 +126,10 @@ If the first existing file in the above order has empty/whitespace content, **di
|
|
|
122
126
|
Note: YAML frontmatter in diligence files is **ignored** by the runtime. If present, it is treated as
|
|
123
127
|
non-content metadata and stripped from the prompt body.
|
|
124
128
|
|
|
125
|
-
### Team member
|
|
129
|
+
### Team member default budget: `diligence-push-max`
|
|
126
130
|
|
|
127
|
-
Each team member can optionally
|
|
131
|
+
Each team member can optionally set the starting Diligence Push budget for new or reset dialogs via
|
|
132
|
+
`.minds/team.yaml`:
|
|
128
133
|
|
|
129
134
|
```yaml
|
|
130
135
|
members:
|
|
@@ -135,7 +140,9 @@ members:
|
|
|
135
140
|
Rules:
|
|
136
141
|
|
|
137
142
|
- If missing, `diligence-push-max` defaults to **99** for that member.
|
|
138
|
-
- If `diligence-push-max < 1`,
|
|
143
|
+
- If `diligence-push-max < 1`, newly created dialogs start with remaining budget `0`.
|
|
144
|
+
- After creation or reset, runtime business logic follows the dialog's own remaining budget rather
|
|
145
|
+
than treating `diligence-push-max` as runtime authority.
|
|
139
146
|
- Built-in shadow members `fuxi` and `pangu` default to `diligence-push-max: 0` unless explicitly overridden in team.yaml.
|
|
140
147
|
|
|
141
148
|
## UX notes
|
|
@@ -70,12 +70,15 @@ Dominds 主线对话旨在长期运行。主线对话"停止"(变为空闲)
|
|
|
70
70
|
为避免无限循环,diligence-push 有一个按对话的预算(每个成员的 `diligence-push-max`),控制对于给定对话在当前预算内还能注入多少个自动继续的鞭策语;预算耗尽后,运行时会停止继续自动鞭策。
|
|
71
71
|
|
|
72
72
|
- 默认值:**99**
|
|
73
|
-
- 如果 `< 1
|
|
73
|
+
- 如果 `< 1`,则新建对话从 0 个自动鞭策预算开始
|
|
74
74
|
- 可通过 `.minds/team.yaml` 中的 `diligence-push-max` 按成员配置
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
重要:`diligence-push-max` 只是在创建或重置对话实例时使用的默认预算。运行时业务判断必须以具体对话自己的剩余预算
|
|
77
|
+
(`diligencePushRemainingBudget`)为准;因此即使团队默认值是 `0`,手工补充过预算的对话也应继续自动鞭策。
|
|
77
78
|
|
|
78
|
-
|
|
79
|
+
### Q4H 暂停
|
|
80
|
+
|
|
81
|
+
当对话因待处理的 Q4H(Questions for Human)而暂停时,鞭策会在该暂停期间停止。Q4H 不会重新套用成员默认预算;对话会保留自己的剩余预算,因此操作员调整过的预算能跨过暂停边界继续生效。
|
|
79
82
|
|
|
80
83
|
### 预算耗尽 → 停止继续自动鞭策当前预算
|
|
81
84
|
|
|
@@ -87,9 +90,7 @@ Dominds 主线对话旨在长期运行。主线对话"停止"(变为空闲)
|
|
|
87
90
|
|
|
88
91
|
- 如果选中的鞭策语文件存在但其内容为空/仅空白,则禁用 diligence-push(不注入)。
|
|
89
92
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
- 如果 `diligence-push-max < 1`,则该成员的 diligence-push 被禁用(不注入)。
|
|
93
|
+
若要停止某个具体对话的自动续推,应将该对话的剩余预算设为 `0`,或使用该对话自己的鞭策禁用开关。
|
|
93
94
|
|
|
94
95
|
## 鞭策语解析
|
|
95
96
|
|
|
@@ -105,9 +106,9 @@ Dominds 主线对话旨在长期运行。主线对话"停止"(变为空闲)
|
|
|
105
106
|
|
|
106
107
|
注意:鞭策语文件中的 YAML frontmatter 会被运行时忽略。如果存在,它被视为非内容元数据并从提示正文中剥离。
|
|
107
108
|
|
|
108
|
-
###
|
|
109
|
+
### 团队成员默认预算:`diligence-push-max`
|
|
109
110
|
|
|
110
|
-
每个团队成员可以选择通过 `.minds/team.yaml`
|
|
111
|
+
每个团队成员可以选择通过 `.minds/team.yaml` 设置新建或重置对话的鞭策起始预算:
|
|
111
112
|
|
|
112
113
|
```yaml
|
|
113
114
|
members:
|
|
@@ -118,7 +119,8 @@ members:
|
|
|
118
119
|
规则:
|
|
119
120
|
|
|
120
121
|
- 如果缺失,`diligence-push-max` 对于该成员默认为 **99**。
|
|
121
|
-
- 如果 `diligence-push-max < 1
|
|
122
|
+
- 如果 `diligence-push-max < 1`,则新建对话的剩余预算从 `0` 开始。
|
|
123
|
+
- 创建或重置之后,运行时业务逻辑以对话自己的剩余预算为准,而不是再次把 `diligence-push-max` 当作启停闸门。
|
|
122
124
|
- 内置影子成员 `fuxi` 和 `pangu` 默认为 `diligence-push-max: 0`,除非在 team.yaml 中显式覆盖。
|
|
123
125
|
|
|
124
126
|
## UX 备注
|
|
@@ -425,11 +425,11 @@ Example / 示例(概念):
|
|
|
425
425
|
|
|
426
426
|
### Diligence Push(鞭策)
|
|
427
427
|
|
|
428
|
-
- EN: A proactive continuation mechanism that nudges an agent forward when it's idle or blocked (a "Diligence Push"), using configurable prompts and
|
|
429
|
-
- ZH:
|
|
428
|
+
- EN: A proactive continuation mechanism that nudges an agent forward when it's idle or blocked (a "Diligence Push"), using configurable prompts and per-dialog remaining budgets. **Always use "Diligence Push"; never use "keep-going", "勤奋", "proactive-push", or "auto-continue".**
|
|
429
|
+
- ZH: 一种主动继续机制,在智能体空闲或阻塞时通过可配置的提示词和每个对话自己的剩余预算进行"鞭策"。**统一使用"鞭策";禁止使用"保持运行"、"勤奋"、"自动继续"、"催促"等变体。**
|
|
430
430
|
|
|
431
431
|
- EN: Related terms: "Diligence Push prompt" (prompt file), "Diligence Push-max" config, "Diligence Push injection" (prompt injection).
|
|
432
|
-
- ZH: 相关术语:"鞭策提示词"(提示词文件)、"
|
|
432
|
+
- ZH: 相关术语:"鞭策提示词"(提示词文件)、"鞭策默认预算"(配置项)、"鞭策注入"(注入机制)。
|
|
433
433
|
|
|
434
434
|
### 用词原则:者 / 器 与 -or / -er
|
|
435
435
|
|
|
@@ -12,7 +12,7 @@ This means:
|
|
|
12
12
|
- `apiType: anthropic` owns official Anthropic Messages semantics, including object-shaped `model_params.anthropic.thinking`.
|
|
13
13
|
- `apiType: anthropic-compatible` owns Anthropic-compatible gateway semantics, including boolean `model_params.anthropic-compatible.thinking` mapped to provider `enabled` / `disabled` request objects.
|
|
14
14
|
|
|
15
|
-
Some providers expose OpenAI-compatible or Anthropic-compatible endpoints while still requiring
|
|
15
|
+
Some providers expose OpenAI-compatible or Anthropic-compatible endpoints while still requiring explicit provider quirks. Volcano Engine Ark Coding Plan now uses the OpenAI-compatible Chat Completions shape with its dedicated `/api/coding/v3` endpoint; the historical Anthropic-compatible Volcano tool-call quirks have been removed. See [`volcengine-coding-plan-openai-compatible.zh.md`](./volcengine-coding-plan-openai-compatible.zh.md) for the design record.
|
|
16
16
|
|
|
17
17
|
Similar field names across wrappers do not imply compatibility. For example, `reasoning_effort`, `verbosity`, `parallel_tool_calls`, and web search controls may look similar but can still differ in accepted values, payload shape, lifecycle events, validation rules, and runtime meaning.
|
|
18
18
|
|
|
@@ -12,7 +12,7 @@ Dominds 把每个 LLM provider wrapper 视为独立的协议适配器,而不
|
|
|
12
12
|
- `apiType: anthropic` 只负责 Anthropic 官方 Messages 语义,包括 object 形态的 `model_params.anthropic.thinking`。
|
|
13
13
|
- `apiType: anthropic-compatible` 负责 Anthropic 兼容网关语义,包括 boolean 形态的 `model_params.anthropic-compatible.thinking`,并映射为 provider 请求里的 `enabled` / `disabled` object。
|
|
14
14
|
|
|
15
|
-
某些 provider 虽然暴露 OpenAI-compatible 或 Anthropic-compatible endpoint,但仍可能需要明确的 provider quirk profile
|
|
15
|
+
某些 provider 虽然暴露 OpenAI-compatible 或 Anthropic-compatible endpoint,但仍可能需要明确的 provider quirk profile。火山方舟 Coding Plan 现在走 OpenAI-compatible Chat Completions 形态,并使用专属 `/api/coding/v3` endpoint;历史 Anthropic-compatible 火山工具调用 quirk 已取消。设计记录见 [`volcengine-coding-plan-openai-compatible.zh.md`](./volcengine-coding-plan-openai-compatible.zh.md)。
|
|
16
16
|
|
|
17
17
|
不同 wrapper 下看起来同名的字段,不代表它们可以互相兼容。比如 `reasoning_effort`、`verbosity`、`parallel_tool_calls`、web search 相关开关,名字可能相似,但可接受值、请求载荷形状、流事件生命周期、校验规则和运行时含义都可能不同。
|
|
18
18
|
|
|
@@ -327,7 +327,7 @@ used in `.minds/team.yaml` member configurations.
|
|
|
327
327
|
- `openai`: uses the OpenAI **Responses API** (best for OpenAI official endpoints; requires a `/v1`-style `responses` endpoint)
|
|
328
328
|
- `anthropic`: uses the official Anthropic **Messages API**. `model_params.anthropic.thinking` uses the official Anthropic object shape.
|
|
329
329
|
- `anthropic-compatible`: uses Anthropic-compatible **Messages API**. `model_params.anthropic-compatible.thinking` uses the Dominds boolean switch: `true` sends `thinking.type=enabled`; `false` sends `thinking.type=disabled`.
|
|
330
|
-
- `openai-compatible`: uses the OpenAI **Chat Completions API** (best for most “OpenAI-compatible” third-party/proxy endpoints; e.g. a manually configured Ark `.../api/v3` endpoint; Volcano Engine Ark Coding Plan must use its dedicated `.../api/coding/v3` endpoint
|
|
330
|
+
- `openai-compatible`: uses the OpenAI **Chat Completions API** (best for most “OpenAI-compatible” third-party/proxy endpoints; e.g. a manually configured Ark `.../api/v3` endpoint; Volcano Engine Ark Coding Plan must use its dedicated `.../api/coding/v3` endpoint)
|
|
331
331
|
- **Vision support**: if the provider/model supports multimodal Chat Completions, Dominds will pass tool-output images (`func_result_msg.contentItems[].type=input_image`, e.g. from MCP tools) to the model as `image_url` inputs after reading the persisted artifact; unsupported mime types are downgraded to text.
|
|
332
332
|
|
|
333
333
|
```yaml
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
- `openai`:使用 OpenAI **Responses API**(适用于 OpenAI 官方;需要 `/v1` 语义的 `responses` 端点)
|
|
269
269
|
- `anthropic`:使用 Anthropic 官方 **Messages API**。`model_params.anthropic.thinking` 使用 Anthropic 官方 object 形态。
|
|
270
270
|
- `anthropic-compatible`:使用 Anthropic 兼容的 **Messages API**。`model_params.anthropic-compatible.thinking` 使用 Dominds boolean 开关:`true` 发送 `thinking.type=enabled`,`false` 发送 `thinking.type=disabled`。
|
|
271
|
-
- `openai-compatible`:使用 OpenAI **Chat Completions API**(适用于多数“OpenAI 兼容”第三方/代理;例如手动配置的 Ark `.../api/v3` 端点;火山方舟 Coding Plan 必须使用专属 `.../api/coding/v3`
|
|
271
|
+
- `openai-compatible`:使用 OpenAI **Chat Completions API**(适用于多数“OpenAI 兼容”第三方/代理;例如手动配置的 Ark `.../api/v3` 端点;火山方舟 Coding Plan 必须使用专属 `.../api/coding/v3` 端点)
|
|
272
272
|
- **识图支持**:如果该 provider/model 支持 Chat Completions 的多模态输入,Dominds 会把工具输出里的图片(`func_result_msg.contentItems[].type=input_image`,来自 MCP 等工具)读取 artifact 后作为 `image_url` 形式喂给模型;不支持的 mimeType 会降级成文本提示。
|
|
273
273
|
|
|
274
274
|
```yaml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 火山方舟 Coding Plan OpenAI-Compatible 接入记录
|
|
2
2
|
|
|
3
|
-
本文记录 Dominds
|
|
3
|
+
本文记录 Dominds 将火山方舟 Coding Plan 从 Anthropic-compatible 协议切换到 OpenAI-compatible 协议的调研结论、设计边界和实施记录。
|
|
4
4
|
|
|
5
5
|
调研日期:2026-05-06
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ Dominds 现有火山方舟 Coding Plan 接入主要围绕 Anthropic-compatible
|
|
|
15
15
|
|
|
16
16
|
官方明确提醒:Coding Plan 不应使用普通数据面 `https://ark.cn-beijing.volces.com/api/v3`,否则不会消耗 Coding Plan 额度,可能产生额外 API 调用费用。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
结论:Dominds 最终取消火山方舟 Coding Plan + Anthropic-compatible 组合,内置 `volcano-engine-coding-plan` 改用 OpenAI-compatible 路线,以降低工具调用、流式输出、thinking/saying 顺序与多模型支持上的兼容成本。
|
|
19
19
|
|
|
20
20
|
## 资料来源
|
|
21
21
|
|
|
@@ -56,19 +56,20 @@ Dominds 现有火山方舟 Coding Plan 接入主要围绕 Anthropic-compatible
|
|
|
56
56
|
|
|
57
57
|
### Provider Profile
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
当前内置 provider profile:
|
|
60
60
|
|
|
61
61
|
```yaml
|
|
62
62
|
providers:
|
|
63
63
|
volcano-engine-coding-plan:
|
|
64
64
|
name: Volcano Engine Coding Plan
|
|
65
65
|
apiType: openai-compatible
|
|
66
|
-
apiQuirks:
|
|
66
|
+
apiQuirks:
|
|
67
|
+
- same-context-empty-response
|
|
67
68
|
baseUrl: https://ark.cn-beijing.volces.com/api/coding/v3
|
|
68
69
|
apiKeyEnvVar: ARK_API_KEY
|
|
69
70
|
```
|
|
70
71
|
|
|
71
|
-
`apiType: openai-compatible`
|
|
72
|
+
`apiType: openai-compatible` 表示底层 HTTP endpoint、Chat Completions 请求形态和 SSE 基础形态接近 OpenAI Chat Completions。历史上用于火山 Anthropic-compatible 文本 tool_use / 空对象参数拼接的专项 quirks 已删除;当前内置只保留 `same-context-empty-response` 这类通用 provider 重试/诊断 quirk。
|
|
72
73
|
|
|
73
74
|
### 具体模型优先
|
|
74
75
|
|
|
@@ -86,9 +87,9 @@ Dominds 只声明具体模型,不声明 `ark-code-latest`。原因:
|
|
|
86
87
|
建议边界:
|
|
87
88
|
|
|
88
89
|
- 通用 OpenAI-compatible wrapper 保持 Chat Completions 标准假设。
|
|
89
|
-
- 火山 Coding Plan request shaping
|
|
90
|
-
- 火山 Coding Plan stream delta
|
|
91
|
-
- 火山 Coding Plan
|
|
90
|
+
- 火山 Coding Plan request shaping 以 OpenAI-compatible Chat Completions 形态为基准。
|
|
91
|
+
- 火山 Coding Plan stream delta 解释以 OpenAI-compatible SSE 形态为基准。
|
|
92
|
+
- 火山 Coding Plan 工具调用历史必须满足 Chat Completions 的 tool_calls / tool result 关联要求。
|
|
92
93
|
- driver/storage/UI 只接收 Dominds 已解码后的 thinking/saying/calling 投影事件。
|
|
93
94
|
|
|
94
95
|
## 支持模型与能力草案
|
|
@@ -291,13 +292,13 @@ OpenAI Chat Completions 风格下,`delta.tool_calls` 可能按 index 分块返
|
|
|
291
292
|
### Phase 1:文档与配置边界
|
|
292
293
|
|
|
293
294
|
- 新增本文档。
|
|
294
|
-
- 更新 provider 隔离文档,注明火山 Coding Plan
|
|
295
|
+
- 更新 provider 隔离文档,注明火山 Coding Plan 使用 OpenAI-compatible + 专属 endpoint,不再支持 Anthropic-compatible 火山工具 quirks。
|
|
295
296
|
- 在 defaults 中将 `volcano-engine-coding-plan` 调整为 OpenAI-compatible profile,仅列具体模型。
|
|
296
297
|
- 不提供 `ark-code-latest`。
|
|
297
298
|
|
|
298
299
|
### Phase 2:请求构造
|
|
299
300
|
|
|
300
|
-
-
|
|
301
|
+
- 使用 OpenAI-compatible wrapper 的标准工具调用与流式解析路径。
|
|
301
302
|
- 增加火山模型能力表。
|
|
302
303
|
- 为火山 provider 增加 `thinking` / `reasoning_effort` 参数冲突校验。
|
|
303
304
|
- 确保 tool call history 满足 `type: function`、arguments string 等要求。
|
package/dist/llm/api-quirks.d.ts
CHANGED
|
@@ -3,8 +3,6 @@ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
|
|
|
3
3
|
import type { ProviderConfig } from './client';
|
|
4
4
|
import type { LlmRetryStrategy } from './gen';
|
|
5
5
|
export type LlmFailureKind = 'retriable' | 'rejected' | 'fatal';
|
|
6
|
-
export declare const GLM_VIA_VOLCANO_API_QUIRK = "glm-via-volcano";
|
|
7
|
-
export declare const VOLCANO_TOOL_USE_API_QUIRK = "volcano-tool-use";
|
|
8
6
|
export declare const SAME_CONTEXT_EMPTY_RESPONSE_API_QUIRK = "same-context-empty-response";
|
|
9
7
|
export type LlmFailureSummary = {
|
|
10
8
|
kind: LlmFailureKind;
|
package/dist/llm/api-quirks.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.XCODE_BEST_STREAM_INTERNAL_ERROR_CODE = exports.SAME_CONTEXT_EMPTY_RESPONSE_API_QUIRK =
|
|
3
|
+
exports.XCODE_BEST_STREAM_INTERNAL_ERROR_CODE = exports.SAME_CONTEXT_EMPTY_RESPONSE_API_QUIRK = void 0;
|
|
4
4
|
exports.normalizeProviderApiQuirks = normalizeProviderApiQuirks;
|
|
5
5
|
exports.createLlmFailureQuirkHandlerSession = createLlmFailureQuirkHandlerSession;
|
|
6
6
|
const persistence_errors_1 = require("../persistence-errors");
|
|
7
|
-
exports.GLM_VIA_VOLCANO_API_QUIRK = 'glm-via-volcano';
|
|
8
|
-
exports.VOLCANO_TOOL_USE_API_QUIRK = 'volcano-tool-use';
|
|
9
7
|
exports.SAME_CONTEXT_EMPTY_RESPONSE_API_QUIRK = 'same-context-empty-response';
|
|
10
8
|
const DOMINDS_LLM_EMPTY_RESPONSE_ERROR_CODE = 'DOMINDS_LLM_EMPTY_RESPONSE';
|
|
11
9
|
const XCODE_BEST_EMPTY_RESPONSE_SINGLE_RETRY_DELAY_MS = 3000;
|
package/dist/llm/client.d.ts
CHANGED
package/dist/llm/defaults.yaml
CHANGED
|
@@ -12,12 +12,6 @@
|
|
|
12
12
|
# repeated empty-response deadlock detection for the same unchanged dialog context, plus conservative retry
|
|
13
13
|
# classification for gateway-returned HTML 502 Bad Gateway pages and
|
|
14
14
|
# `500 auth_unavailable: no auth available` infrastructure failures.
|
|
15
|
-
# `apiQuirks: glm-via-volcano` enables a narrow Anthropic-compatible stream quirk for
|
|
16
|
-
# Volcano Ark Coding Plan tool calls where an empty-object tool input may arrive as
|
|
17
|
-
# content_block_start.input={} followed by a lone `partial_json: "}"`.
|
|
18
|
-
# `apiQuirks: volcano-tool-use` enables a narrow Anthropic-compatible stream quirk for
|
|
19
|
-
# Volcano Ark Coding Plan text blocks that render a tool call as textual
|
|
20
|
-
# "Function call emitted by the assistant." metadata instead of protocol tool_use blocks.
|
|
21
15
|
# `apiQuirks: same-context-empty-response` detects repeated empty responses in the same
|
|
22
16
|
# dialog generation context and stops same-context retry loops with a deadlock-break prompt.
|
|
23
17
|
# - tool_result_max_chars: optional transport-level cap for a single tool-result text payload
|
|
@@ -568,6 +562,7 @@ providers:
|
|
|
568
562
|
name: Kimi-K2.6
|
|
569
563
|
supports_thinking: true
|
|
570
564
|
default_thinking: true
|
|
565
|
+
supports_tool_choice: false
|
|
571
566
|
supports_image_input: true
|
|
572
567
|
context_length: 200000
|
|
573
568
|
input_length: 200000
|
|
@@ -577,6 +572,7 @@ providers:
|
|
|
577
572
|
name: Kimi-K2.5
|
|
578
573
|
supports_thinking: true
|
|
579
574
|
default_thinking: false
|
|
575
|
+
supports_tool_choice: false
|
|
580
576
|
supports_image_input: true
|
|
581
577
|
context_length: 200000
|
|
582
578
|
input_length: 200000
|
|
@@ -4,16 +4,10 @@ import type { Team } from '../../team';
|
|
|
4
4
|
import type { FuncTool } from '../../tool';
|
|
5
5
|
import type { ChatMessage, ProviderConfig } from '../client';
|
|
6
6
|
import type { LlmBatchResult, LlmFailureDisposition, LlmGenerator, LlmRequestContext, LlmStreamReceiver, LlmStreamResult } from '../gen';
|
|
7
|
-
export type AnthropicStreamConsumeQuirks = {
|
|
8
|
-
normalizeLoneClosingBraceEmptyToolInputDelta: boolean;
|
|
9
|
-
convertVolcanoTextToolUseBlocks: boolean;
|
|
10
|
-
};
|
|
11
7
|
export type AnthropicStreamConsumeOptions = {
|
|
12
8
|
abortSignal?: AbortSignal;
|
|
13
9
|
forcedJsonToolName?: string;
|
|
14
|
-
quirks?: AnthropicStreamConsumeQuirks;
|
|
15
10
|
genseq?: number;
|
|
16
|
-
knownFunctionCallIds?: ReadonlySet<string>;
|
|
17
11
|
};
|
|
18
12
|
export type AnthropicStreamConsumeResult = {
|
|
19
13
|
usage: LlmUsageStats;
|