dominds 0.7.6 → 0.8.2

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.
Files changed (155) hide show
  1. package/README.md +2 -2
  2. package/README.zh.md +2 -2
  3. package/dist/agent-priming.js +169 -200
  4. package/dist/cli/read.js +2 -7
  5. package/dist/dialog-factory.js +6 -4
  6. package/dist/dialog-instance-registry.js +2 -2
  7. package/dist/dialog.js +99 -91
  8. package/dist/docs/dialog-persistence.md +2 -2
  9. package/dist/docs/dialog-persistence.zh.md +2 -2
  10. package/dist/docs/dialog-system.md +86 -90
  11. package/dist/docs/dialog-system.zh.md +82 -83
  12. package/dist/docs/diligence-push.md +2 -2
  13. package/dist/docs/diligence-push.zh.md +2 -2
  14. package/dist/docs/dominds-agent-priming.md +11 -11
  15. package/dist/docs/dominds-agent-priming.zh.md +9 -9
  16. package/dist/docs/dominds-terminology.md +34 -34
  17. package/dist/docs/fbr-implementation.md +4 -4
  18. package/dist/docs/fbr-implementation.zh.md +4 -4
  19. package/dist/docs/fbr.md +31 -53
  20. package/dist/docs/fbr.zh.md +30 -48
  21. package/dist/docs/mottos.md +2 -3
  22. package/dist/docs/mottos.zh.md +2 -2
  23. package/dist/docs/q4h.md +6 -6
  24. package/dist/docs/q4h.zh.md +6 -6
  25. package/dist/docs/tellask-collab.md +13 -13
  26. package/dist/docs/tellask-collab.zh.md +18 -18
  27. package/dist/llm/driver-entry.js +9 -33
  28. package/dist/llm/driver-v2/core.js +413 -111
  29. package/dist/llm/driver-v2/index.js +5 -0
  30. package/dist/llm/driver-v2/orchestrator.js +4 -3
  31. package/dist/llm/driver-v2/policy.js +17 -23
  32. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
  33. package/dist/llm/driver-v2/round.js +18 -7
  34. package/dist/llm/driver-v2/runtime-utils.js +3 -5
  35. package/dist/llm/driver-v2/saying-events.js +4 -42
  36. package/dist/llm/driver-v2/supdialog-response.js +110 -23
  37. package/dist/llm/driver-v2/tellask-bridge.js +560 -458
  38. package/dist/mcp/sdk-client.js +1 -1
  39. package/dist/mcp/server-runtime.js +1 -1
  40. package/dist/mcp/stdio-client.js +6 -6
  41. package/dist/mcp/tool-names.js +1 -1
  42. package/dist/minds/builtin/fuxi/persona.en.md +10 -10
  43. package/dist/minds/builtin/fuxi/persona.zh.md +12 -12
  44. package/dist/minds/builtin/pangu/persona.en.md +7 -7
  45. package/dist/minds/builtin/pangu/persona.zh.md +6 -6
  46. package/dist/minds/minds-i18n.js +2 -2
  47. package/dist/minds/system-prompt-parts.js +15 -12
  48. package/dist/minds/system-prompt.js +58 -56
  49. package/dist/persistence.js +675 -527
  50. package/dist/server/api-routes.js +1 -1
  51. package/dist/server/websocket-handler.js +10 -20
  52. package/dist/server.js +3 -3
  53. package/dist/shared/diligence.js +12 -12
  54. package/dist/shared/i18n/driver-messages.js +28 -118
  55. package/dist/shared/utils/inter-dialog-format.js +53 -53
  56. package/dist/snippets/starting.en.md +1 -1
  57. package/dist/snippets/starting.zh.md +1 -2
  58. package/dist/static/assets/{_baseUniq-2IQvcpiv.js → _baseUniq-D4N_zVXV.js} +2 -2
  59. package/dist/static/assets/{_baseUniq-2IQvcpiv.js.map → _baseUniq-D4N_zVXV.js.map} +1 -1
  60. package/dist/static/assets/{arc-Boi4s2EY.js → arc-7bP9qomB.js} +2 -2
  61. package/dist/static/assets/{arc-Boi4s2EY.js.map → arc-7bP9qomB.js.map} +1 -1
  62. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js → architectureDiagram-VXUJARFQ-DToIiZuZ.js} +6 -6
  63. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js.map → architectureDiagram-VXUJARFQ-DToIiZuZ.js.map} +1 -1
  64. package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js → blockDiagram-VD42YOAC-C-pRNHpf.js} +7 -7
  65. package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js.map → blockDiagram-VD42YOAC-C-pRNHpf.js.map} +1 -1
  66. package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js → c4Diagram-YG6GDRKO-Bnp-nWKO.js} +3 -3
  67. package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js.map → c4Diagram-YG6GDRKO-Bnp-nWKO.js.map} +1 -1
  68. package/dist/static/assets/{channel-DBG_xYT_.js → channel-CTv1SsAF.js} +2 -2
  69. package/dist/static/assets/{channel-DBG_xYT_.js.map → channel-CTv1SsAF.js.map} +1 -1
  70. package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js → chunk-4BX2VUAB-D_OGa3ss.js} +2 -2
  71. package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js.map → chunk-4BX2VUAB-D_OGa3ss.js.map} +1 -1
  72. package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js → chunk-55IACEB6-I4o4MCuM.js} +2 -2
  73. package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js.map → chunk-55IACEB6-I4o4MCuM.js.map} +1 -1
  74. package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js → chunk-B4BG7PRW-Bp-TIXg6.js} +5 -5
  75. package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js.map → chunk-B4BG7PRW-Bp-TIXg6.js.map} +1 -1
  76. package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js → chunk-DI55MBZ5-Bnph5Hmd.js} +4 -4
  77. package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js.map → chunk-DI55MBZ5-Bnph5Hmd.js.map} +1 -1
  78. package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js → chunk-FMBD7UC4-q3UyRsNI.js} +2 -2
  79. package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js.map → chunk-FMBD7UC4-q3UyRsNI.js.map} +1 -1
  80. package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js → chunk-QN33PNHL-BxUlvLXP.js} +2 -2
  81. package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js.map → chunk-QN33PNHL-BxUlvLXP.js.map} +1 -1
  82. package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js → chunk-QZHKN3VN-DpQR9BVw.js} +2 -2
  83. package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js.map → chunk-QZHKN3VN-DpQR9BVw.js.map} +1 -1
  84. package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js → chunk-TZMSLE5B-BX8vrVo0.js} +2 -2
  85. package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js.map → chunk-TZMSLE5B-BX8vrVo0.js.map} +1 -1
  86. package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js → classDiagram-2ON5EDUG-Ccx5_2Xq.js} +6 -6
  87. package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js.map → classDiagram-2ON5EDUG-Ccx5_2Xq.js.map} +1 -1
  88. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js} +6 -6
  89. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js.map → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js.map} +1 -1
  90. package/dist/static/assets/{clone-rjxmrDHc.js → clone-Cl5zSMrO.js} +2 -2
  91. package/dist/static/assets/{clone-rjxmrDHc.js.map → clone-Cl5zSMrO.js.map} +1 -1
  92. package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js → cose-bilkent-S5V4N54A-B-FUX86B.js} +2 -2
  93. package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js.map → cose-bilkent-S5V4N54A-B-FUX86B.js.map} +1 -1
  94. package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js → dagre-6UL2VRFP-Bj8vSSpT.js} +7 -7
  95. package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js.map → dagre-6UL2VRFP-Bj8vSSpT.js.map} +1 -1
  96. package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js → diagram-PSM6KHXK-BPcgy7jf.js} +7 -7
  97. package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js.map → diagram-PSM6KHXK-BPcgy7jf.js.map} +1 -1
  98. package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js → diagram-QEK2KX5R-DHxd6LWi.js} +6 -6
  99. package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js.map → diagram-QEK2KX5R-DHxd6LWi.js.map} +1 -1
  100. package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js → diagram-S2PKOQOG-C4ynhhLr.js} +6 -6
  101. package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js.map → diagram-S2PKOQOG-C4ynhhLr.js.map} +1 -1
  102. package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js → erDiagram-Q2GNP2WA-CQ25uxxf.js} +5 -5
  103. package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js.map → erDiagram-Q2GNP2WA-CQ25uxxf.js.map} +1 -1
  104. package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js → flowDiagram-NV44I4VS-ChkkAldk.js} +6 -6
  105. package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js.map → flowDiagram-NV44I4VS-ChkkAldk.js.map} +1 -1
  106. package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js → ganttDiagram-JELNMOA3-CBt_Zorl.js} +3 -3
  107. package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js.map → ganttDiagram-JELNMOA3-CBt_Zorl.js.map} +1 -1
  108. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js → gitGraphDiagram-NY62KEGX-CtBc2dOO.js} +7 -7
  109. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js.map → gitGraphDiagram-NY62KEGX-CtBc2dOO.js.map} +1 -1
  110. package/dist/static/assets/{graph-DDHIhCSW.js → graph-BGzNnzuI.js} +3 -3
  111. package/dist/static/assets/{graph-DDHIhCSW.js.map → graph-BGzNnzuI.js.map} +1 -1
  112. package/dist/static/assets/{index-CUZD-Ua6.js → index-Vrp1PT3b.js} +654 -355
  113. package/dist/static/assets/index-Vrp1PT3b.js.map +1 -0
  114. package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js → infoDiagram-WHAUD3N6-BYJF-Ol5.js} +5 -5
  115. package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js.map → infoDiagram-WHAUD3N6-BYJF-Ol5.js.map} +1 -1
  116. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js} +5 -5
  117. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js.map → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js.map} +1 -1
  118. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js → kanban-definition-3W4ZIXB7-DBH-HEwY.js} +3 -3
  119. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js.map → kanban-definition-3W4ZIXB7-DBH-HEwY.js.map} +1 -1
  120. package/dist/static/assets/{layout-C7mFT1m6.js → layout-DdWO-uEo.js} +5 -5
  121. package/dist/static/assets/{layout-C7mFT1m6.js.map → layout-DdWO-uEo.js.map} +1 -1
  122. package/dist/static/assets/{linear-WSX0brRY.js → linear-BY3MovaF.js} +2 -2
  123. package/dist/static/assets/{linear-WSX0brRY.js.map → linear-BY3MovaF.js.map} +1 -1
  124. package/dist/static/assets/{min-DOTQTP4p.js → min-aHCJK1uN.js} +3 -3
  125. package/dist/static/assets/{min-DOTQTP4p.js.map → min-aHCJK1uN.js.map} +1 -1
  126. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js → mindmap-definition-VGOIOE7T-BjJnBRtB.js} +4 -4
  127. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js.map → mindmap-definition-VGOIOE7T-BjJnBRtB.js.map} +1 -1
  128. package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js → pieDiagram-ADFJNKIX-xAcmdymv.js} +7 -7
  129. package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js.map → pieDiagram-ADFJNKIX-xAcmdymv.js.map} +1 -1
  130. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js → quadrantDiagram-AYHSOK5B-BPbEGCEj.js} +3 -3
  131. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js.map → quadrantDiagram-AYHSOK5B-BPbEGCEj.js.map} +1 -1
  132. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js → requirementDiagram-UZGBJVZJ--w6UfXy0.js} +4 -4
  133. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js.map → requirementDiagram-UZGBJVZJ--w6UfXy0.js.map} +1 -1
  134. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js → sankeyDiagram-TZEHDZUN-B_T6TQwh.js} +2 -2
  135. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js.map → sankeyDiagram-TZEHDZUN-B_T6TQwh.js.map} +1 -1
  136. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js → sequenceDiagram-WL72ISMW-DX_oVvqA.js} +4 -4
  137. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js.map → sequenceDiagram-WL72ISMW-DX_oVvqA.js.map} +1 -1
  138. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js → stateDiagram-FKZM4ZOC-BAybZU8l.js} +9 -9
  139. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js.map → stateDiagram-FKZM4ZOC-BAybZU8l.js.map} +1 -1
  140. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js} +5 -5
  141. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js.map → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js.map} +1 -1
  142. package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js → timeline-definition-IT6M3QCI-DOYN-4XM.js} +3 -3
  143. package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js.map → timeline-definition-IT6M3QCI-DOYN-4XM.js.map} +1 -1
  144. package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js → treemap-KMMF4GRG-CQXygT0T.js} +4 -4
  145. package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js.map → treemap-KMMF4GRG-CQXygT0T.js.map} +1 -1
  146. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js → xychartDiagram-PRI3JC2R-ByFAvTeN.js} +3 -3
  147. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js.map → xychartDiagram-PRI3JC2R-ByFAvTeN.js.map} +1 -1
  148. package/dist/static/index.html +1 -1
  149. package/dist/tools/builtins.js +0 -8
  150. package/dist/tools/env.js +1 -1
  151. package/dist/tools/mcp.js +31 -9
  152. package/dist/tools/pending-tellask-reminder.js +14 -17
  153. package/dist/tools/team-mgmt.js +1 -1
  154. package/package.json +1 -1
  155. package/dist/static/assets/index-CUZD-Ua6.js.map +0 -1
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 摘要
6
6
 
7
- Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并不是“写在系统提示里的约定”,而是**后端真实可驱动、可执行、可回传、可持久化**的机制。
7
+ Dominds 的诉请(Tellask,`tellask* function call`)与扪心自问(FBR,`freshBootsReasoning`)并不是“写在系统提示里的约定”,而是**后端真实可驱动、可执行、可回传、可持久化**的机制。
8
8
 
9
9
  问题在于:即使系统提示把这些机制写得再细,大多数基础模型也并未在“真的可以随时拉一个队友去跑 shell 命令并把结果带回来”的世界里被训练过,因此容易把提示当成“说说而已 / 仅供参考”。这会直接削弱诉请与 FBR 的可用性。
10
10
 
@@ -20,7 +20,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
20
20
 
21
21
  - 诉请机制与对话系统:[`dialog-system.zh.md`](./dialog-system.zh.md)
22
22
  - 术语约定(主线/支线;诉请方/应答方):[`dominds-terminology.md`](./dominds-terminology.md)
23
- - FBR(`!?@self`):[`fbr.zh.md`](./fbr.zh.md)
23
+ - FBR(`freshBootsReasoning`):[`fbr.zh.md`](./fbr.zh.md)
24
24
  - 工作语言 vs UI 语言:[`i18n.zh.md`](./i18n.zh.md)
25
25
 
26
26
  ---
@@ -28,7 +28,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
28
28
  ## 目标
29
29
 
30
30
  - 在对话一开始就建立“诉请/回传/持久化都是真的”的信任。
31
- - 在对话一开始就跑通一次 `!?@self` 的 FBR 回路。
31
+ - 在对话一开始就跑通一次 `freshBootsReasoning` 的 FBR 回路。
32
32
  - 把“发起 FBR 后先等待回贴,再做综合决策”的时序固化为肌肉记忆。
33
33
  - 把多份 FBR 草稿做一次**综合提炼**,把“取精华、去糟粕”的动作也变成体感的一部分。
34
34
  - 过程足够小、可控、低风险(默认只执行 `uname -a`)。
@@ -46,9 +46,9 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
46
46
 
47
47
  - **主线对话**:用户与主要智能体交互的那条线。
48
48
  - **支线对话**:由诉请 / FBR 触发的临时工作线,产出结果回传主线。
49
- - **诉请(Tellask)**:以 `!?@<memberId> ...` 向队友/对话发起的结构化请求。
49
+ - **诉请(Tellask)**:以 `tellask({ targetAgentId: "<memberId>", sessionSlug: "<slug>", tellaskContent: "..." })` 向队友/对话发起的结构化请求。
50
50
  - **Shell 专员(shell specialist)**:被允许执行 shell 命令并回传结果的队友(由 `shell_specialists` 配置指定)。
51
- - **FBR(扪心自问)**:以 `!?@self` 触发的“无工具支线推理”,产出报告回传主线。
51
+ - **FBR(扪心自问)**:以 `freshBootsReasoning` 触发的“无工具支线推理”,产出报告回传主线。
52
52
 
53
53
  ---
54
54
 
@@ -83,7 +83,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
83
83
 
84
84
  ### 3)真实 FBR:基于环境信息做一次“扪心自问”
85
85
 
86
- 拿到环境快照后,主线智能体触发一次 `!?@self` FBR,并在 FBR 的诉请正文里带上:
86
+ 拿到环境快照后,主线智能体触发一次 `freshBootsReasoning` FBR,并在 FBR 的诉请正文里带上:
87
87
 
88
88
  - 命令 `uname -a` 的完整输出(明确注明命令名,未来可能更换命令,不能靠猜)
89
89
  - FBR 的工具约束(FBR 无工具;主线工具另论)
@@ -91,14 +91,14 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
91
91
 
92
92
  并发草稿(可选):
93
93
 
94
- - 若团队成员配置启用了 `fbr_effort`(默认值为 `3`),运行时会并发创建多份 `!?@self` FBR 支线对话,让“初心自我”从不同角度独立推理,形成多份草稿供主线对话综合提炼。
94
+ - 若团队成员配置启用了 `fbr_effort`(默认值为 `3`),运行时会并发创建多份 `freshBootsReasoning` FBR 支线对话,让“初心自我”从不同角度独立推理,形成多份草稿供主线对话综合提炼。
95
95
  - 这些草稿之间**没有稳定身份映射**,也没有必须遵循的先后顺序;主线对话应当把它们当作“多份匿名草稿”,而不是“固定的三个角色”。
96
96
  - 若 `fbr_effort` 为 `0`,则跳过 FBR。
97
97
  - 若 `fbr_effort` 大于 `100`,运行时会报错并终止启动流程(配置错误)。
98
98
 
99
99
  阶段边界(关键):
100
100
 
101
- - `!?@self` 只是**发起动作**,不是“已完成决策”。
101
+ - `freshBootsReasoning` 只是**发起动作**,不是“已完成决策”。
102
102
  - 主线对话必须先进入等待态,直到该次 FBR 的回贴返回。
103
103
  - 若 `fbr_effort = N`,主线必须等待全部 N 条回贴后再进入综合提炼;不得基于部分草稿提前定稿。
104
104
 
@@ -175,7 +175,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
175
175
  - 智能体启动应以真实对话转录展示,用户可展开查看细节。
176
176
  - 建议在对话顶部提供一个可折叠区域,并带上清晰标签:
177
177
  - “队友诉请(shell)”
178
- - “FBR(`!?@self`)”
178
+ - “FBR(`freshBootsReasoning`)”
179
179
  - “智能体启动(Agent Priming)”
180
180
 
181
181
  ### 创建对话时可选择跳过(opt-out)
@@ -42,7 +42,7 @@
42
42
  - EN: `Sideline dialog` | ZH: `支线对话`
43
43
  - EN: `Taskdoc` | ZH: `差遣牒`
44
44
  - EN: `Taskdoc package (*.tsk/)` | ZH: `任务包`
45
- - EN: `!tellaskSession <slug>` | ZH: 会话 Slug(只写在 headline)
45
+ - EN: `sessionSlug` | ZH: 会话 Slug(只写在 headline)
46
46
  - EN: `CLI (entrypoint UI)` | ZH: `CLI(入口界面)`
47
47
  - EN: `TUI (interactive UI)` | ZH: `TUI(交互前端)`
48
48
  - EN: `WebUI (interactive UI)` | ZH: `WebUI(交互前端)`
@@ -82,19 +82,19 @@
82
82
 
83
83
  #### Tellask headline(诉请头)
84
84
 
85
- - EN: The first line of a Tellask block, starting with `!?@<name> ...`.
86
- - ZH: 诉请块的第一行,以 `!?@<name> ...` 开头。
85
+ - EN: The first line of a Tellask block, starting with `tellaskSessionless({ targetAgentId: "<name>", tellaskContent: "..." })`.
86
+ - ZH: 诉请块的第一行,以 `tellaskSessionless({ targetAgentId: "<name>", tellaskContent: "..." })` 开头。
87
87
 
88
- - EN: Additional lines starting with `!?@...` in the same block are appended to the headline (they do not start a new Tellask).
89
- - ZH: 同一诉请块内,后续以 `!?@...` 开头的行会被并入诉请头(不会开启新的诉请)。
88
+ - EN: Additional lines starting with `tellask* function call` in the same block are appended to the headline (they do not start a new Tellask).
89
+ - ZH: 同一诉请块内,后续以 `tellask* function call` 开头的行会被并入诉请头(不会开启新的诉请)。
90
90
 
91
- - EN: Put structured directives such as `!tellaskSession <slug>` in the headline.
92
- - ZH: 结构化指令(例如 `!tellaskSession <slug>`)必须放在诉请头中。
91
+ - EN: Put structured directives such as `sessionSlug` in the headline.
92
+ - ZH: 结构化指令(例如 `sessionSlug`)必须放在诉请头中。
93
93
 
94
94
  #### Tellask body(诉请正文)
95
95
 
96
- - EN: Lines in the Tellask block that start with `!?` but do not start with `!?@`. They carry the request context (steps, constraints, acceptance criteria, etc.).
97
- - ZH: 诉请块内以 `!?` 开头但不以 `!?@` 开头的行,用于承载诉请正文(步骤、上下文、约束、验收标准等)。
96
+ - EN: The `tellaskContent` argument in tellask-special function calls. It carries request context (steps, constraints, acceptance criteria, etc.).
97
+ - ZH: tellask-special 函数调用里的 `tellaskContent` 参数,用于承载诉请正文(步骤、上下文、约束、验收标准等)。
98
98
 
99
99
  ### 3 种诉请形态(Three Tellask Modes)
100
100
 
@@ -117,13 +117,13 @@
117
117
  - EN (what “Back” means): “Back” refers to routing back to the tellasker dialog; it does **not** imply hierarchy/seniority.
118
118
  - ZH(Back 的含义): “Back” 指回到诉请者对话,**不暗示上下级**。
119
119
 
120
- - EN (typical carrier): `!?@tellasker ...` (only available inside a sideline dialog)
121
- - ZH(典型载体): `!?@tellasker ...`(只在你处于支线对话语境时可用)
120
+ - EN (typical carrier): `tellaskBack({ tellaskContent: "..." }) ...` (only available inside a sideline dialog)
121
+ - ZH(典型载体): `tellaskBack({ tellaskContent: "..." }) ...`(只在你处于支线对话语境时可用)
122
122
 
123
123
  Example / 示例(概念):
124
124
 
125
- - EN: `!?@tellasker I need you to confirm the file extensions: only .md, or also .txt/.rst?`
126
- - ZH: `!?@tellasker 我需要你确认要扫描的文件扩展名:只包含 .md 还是也包含 .txt/.rst?`
125
+ - EN: `tellaskBack({ tellaskContent: "..." }) I need you to confirm the file extensions: only .md, or also .txt/.rst?`
126
+ - ZH: `tellaskBack({ tellaskContent: "..." }) 我需要你确认要扫描的文件扩展名:只包含 .md 还是也包含 .txt/.rst?`
127
127
 
128
128
  #### 2) Tellask Session(长线诉请)
129
129
 
@@ -135,8 +135,8 @@ Example / 示例(概念):
135
135
 
136
136
  ##### 会话 Slug(Session Slug)
137
137
 
138
- - EN (directive; headline only): `!tellaskSession <slug>`
139
- - ZH(指令;仅 headline): `!tellaskSession <slug>`
138
+ - EN (directive; headline only): `sessionSlug`
139
+ - ZH(指令;仅 headline): `sessionSlug`
140
140
 
141
141
  - EN (parameter name concept): `tellaskSession` (parameter names are English-only; not i18n'd)
142
142
  - ZH(参数名概念): `tellaskSession`(参数名只用英文,不做 i18n)
@@ -144,8 +144,8 @@ Example / 示例(概念):
144
144
  - EN (slug format): short, stable, human-readable (e.g. `ws-schema-v2`, `tooling-read-file-ux`).
145
145
  - ZH(slug 格式): 简短、稳定、可读(例如 `ws-schema-v2`、`tooling-read-file-ux`)。
146
146
 
147
- - EN (placement rule): Put `!tellaskSession` in the Tellask headline; do not put it on a second line (it would become body text).
148
- - ZH(位置规则): `!tellaskSession` 必须写在诉请 headline 中;不要放到第二行(否则会进入 body 变成普通文本)。
147
+ - EN (placement rule): Put `sessionSlug` in the Tellask headline; do not put it on a second line (it would become body text).
148
+ - ZH(位置规则): `sessionSlug` 必须写在诉请 headline 中;不要放到第二行(否则会进入 body 变成普通文本)。
149
149
 
150
150
  ##### 多人会话(Multi-Party Sessions)
151
151
 
@@ -161,11 +161,11 @@ Example / 示例(概念):
161
161
  Example / 示例(概念):
162
162
 
163
163
  ```plain-text
164
- !?@server !tellaskSession ws-schema-v2
164
+ tellask({ targetAgentId: "server", sessionSlug: "ws-schema-v2", tellaskContent: "..." })
165
165
  !?Please confirm the WS packet schema versioning strategy and point to code anchors.
166
166
  !?请确认 WS packet schema 的版本化策略,并指出相关代码锚点。
167
167
 
168
- !?@webui !tellaskSession ws-schema-v2
168
+ tellask({ targetAgentId: "webui", sessionSlug: "ws-schema-v2", tellaskContent: "..." })
169
169
  !?Explain which missing fields cause UX degradation along the current WebUI subscribe/render path.
170
170
  !?按当前 WebUI 订阅/渲染路径说明:哪些字段缺失会导致 UX 退化。
171
171
  ```
@@ -181,18 +181,18 @@ Example / 示例(概念):
181
181
  - EN (key property): “Fresh/one-shot” is not only “new context”; it also means **no continuation semantics** — later Tellasks are not expected to resume the same session context.
182
182
  - ZH(关键性质): “Fresh/一次性”不仅表示“新开上下文”,更表示:**没有后续续话语义** —— 后续诉请不应被期待能自动续接本次一次性诉请的上下文。
183
183
 
184
- - EN (practical guidance): If you need a follow-up after a Fresh Tellask, treat it as a new request and restate necessary context; if you need iterative follow-ups, use `Tellask Session` with `!tellaskSession <slug>`.
185
- - ZH(实践建议): 如果你在一次性诉请后还要追问,应当把追问当作全新请求并补齐必要上下文;如果你需要可迭代的追问/推进,请使用 `Tellask Session` 并提供 `!tellaskSession <slug>`。
184
+ - EN (practical guidance): If you need a follow-up after a Fresh Tellask, treat it as a new request and restate necessary context; if you need iterative follow-ups, use `Tellask Session` with `sessionSlug`.
185
+ - ZH(实践建议): 如果你在一次性诉请后还要追问,应当把追问当作全新请求并补齐必要上下文;如果你需要可迭代的追问/推进,请使用 `Tellask Session` 并提供 `sessionSlug`。
186
186
 
187
187
  Example / 示例(概念):
188
188
 
189
- - EN: `!?@<shell-specialist> Please run a single build and paste the failure output.`
190
- - ZH: `!?@<shell-specialist> 请运行一次构建并回贴失败信息。`
189
+ - EN: `tellaskSessionless({ targetAgentId: "shell-specialist", tellaskContent: "Please run a single build and paste the failure output." })`
190
+ - ZH: `tellaskSessionless({ targetAgentId: "shell-specialist", tellaskContent: "请运行一次构建并回贴失败信息。" })`
191
191
 
192
192
  ### 系统提示可复用的一句话(One-Sentence Summary for System Prompts)
193
193
 
194
- - EN: `TellaskBack` asks the tellasker dialog for clarification; `Tellask Session` uses `!tellaskSession <slug>` for resumable multi-turn work; `Fresh Tellask` is one-shot and non-resumable.
195
- - ZH: `TellaskBack` 回问诉请者澄清;`Tellask Session` 用 `!tellaskSession <slug>` 进行可续用多轮协作;`Fresh Tellask` 是一次性且不可恢复。
194
+ - EN: `TellaskBack` asks the tellasker dialog for clarification; `Tellask Session` uses `sessionSlug` for resumable multi-turn work; `Fresh Tellask` is one-shot and non-resumable.
195
+ - ZH: `TellaskBack` 回问诉请者澄清;`Tellask Session` 用 `sessionSlug` 进行可续用多轮协作;`Fresh Tellask` 是一次性且不可恢复。
196
196
 
197
197
  ### 为何保留 `!` 前缀?(Why keep the `!` prefix?)
198
198
 
@@ -260,8 +260,8 @@ Example / 示例(概念):
260
260
 
261
261
  ### Q4H (Question for Human) (向人类的诉请)
262
262
 
263
- - EN: A mechanism for raising questions to humans, initiated via `!?@human`, which suspends dialog progression until the human responds. **Always use "Q4H" (capital Q, numeral 4, capital H); never use "Q-for-H", "QforH", or "4-hour".**
264
- - ZH: 一种通过 `!?@human` 向人类提问的机制,暂停对话进度直到人类响应。**统一使用"Q4H"(大写 Q、数字 4、大写 H);禁止使用"Q-for-H"、"QforH"、"每四小时"等变体。**
263
+ - EN: A mechanism for raising questions to humans, initiated via `!?askHuman()`, which suspends dialog progression until the human responds. **Always use "Q4H" (capital Q, numeral 4, capital H); never use "Q-for-H", "QforH", or "4-hour".**
264
+ - ZH: 一种通过 `!?askHuman()` 向人类提问的机制,暂停对话进度直到人类响应。**统一使用"Q4H"(大写 Q、数字 4、大写 H);禁止使用"Q-for-H"、"QforH"、"每四小时"等变体。**
265
265
 
266
266
  ### Fresh Boots Reasoning(扪心自问)
267
267
 
@@ -402,16 +402,16 @@ Example / 示例(概念):
402
402
  - EN: The implementation may still use the internal labels **Type A/B/C** to classify teammate-tellask patterns.
403
403
  - ZH: 实现层仍可能使用 **Type A/B/C** 作为队友诉请形态的内部分类。
404
404
 
405
- - EN: Type A: TellaskBack call (a subdialog asking back to its tellasker dialog); primary syntax `!?@tellasker` (NO `!tellaskSession`).
406
- - ZH: Type A:回问诉请(子对话回问其诉请者对话);主语法 `!?@tellasker`(不带 `!tellaskSession`)。
405
+ - EN: Type A: TellaskBack call (a subdialog asking back to its tellasker dialog); primary syntax `tellaskBack({ tellaskContent: "..." })` (NO `sessionSlug`).
406
+ - ZH: Type A:回问诉请(子对话回问其诉请者对话);主语法 `tellaskBack({ tellaskContent: "..." })`(不带 `sessionSlug`)。
407
407
 
408
- - EN: Type B: registered subdialog call (resumable) keyed by `agentId!tellaskSession`.
409
- - ZH: Type B:registered subdialog call(可恢复),用 `agentId!tellaskSession` 作为 registry key。
408
+ - EN: Type B: registered subdialog call (resumable) keyed by `agentIdsessionSlug`.
409
+ - ZH: Type B:registered subdialog call(可恢复),用 `agentIdsessionSlug` 作为 registry key。
410
410
 
411
411
  - EN: Type C: transient subdialog call (one-shot), not registered.
412
412
  - ZH: Type C:transient subdialog call(一次性),不注册到 registry。
413
413
 
414
- ### `!tellaskSession` / 会话 Slug 指令
414
+ ### `sessionSlug` / 会话 Slug 指令
415
415
 
416
- - EN: Resumable registered subdialogs use `!tellaskSession <slug>` in the Tellask headline.
417
- - ZH: 可恢复的注册子对话使用 Tellask headline 内的 `!tellaskSession <slug>`。
416
+ - EN: Resumable registered subdialogs use `sessionSlug` in the Tellask headline.
417
+ - ZH: 可恢复的注册子对话使用 Tellask headline 内的 `sessionSlug`。
@@ -27,7 +27,7 @@ For FBR policy, runtime:
27
27
  - uses `buildFbrSystemPrompt(...)` (no tool instructions)
28
28
  - injects a separate `buildNoToolsNotice(...)`
29
29
  - forces `effectiveAgentTools = []`
30
- - forces `tellaskPolicy = tellasker_only`
30
+ - forces `tellaskPolicy = deny_all`
31
31
  - forces `allowFunctionCalls = false`
32
32
  - applies `fbr_model_params` override when configured
33
33
 
@@ -39,7 +39,7 @@ For FBR policy, runtime:
39
39
 
40
40
  Both streaming and non-streaming paths call `resolveDrivePolicyViolationKind(...)` to detect:
41
41
 
42
- - disallowed tellasks (FBR allows only `@tellasker`)
42
+ - disallowed tellask-special function calls (FBR technical mode disallows all function calls)
43
43
  - disallowed tool/function calls (FBR disallows all)
44
44
 
45
45
  On violation, runtime emits `formatDomindsNoteFbrToollessViolation(...)` consistently.
@@ -51,7 +51,7 @@ Before generation, runtime runs `validateDrivePolicyInvariants(...)` and fail-fa
51
51
  - system prompt must exactly equal `buildFbrSystemPrompt(...)`
52
52
  - `effectiveAgentTools` must be empty
53
53
  - `allowFunctionCalls` must be `false`
54
- - `tellaskPolicy` must be `tellasker_only`
54
+ - `tellaskPolicy` must be `deny_all`
55
55
  - `prependedContextMessages` must contain exactly one `buildNoToolsNotice(...)`
56
56
 
57
57
  If any check fails, runtime throws `FBR policy isolation violation`, preventing global tool-manual/tool-prompt paths from leaking into FBR.
@@ -74,4 +74,4 @@ If any check fails, runtime throws `FBR policy isolation violation`, preventing
74
74
  - FBR system prompt has no tool instructions.
75
75
  - Tool-related wording appears only in the separate `buildNoToolsNotice(...)`.
76
76
  - FBR/non-FBR context assembly flow is structurally identical; only policy fields differ.
77
- - Any FBR tool/function call or non-`@tellasker` tellask is hard-rejected with explicit feedback.
77
+ - Any FBR tool/function call or tellask-special function call is hard-rejected with explicit feedback.
@@ -27,7 +27,7 @@
27
27
  - 切换到 `buildFbrSystemPrompt(...)`(不含工具说明)
28
28
  - 注入单独 `buildNoToolsNotice(...)`
29
29
  - 强制 `effectiveAgentTools = []`
30
- - 强制 `tellaskPolicy = tellasker_only`
30
+ - 强制 `tellaskPolicy = deny_all`
31
31
  - 强制 `allowFunctionCalls = false`
32
32
  - 在需要时对成员应用 `fbr_model_params` 覆盖
33
33
 
@@ -39,7 +39,7 @@
39
39
 
40
40
  流式与非流式两条路径都调用 `resolveDrivePolicyViolationKind(...)`:
41
41
 
42
- - 违规 tellaskFBR 仅允许 `@tellasker`)
42
+ - 违规 tellask-special 函数调用(FBR 技术模式下禁止全部函数调用)
43
43
  - 违规 function/tool call(FBR 禁止)
44
44
 
45
45
  一旦违规,统一产出 `formatDomindsNoteFbrToollessViolation(...)`,保持用户反馈与日志语义一致。
@@ -51,7 +51,7 @@
51
51
  - system prompt 必须严格等于 `buildFbrSystemPrompt(...)`
52
52
  - `effectiveAgentTools` 必须为空
53
53
  - `allowFunctionCalls` 必须为 `false`
54
- - `tellaskPolicy` 必须为 `tellasker_only`
54
+ - `tellaskPolicy` 必须为 `deny_all`
55
55
  - `prependedContextMessages` 必须且仅能包含一条 `buildNoToolsNotice(...)`
56
56
 
57
57
  若任一条件不满足,运行时直接抛出 `FBR policy isolation violation`,防止全局工具手册/工具提示路径回流污染 FBR。
@@ -74,4 +74,4 @@
74
74
  - FBR system prompt 不包含工具说明。
75
75
  - “无工具”文案仅来自独立 `buildNoToolsNotice(...)`。
76
76
  - FBR 与非 FBR 的上下文装配主流程一致,差异只来自策略字段。
77
- - FBR 中任意 tool/function call 或非 `@tellasker` tellask 都被运行时硬拒绝并给出明确回执。
77
+ - FBR 中任意 tool/function call tellask-special 函数调用都被运行时硬拒绝并给出明确回执。
package/dist/docs/fbr.md CHANGED
@@ -9,8 +9,8 @@ Chinese version: [中文版](./fbr.zh.md)
9
9
  **Fresh Boots Reasoning (FBR)** is a Dominds mechanism for “reasoning again from a clean slate” on a bounded sub-problem,
10
10
  then reporting back to the mainline dialog.
11
11
 
12
- In Dominds, FBR is triggered via Tellask syntax. `@self` is only the entry-point syntax (“tellask the current dialog
13
- itself”); the mechanism is the runtime-enforced contract applied to the spawned sideline dialog(s).
12
+ In Dominds, FBR is triggered by the dedicated function tool `freshBootsReasoning({ tellaskContent: "..." })`.
13
+ The mechanism is the runtime-enforced contract applied to the spawned sideline dialog(s).
14
14
 
15
15
  ## 2. Design principles and tradeoffs
16
16
 
@@ -24,7 +24,7 @@ predictable, FBR sideline dialogs must be:
24
24
 
25
25
  ### 2.2 No silent failure
26
26
 
27
- If FBR is disabled by configuration (e.g. `fbr-effort: 0`), the runtime MUST reject `!?@self` loudly and clearly. A
27
+ If FBR is disabled by configuration (e.g. `fbr-effort: 0`), the runtime MUST reject `freshBootsReasoning({ tellaskContent: "..." })` loudly and clearly. A
28
28
  silent ignore is worse than an error.
29
29
 
30
30
  ### 2.3 Many-shot reasoning, not “multi-agent collaboration”
@@ -32,28 +32,25 @@ silent ignore is worse than an error.
32
32
  `fbr-effort` is for producing multiple _independent_ reasoning samples in parallel. The mainline dialog is responsible
33
33
  for synthesis; FBR sidelines do not coordinate with each other.
34
34
 
35
- ## 3. User syntax (`@self` is just the entry point)
35
+ ## 3. User syntax
36
36
 
37
37
  ### 3.1 Trigger forms
38
38
 
39
- Both forms below trigger FBR:
39
+ Use the dedicated FBR form:
40
40
 
41
- - **Default (transient)**: `!?@self`
42
- - **Rare (resumable)**: `!?@self !tellaskSession <tellaskSession>`
41
+ - `freshBootsReasoning({ tellaskContent: "..." })`
43
42
 
44
43
  Notes:
45
44
 
46
- - `@self` means “tellask the current dialog itself (same agentId)”. It is an explicit self-tellask marker to avoid
47
- accidental self-calls caused by echoing/quoting `@teammate` headlines.
48
- - Resumability comes from `!tellaskSession`, not from `@self`.
45
+ - FBR does not use `targetAgentId`, `sessionSlug`, or `mentionList`.
46
+ - `tellaskContent` is the authoritative task context for the FBR sideline.
49
47
 
50
48
  ### 3.2 Scope
51
49
 
52
- This document specifies the FBR mechanism and its `!?@self` contract. General teammate Tellasks (`!?@<teammate>`) follow
50
+ This document specifies the FBR mechanism and its `freshBootsReasoning({ tellaskContent: "..." })` contract. General teammate Tellasks (`tellaskSessionless({ targetAgentId: "<teammate>", tellaskContent: "..." })`) follow
53
51
  the taxonomy and capability model in [`dialog-system.md`](./dialog-system.md).
54
52
 
55
- If you want a “fresh” sideline dialog that still has tools, do not use `@self`. Use an explicit teammate identity that
56
- is granted the needed toolsets (or use the general `!?@<agentId>` mechanism intentionally).
53
+ If you want a “fresh” sideline dialog that still has tools, use an explicit teammate identity via the general teammate Tellask flow.
57
54
 
58
55
  ## 4. Runtime contract (normative)
59
56
 
@@ -61,20 +58,17 @@ This section uses MUST / MUST NOT / SHOULD / MAY for requirements.
61
58
 
62
59
  ### 4.1 Isolation and context
63
60
 
64
- When driving an FBR sideline dialog created by `!?@self`, runtime MUST enforce:
61
+ When driving an FBR sideline dialog created by `freshBootsReasoning({ tellaskContent: "..." })`, runtime MUST enforce:
65
62
 
66
63
  - **No dependency on tellasker dialog history**
67
64
  - the tellaskee MUST NOT assume access to the tellasker’s mainline/sideline history
68
65
  - the tellaskee MUST treat the tellask body as the primary, authoritative task context
69
- - for the resumable `!tellaskSession` form, the tellaskee MAY use the sideline’s _own_ `tellaskSession` history as
70
- explicit context
71
66
  - **No tool-based context fetch**
72
67
  - no reading files / running commands / browsing
73
68
  - no accessing Memory or rtws (runtime workspace) state
74
69
 
75
70
  Intuition: “fresh boots” means “fresh relative to the caller thread”, not “ignores baseline system rules”. Runtime may
76
- still inject baseline policy/safety/formatting context, but the tellask body remains the authority (except when using
77
- the sideline’s own resumable history).
71
+ still inject baseline policy/safety/formatting context, but the tellask body remains the authority.
78
72
 
79
73
  ### 4.2 Tool-less (prompt + technical enforcement)
80
74
 
@@ -90,7 +84,7 @@ The FBR system prompt MUST communicate (wording may vary, meaning must hold):
90
84
  - this is an FBR sideline dialog; the tellask body is the primary context
91
85
  - do not assume access to tellasker dialog history
92
86
  - if critical context is missing, list what is missing and why it blocks reasoning
93
- - `!?@tellasker` is allowed only when you must clarify critical missing context; otherwise do not emit any tellasks
87
+ - `tellaskBack({ tellaskContent: "..." })` is allowed only when you must clarify critical missing context; otherwise do not emit any tellasks
94
88
 
95
89
  And: the **system prompt body MUST NOT include tool instructions** (no tool lists, allowlists, example commands, “how to
96
90
  use tools”, etc.).
@@ -113,16 +107,16 @@ Under no circumstances should the FBR sideline dialog see any tool definitions.
113
107
 
114
108
  #### 4.2.3 The LLM request MUST be “zero tools”
115
109
 
116
- The LLM request for an `@self` FBR sideline dialog MUST have **zero tools available**:
110
+ The LLM request for an FBR sideline dialog (`freshBootsReasoning`) MUST have **zero tools available**:
117
111
 
118
112
  - the request payload must not include tool/function definitions (effective tool list must be empty)
119
113
  - provider tool-calling / function-calling modes must not be enabled
120
114
 
121
115
  If the model attempts a tool/function call anyway, runtime MUST hard-reject it (see 4.5).
122
116
 
123
- ### 4.3 Tellask restriction: only `!?@tellasker`
117
+ ### 4.3 Tellask restriction: only `tellaskBack({ tellaskContent: "..." })`
124
118
 
125
- FBR sideline dialogs MUST NOT issue teammate Tellasks (including `!?@human`). The only exception is `!?@tellasker`:
119
+ FBR sideline dialogs MUST NOT issue teammate Tellasks (including `askHuman({ tellaskContent: "..." })`). The only exception is `tellaskBack({ tellaskContent: "..." })`:
126
120
 
127
121
  - sideline-only TellaskBack to the upstream tellasker dialog
128
122
  - allowed only when critical context must be clarified
@@ -133,14 +127,14 @@ FBR sideline dialogs MUST NOT issue teammate Tellasks (including `!?@human`). Th
133
127
  An FBR sideline dialog should produce a compact artifact that is easy for the tellasker to integrate. Suggested shape:
134
128
 
135
129
  1. **Conclusion**
136
- 2. **Reasoning** (grounded in the tellask body; plus resumable history when applicable)
130
+ 2. **Reasoning** (grounded in the tellask body)
137
131
  3. **Assumptions** (explicitly sourced: body vs session history)
138
132
  4. **Unknowns / missing context**
139
133
  5. **Next steps for mainline** (where tools/teammates may exist)
140
134
 
141
135
  ### 4.5 Violations and errors (loud + debuggable)
142
136
 
143
- - Any disallowed tellask (non-`@tellasker`) or any tool/function call attempt inside FBR MUST be treated as a hard
137
+ - Any disallowed tellask (anything other than `tellaskBack({ tellaskContent: "..." })`) or any tool/function call attempt inside FBR MUST be treated as a hard
144
138
  violation.
145
139
  - The runtime MUST return a clear, user-visible error, and MUST log/emit a debuggable reason string (no silent swallow).
146
140
 
@@ -150,25 +144,22 @@ An FBR sideline dialog should produce a compact artifact that is easy for the te
150
144
 
151
145
  - Type: integer
152
146
  - Default: `3`
153
- - `0`: disable `!?@self` FBR for that member (runtime MUST reject `!?@self` clearly)
154
- - `1..100`: spawn N FBR sideline dialogs per `!?@self`
147
+ - `0`: disable `freshBootsReasoning({ tellaskContent: "..." })` FBR for that member (runtime MUST reject `freshBootsReasoning({ tellaskContent: "..." })` clearly)
148
+ - `1..100`: spawn N FBR sideline dialogs per `freshBootsReasoning({ tellaskContent: "..." })`
155
149
  - `> 100` / non-integer / negative: validation error (reject; no clamping)
156
150
 
157
151
  When `fbr-effort = N`:
158
152
 
159
- - runtime expands a single `!?@self` into **N parallel tool-less FBR sideline dialogs**
153
+ - runtime expands a single `freshBootsReasoning({ tellaskContent: "..." })` into **N parallel tool-less FBR sideline dialogs**
160
154
  - each sideline receives the same tellask body and the same tool-less constraints
161
155
  - mainline receives all N responses; **ordering must not be relied on** (completion order is fine)
162
156
 
163
- For resumable `!?@self !tellaskSession <tellaskSession>` with `N > 1`, runtime MUST derive **distinct** session keys so
164
- parallel sidelines do not share history (recommended: `<tellaskSession>.fbr-<i>`).
165
-
166
157
  ## 6. FBR-only model overrides: `fbr_model_params`
167
158
 
168
159
  `fbr_model_params` overrides model params **only when driving FBR sideline dialogs**:
169
160
 
170
161
  - Schema: identical to `model_params` (documented by `model_param_options` in `dominds/main/llm/defaults.yaml`)
171
- - Scope: `!?@self` only
162
+ - Scope: `freshBootsReasoning({ tellaskContent: "..." })` only
172
163
  - Merge: recommended deep-merge on top of the member’s effective `model_params`
173
164
  - `max_tokens` may be configured as top-level `max_tokens` or `general.max_tokens` (pick one; do not set both)
174
165
 
@@ -179,38 +170,25 @@ parallel sidelines do not share history (recommended: `<tellaskSession>.fbr-<i>`
179
170
  Bad (depends on external context/tools):
180
171
 
181
172
  ```text
182
- !?@self
183
- Find the bug and fix it.
173
+ freshBootsReasoning({ tellaskContent: "Find the bug and fix it." })
184
174
  ```
185
175
 
186
176
  Good (puts the actual context into the body):
187
177
 
188
178
  ```text
189
- !?@self
190
- You are doing tool-less FBR. Use ONLY the text below.
191
-
192
- Goal: identify the most likely root cause and propose 2–3 viable fixes.
193
-
194
- Observed:
195
- - Clicking “Run” sometimes freezes the UI for ~10s.
196
-
197
- Constraint:
198
- - We cannot change the backend protocol.
199
-
200
- Evidence:
201
- <paste relevant logs / code / stack trace here>
179
+ freshBootsReasoning({ tellaskContent: "You are doing tool-less FBR. Use ONLY the text below.\n\nGoal: identify the most likely root cause and propose 2–3 viable fixes.\n\nObserved:\n- Clicking “Run” sometimes freezes the UI for ~10s.\n\nConstraint:\n- We cannot change the backend protocol.\n\nEvidence:\n<paste relevant logs / code / stack trace here>" })
202
180
  ```
203
181
 
204
182
  ### 7.2 `.minds/team.yaml`
205
183
 
206
184
  ```yaml
207
185
  member_defaults:
208
- # Spawn 3 tool-less FBR sideline dialogs per `!?@self` by default.
186
+ # Spawn 3 tool-less FBR sideline dialogs per `freshBootsReasoning({ tellaskContent: "..." })` by default.
209
187
  fbr-effort: 3
210
188
 
211
189
  members:
212
190
  ux:
213
- # Spawn 5 independent reasoning samples per `!?@self`.
191
+ # Spawn 5 independent reasoning samples per `freshBootsReasoning({ tellaskContent: "..." })`.
214
192
  fbr-effort: 5
215
193
 
216
194
  # Make FBR more exploratory without changing mainline behavior.
@@ -224,14 +202,14 @@ members:
224
202
 
225
203
  ## 8. Relationship to general sideline dialogs
226
204
 
227
- - `!?@self` is a special case: tool-less, body-first, tellask-restricted, optionally fanned out via `fbr-effort`.
228
- - General `!?@<teammate>` sidelines remain fully capable (tools/toolsets as configured).
229
- - If you need “same persona + tools” in a sideline, do not use `@self`; use an explicit teammate identity.
205
+ - `freshBootsReasoning({ tellaskContent: "..." })` is a special case: tool-less, body-first, tellask-restricted, optionally fanned out via `fbr-effort`.
206
+ - General `tellaskSessionless({ targetAgentId: "<teammate>", tellaskContent: "..." })` sidelines remain fully capable (tools/toolsets as configured).
207
+ - If you need “same persona + tools” in a sideline, use an explicit teammate identity (`tellask` / `tellaskSessionless`).
230
208
 
231
209
  ## 9. Acceptance checklist
232
210
 
233
- - `!?@self` triggers tool-less FBR; the LLM request is technically “zero tools”.
211
+ - `freshBootsReasoning({ tellaskContent: "..." })` triggers tool-less FBR; the LLM request is technically “zero tools”.
234
212
  - The system prompt body contains no tool instructions; tool-related wording comes only from the separate fixed notice.
235
- - FBR sidelines cannot issue teammate Tellasks; only `!?@tellasker` is allowed when necessary.
213
+ - FBR sidelines cannot issue teammate Tellasks; only `tellaskBack({ tellaskContent: "..." })` is allowed when necessary.
236
214
  - `fbr-effort` defaults to `3`, accepts `0..100`, rejects invalid values, and fails loudly when disabled.
237
215
  - `fbr_model_params` applies only to FBR and follows the same schema/merge intent as `model_params`.