dominds 1.17.6 → 1.17.7

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 (123) hide show
  1. package/dist/minds/system-prompt-parts.js +2 -2
  2. package/dist/server/websocket-handler.d.ts +5 -0
  3. package/dist/server/websocket-handler.js +17 -4
  4. package/dist/tools/prompts/control/en/errors.md +1 -1
  5. package/dist/tools/prompts/control/en/index.md +2 -2
  6. package/dist/tools/prompts/control/en/principles.md +19 -4
  7. package/dist/tools/prompts/control/en/scenarios.md +14 -13
  8. package/dist/tools/prompts/control/en/tools.md +2 -2
  9. package/dist/tools/prompts/control/zh/errors.md +1 -1
  10. package/dist/tools/prompts/control/zh/index.md +2 -2
  11. package/dist/tools/prompts/control/zh/principles.md +19 -4
  12. package/dist/tools/prompts/control/zh/scenarios.md +13 -12
  13. package/dist/tools/prompts/control/zh/tools.md +2 -2
  14. package/dist/tools/prompts/personal_memory/en/index.md +2 -0
  15. package/dist/tools/prompts/personal_memory/en/principles.md +12 -7
  16. package/dist/tools/prompts/personal_memory/en/scenarios.md +32 -74
  17. package/dist/tools/prompts/personal_memory/en/tools.md +7 -5
  18. package/dist/tools/prompts/personal_memory/zh/index.md +2 -0
  19. package/dist/tools/prompts/personal_memory/zh/principles.md +12 -7
  20. package/dist/tools/prompts/personal_memory/zh/scenarios.md +32 -74
  21. package/dist/tools/prompts/personal_memory/zh/tools.md +7 -5
  22. package/dist/tools/prompts/team_memory/en/index.md +5 -4
  23. package/dist/tools/prompts/team_memory/en/principles.md +14 -3
  24. package/dist/tools/prompts/team_memory/en/scenarios.md +8 -8
  25. package/dist/tools/prompts/team_memory/en/tools.md +3 -3
  26. package/dist/tools/prompts/team_memory/zh/index.md +5 -4
  27. package/dist/tools/prompts/team_memory/zh/principles.md +13 -2
  28. package/dist/tools/prompts/team_memory/zh/scenarios.md +8 -8
  29. package/dist/tools/prompts/team_memory/zh/tools.md +3 -3
  30. package/dist/tools/team_mgmt.js +16 -4
  31. package/dist/utils/taskdoc.js +2 -2
  32. package/package.json +3 -3
  33. package/webapp/dist/assets/{_basePickBy-CdAKD4rj.js → _basePickBy-u7tNFRWr.js} +3 -3
  34. package/webapp/dist/assets/{_basePickBy-CdAKD4rj.js.map → _basePickBy-u7tNFRWr.js.map} +1 -1
  35. package/webapp/dist/assets/{_baseUniq-_dXSeigA.js → _baseUniq-CH9LRkiH.js} +2 -2
  36. package/webapp/dist/assets/{_baseUniq-_dXSeigA.js.map → _baseUniq-CH9LRkiH.js.map} +1 -1
  37. package/webapp/dist/assets/{arc-DNnfKGXe.js → arc-Bo0Lw3ZP.js} +2 -2
  38. package/webapp/dist/assets/{arc-DNnfKGXe.js.map → arc-Bo0Lw3ZP.js.map} +1 -1
  39. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-400MthuC.js → architectureDiagram-VXUJARFQ-Ckyr89Iw.js} +7 -7
  40. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-400MthuC.js.map → architectureDiagram-VXUJARFQ-Ckyr89Iw.js.map} +1 -1
  41. package/webapp/dist/assets/{blockDiagram-VD42YOAC-UjvoDLu0.js → blockDiagram-VD42YOAC-BSXoLLq_.js} +7 -7
  42. package/webapp/dist/assets/{blockDiagram-VD42YOAC-UjvoDLu0.js.map → blockDiagram-VD42YOAC-BSXoLLq_.js.map} +1 -1
  43. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BUPEBKuT.js → c4Diagram-YG6GDRKO-CgCG1cP0.js} +3 -3
  44. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BUPEBKuT.js.map → c4Diagram-YG6GDRKO-CgCG1cP0.js.map} +1 -1
  45. package/webapp/dist/assets/{channel-Bc-dSNjB.js → channel-Crbz0zgt.js} +2 -2
  46. package/webapp/dist/assets/{channel-Bc-dSNjB.js.map → channel-Crbz0zgt.js.map} +1 -1
  47. package/webapp/dist/assets/{chunk-4BX2VUAB-D0CwOvuG.js → chunk-4BX2VUAB-BIIEb_5S.js} +2 -2
  48. package/webapp/dist/assets/{chunk-4BX2VUAB-D0CwOvuG.js.map → chunk-4BX2VUAB-BIIEb_5S.js.map} +1 -1
  49. package/webapp/dist/assets/{chunk-55IACEB6-_z-JPBKr.js → chunk-55IACEB6-CaJzGgc9.js} +2 -2
  50. package/webapp/dist/assets/{chunk-55IACEB6-_z-JPBKr.js.map → chunk-55IACEB6-CaJzGgc9.js.map} +1 -1
  51. package/webapp/dist/assets/{chunk-B4BG7PRW-D4q30SD5.js → chunk-B4BG7PRW-DHQwhO9F.js} +5 -5
  52. package/webapp/dist/assets/{chunk-B4BG7PRW-D4q30SD5.js.map → chunk-B4BG7PRW-DHQwhO9F.js.map} +1 -1
  53. package/webapp/dist/assets/{chunk-DI55MBZ5-c4c0VIRJ.js → chunk-DI55MBZ5-CG1lO0R8.js} +4 -4
  54. package/webapp/dist/assets/{chunk-DI55MBZ5-c4c0VIRJ.js.map → chunk-DI55MBZ5-CG1lO0R8.js.map} +1 -1
  55. package/webapp/dist/assets/{chunk-FMBD7UC4-BZJ6MV7q.js → chunk-FMBD7UC4-DAUsTLPS.js} +2 -2
  56. package/webapp/dist/assets/{chunk-FMBD7UC4-BZJ6MV7q.js.map → chunk-FMBD7UC4-DAUsTLPS.js.map} +1 -1
  57. package/webapp/dist/assets/{chunk-QN33PNHL-Dt5_zoWx.js → chunk-QN33PNHL-BfQs-QHE.js} +2 -2
  58. package/webapp/dist/assets/{chunk-QN33PNHL-Dt5_zoWx.js.map → chunk-QN33PNHL-BfQs-QHE.js.map} +1 -1
  59. package/webapp/dist/assets/{chunk-QZHKN3VN-C233UTgJ.js → chunk-QZHKN3VN-C5iKQ6mQ.js} +2 -2
  60. package/webapp/dist/assets/{chunk-QZHKN3VN-C233UTgJ.js.map → chunk-QZHKN3VN-C5iKQ6mQ.js.map} +1 -1
  61. package/webapp/dist/assets/{chunk-TZMSLE5B-CYz6GjE2.js → chunk-TZMSLE5B-CBShDwy2.js} +2 -2
  62. package/webapp/dist/assets/{chunk-TZMSLE5B-CYz6GjE2.js.map → chunk-TZMSLE5B-CBShDwy2.js.map} +1 -1
  63. package/webapp/dist/assets/{classDiagram-2ON5EDUG-Bh9Mw-kt.js → classDiagram-2ON5EDUG-DrfJDzYO.js} +6 -6
  64. package/webapp/dist/assets/{classDiagram-2ON5EDUG-Bh9Mw-kt.js.map → classDiagram-2ON5EDUG-DrfJDzYO.js.map} +1 -1
  65. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-Bh9Mw-kt.js → classDiagram-v2-WZHVMYZB-DrfJDzYO.js} +6 -6
  66. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-Bh9Mw-kt.js.map → classDiagram-v2-WZHVMYZB-DrfJDzYO.js.map} +1 -1
  67. package/webapp/dist/assets/{clone-2lFjyI7N.js → clone-Cd-48URG.js} +2 -2
  68. package/webapp/dist/assets/{clone-2lFjyI7N.js.map → clone-Cd-48URG.js.map} +1 -1
  69. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-3DOT2IPV.js → cose-bilkent-S5V4N54A-CCji0YN3.js} +2 -2
  70. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-3DOT2IPV.js.map → cose-bilkent-S5V4N54A-CCji0YN3.js.map} +1 -1
  71. package/webapp/dist/assets/{dagre-6UL2VRFP-ClogWVOL.js → dagre-6UL2VRFP-B94p-Dpl.js} +7 -7
  72. package/webapp/dist/assets/{dagre-6UL2VRFP-ClogWVOL.js.map → dagre-6UL2VRFP-B94p-Dpl.js.map} +1 -1
  73. package/webapp/dist/assets/{diagram-PSM6KHXK-C7W5uMOI.js → diagram-PSM6KHXK-DP-zGmAS.js} +8 -8
  74. package/webapp/dist/assets/{diagram-PSM6KHXK-C7W5uMOI.js.map → diagram-PSM6KHXK-DP-zGmAS.js.map} +1 -1
  75. package/webapp/dist/assets/{diagram-QEK2KX5R-2hcqk2fE.js → diagram-QEK2KX5R-DquJirs4.js} +7 -7
  76. package/webapp/dist/assets/{diagram-QEK2KX5R-2hcqk2fE.js.map → diagram-QEK2KX5R-DquJirs4.js.map} +1 -1
  77. package/webapp/dist/assets/{diagram-S2PKOQOG-DSTjb4Ot.js → diagram-S2PKOQOG-Dt5W2t6V.js} +7 -7
  78. package/webapp/dist/assets/{diagram-S2PKOQOG-DSTjb4Ot.js.map → diagram-S2PKOQOG-Dt5W2t6V.js.map} +1 -1
  79. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-Cyzo2gRU.js → erDiagram-Q2GNP2WA-Bs0-2Rfj.js} +5 -5
  80. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-Cyzo2gRU.js.map → erDiagram-Q2GNP2WA-Bs0-2Rfj.js.map} +1 -1
  81. package/webapp/dist/assets/{flowDiagram-NV44I4VS-vwGV7In0.js → flowDiagram-NV44I4VS-cJjXWAlK.js} +6 -6
  82. package/webapp/dist/assets/{flowDiagram-NV44I4VS-vwGV7In0.js.map → flowDiagram-NV44I4VS-cJjXWAlK.js.map} +1 -1
  83. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BwnKcFdH.js → ganttDiagram-JELNMOA3-Du1AUaKm.js} +3 -3
  84. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BwnKcFdH.js.map → ganttDiagram-JELNMOA3-Du1AUaKm.js.map} +1 -1
  85. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-AHZBVTYC.js → gitGraphDiagram-V2S2FVAM-D_jVOYOK.js} +8 -8
  86. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-AHZBVTYC.js.map → gitGraphDiagram-V2S2FVAM-D_jVOYOK.js.map} +1 -1
  87. package/webapp/dist/assets/{graph-8UtNyWA6.js → graph-CuF_sq4r.js} +3 -3
  88. package/webapp/dist/assets/{graph-8UtNyWA6.js.map → graph-CuF_sq4r.js.map} +1 -1
  89. package/webapp/dist/assets/{index-BxP2ljx_.js → index-DAShQcjb.js} +67 -47
  90. package/webapp/dist/assets/{index-BxP2ljx_.js.map → index-DAShQcjb.js.map} +1 -1
  91. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BjVLGKXo.js → infoDiagram-HS3SLOUP-CEFlo_Hl.js} +6 -6
  92. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BjVLGKXo.js.map → infoDiagram-HS3SLOUP-CEFlo_Hl.js.map} +1 -1
  93. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CR4SmnDB.js → journeyDiagram-XKPGCS4Q-zc2Q4Se9.js} +5 -5
  94. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CR4SmnDB.js.map → journeyDiagram-XKPGCS4Q-zc2Q4Se9.js.map} +1 -1
  95. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-BRwp6TGw.js → kanban-definition-3W4ZIXB7-oT42RM2a.js} +3 -3
  96. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-BRwp6TGw.js.map → kanban-definition-3W4ZIXB7-oT42RM2a.js.map} +1 -1
  97. package/webapp/dist/assets/{layout-CGl07Gcr.js → layout-BvaOu3k2.js} +5 -5
  98. package/webapp/dist/assets/{layout-CGl07Gcr.js.map → layout-BvaOu3k2.js.map} +1 -1
  99. package/webapp/dist/assets/{linear-BZLEuG3I.js → linear-Cg-CjocS.js} +2 -2
  100. package/webapp/dist/assets/{linear-BZLEuG3I.js.map → linear-Cg-CjocS.js.map} +1 -1
  101. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-CSKILdE-.js → mindmap-definition-VGOIOE7T-CVFVrU22.js} +4 -4
  102. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-CSKILdE-.js.map → mindmap-definition-VGOIOE7T-CVFVrU22.js.map} +1 -1
  103. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-B_V3b26u.js → pieDiagram-ADFJNKIX-Bai5CMos.js} +8 -8
  104. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-B_V3b26u.js.map → pieDiagram-ADFJNKIX-Bai5CMos.js.map} +1 -1
  105. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-CUtWvL54.js → quadrantDiagram-AYHSOK5B-BPXDO_2E.js} +3 -3
  106. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-CUtWvL54.js.map → quadrantDiagram-AYHSOK5B-BPXDO_2E.js.map} +1 -1
  107. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-i2tJjoPk.js → requirementDiagram-UZGBJVZJ-Dgj9X9cE.js} +4 -4
  108. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-i2tJjoPk.js.map → requirementDiagram-UZGBJVZJ-Dgj9X9cE.js.map} +1 -1
  109. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-nPQL9_d2.js → sankeyDiagram-TZEHDZUN-Dc0mO4OD.js} +2 -2
  110. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-nPQL9_d2.js.map → sankeyDiagram-TZEHDZUN-Dc0mO4OD.js.map} +1 -1
  111. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-C2hX7rec.js → sequenceDiagram-WL72ISMW-DZJTga0d.js} +4 -4
  112. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-C2hX7rec.js.map → sequenceDiagram-WL72ISMW-DZJTga0d.js.map} +1 -1
  113. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-C94MSmDQ.js → stateDiagram-FKZM4ZOC-RNxYatKM.js} +9 -9
  114. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-C94MSmDQ.js.map → stateDiagram-FKZM4ZOC-RNxYatKM.js.map} +1 -1
  115. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-C3pjtK0h.js → stateDiagram-v2-4FDKWEC3-ADxYqWzo.js} +5 -5
  116. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-C3pjtK0h.js.map → stateDiagram-v2-4FDKWEC3-ADxYqWzo.js.map} +1 -1
  117. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-c087-Lzc.js → timeline-definition-IT6M3QCI-Qx_h1e-i.js} +3 -3
  118. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-c087-Lzc.js.map → timeline-definition-IT6M3QCI-Qx_h1e-i.js.map} +1 -1
  119. package/webapp/dist/assets/{treemap-GDKQZRPO-PkjxSOwj.js → treemap-GDKQZRPO-BHzYvXGn.js} +5 -5
  120. package/webapp/dist/assets/{treemap-GDKQZRPO-PkjxSOwj.js.map → treemap-GDKQZRPO-BHzYvXGn.js.map} +1 -1
  121. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DtMWPXHa.js → xychartDiagram-PRI3JC2R-DGdjkYQQ.js} +3 -3
  122. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DtMWPXHa.js.map → xychartDiagram-PRI3JC2R-DGdjkYQQ.js.map} +1 -1
  123. package/webapp/dist/index.html +1 -1
@@ -162,7 +162,7 @@ function getMemoryPromptCopy(ctx) {
162
162
  temporaryInfoLine: '你的聊天记录与工具输出是临时信息:会快速累积、很快过时,并增加你的认知负担。在同一轮对话中,除了 `clear_mind` 以外你无法真正丢弃这些历史。',
163
163
  clearMindLine: '`clear_mind` 会开启新一程对话(保留差遣牒、提醒项与记忆层),从而卸掉这部分认知负载并继续推进。因此你必须先把关键信息提炼到高价值载体:',
164
164
  taskdocContractLine: '- 差遣牒(`*.tsk/`):全队共享的任务契约(goals/constraints/progress);不是个人笔记,保持足够短,每轮都应可通读。',
165
- taskdocSemanticsLine: '- 章节语义约定:`progress` 是全队共享的里程碑公告牌,用来记录关键决策、当前状态与下一步;不是流水账,也不是个人工作记录。`goals` / `constraints` 是较稳定的任务契约;每次更新都必须保留仍然有效的他人条目。',
165
+ taskdocSemanticsLine: '- 章节语义约定:`progress` 是全队共享、准实时、可扫读的任务公告牌,用来记录当前有效状态、关键决策、下一步与仍成立阻塞;不是流水账,也不是个人工作记录。`goals` / `constraints` 是较稳定的任务契约;每次更新都必须保留仍然有效的他人条目。',
166
166
  taskdocSectionReplaceLine: `- 更新差遣牒的任意分段时:每次调用会替换该分段全文;你必须先对照“上下文中注入的当前内容”做合并/压缩;禁止覆盖/抹掉他人条目;自己负责维护的条目必须标注责任人(例如 \`- [owner:@${ctx.agentId}] ...\` 或用 \`### @${ctx.agentId}\` 分块)。`,
167
167
  progressLine: '- 更新 `progress` 时:它必须始终是可供全队扫读的完整当前快照,而不是只追加自己这一轮的零散笔记。',
168
168
  injectedTaskdocLine: '- 重要:差遣牒内容会被系统以内联形式注入到上下文中(本轮生成视角下即为最新;注入内容不包括全局约束)。需要回顾时请直接基于上下文里的差遣牒内容回顾与决策,不要试图用通用文件工具读取 `*.tsk/` 下的文件(会被拒绝)。',
@@ -186,7 +186,7 @@ function getMemoryPromptCopy(ctx) {
186
186
  temporaryInfoLine: 'Dialog history and tool outputs are temporary: they accumulate quickly, become stale, and increase cognitive load. Within a course, you cannot truly drop that history except via `clear_mind`.',
187
187
  clearMindLine: '`clear_mind` starts a new course while preserving Taskdoc, reminders, and memory layers. Therefore, before clearing, distill key information into durable layers:',
188
188
  taskdocContractLine: '- Taskdoc (`*.tsk/`): the team-shared task contract (goals/constraints/progress). It is not a personal notebook; keep it small enough to read every course.',
189
- taskdocSemanticsLine: '- Section semantics: `progress` is the team’s shared milestone bulletin board for key decisions, current status, and next steps; it is not a raw log or personal work record. `goals` / `constraints` are the more stable task contract; every update must preserve still-valid entries from others.',
189
+ taskdocSemanticsLine: '- Section semantics: `progress` is the team-shared, quasi-real-time, scannable task bulletin board for current effective state, key decisions, next steps, and still-active blockers; it is not a raw log or personal work record. `goals` / `constraints` are the more stable task contract; every update must preserve still-valid entries from others.',
190
190
  taskdocSectionReplaceLine: `- When updating any Taskdoc section: each call replaces the entire section; always start from the current injected content and merge/compress; do not overwrite other contributors; add an explicit owner tag for entries you maintain (e.g., \`- [owner:@${ctx.agentId}] ...\` or a \`### @${ctx.agentId}\` block).`,
191
191
  progressLine: '- When updating `progress`, keep it as a complete, team-scannable current snapshot instead of appending only your own latest notes.',
192
192
  injectedTaskdocLine: '- Important: the Taskdoc content is injected inline into the context (the latest as of this generation; injected content excludes global constraints). Review the injected Taskdoc instead of trying to read files under `*.tsk/` via general file tools (they will be rejected).',
@@ -3,6 +3,11 @@ import { type LanguageCode } from '@longrun-ai/kernel/types/language';
3
3
  import type { Server } from 'http';
4
4
  import { WebSocket, WebSocketServer } from 'ws';
5
5
  import type { AuthConfig } from './auth';
6
+ export declare function shouldQueueUserSupplementAtGenerationBoundary(args: {
7
+ latestGenerating: boolean;
8
+ inMemoryGenerating: boolean;
9
+ isLocked: boolean;
10
+ }): boolean;
6
11
  /**
7
12
  * Handle incoming WebSocket messages
8
13
  */
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldQueueUserSupplementAtGenerationBoundary = shouldQueueUserSupplementAtGenerationBoundary;
3
4
  exports.handleWebSocketMessage = handleWebSocketMessage;
4
5
  exports.setupWebSocketServer = setupWebSocketServer;
5
6
  exports.cleanupEventSystems = cleanupEventSystems;
@@ -209,12 +210,22 @@ function syncDialogLanguagePreference(dialog, language, options) {
209
210
  }
210
211
  dialog.resetCourseLanguageNotice();
211
212
  }
212
- async function queueUserSupplementAtGenerationBoundary(dialog, prompt) {
213
- const latest = await persistence_1.DialogPersistence.loadDialogLatest(dialog.id, 'running');
214
- if (latest?.generating !== true) {
213
+ function shouldQueueUserSupplementAtGenerationBoundary(args) {
214
+ if (!args.isLocked) {
215
215
  return false;
216
216
  }
217
- if (!dialog.isLocked()) {
217
+ return args.latestGenerating || args.inMemoryGenerating;
218
+ }
219
+ async function queueUserSupplementAtGenerationBoundary(dialog, prompt) {
220
+ const latest = await persistence_1.DialogPersistence.loadDialogLatest(dialog.id, 'running');
221
+ const inMemoryGenerating = dialog.hasActiveGeneration;
222
+ // Live UX can observe generating_start before latest.yaml flips generating=true, so boundary
223
+ // queuing must honor either persisted or in-memory generation state.
224
+ if (!shouldQueueUserSupplementAtGenerationBoundary({
225
+ latestGenerating: latest?.generating === true,
226
+ inMemoryGenerating,
227
+ isLocked: dialog.isLocked(),
228
+ })) {
218
229
  return false;
219
230
  }
220
231
  const queued = dialog.queueUserPromptAtGenerationBoundary({
@@ -237,6 +248,8 @@ async function queueUserSupplementAtGenerationBoundary(dialog, prompt) {
237
248
  selfId: dialog.id.selfId,
238
249
  msgId: queued.msgId,
239
250
  incomingMsgId: prompt.msgId,
251
+ latestGenerating: latest?.generating === true,
252
+ inMemoryGenerating,
240
253
  });
241
254
  return true;
242
255
  }
@@ -87,7 +87,7 @@
87
87
 
88
88
  ### Q: What's the difference between dialog reminders, personal reminders, and memory?
89
89
 
90
- A: `dialog` reminders are only for the current dialog. `personal` reminders stay visible in all later dialogs you lead, but still belong to the active working set rather than long-term knowledge. `personal_memory` is for durable facts and reusable knowledge saved to disk.
90
+ A: `dialog` reminders are only for the current dialog's working set. `personal` reminders stay visible in all later dialogs you lead, but still belong to the working set rather than long-term knowledge. `personal_memory` is for durable facts and reusable knowledge saved to disk; if the information should synchronize the team's current effective state, key decisions, next step, or still-active blockers, write it to Taskdoc `progress` instead of a reminder.
91
91
 
92
92
  ### Q: How do I choose `personal` vs `dialog`?
93
93
 
@@ -27,7 +27,7 @@
27
27
  control is Dominds' **dialog control toolset** for managing dialog state, reminders, taskdocs, and inter-dialog reply closure semantics:
28
28
 
29
29
  - **Reminder management**: Two reminder scopes. Default to dialog-local working set; use `personal` only for responsibility-linked notes that you should keep seeing in all later dialogs you lead
30
- - **Taskdoc operations**: Update task contracts (goals/constraints/progress)
30
+ - **Taskdoc operations**: Update task contracts (goals/constraints/progress); within Taskdoc, `progress` is the team-shared, quasi-real-time, scannable task bulletin board
31
31
  - **Context maintenance**: Reduce cognitive load without losing key resume state
32
32
  - **Reply routing**: Separate `tellaskBack`, `replyTellask*`, and plain text by responsibility in sideline / ask-back flows
33
33
 
@@ -69,4 +69,4 @@ Taskdoc is a **task contract** containing:
69
69
 
70
70
  - **goals**: Task objectives
71
71
  - **constraints**: Constraints
72
- - **progress**: Progress status
72
+ - **progress**: A quasi-real-time team task bulletin board / current effective-state snapshot for team-wide sync
@@ -63,19 +63,20 @@ Default to `dialog`. Use `personal` only when you should keep seeing that note i
63
63
 
64
64
  ### 2. Taskdoc
65
65
 
66
- Taskdoc is a **task contract** defining goals, constraints, and progress.
66
+ Taskdoc is a **task contract** and the task's **team-shared source of current truth** during execution; within it, `progress` acts as a **quasi-real-time team task bulletin board / current effective-state snapshot**.
67
67
 
68
68
  **Structure:**
69
69
 
70
70
  - **goals.md**: Task objectives
71
71
  - **constraints.md**: Constraints
72
- - **progress.md**: Progress status
72
+ - **progress.md**: The current effective state, key decisions, next steps, and still-active blockers for team-wide sync
73
73
 
74
74
  **Update Rules:**
75
75
 
76
76
  - Each `change_mind` call replaces entire chapter
77
77
  - Does not reset dialog rounds
78
78
  - Changes visible to all teammates
79
+ - When writing `progress`, assume teammates will skim it to synchronize on the current task truth rather than read your private process log
79
80
 
80
81
  ## Tool Overview
81
82
 
@@ -118,15 +119,29 @@ Taskdoc is a **task contract** defining goals, constraints, and progress.
118
119
 
119
120
  - **Goal changes**: When task objectives change
120
121
  - **Constraint adjustments**: When constraints need adjustment
121
- - **Progress updates**: When task status has significant progress
122
+ - **Progress updates**: When the team needs the current effective state, key decisions, next steps, or still-active blockers synchronized
122
123
 
123
124
  ### 3. Update Strategy
124
125
 
125
126
  - Keep concise: reminders are often 1-3 items; prefer `update_reminder` to compress/merge
126
- - Separate carriers: shared decisions/status belong in Taskdoc; reminders keep local resume details
127
+ - Separate carriers: information that must synchronize the team's current effective state, key decisions, next steps, or still-active blockers belongs in `progress`, the quasi-real-time task bulletin board; reminders keep local resume details
128
+ - Team-facing: keep `progress` scannable and centered on what is still effective now; do not let it degrade into a personal log, raw chronology, scratchpad, or stale history pile
127
129
  - Collapse before clearing: default to a structured continuation-package reminder; if the current course is already under system remediation, rough multi-reminder carry-over is acceptable but must be reconciled first in the new course
128
130
  - Avoid raw-material dumps: do not paste long logs or large tool outputs into reminders
129
131
 
132
+ ### 4. What Belongs in `progress`
133
+
134
+ - Good fits for `progress`:
135
+ - key decisions already in effect
136
+ - blockers that are confirmed and still active
137
+ - the next step the team should currently align on
138
+ - completed stage closures and remaining gaps
139
+ - Poor fits for `progress`:
140
+ - “I just read file X”
141
+ - “I might try a small idea next”
142
+ - scratch notes only useful to the current speaker
143
+ - historical traces whose current validity is unclear
144
+
130
145
  ## Limitations and Notes
131
146
 
132
147
  1. `dialog` reminders end with the dialog; `personal` reminders stay visible in all later dialogs you lead
@@ -11,18 +11,18 @@
11
11
  - Failure Branch
12
12
  - Completion Criteria
13
13
 
14
- ## Scenario 1: Task Progress Tracking
14
+ ## Scenario 1: Reminder Working Set Tracking
15
15
 
16
16
  ### Scenario Description
17
17
 
18
- Use reminders to track current task progress.
18
+ Use reminders for the current dialog's working set: next steps, blockers, and volatile details that are not meant to become the team's Taskdoc bulletin board.
19
19
 
20
20
  ### Example
21
21
 
22
22
  ```typescript
23
- // Add task reminder
23
+ // Add a dialog-scoped working-set reminder
24
24
  add_reminder({
25
- content: 'Current task: Creating i18n manual [In Progress]',
25
+ content: 'Next step: verify the control manual wording against Taskdoc progress semantics',
26
26
  });
27
27
 
28
28
  // Add a personal reminder only because this is a responsibility-linked cue
@@ -32,13 +32,13 @@ add_reminder({
32
32
  scope: 'personal',
33
33
  });
34
34
 
35
- // Update after task completion
35
+ // Update after the local working-set detail changes
36
36
  update_reminder({
37
37
  reminder_id: 'abc123de',
38
- content: 'Completed: Creating i18n manual [Done]',
38
+ content: 'Blocker cleared: control manual wording now aligned with Taskdoc progress semantics',
39
39
  });
40
40
 
41
- // Delete completed reminder
41
+ // Delete the reminder once it is no longer needed
42
42
  delete_reminder({
43
43
  reminder_id: 'abc123de',
44
44
  });
@@ -46,8 +46,9 @@ delete_reminder({
46
46
 
47
47
  ### Key Points
48
48
 
49
- - Default to `dialog` for current-task progress and temporary blockers
49
+ - Default to `dialog` for local next steps, temporary blockers, and volatile bridge details
50
50
  - Use `personal` only when you should still see the note in all later dialogs you lead
51
+ - If the information should synchronize the whole team's current effective state, put it in Taskdoc `progress` instead
51
52
  - If the note is durable knowledge rather than an active working-set cue, move it to `personal_memory` instead
52
53
 
53
54
  ## Scenario 2: Sideline is complete, and the assignment header requires replyTellask
@@ -115,7 +116,7 @@ replyTellaskBack({
115
116
 
116
117
  ### Scenario Description
117
118
 
118
- Update task progress to taskdoc.
119
+ Announce the current effective state, key decisions, next step, and still-active blockers to the whole team rather than writing a private chronology.
119
120
 
120
121
  ### Example
121
122
 
@@ -123,7 +124,7 @@ Update task progress to taskdoc.
123
124
  change_mind({
124
125
  selector: 'progress',
125
126
  content:
126
- '## Progress\n\n### Completed\n- [x] Create ws_mod manual\n- [x] Create team_mgmt manual\n- [x] Create personal_memory manual\n\n### In Progress\n- [ ] Create control manual [50%]\n\n### Pending Improvements\n- [ ] Write tool descriptions',
127
+ '## Progress\n\n### Current Effective State\n- The memory-carrier boundary cleanup is complete; next we strengthen the Taskdoc bulletin-board semantics\n\n### Decisions In Effect\n- `personal_memory` is no longer treated as a short-term junk drawer\n- `team_memory` now carries only long-lived team conventions and invariants\n\n### Next Step\n- Add stronger `progress` bulletin-board guidance in control / team_mgmt manuals\n\n### Still-Active Blockers\n- None',
127
128
  });
128
129
  ```
129
130
 
@@ -185,15 +186,15 @@ recall_taskdoc({
185
186
 
186
187
  ### Scenario Description
187
188
 
188
- Maintain taskdoc integrity and consistency.
189
+ Maintain taskdoc integrity and consistency, and keep `progress` as a team-scannable current-truth snapshot.
189
190
 
190
191
  ### Example
191
192
 
192
193
  ```typescript
193
- // Update progress (keep goals and progress consistent)
194
+ // Update progress (keep goals / constraints / progress consistent)
194
195
  change_mind({
195
196
  selector: 'progress',
196
197
  content:
197
- '## Progress\n\n### Completed\n- [x] Create ws_mod manual [100%]\n- [x] Create team_mgmt manual [100%]\n- [x] Create personal_memory manual [100%]\n\n### In Progress\n- [ ] Create control manual [60%]\n\n### Next Steps\n- Complete control manual\n- Create os manual',
198
+ '## Progress\n\n### Current Effective State\n- The boundary wording has been propagated into handbook sources and tests\n\n### Decisions In Effect\n- role assets / personal_memory / team_memory / Taskdoc-progress / reminders now have separated responsibilities\n\n### Next Step\n- Re-verify control manual wording, Taskdoc display text, and boundary tests\n\n### Still-Active Blockers\n- None',
198
199
  });
199
200
  ```
@@ -234,7 +234,7 @@ update_reminder({
234
234
  change_mind({
235
235
  selector: 'progress',
236
236
  content:
237
- '## Progress\n\n### Completed\n- [x] Create ws_mod manual\n- [x] Create team_mgmt manual\n\n### In Progress\n- [ ] Create personal_memory manual [80%]\n\n### Not Started\n- [ ] Create control manual',
237
+ '## Progress\n\n### Current Effective State\n- The handbook boundary split is now agreed: role assets / personal long-lived experience / Taskdoc-progress / reminders\n\n### Decisions In Effect\n- `persona / knowhow / pitfalls` no longer absorb daily member experience\n- `personal_memory` is reserved for one member\\'s reusable long-lived experience\n\n### Next Step\n- Strengthen the bulletin-board semantics of Taskdoc `progress`\n\n### Still-Active Blockers\n- None',
238
238
  });
239
239
  ```
240
240
 
@@ -275,5 +275,5 @@ message: <error message>
275
275
  - Normal reminders should stay concise, fresh, and directly actionable; often 1-3 items total
276
276
  - For a continuation package, use structured notes by default: next step, key pointers, run/verify, easy-to-lose volatile details
277
277
  - If the current course is already under caution/critical remediation, rough multi-reminder bridge notes are acceptable; in the current course only preserve info + `clear_mind`, and reconcile them as the first step only after the system actually starts the new course
278
- - Keep only details not already covered by Taskdoc; do not repeat team-shared status
278
+ - Keep only details not already covered by Taskdoc; do not repeat team-shared status. If the team needs “where we are now / which decisions are in effect / what is next / which blockers still hold”, write it back to Taskdoc `progress`
279
279
  - Do not paste long logs, large tool outputs, or raw material into reminders
@@ -87,7 +87,7 @@
87
87
 
88
88
  ### Q: `dialog` 提醒、`personal` 提醒和 memory 有什么区别?
89
89
 
90
- A: `dialog` 提醒只用于当前对话。`personal` 提醒会在所有由你主理的后续对话里继续可见,但仍属于当前工作集提示,不是长期知识库。`personal_memory` 用于保存持久稳定事实和可复用知识。
90
+ A: `dialog` 提醒只用于当前对话的工作集。`personal` 提醒会在所有由你主理的后续对话里继续可见,但仍属于工作集提示,不是长期知识库。`personal_memory` 用于保存持久稳定事实和可复用知识;如果信息需要向全队同步当前有效状态、关键决策、下一步或仍成立阻塞,应写入 Taskdoc `progress`,而不是提醒项。
91
91
 
92
92
  ### Q: `personal` 和 `dialog` 怎么选?
93
93
 
@@ -27,7 +27,7 @@
27
27
  control 是 Dominds 的**对话控制工具集**,用于管理对话状态、提醒、差遣牒,以及跨对话回复收口语义:
28
28
 
29
29
  - **提醒管理**:提醒分 `dialog` / `personal` 两个 scope;默认保持对话内工作集,只有职责相关且在所有由你主理的后续对话里也应继续看到的提醒才用 `personal`
30
- - **差遣牒操作**:更新任务契约(goals/constraints/progress
30
+ - **差遣牒操作**:更新任务契约(goals/constraints/progress);其中 `progress` 是全队共享、准实时、可扫读的任务公告牌
31
31
  - **上下文维护**:在不丢关键恢复线索的前提下降低认知负载
32
32
  - **回复路由**:在支线/回问语境下,区分 `tellaskBack`、`replyTellask*` 与普通文本的职责边界
33
33
 
@@ -69,4 +69,4 @@ scope 规则:
69
69
 
70
70
  - **goals**:任务目标
71
71
  - **constraints**:约束条件
72
- - **progress**:进度状态
72
+ - **progress**:面向全队同步的准实时任务公告牌 / 当前有效状态快照
@@ -63,19 +63,20 @@
63
63
 
64
64
  ### 2. 差遣牒
65
65
 
66
- 差遣牒是**任务契约**,定义任务的 goals、constraints progress。
66
+ 差遣牒是**任务契约**,也是任务执行期的**全队共享真相载体**;其中 `progress` 承担的是**准实时全队任务公告牌 / 当前有效状态快照**职责。
67
67
 
68
68
  **结构:**
69
69
 
70
70
  - **goals.md**:任务目标
71
71
  - **constraints.md**:约束条件
72
- - **progress.md**:进度状态
72
+ - **progress.md**:面向全队同步的当前有效状态、关键决策、下一步与仍成立阻塞
73
73
 
74
74
  **更新规则:**
75
75
 
76
76
  - 每次调用 `change_mind` 会替换整个章节
77
77
  - 不重置对话轮次
78
78
  - 变更对所有队友可见
79
+ - 写入 `progress` 时,应默认假设全队成员会用它快速同步“当前任务真相”,而不是阅读你的个人过程记录
79
80
 
80
81
  ## 工具概览
81
82
 
@@ -118,15 +119,29 @@
118
119
 
119
120
  - **目标变更**:当任务目标发生变化时
120
121
  - **约束调整**:当约束条件需要调整时
121
- - **进度更新**:当任务状态有重要进展时
122
+ - **进度更新**:当需要向全队同步当前有效状态、关键决策、下一步或仍成立阻塞时
122
123
 
123
124
  ### 3. 更新策略
124
125
 
125
126
  - 保持简洁:默认提醒项常见 1–3 条,优先 `update_reminder` 压缩/合并
126
- - 区分载体:团队共享决策/状态写入差遣牒,提醒项只留本地恢复所需细节
127
+ - 区分载体:需要向全队同步的当前有效状态、关键决策、下一步与仍成立阻塞,写入 `progress` 这一准实时任务公告牌;提醒项只留个人/当前对话恢复所需细节
128
+ - 面向全队:`progress` 应保持可扫读、以“当前仍有效”为准,不要退化成个人日志、流水账、临时便签或历史残影堆积
127
129
  - 换程前收束:默认优先整理成结构化接续包提醒项;若系统已把当前程切到吃紧/告急处置态,则先保留多条粗略提醒项过桥也可以;当前程只做保信息 + `clear_mind`,系统真正开启新一程后第一步再收敛
128
130
  - 拒绝原料堆积:不要把长日志/大段 tool output 直接塞进提醒项
129
131
 
132
+ ### 4. `progress` 内容取舍
133
+
134
+ - 适合写进 `progress`:
135
+ - 当前已经生效的关键决策
136
+ - 当前已确认、仍成立的 blocker
137
+ - 当前全队应共识的下一步
138
+ - 当前阶段性闭环与尚未闭环的 gap
139
+ - 不适合写进 `progress`:
140
+ - “我刚刚看了什么文件”
141
+ - “我准备先试一个小想法”
142
+ - 只对当前说话者自己有用的临时便签
143
+ - 无法判断是否仍然有效的历史痕迹
144
+
130
145
  ## 限制与注意事项
131
146
 
132
147
  1. `dialog` 提醒会随对话结束而结束;`personal` 提醒会在所有由你主理的后续对话里继续可见
@@ -11,18 +11,18 @@
11
11
  - 失败分支处理
12
12
  - 完成判据
13
13
 
14
- ## 场景 1:任务进度跟踪
14
+ ## 场景 1:提醒项工作集跟踪
15
15
 
16
16
  ### 场景描述
17
17
 
18
- 使用提醒跟踪当前任务进度。
18
+ 使用 reminders 承接当前对话的工作集:下一步、临时阻塞、易丢的 bridge 细节,而不是把它写成面向全队同步的 Taskdoc 公告牌。
19
19
 
20
20
  ### 示例
21
21
 
22
22
  ```typescript
23
- // 添加任务提醒
23
+ // 添加一条 dialog 级工作集提醒
24
24
  add_reminder({
25
- content: '当前任务: 创建 i18n 手册 [进行中]',
25
+ content: '下一步:复核 control 手册是否已经完整表达 Taskdoc progress 的公告牌语义',
26
26
  });
27
27
 
28
28
  // 只有因为这是一条职责相关提示,且在所有由你主理的后续对话里也应继续看到,
@@ -32,10 +32,10 @@ add_reminder({
32
32
  scope: 'personal',
33
33
  });
34
34
 
35
- // 任务完成后更新
35
+ // 当本地工作集细节变化后更新
36
36
  update_reminder({
37
37
  reminder_id: 'abc123de',
38
- content: '已完成: 创建 i18n 手册 [完成]',
38
+ content: '阻塞已解除:control 手册文案已与 Taskdoc progress 语义对齐',
39
39
  });
40
40
 
41
41
  // 删除已完成的提醒
@@ -46,8 +46,9 @@ delete_reminder({
46
46
 
47
47
  ### 关键点
48
48
 
49
- - 当前任务进度、临时阻塞、一次性线索默认都用 `dialog`
49
+ - 本地下一步、临时阻塞、一次性 bridge 细节默认都用 `dialog`
50
50
  - 只有职责相关、且在所有由你主理的后续对话里也应继续看到的提醒才用 `personal`
51
+ - 如果信息需要向全队同步当前有效状态、关键决策、下一步或仍成立阻塞,应写入 Taskdoc `progress`
51
52
  - 如果内容本质上是长期知识而不是当前工作集提示,应改存到 `personal_memory`
52
53
 
53
54
  ## 场景 2:支线已完成,按 assignment 头部要求调用 replyTellask
@@ -114,7 +115,7 @@ replyTellaskBack({
114
115
 
115
116
  ### 场景描述
116
117
 
117
- 更新任务进度到差遣牒。
118
+ 把当前有效状态、关键决策、下一步与仍成立阻塞公告给全队,而不是写个人流水账。
118
119
 
119
120
  ### 示例
120
121
 
@@ -122,7 +123,7 @@ replyTellaskBack({
122
123
  change_mind({
123
124
  selector: 'progress',
124
125
  content:
125
- '## Progress\n\n### 已完成\n- [x] 创建 ws_mod 手册\n- [x] 创建 team_mgmt 手册\n- [x] 创建 personal_memory 手册\n\n### 进行中\n- [ ] 创建 control 手册 [50%]\n\n### 待改进\n- [ ] 编写工具描述',
126
+ '## Progress\n\n### 当前有效状态\n- 已完成三类记忆载体边界收口,准备补 Taskdoc 公告牌属性\n\n### 已生效决策\n- `personal_memory` 不再作为短期杂物柜\n- `team_memory` 只承接团队长期共识与不变量\n\n### 下一步\n- control / team_mgmt 手册中补强 `progress` 的公告牌语义\n\n### 仍成立阻塞\n- ',
126
127
  });
127
128
  ```
128
129
 
@@ -184,15 +185,15 @@ recall_taskdoc({
184
185
 
185
186
  ### 场景描述
186
187
 
187
- 维护差遣牒的完整性和一致性。
188
+ 维护差遣牒的完整性和一致性,并确保 `progress` 始终是可供全队扫读的当前真相快照。
188
189
 
189
190
  ### 示例
190
191
 
191
192
  ```typescript
192
- // 更新进度(保持 goals progress 一致)
193
+ // 更新 progress(保持 goals / constraints / progress 一致)
193
194
  change_mind({
194
195
  selector: 'progress',
195
196
  content:
196
- '## Progress\n\n### 已完成\n- [x] 创建 ws_mod 手册 [100%]\n- [x] 创建 team_mgmt 手册 [100%]\n- [x] 创建 personal_memory 手册 [100%]\n\n### 进行中\n- [ ] 创建 control 手册 [60%]\n\n### 下一步\n- 完成 control 手册\n- 创建 os 手册',
197
+ '## Progress\n\n### 当前有效状态\n- 边界口径已统一到手册源头与测试\n\n### 已生效决策\n- 角色级资产 / personal_memory / team_memory / Taskdoc-progress / reminders 的职责已经切开\n\n### 下一步\n- 复验 control 手册、Taskdoc 展示文案与边界测试\n\n### 仍成立阻塞\n- ',
197
198
  });
198
199
  ```
@@ -232,7 +232,7 @@ update_reminder({
232
232
  change_mind({
233
233
  selector: 'progress',
234
234
  content:
235
- '## Progress\n\n### 已完成\n- [x] 创建 ws_mod 手册\n- [x] 创建 team_mgmt 手册\n\n### 进行中\n- [ ] 创建 personal_memory 手册 [80%]\n\n### 待开始\n- [ ] 创建 control 手册',
235
+ '## Progress\n\n### 当前有效状态\n- 手册边界方案已确定:角色级资产 / 个人长期经验 / Taskdoc-progress / reminders 分流\n\n### 已生效决策\n- `persona / knowhow / pitfalls` 不承接成员日常经验\n- `personal_memory` 只承接成员自己的长期可复用经验\n\n### 下一步\n- 补齐 Taskdoc `progress` 的公告牌属性说明\n\n### 仍成立阻塞\n- 无',
236
236
  });
237
237
  ```
238
238
 
@@ -273,5 +273,5 @@ message: <错误消息>
273
273
  - 默认提醒项应保持短、新、能直接指导下一步,常见 1–3 条
274
274
  - 若用于接续包,默认优先结构化内容:下一步行动、关键定位、运行/验证、容易丢的临时细节
275
275
  - 若已吃紧/告急,先保留多条粗略提醒项也可以;当前程只做保信息 + `clear_mind`,系统真正开启新一程后第一步再收敛整理
276
- - 接续包只保留差遣牒未覆盖的细节;不要重复团队共享状态
276
+ - 接续包只保留差遣牒未覆盖的细节;不要重复团队共享状态。要向全队同步“现在到哪了 / 哪些决策已生效 / 下一步是什么 / 哪些阻塞仍成立”,请写回 Taskdoc `progress`
277
277
  - 不要把长日志、大段 tool output、原始材料直接塞进提醒项
@@ -29,12 +29,14 @@ personal_memory is Dominds' **personal memory toolset** for managing an agent's
29
29
  - **Privacy**: Memory is only visible to the current agent, not shared with other members
30
30
  - **Persistence**: Memory is persisted to disk and retained after conversation restarts
31
31
  - **Structured**: Supports organizing memory by path for easy categorization and retrieval
32
+ - **Boundary**: Primarily for one member's own reusable long-lived experience and working index, not current task state
32
33
 
33
34
  Key notes:
34
35
 
35
36
  - Personal memory is automatically isolated on disk under `.minds/memory/individual/<member-id>/...`.
36
37
  - Your `path` must NOT include your member id (do not write `<member-id>/...`).
37
38
  - If you have zero memory files yet, just call `add_personal_memory` — the directory will be created automatically.
39
+ - If the content is a role's long-lived responsibilities/methods/examples, put it in `persona / knowhow / pitfalls` instead; if it should synchronize the team's current effective state, key decisions, next steps, or still-active blockers, use Taskdoc `progress`, the quasi-real-time task bulletin board; if it is only a personal/current-dialog short-term working set or continuation detail, use reminders instead.
38
40
 
39
41
  Tool list:
40
42
 
@@ -69,17 +69,22 @@ The `personal_memory` toolset uses a **path key-value storage** model:
69
69
  - Treat personal memory as a **carry-along stable-facts memo**: enable **0 ripgrep** startup within your scope.
70
70
  - Store stable facts only: **anchor points (file/symbol) + 1-line meaning + key contracts/priorities (≤3)**.
71
71
  - Fewer memory files is better: group facts that will be updated together into one file; avoid adding extra “directory-of-directory” layers.
72
+ - `personal_memory` should primarily hold knowledge that has **not** been promoted to team-defined role assets yet, but is still worth carrying forward for your own future work: your entry maps, search keywords, debugging methods, and long-lived working preferences.
72
73
  - Do not store task progress or daily state here:
73
- - Team-visible progress belongs in Taskdoc `progress`
74
- - Short-term working set belongs in reminders
74
+ - Information that must synchronize the team's current effective state, key decisions, next step, or still-active blockers belongs in Taskdoc `progress`, the quasi-real-time task bulletin board
75
+ - Personal or current-dialog short-term working set details belong in reminders
75
76
 
76
- ### 3. Usage Scenarios
77
+ ### 3. Recommended Boundaries
77
78
 
78
- - **Task persistence**: Save long-term task progress
79
- - **Context memory**: Save important information from conversation context
80
- - **Preference settings**: Save user preferences and configuration information
79
+ - **Role-level long-lived definition assets**: `persona / knowhow / pitfalls`
80
+ - **A member’s own reusable long-lived experience and working index**: `personal_memory`
81
+ - **Taskdoc `progress`**: the team-shared quasi-real-time task bulletin board for current effective state, key decisions, next steps, and still-active blockers
82
+ - **reminders**: personal or current-dialog short-term working set, continuation package, and easy-to-lose volatile details
83
+ - **Team-shared long-lived conventions / invariants / consensus rules**: `team_memory`
81
84
 
82
- > Note: If you find yourself using personal memory to store “current progress of this run”, it likely belongs in Taskdoc `progress` or reminders instead.
85
+ > Note: If the main purpose of the information is to let the team quickly synchronize on where things stand now, which decisions are in effect, what is next, or which blockers still hold, it belongs in Taskdoc `progress`, not in `personal_memory`.
86
+ >
87
+ > Likewise, if what you want to write is a role’s long-lived responsibility boundary, working method, or durable positive/negative example, it should usually live in that role’s `persona / knowhow / pitfalls`, not in `personal_memory`.
83
88
 
84
89
  ## Relationship with Other Tools
85
90