dominds 0.6.4 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/agent-priming.js +24 -22
  2. package/dist/minds/system-prompt-parts.js +20 -13
  3. package/dist/static/assets/{_baseUniq-C7IpU2Uk.js → _baseUniq-B6S2Szf-.js} +2 -2
  4. package/dist/static/assets/{_baseUniq-C7IpU2Uk.js.map → _baseUniq-B6S2Szf-.js.map} +1 -1
  5. package/dist/static/assets/{arc-1bhQqjON.js → arc-BobaWfK6.js} +2 -2
  6. package/dist/static/assets/{arc-1bhQqjON.js.map → arc-BobaWfK6.js.map} +1 -1
  7. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CkEi1QpB.js → architectureDiagram-VXUJARFQ-ZgJq5aSW.js} +6 -6
  8. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CkEi1QpB.js.map → architectureDiagram-VXUJARFQ-ZgJq5aSW.js.map} +1 -1
  9. package/dist/static/assets/{blockDiagram-VD42YOAC-DaBQ5-pY.js → blockDiagram-VD42YOAC-BNbfk_nT.js} +7 -7
  10. package/dist/static/assets/{blockDiagram-VD42YOAC-DaBQ5-pY.js.map → blockDiagram-VD42YOAC-BNbfk_nT.js.map} +1 -1
  11. package/dist/static/assets/{c4Diagram-YG6GDRKO-ChUgpgkP.js → c4Diagram-YG6GDRKO-CvepUKza.js} +3 -3
  12. package/dist/static/assets/{c4Diagram-YG6GDRKO-ChUgpgkP.js.map → c4Diagram-YG6GDRKO-CvepUKza.js.map} +1 -1
  13. package/dist/static/assets/{channel-CxvmwllM.js → channel-C_JNHPnq.js} +2 -2
  14. package/dist/static/assets/{channel-CxvmwllM.js.map → channel-C_JNHPnq.js.map} +1 -1
  15. package/dist/static/assets/{chunk-4BX2VUAB-CKsrU2yk.js → chunk-4BX2VUAB-DBOe1MUb.js} +2 -2
  16. package/dist/static/assets/{chunk-4BX2VUAB-CKsrU2yk.js.map → chunk-4BX2VUAB-DBOe1MUb.js.map} +1 -1
  17. package/dist/static/assets/{chunk-55IACEB6-BAau9SFt.js → chunk-55IACEB6-HFCpWmno.js} +2 -2
  18. package/dist/static/assets/{chunk-55IACEB6-BAau9SFt.js.map → chunk-55IACEB6-HFCpWmno.js.map} +1 -1
  19. package/dist/static/assets/{chunk-B4BG7PRW--IiJ7W1m.js → chunk-B4BG7PRW-CCfgfeSD.js} +5 -5
  20. package/dist/static/assets/{chunk-B4BG7PRW--IiJ7W1m.js.map → chunk-B4BG7PRW-CCfgfeSD.js.map} +1 -1
  21. package/dist/static/assets/{chunk-DI55MBZ5-B83KrPQj.js → chunk-DI55MBZ5-JTCAsk7E.js} +4 -4
  22. package/dist/static/assets/{chunk-DI55MBZ5-B83KrPQj.js.map → chunk-DI55MBZ5-JTCAsk7E.js.map} +1 -1
  23. package/dist/static/assets/{chunk-FMBD7UC4-BlDXzeza.js → chunk-FMBD7UC4-DOOsbua1.js} +2 -2
  24. package/dist/static/assets/{chunk-FMBD7UC4-BlDXzeza.js.map → chunk-FMBD7UC4-DOOsbua1.js.map} +1 -1
  25. package/dist/static/assets/{chunk-QN33PNHL-B596W_v7.js → chunk-QN33PNHL-C9OxwmhO.js} +2 -2
  26. package/dist/static/assets/{chunk-QN33PNHL-B596W_v7.js.map → chunk-QN33PNHL-C9OxwmhO.js.map} +1 -1
  27. package/dist/static/assets/{chunk-QZHKN3VN-UBBCxgBb.js → chunk-QZHKN3VN-r3c-cVI_.js} +2 -2
  28. package/dist/static/assets/{chunk-QZHKN3VN-UBBCxgBb.js.map → chunk-QZHKN3VN-r3c-cVI_.js.map} +1 -1
  29. package/dist/static/assets/{chunk-TZMSLE5B-D-wCX2wJ.js → chunk-TZMSLE5B-BUEKhPxm.js} +2 -2
  30. package/dist/static/assets/{chunk-TZMSLE5B-D-wCX2wJ.js.map → chunk-TZMSLE5B-BUEKhPxm.js.map} +1 -1
  31. package/dist/static/assets/{classDiagram-2ON5EDUG-DvtmzPcu.js → classDiagram-2ON5EDUG-COQwkaAL.js} +6 -6
  32. package/dist/static/assets/{classDiagram-2ON5EDUG-DvtmzPcu.js.map → classDiagram-2ON5EDUG-COQwkaAL.js.map} +1 -1
  33. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DvtmzPcu.js → classDiagram-v2-WZHVMYZB-COQwkaAL.js} +6 -6
  34. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DvtmzPcu.js.map → classDiagram-v2-WZHVMYZB-COQwkaAL.js.map} +1 -1
  35. package/dist/static/assets/{clone-DgJ0ZR-k.js → clone-CYu5kjkJ.js} +2 -2
  36. package/dist/static/assets/{clone-DgJ0ZR-k.js.map → clone-CYu5kjkJ.js.map} +1 -1
  37. package/dist/static/assets/{cose-bilkent-S5V4N54A-DXMyFQvy.js → cose-bilkent-S5V4N54A-CSw8pwwN.js} +2 -2
  38. package/dist/static/assets/{cose-bilkent-S5V4N54A-DXMyFQvy.js.map → cose-bilkent-S5V4N54A-CSw8pwwN.js.map} +1 -1
  39. package/dist/static/assets/{dagre-6UL2VRFP-BdaUG-j_.js → dagre-6UL2VRFP-BbGNBMsQ.js} +7 -7
  40. package/dist/static/assets/{dagre-6UL2VRFP-BdaUG-j_.js.map → dagre-6UL2VRFP-BbGNBMsQ.js.map} +1 -1
  41. package/dist/static/assets/{diagram-PSM6KHXK-NLiqKBzn.js → diagram-PSM6KHXK-CkJTRD5i.js} +7 -7
  42. package/dist/static/assets/{diagram-PSM6KHXK-NLiqKBzn.js.map → diagram-PSM6KHXK-CkJTRD5i.js.map} +1 -1
  43. package/dist/static/assets/{diagram-QEK2KX5R-D-0fyvY_.js → diagram-QEK2KX5R-C66826Tr.js} +6 -6
  44. package/dist/static/assets/{diagram-QEK2KX5R-D-0fyvY_.js.map → diagram-QEK2KX5R-C66826Tr.js.map} +1 -1
  45. package/dist/static/assets/{diagram-S2PKOQOG-BQ_FU59m.js → diagram-S2PKOQOG-C75tvMlR.js} +6 -6
  46. package/dist/static/assets/{diagram-S2PKOQOG-BQ_FU59m.js.map → diagram-S2PKOQOG-C75tvMlR.js.map} +1 -1
  47. package/dist/static/assets/{erDiagram-Q2GNP2WA-DyftKeuC.js → erDiagram-Q2GNP2WA-D42mH9Hf.js} +5 -5
  48. package/dist/static/assets/{erDiagram-Q2GNP2WA-DyftKeuC.js.map → erDiagram-Q2GNP2WA-D42mH9Hf.js.map} +1 -1
  49. package/dist/static/assets/{flowDiagram-NV44I4VS-9SGefONA.js → flowDiagram-NV44I4VS-DkuR_fBb.js} +6 -6
  50. package/dist/static/assets/{flowDiagram-NV44I4VS-9SGefONA.js.map → flowDiagram-NV44I4VS-DkuR_fBb.js.map} +1 -1
  51. package/dist/static/assets/{ganttDiagram-JELNMOA3-k_WLhf-r.js → ganttDiagram-JELNMOA3-DZSt_dQ9.js} +3 -3
  52. package/dist/static/assets/{ganttDiagram-JELNMOA3-k_WLhf-r.js.map → ganttDiagram-JELNMOA3-DZSt_dQ9.js.map} +1 -1
  53. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-3eoLlCOY.js → gitGraphDiagram-NY62KEGX-tK78JYdV.js} +7 -7
  54. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-3eoLlCOY.js.map → gitGraphDiagram-NY62KEGX-tK78JYdV.js.map} +1 -1
  55. package/dist/static/assets/{graph-vUevIs4s.js → graph-Cby4rcD0.js} +3 -3
  56. package/dist/static/assets/{graph-vUevIs4s.js.map → graph-Cby4rcD0.js.map} +1 -1
  57. package/dist/static/assets/{index-BNBG2CE1.js → index-CbQiF1hF.js} +110 -108
  58. package/dist/static/assets/{index-BNBG2CE1.js.map → index-CbQiF1hF.js.map} +1 -1
  59. package/dist/static/assets/{infoDiagram-WHAUD3N6-CwEhVxkU.js → infoDiagram-WHAUD3N6-3QnrdyHa.js} +5 -5
  60. package/dist/static/assets/{infoDiagram-WHAUD3N6-CwEhVxkU.js.map → infoDiagram-WHAUD3N6-3QnrdyHa.js.map} +1 -1
  61. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dtdq4G4Q.js → journeyDiagram-XKPGCS4Q-CvMiUhwC.js} +5 -5
  62. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dtdq4G4Q.js.map → journeyDiagram-XKPGCS4Q-CvMiUhwC.js.map} +1 -1
  63. package/dist/static/assets/{kanban-definition-3W4ZIXB7-Bli-AycJ.js → kanban-definition-3W4ZIXB7-kWGnHjKd.js} +3 -3
  64. package/dist/static/assets/{kanban-definition-3W4ZIXB7-Bli-AycJ.js.map → kanban-definition-3W4ZIXB7-kWGnHjKd.js.map} +1 -1
  65. package/dist/static/assets/{layout-CGlA8c09.js → layout-DhLgvMyM.js} +5 -5
  66. package/dist/static/assets/{layout-CGlA8c09.js.map → layout-DhLgvMyM.js.map} +1 -1
  67. package/dist/static/assets/{linear-Da2jDWL3.js → linear-BPVwP4Z5.js} +2 -2
  68. package/dist/static/assets/{linear-Da2jDWL3.js.map → linear-BPVwP4Z5.js.map} +1 -1
  69. package/dist/static/assets/{min-Co741hTV.js → min-Cw8TUK_f.js} +3 -3
  70. package/dist/static/assets/{min-Co741hTV.js.map → min-Cw8TUK_f.js.map} +1 -1
  71. package/dist/static/assets/{mindmap-definition-VGOIOE7T-DvkIjoq8.js → mindmap-definition-VGOIOE7T-Rfte1_cw.js} +4 -4
  72. package/dist/static/assets/{mindmap-definition-VGOIOE7T-DvkIjoq8.js.map → mindmap-definition-VGOIOE7T-Rfte1_cw.js.map} +1 -1
  73. package/dist/static/assets/{pieDiagram-ADFJNKIX-BGuGhTu8.js → pieDiagram-ADFJNKIX-DCp0WpKz.js} +7 -7
  74. package/dist/static/assets/{pieDiagram-ADFJNKIX-BGuGhTu8.js.map → pieDiagram-ADFJNKIX-DCp0WpKz.js.map} +1 -1
  75. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DAZcrJMg.js → quadrantDiagram-AYHSOK5B-DVYn8XbP.js} +3 -3
  76. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DAZcrJMg.js.map → quadrantDiagram-AYHSOK5B-DVYn8XbP.js.map} +1 -1
  77. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-CXN0DxZs.js → requirementDiagram-UZGBJVZJ-OdD8esO6.js} +4 -4
  78. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-CXN0DxZs.js.map → requirementDiagram-UZGBJVZJ-OdD8esO6.js.map} +1 -1
  79. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B7-yAePZ.js → sankeyDiagram-TZEHDZUN-Nb-HdiLl.js} +2 -2
  80. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B7-yAePZ.js.map → sankeyDiagram-TZEHDZUN-Nb-HdiLl.js.map} +1 -1
  81. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DfBNY6h_.js → sequenceDiagram-WL72ISMW-DsNKFhn-.js} +4 -4
  82. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DfBNY6h_.js.map → sequenceDiagram-WL72ISMW-DsNKFhn-.js.map} +1 -1
  83. package/dist/static/assets/{stateDiagram-FKZM4ZOC-BLo1xRVY.js → stateDiagram-FKZM4ZOC-DLVD0_56.js} +9 -9
  84. package/dist/static/assets/{stateDiagram-FKZM4ZOC-BLo1xRVY.js.map → stateDiagram-FKZM4ZOC-DLVD0_56.js.map} +1 -1
  85. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Dq7MAD0I.js → stateDiagram-v2-4FDKWEC3-zhzpPCLY.js} +5 -5
  86. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Dq7MAD0I.js.map → stateDiagram-v2-4FDKWEC3-zhzpPCLY.js.map} +1 -1
  87. package/dist/static/assets/{timeline-definition-IT6M3QCI-ySWyBF3b.js → timeline-definition-IT6M3QCI-0G279y76.js} +3 -3
  88. package/dist/static/assets/{timeline-definition-IT6M3QCI-ySWyBF3b.js.map → timeline-definition-IT6M3QCI-0G279y76.js.map} +1 -1
  89. package/dist/static/assets/{treemap-KMMF4GRG-DOp4sqOh.js → treemap-KMMF4GRG-CKoXag7A.js} +4 -4
  90. package/dist/static/assets/{treemap-KMMF4GRG-DOp4sqOh.js.map → treemap-KMMF4GRG-CKoXag7A.js.map} +1 -1
  91. package/dist/static/assets/{xychartDiagram-PRI3JC2R-vkmh67qb.js → xychartDiagram-PRI3JC2R-BHQ4qaEg.js} +3 -3
  92. package/dist/static/assets/{xychartDiagram-PRI3JC2R-vkmh67qb.js.map → xychartDiagram-PRI3JC2R-BHQ4qaEg.js.map} +1 -1
  93. package/dist/static/index.html +1 -1
  94. package/package.json +1 -1
@@ -585,12 +585,14 @@ function formatRtwsGitInventoryRound2(language, inventory) {
585
585
  ].join('\n');
586
586
  }
587
587
  function formatPreludeIntro(language, reused, shellPolicy, shellSpecialistId) {
588
- const shellSpecialistMention = shellSpecialistId && shellSpecialistId.trim()
589
- ? `@${shellSpecialistId.trim()}`
590
- : '@<shell specialist>';
588
+ if (shellPolicy === 'specialist_only' &&
589
+ (!shellSpecialistId || shellSpecialistId.trim() === '')) {
590
+ throw new Error('Missing shell specialist id for specialist_only prelude');
591
+ }
592
+ const shellSpecialistMention = shellSpecialistId && shellSpecialistId.trim() ? `@${shellSpecialistId.trim()}` : '';
591
593
  const shellPolicyLinesZh = shellPolicy === 'specialist_only'
592
594
  ? [
593
- '规则:此智能体**不执行任何 shell 命令**。所有 shell 命令必须由 shell 专员执行并回传。',
595
+ `规则:此智能体**不执行任何 shell 命令**。所有 shell 命令必须由 shell 专员(${shellSpecialistMention})执行并回传。`,
594
596
  `下面将诉请 shell 专员(${shellSpecialistMention})仅执行一个低风险命令:\`uname -a\`。`,
595
597
  ]
596
598
  : shellPolicy === 'self_is_specialist'
@@ -605,7 +607,7 @@ function formatPreludeIntro(language, reused, shellPolicy, shellSpecialistId) {
605
607
  ];
606
608
  const shellPolicyLinesEn = shellPolicy === 'specialist_only'
607
609
  ? [
608
- 'Rule: this agent must **not run any shell commands**. All shell commands must be executed by the shell specialist and returned.',
610
+ `Rule: this agent must **not run any shell commands**. All shell commands must be executed by the shell specialist (${shellSpecialistMention}) and returned.`,
609
611
  `Next, we Tellask the shell specialist (${shellSpecialistMention}) to run one low-risk command only: \`uname -a\`.`,
610
612
  ]
611
613
  : shellPolicy === 'self_is_specialist'
@@ -645,7 +647,7 @@ function formatPreludeIntro(language, reused, shellPolicy, shellSpecialistId) {
645
647
  '## Prelude: Agent Priming (Reused)',
646
648
  '',
647
649
  'This prelude makes Tellask + return + FBR + distillation feel real (guiding the agent to show it to itself).',
648
- 'Critical timing: `!?@self` is initiation only; mainline synthesis/decision happens only after FBR sideline feedback returns.',
650
+ 'Critical timing: `!?@self` is initiation only; mainline distillation/decision happens only after FBR sideline feedback returns.',
649
651
  'This dialog reused the in-process cache (no commands were re-run).',
650
652
  '',
651
653
  ...shellPolicyLinesEn,
@@ -655,17 +657,17 @@ function formatPreludeIntro(language, reused, shellPolicy, shellSpecialistId) {
655
657
  '## Prelude: Agent Priming',
656
658
  '',
657
659
  'This prelude makes Tellask + return + FBR + distillation feel real (guiding the agent to show it to itself).',
658
- 'Critical timing: `!?@self` is initiation only; mainline synthesis/decision happens only after FBR sideline feedback returns.',
660
+ 'Critical timing: `!?@self` is initiation only; mainline distillation/decision happens only after FBR sideline feedback returns.',
659
661
  '',
660
662
  ...shellPolicyLinesEn,
661
663
  '',
662
664
  ].join('\n');
663
665
  }
664
666
  function formatShellTellaskBody(language, shellSpecialistId) {
665
- const shellSpecialistMention = shellSpecialistId && shellSpecialistId.trim() ? `@${shellSpecialistId.trim()}` : undefined;
667
+ const shellSpecialistMention = `@${shellSpecialistId.trim()}`;
666
668
  if (language === 'zh') {
667
669
  return [
668
- `你是 shell 专员${shellSpecialistMention ? `(${shellSpecialistMention})` : ''}:请代我执行 \`uname -a\` 获取当前运行环境的基本信息。`,
670
+ `你是 shell 专员(${shellSpecialistMention}):请代我执行 \`uname -a\` 获取当前运行环境的基本信息。`,
669
671
  '',
670
672
  '背景规则:对话主理人不得执行任何 shell 命令;所有 shell 命令必须通过你执行并回传。',
671
673
  '请不要建议我“自己在本地跑一下”。',
@@ -680,7 +682,7 @@ function formatShellTellaskBody(language, shellSpecialistId) {
680
682
  ].join('\n');
681
683
  }
682
684
  return [
683
- `You are the shell specialist${shellSpecialistMention ? ` (${shellSpecialistMention})` : ''}: please run \`uname -a\` on my behalf to capture the basic runtime environment.`,
685
+ `You are the shell specialist (${shellSpecialistMention}): please run \`uname -a\` on my behalf to capture the basic runtime environment.`,
684
686
  '',
685
687
  'Rule: the dialog owner must not run any shell commands; all shell commands must be executed by you and returned.',
686
688
  'Do not suggest that I “just run it locally”.',
@@ -785,20 +787,20 @@ function formatFbrSelfTeaser(language) {
785
787
  }
786
788
  function formatFbrTellaskBody(language, snapshotText, options) {
787
789
  const effortLineZh = options.fbrEffort >= 1
788
- ? '运行时提示:运行时会生成多份“初心自我”独立推理草稿,供上游对话综合提炼(这些草稿之间没有稳定映射关系,不要把它们当作固定身份)。上游对话会在收齐全部回贴后才综合决策;请只给出你这一份独立分析,不要替上游下最终行动决策。'
789
- : '运行时提示:本成员已禁用 FBR';
790
+ ? '对话设定:你现在是被唤起的一份“初心自我”。术语映射:在本 FBR 支线中,你是被诉请者(tellaskee,初心自我);诉请者(tellasker)就是外表自我(当前主线)。同一轮里还会有其他“初心自我”并行给出草稿(彼此没有稳定映射关系,不要当作固定身份)。外表自我会在收齐全部回贴后再统一决策;你只需给出这一份独立分析,不要替外表自我下最终行动决策。'
791
+ : '对话设定:当前成员未启用 FBR(无并行“初心自我”草稿)。';
790
792
  const effortLineEn = options.fbrEffort >= 1
791
- ? 'Runtime note: the runtime will generate multiple independent fresh boots drafts for the upstream dialog to distill (no stable mapping—do not treat them as fixed identities). The upstream dialog will decide only after all feedback returns; provide your own draft only and do not finalize upstream next-action decisions.'
792
- : 'Runtime note: FBR is disabled for this member.';
793
+ ? 'Conversation setup: you are one awakened “fresh-boots self.” Terminology mapping: in this FBR sideline, you are the tellaskee (the fresh-boots self), and the tellasker is the outer self (current mainline). In this same round, other fresh-boots selves also provide parallel drafts (no stable mapping—do not treat them as fixed identities). The outer self will make unified decisions only after all feedback returns; provide only this one independent draft and do not finalize next-action decisions for the outer self.'
794
+ : 'Conversation setup: FBR is disabled for this member (no parallel fresh-boots drafts).';
793
795
  const tellaskBackHintZh = (() => {
794
796
  return [
795
- '提示:如果你还想知道更多系统细节,可在本 FBR 支线对话中用 `!?@tellasker` 回问诉请者(上游对话)。',
797
+ '提示:如果你还想知道更多系统细节,可在本 FBR 支线对话中用 `!?@tellasker` 回问诉请者(tellasker,也就是外表自我/当前主线)。',
796
798
  '(当前这次 FBR 请不要真的发起任何诉请;只需说明你会回问什么。)',
797
799
  ].join('\n');
798
800
  })();
799
801
  const tellaskBackHintEn = (() => {
800
802
  return [
801
- 'Hint: if you want more system details, ask back in this FBR sideline dialog via `!?@tellasker` (to the upstream tellasker dialog).',
803
+ 'Hint: if you want more system details, ask back in this FBR sideline dialog via `!?@tellasker` (to the tellasker, i.e. the outer-self mainline dialog).',
802
804
  '(In this FBR run, do not actually emit any tellasks; just state what you would ask back.)',
803
805
  ].join('\n');
804
806
  })();
@@ -811,9 +813,9 @@ function formatFbrTellaskBody(language, snapshotText, options) {
811
813
  '请基于下面环境信息回答:',
812
814
  '- 在这个环境里要注意些什么?',
813
815
  '- 哪些关键上下文仍然缺失?',
814
- '- 请明确区分:事实依据 / 不确定项 / 建议下一步(供上游收齐草稿后综合)。',
816
+ '- 请明确区分:事实依据 / 不确定项 / 建议下一步(供诉请者 tellasker(外表自我)在收齐草稿后综合提炼)。',
815
817
  '',
816
- '环境信息(当前 Dominds 运行时环境快照):',
818
+ '环境信息(由诉请者 tellasker(外表自我)提供的当前环境快照):',
817
819
  snapshotText,
818
820
  ].join('\n');
819
821
  }
@@ -825,9 +827,9 @@ function formatFbrTellaskBody(language, snapshotText, options) {
825
827
  'Based on the environment info below, answer:',
826
828
  '- What should we watch out for in this environment?',
827
829
  '- What critical context is still missing?',
828
- '- Clearly separate: factual evidence / uncertainties / suggested next step (for upstream synthesis after all drafts return).',
830
+ '- Clearly separate: factual evidence / uncertainties / suggested next step (for tellasker / outer-self distillation after all drafts return).',
829
831
  '',
830
- 'Environment info (a snapshot of the current Dominds runtime):',
832
+ 'Environment info (the current snapshot provided by the tellasker / outer self):',
831
833
  snapshotText,
832
834
  ].join('\n');
833
835
  }
@@ -929,7 +931,7 @@ async function generatePrimingNoteViaMainlineAgent(options) {
929
931
  ].join('\n')
930
932
  : [
931
933
  'You are in the Agent Priming distillation step.',
932
- 'Receiving this prompt means feedback from this `!?@self` FBR run has already been collected; this step is synthesis/distillation only, not another FBR initiation.',
934
+ 'Receiving this prompt means feedback from this `!?@self` FBR run has already been collected; this step is distillation only, not another FBR initiation.',
933
935
  'Based on the environment snapshot (and optional `!?@self` FBR drafts) below, distill a reusable “Agent Priming note”.',
934
936
  '',
935
937
  'Evidence (for distillation only; do not repeat draft-by-draft):',
@@ -1331,12 +1333,12 @@ async function runAgentPrimingLive(dlg) {
1331
1333
  : selfIsShellSpecialist
1332
1334
  ? 'self_is_specialist'
1333
1335
  : 'specialist_only';
1334
- shellTellaskBody = formatShellTellaskBody(language, specialistId);
1335
1336
  let shellCallId = null;
1336
1337
  let shellTellaskHead = null;
1337
1338
  let shellTellaskBodyForSubdialog = null;
1338
1339
  // Phase 1: shell ask (and optional prelude intro)
1339
1340
  if (shellPolicy === 'specialist_only' && specialistId !== null) {
1341
+ shellTellaskBody = formatShellTellaskBody(language, specialistId);
1340
1342
  await dlg.withLock(async () => {
1341
1343
  try {
1342
1344
  await dlg.notifyGeneratingStart();
@@ -25,18 +25,18 @@ function getShellPolicyCopy(language) {
25
25
  specialistConfiguredNoTools: '你被配置为 shell 专员,但当前没有可用的 shell 工具(团队配置错误)。',
26
26
  specialistFixConfig: '在未修复配置前:不要声称自己执行过命令;如需验证,请让人类修复 team.yaml 或把 shell 能力授予正确的成员。',
27
27
  noHighRiskTools: '你不具备高权限 shell 工具(shell_cmd/stop_daemon/get_daemon_output)。',
28
- readonlyAuthorized: '你已被明确授权使用 `readonly_shell` 自行执行只读命令(仅允许白名单命令前缀):请直接调用,不要去寻找 shell 专员代跑。',
29
- readonlyDelegateWhenNeeded: '当你需要的命令不在白名单内,或需要写入/删除/网络/长时间运行/进程管理等高风险能力时:再转交给具备 shell 工具的专员队友,并提供充分理由与可审查的命令提案:',
28
+ readonlyAuthorized: '你仅被授权使用 `readonly_shell` 做只读检查(仅允许白名单命令前缀;不得写入/删除/联网/进程管理):符合只读目的时请直接调用。',
29
+ readonlyDelegateWhenNeeded: (value) => `边界规则:除只读目的外,其它一切 shell 需求都不得自行执行。凡是不在白名单内,或涉及写入/删除/网络/长时间运行/进程管理,必须诉请以下 shell 专员之一执行:${value}。并提供充分理由与可审查的命令提案:`,
30
30
  noShellTools: '你不具备 shell 工具(本环境仅 shell 专员可执行 shell):不要尝试“编造/假设”命令输出,也不要要求系统直接执行。',
31
- delegateWhenNeeded: '当你确实需要 shell 执行时:请转交给具备 shell 能力的专员队友,并提供充分理由与可审查的命令提案:',
31
+ delegateWhenNeeded: (value) => `当你确实需要 shell 执行时:必须诉请以下 shell 专员之一执行:${value}。并提供充分理由与可审查的命令提案:`,
32
32
  delegationProposalBullets: [
33
33
  '- 你要达成的目标(why)',
34
34
  '- 建议命令(what)+ 预期工作目录(cwd)+ 预期输出/验证方式(how to verify)',
35
35
  '- 风险评估与安全边界(risk & guardrails)',
36
36
  ],
37
37
  specialistListLine: (value) => `本队 shell 专员列表:${value}`,
38
- delegationSpecialistsLine: (value) => `可转交的 shell 专员队友:${value}`,
39
- tellaskBlockReminder: '重要:如果你打算让队友执行命令,请在同一条消息里给出完整的 tellask 诉请块(以第 0 列开头的 `!?@<shell-specialist>` 行),不要只说“我会请某人运行”。',
38
+ delegationSpecialistsLine: (value) => `可诉请的 shell 专员:${value}`,
39
+ tellaskBlockReminder: (exampleHeads) => `重要:如果你打算让队友执行命令,请在同一条消息里给出完整的 tellask 诉请块(诉请头第 0 列起始,并直接写真实专员 id)。可用写法示例:${exampleHeads}。不要只说“我会请某人运行”。`,
40
40
  claimAfterReceiptReminder: '重要:在你看到 shell 专员的回执(command/exit_code/stdout/stderr)之前,不要声称“已运行/已通过/无错”。',
41
41
  includeDevopsPolicyForSpecialist: false,
42
42
  };
@@ -54,18 +54,18 @@ function getShellPolicyCopy(language) {
54
54
  specialistConfiguredNoTools: 'You are configured as a shell specialist, but you do not currently have shell tools available (team configuration error).',
55
55
  specialistFixConfig: 'Until it is fixed: do not claim you ran any command; ask a human to fix team.yaml or grant shell tools to the correct specialist member.',
56
56
  noHighRiskTools: 'You do not have high-risk shell tools (shell_cmd/stop_daemon/get_daemon_output).',
57
- readonlyAuthorized: 'You are explicitly authorized to use `readonly_shell` yourself for read-only inspection via its small allowlist. Call it directly; do not go looking for a shell specialist to run it for you.',
58
- readonlyDelegateWhenNeeded: 'When the command you need is not in the allowlist, or you need high-risk capabilities like writes/deletes/network/long-running jobs/process management: delegate to a shell specialist teammate with a justified, reviewable proposal:',
57
+ readonlyAuthorized: 'You are authorized to use `readonly_shell` only for read-only inspection (small allowlist only; no writes/deletes/network/process management). When it is truly read-only, call it directly.',
58
+ readonlyDelegateWhenNeeded: (value) => `Boundary rule: anything beyond read-only must not be executed by you. If it is outside the allowlist, or involves writes/deletes/network/long-running jobs/process management, you must tellask one of these shell specialists to execute it: ${value}. Provide a justified, reviewable proposal:`,
59
59
  noShellTools: 'You do not have shell tools configured (shell execution is restricted to designated specialists): do not fabricate/assume command output, and do not ask the system to execute commands directly.',
60
- delegateWhenNeeded: 'When you truly need shell execution, delegate to a shell specialist teammate with a justified, reviewable proposal:',
60
+ delegateWhenNeeded: (value) => `When you truly need shell execution, you must tellask one of these shell specialists to execute it: ${value}. Provide a justified, reviewable proposal:`,
61
61
  delegationProposalBullets: [
62
62
  '- Goal (why)',
63
63
  '- Proposed command (what) + expected working directory (cwd) + expected output/verification (how to verify)',
64
64
  '- Risk assessment and guardrails (risk & guardrails)',
65
65
  ],
66
66
  specialistListLine: (value) => `Shell specialists in this team: ${value}`,
67
- delegationSpecialistsLine: (value) => `Shell specialist teammates: ${value}`,
68
- tellaskBlockReminder: 'Important: if you intend to delegate, include the full tellask block (a column-0 `!?@<shell-specialist>` line) in the same message; do not just say “I will ask someone to run it”.',
67
+ delegationSpecialistsLine: (value) => `Shell specialists you can tellask: ${value}`,
68
+ tellaskBlockReminder: (exampleHeads) => `Important: if you intend to delegate, include the full tellask block in the same message (tellask headline must start at column 0 and use a real specialist id). Examples: ${exampleHeads}. Do not just say “I will ask someone to run it”.`,
69
69
  claimAfterReceiptReminder: 'Important: do not claim “ran/passed/no errors” until you see the shell specialist’s receipt (command/exit_code/stdout/stderr).',
70
70
  includeDevopsPolicyForSpecialist: true,
71
71
  };
@@ -81,6 +81,13 @@ function buildShellPolicyPrompt(ctx) {
81
81
  : copy.noSpecialistsText;
82
82
  const specialistListLine = copy.specialistListLine(shellSpecialists);
83
83
  const specialistDelegationLine = copy.delegationSpecialistsLine(shellSpecialists);
84
+ const tellaskHeadExamples = shellSpecialistMemberIds.length > 0
85
+ ? shellSpecialistMemberIds
86
+ .map((id) => `\`!?@${id} ...\``)
87
+ .join(language === 'zh' ? ' / ' : ' / ')
88
+ : language === 'zh'
89
+ ? '(当前无可用 shell 专员)'
90
+ : '(no available shell specialists)';
84
91
  const buildDelegationBlock = (introLine) => [
85
92
  introLine,
86
93
  ...copy.delegationProposalBullets,
@@ -88,7 +95,7 @@ function buildShellPolicyPrompt(ctx) {
88
95
  '',
89
96
  devopsScriptPolicy,
90
97
  '',
91
- copy.tellaskBlockReminder,
98
+ copy.tellaskBlockReminder(tellaskHeadExamples),
92
99
  copy.claimAfterReceiptReminder,
93
100
  ];
94
101
  if (agentIsShellSpecialist && agentHasShellTools) {
@@ -118,9 +125,9 @@ function buildShellPolicyPrompt(ctx) {
118
125
  copy.noHighRiskTools,
119
126
  copy.readonlyAuthorized,
120
127
  '',
121
- ...buildDelegationBlock(copy.readonlyDelegateWhenNeeded),
128
+ ...buildDelegationBlock(copy.readonlyDelegateWhenNeeded(shellSpecialists)),
122
129
  ]
123
- : [copy.noShellTools, ...buildDelegationBlock(copy.delegateWhenNeeded)];
130
+ : [copy.noShellTools, ...buildDelegationBlock(copy.delegateWhenNeeded(shellSpecialists))];
124
131
  return `${copy.title}\n\n${bodyLines.join('\n')}`.trim();
125
132
  }
126
133
  function getMemoryPromptCopy(ctx) {
@@ -1,4 +1,4 @@
1
- import { aV as isObjectLike, br as baseGetTag, aE as isArray, aT as Symbol$1, bs as arrayLikeKeys, bt as baseKeys, aD as isArrayLike, bu as memoize, bv as isArguments, bw as MapCache, bm as eq, bx as Uint8Array, aW as getTag, a$ as isBuffer, b2 as Stack, by as isTypedArray, aZ as isObject, bz as isLength, bp as isIndex, aF as identity, bn as baseFor, bA as Set } from "./index-BNBG2CE1.js";
1
+ import { aV as isObjectLike, br as baseGetTag, aE as isArray, aT as Symbol$1, bs as arrayLikeKeys, bt as baseKeys, aD as isArrayLike, bu as memoize, bv as isArguments, bw as MapCache, bm as eq, bx as Uint8Array, aW as getTag, a$ as isBuffer, b2 as Stack, by as isTypedArray, aZ as isObject, bz as isLength, bp as isIndex, aF as identity, bn as baseFor, bA as Set } from "./index-CbQiF1hF.js";
2
2
  var symbolTag$1 = "[object Symbol]";
3
3
  function isSymbol(value) {
4
4
  return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$1;
@@ -658,4 +658,4 @@ export {
658
658
  hasIn as x,
659
659
  toString as y
660
660
  };
661
- //# sourceMappingURL=_baseUniq-C7IpU2Uk.js.map
661
+ //# sourceMappingURL=_baseUniq-B6S2Szf-.js.map