dominds 1.8.9 → 1.8.10

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 (195) hide show
  1. package/README.md +17 -0
  2. package/README.zh.md +17 -0
  3. package/dist/access-control.d.ts +9 -1
  4. package/dist/access-control.js +0 -8
  5. package/dist/apps/assigned-port.d.ts +1 -1
  6. package/dist/apps/dialog-run-controls.d.ts +1 -1
  7. package/dist/apps/resolution-file.d.ts +1 -1
  8. package/dist/apps/resolution-file.js +1 -1
  9. package/dist/apps/run-app-json.d.ts +1 -1
  10. package/dist/apps/run-app-json.js +1 -1
  11. package/dist/apps/run-control.d.ts +1 -1
  12. package/dist/apps-host/client.d.ts +2 -2
  13. package/dist/apps-host/ipc-types.d.ts +2 -2
  14. package/dist/course-transition.d.ts +1 -1
  15. package/dist/dialog-display-state.d.ts +3 -3
  16. package/dist/dialog-fork.d.ts +1 -1
  17. package/dist/dialog-fork.js +1 -1
  18. package/dist/dialog.d.ts +25 -7
  19. package/dist/dialog.js +7 -20
  20. package/dist/evt-registry.d.ts +1 -1
  21. package/dist/llm/client.d.ts +1 -81
  22. package/dist/llm/gen/anthropic.d.ts +1 -1
  23. package/dist/llm/gen.d.ts +2 -2
  24. package/dist/llm/kernel-driver/context-health.d.ts +1 -1
  25. package/dist/llm/kernel-driver/drive.js +6 -3
  26. package/dist/llm/kernel-driver/events.d.ts +1 -1
  27. package/dist/llm/kernel-driver/guardrails.d.ts +1 -1
  28. package/dist/llm/kernel-driver/runtime.js +2 -2
  29. package/dist/llm/kernel-driver/subdialog.js +1 -1
  30. package/dist/llm/kernel-driver/tellask-special.js +1 -1
  31. package/dist/llm/kernel-driver/types.d.ts +2 -2
  32. package/dist/llm/tools-projection.d.ts +1 -1
  33. package/dist/minds/minds-i18n.d.ts +1 -1
  34. package/dist/minds/system-prompt-parts.d.ts +1 -1
  35. package/dist/minds/system-prompt.d.ts +1 -1
  36. package/dist/persistence.d.ts +4 -4
  37. package/dist/persistence.js +2 -2
  38. package/dist/priming.d.ts +3 -3
  39. package/dist/priming.js +1 -1
  40. package/dist/problems.d.ts +2 -2
  41. package/dist/server/api-routes.js +1 -6
  42. package/dist/server/create-dialog-contract.d.ts +1 -1
  43. package/dist/server/setup-routes.d.ts +1 -1
  44. package/dist/server/snippets-routes.d.ts +1 -1
  45. package/dist/server/websocket-handler.d.ts +2 -2
  46. package/dist/server/websocket-handler.js +1 -1
  47. package/dist/shared/diligence.d.ts +1 -1
  48. package/dist/shared/i18n/driver-messages.d.ts +2 -1
  49. package/dist/shared/i18n/driver-messages.js +46 -5
  50. package/dist/shared/i18n/text.d.ts +2 -2
  51. package/dist/shared/i18n/tool-result-messages.d.ts +1 -1
  52. package/dist/shared/runtime-language.d.ts +1 -1
  53. package/dist/shared/runtime-language.js +1 -1
  54. package/dist/shared/utils/fbr.d.ts +1 -1
  55. package/dist/shared/utils/inter-dialog-format.d.ts +1 -1
  56. package/dist/skills/load.d.ts +1 -1
  57. package/dist/team-config-updates.d.ts +1 -1
  58. package/dist/tool.d.ts +10 -19
  59. package/dist/tools/app-reminders.d.ts +1 -1
  60. package/dist/tools/manual/render.d.ts +1 -1
  61. package/dist/tools/manual/schema.d.ts +1 -1
  62. package/dist/tools/manual/spec.d.ts +1 -1
  63. package/dist/tools/mem.js +0 -6
  64. package/dist/tools/registry-snapshot.d.ts +1 -1
  65. package/dist/tools/registry.d.ts +7 -2
  66. package/dist/tools/registry.js +0 -5
  67. package/dist/tools/toolset-manual.d.ts +1 -1
  68. package/dist/tools/txt.js +0 -6
  69. package/dist/utils/task-package.d.ts +1 -1
  70. package/package.json +5 -4
  71. package/webapp/dist/assets/{_basePickBy-BCETjyvF.js → _basePickBy-C8hJ6yKK.js} +3 -3
  72. package/webapp/dist/assets/{_basePickBy-BCETjyvF.js.map → _basePickBy-C8hJ6yKK.js.map} +1 -1
  73. package/webapp/dist/assets/{_baseUniq-fLqPJO5i.js → _baseUniq-DRQfuMfl.js} +2 -2
  74. package/webapp/dist/assets/{_baseUniq-fLqPJO5i.js.map → _baseUniq-DRQfuMfl.js.map} +1 -1
  75. package/webapp/dist/assets/{arc-BzFkK7IZ.js → arc-B_wpZocz.js} +2 -2
  76. package/webapp/dist/assets/{arc-BzFkK7IZ.js.map → arc-B_wpZocz.js.map} +1 -1
  77. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-D_hKK43_.js → architectureDiagram-VXUJARFQ-DXAPwtSX.js} +7 -7
  78. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-D_hKK43_.js.map → architectureDiagram-VXUJARFQ-DXAPwtSX.js.map} +1 -1
  79. package/webapp/dist/assets/{blockDiagram-VD42YOAC-CgWXic7v.js → blockDiagram-VD42YOAC-BIDI5Cy0.js} +7 -7
  80. package/webapp/dist/assets/{blockDiagram-VD42YOAC-CgWXic7v.js.map → blockDiagram-VD42YOAC-BIDI5Cy0.js.map} +1 -1
  81. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-COqGeM2S.js → c4Diagram-YG6GDRKO-N_7HPcit.js} +3 -3
  82. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-COqGeM2S.js.map → c4Diagram-YG6GDRKO-N_7HPcit.js.map} +1 -1
  83. package/webapp/dist/assets/{channel-8XkSzwJl.js → channel-Dzb_rdsn.js} +2 -2
  84. package/webapp/dist/assets/{channel-8XkSzwJl.js.map → channel-Dzb_rdsn.js.map} +1 -1
  85. package/webapp/dist/assets/{chunk-4BX2VUAB-B_R1ldB5.js → chunk-4BX2VUAB-XUZD2Pdn.js} +2 -2
  86. package/webapp/dist/assets/{chunk-4BX2VUAB-B_R1ldB5.js.map → chunk-4BX2VUAB-XUZD2Pdn.js.map} +1 -1
  87. package/webapp/dist/assets/{chunk-55IACEB6-DosUiRle.js → chunk-55IACEB6-C2UBsTCy.js} +2 -2
  88. package/webapp/dist/assets/{chunk-55IACEB6-DosUiRle.js.map → chunk-55IACEB6-C2UBsTCy.js.map} +1 -1
  89. package/webapp/dist/assets/{chunk-B4BG7PRW-CPvx_wxK.js → chunk-B4BG7PRW-DTp6SYXa.js} +5 -5
  90. package/webapp/dist/assets/{chunk-B4BG7PRW-CPvx_wxK.js.map → chunk-B4BG7PRW-DTp6SYXa.js.map} +1 -1
  91. package/webapp/dist/assets/{chunk-DI55MBZ5-CtfFQBra.js → chunk-DI55MBZ5-DH9L614H.js} +4 -4
  92. package/webapp/dist/assets/{chunk-DI55MBZ5-CtfFQBra.js.map → chunk-DI55MBZ5-DH9L614H.js.map} +1 -1
  93. package/webapp/dist/assets/{chunk-FMBD7UC4-BZJDYQUQ.js → chunk-FMBD7UC4-DHWcMnCh.js} +2 -2
  94. package/webapp/dist/assets/{chunk-FMBD7UC4-BZJDYQUQ.js.map → chunk-FMBD7UC4-DHWcMnCh.js.map} +1 -1
  95. package/webapp/dist/assets/{chunk-QN33PNHL-CazyQzCZ.js → chunk-QN33PNHL-BOIBicxV.js} +2 -2
  96. package/webapp/dist/assets/{chunk-QN33PNHL-CazyQzCZ.js.map → chunk-QN33PNHL-BOIBicxV.js.map} +1 -1
  97. package/webapp/dist/assets/{chunk-QZHKN3VN-H39jWkGz.js → chunk-QZHKN3VN-DN1oI6nK.js} +2 -2
  98. package/webapp/dist/assets/{chunk-QZHKN3VN-H39jWkGz.js.map → chunk-QZHKN3VN-DN1oI6nK.js.map} +1 -1
  99. package/webapp/dist/assets/{chunk-TZMSLE5B-T3mACKEk.js → chunk-TZMSLE5B-LJiVG7pu.js} +2 -2
  100. package/webapp/dist/assets/{chunk-TZMSLE5B-T3mACKEk.js.map → chunk-TZMSLE5B-LJiVG7pu.js.map} +1 -1
  101. package/webapp/dist/assets/{classDiagram-2ON5EDUG-BzJbZNmh.js → classDiagram-2ON5EDUG-BGx9XLqP.js} +6 -6
  102. package/webapp/dist/assets/{classDiagram-2ON5EDUG-BzJbZNmh.js.map → classDiagram-2ON5EDUG-BGx9XLqP.js.map} +1 -1
  103. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-BzJbZNmh.js → classDiagram-v2-WZHVMYZB-BGx9XLqP.js} +6 -6
  104. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-BzJbZNmh.js.map → classDiagram-v2-WZHVMYZB-BGx9XLqP.js.map} +1 -1
  105. package/webapp/dist/assets/{clone-Big4mBmE.js → clone-CLJ3hkWa.js} +2 -2
  106. package/webapp/dist/assets/{clone-Big4mBmE.js.map → clone-CLJ3hkWa.js.map} +1 -1
  107. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-jAw41QnJ.js → cose-bilkent-S5V4N54A-bTUWYtqm.js} +2 -2
  108. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-jAw41QnJ.js.map → cose-bilkent-S5V4N54A-bTUWYtqm.js.map} +1 -1
  109. package/webapp/dist/assets/{dagre-6UL2VRFP-D3MEMYv5.js → dagre-6UL2VRFP-Dx2-08zX.js} +7 -7
  110. package/webapp/dist/assets/{dagre-6UL2VRFP-D3MEMYv5.js.map → dagre-6UL2VRFP-Dx2-08zX.js.map} +1 -1
  111. package/webapp/dist/assets/{diagram-PSM6KHXK-CWyVYAZu.js → diagram-PSM6KHXK-CaqjCMhu.js} +8 -8
  112. package/webapp/dist/assets/{diagram-PSM6KHXK-CWyVYAZu.js.map → diagram-PSM6KHXK-CaqjCMhu.js.map} +1 -1
  113. package/webapp/dist/assets/{diagram-QEK2KX5R-CUYJiFCE.js → diagram-QEK2KX5R-CNtV7L65.js} +7 -7
  114. package/webapp/dist/assets/{diagram-QEK2KX5R-CUYJiFCE.js.map → diagram-QEK2KX5R-CNtV7L65.js.map} +1 -1
  115. package/webapp/dist/assets/{diagram-S2PKOQOG-BGfyTOuE.js → diagram-S2PKOQOG-KfLA54rd.js} +7 -7
  116. package/webapp/dist/assets/{diagram-S2PKOQOG-BGfyTOuE.js.map → diagram-S2PKOQOG-KfLA54rd.js.map} +1 -1
  117. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-T0nE1xLf.js → erDiagram-Q2GNP2WA-BxXLN3g7.js} +5 -5
  118. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-T0nE1xLf.js.map → erDiagram-Q2GNP2WA-BxXLN3g7.js.map} +1 -1
  119. package/webapp/dist/assets/{flowDiagram-NV44I4VS-BOtJbmb2.js → flowDiagram-NV44I4VS-DUcdld8A.js} +6 -6
  120. package/webapp/dist/assets/{flowDiagram-NV44I4VS-BOtJbmb2.js.map → flowDiagram-NV44I4VS-DUcdld8A.js.map} +1 -1
  121. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BKHc1SN2.js → ganttDiagram-JELNMOA3-JnCDigk1.js} +3 -3
  122. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BKHc1SN2.js.map → ganttDiagram-JELNMOA3-JnCDigk1.js.map} +1 -1
  123. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-DEs6Jd7A.js → gitGraphDiagram-V2S2FVAM-DvCOOMqv.js} +8 -8
  124. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-DEs6Jd7A.js.map → gitGraphDiagram-V2S2FVAM-DvCOOMqv.js.map} +1 -1
  125. package/webapp/dist/assets/{graph-B8rBjt0j.js → graph-CrHiw8ie.js} +3 -3
  126. package/webapp/dist/assets/{graph-B8rBjt0j.js.map → graph-CrHiw8ie.js.map} +1 -1
  127. package/webapp/dist/assets/{index-BBpM4Vs4.js → index-YIaAm3C1.js} +57 -33
  128. package/webapp/dist/assets/{index-BBpM4Vs4.js.map → index-YIaAm3C1.js.map} +1 -1
  129. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BGHKQMyS.js → infoDiagram-HS3SLOUP-32WFJdCO.js} +6 -6
  130. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BGHKQMyS.js.map → infoDiagram-HS3SLOUP-32WFJdCO.js.map} +1 -1
  131. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-C5zIhegj.js → journeyDiagram-XKPGCS4Q-bzp4a134.js} +5 -5
  132. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-C5zIhegj.js.map → journeyDiagram-XKPGCS4Q-bzp4a134.js.map} +1 -1
  133. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-714VVE1e.js → kanban-definition-3W4ZIXB7-CKzmE6w4.js} +3 -3
  134. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-714VVE1e.js.map → kanban-definition-3W4ZIXB7-CKzmE6w4.js.map} +1 -1
  135. package/webapp/dist/assets/{layout-DprNh9sN.js → layout-1PVvUgz5.js} +5 -5
  136. package/webapp/dist/assets/{layout-DprNh9sN.js.map → layout-1PVvUgz5.js.map} +1 -1
  137. package/webapp/dist/assets/{linear-BWG2T2oB.js → linear-CQxneL9_.js} +2 -2
  138. package/webapp/dist/assets/{linear-BWG2T2oB.js.map → linear-CQxneL9_.js.map} +1 -1
  139. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-DQb2l3T_.js → mindmap-definition-VGOIOE7T-5d_MpeSf.js} +4 -4
  140. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-DQb2l3T_.js.map → mindmap-definition-VGOIOE7T-5d_MpeSf.js.map} +1 -1
  141. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-Do6Tc-Qs.js → pieDiagram-ADFJNKIX-Phz9V9S9.js} +8 -8
  142. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-Do6Tc-Qs.js.map → pieDiagram-ADFJNKIX-Phz9V9S9.js.map} +1 -1
  143. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-lfpxvyP1.js → quadrantDiagram-AYHSOK5B-DhY66aqk.js} +3 -3
  144. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-lfpxvyP1.js.map → quadrantDiagram-AYHSOK5B-DhY66aqk.js.map} +1 -1
  145. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-Dn4Cnusj.js → requirementDiagram-UZGBJVZJ-BKCTE3ev.js} +4 -4
  146. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-Dn4Cnusj.js.map → requirementDiagram-UZGBJVZJ-BKCTE3ev.js.map} +1 -1
  147. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-CcpDMXKi.js → sankeyDiagram-TZEHDZUN-CyfeAnll.js} +2 -2
  148. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-CcpDMXKi.js.map → sankeyDiagram-TZEHDZUN-CyfeAnll.js.map} +1 -1
  149. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-TfHPlNvp.js → sequenceDiagram-WL72ISMW-RyK9j-sB.js} +4 -4
  150. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-TfHPlNvp.js.map → sequenceDiagram-WL72ISMW-RyK9j-sB.js.map} +1 -1
  151. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-CrqtuS-o.js → stateDiagram-FKZM4ZOC-DK9GHWGV.js} +9 -9
  152. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-CrqtuS-o.js.map → stateDiagram-FKZM4ZOC-DK9GHWGV.js.map} +1 -1
  153. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-CwYGywpf.js → stateDiagram-v2-4FDKWEC3-CfUBvaXU.js} +5 -5
  154. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-CwYGywpf.js.map → stateDiagram-v2-4FDKWEC3-CfUBvaXU.js.map} +1 -1
  155. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-DoP5HyAE.js → timeline-definition-IT6M3QCI-CVBZPyrb.js} +3 -3
  156. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-DoP5HyAE.js.map → timeline-definition-IT6M3QCI-CVBZPyrb.js.map} +1 -1
  157. package/webapp/dist/assets/{treemap-GDKQZRPO-3rSE1o-R.js → treemap-GDKQZRPO-BepTQXv6.js} +5 -5
  158. package/webapp/dist/assets/{treemap-GDKQZRPO-3rSE1o-R.js.map → treemap-GDKQZRPO-BepTQXv6.js.map} +1 -1
  159. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DFTw6wXn.js → xychartDiagram-PRI3JC2R-CcskGEOH.js} +3 -3
  160. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DFTw6wXn.js.map → xychartDiagram-PRI3JC2R-CcskGEOH.js.map} +1 -1
  161. package/webapp/dist/index.html +1 -1
  162. package/dist/apps/app-json.d.ts +0 -127
  163. package/dist/apps/app-json.js +0 -241
  164. package/dist/apps-host/app-host-contract.d.ts +0 -87
  165. package/dist/apps-host/app-host-contract.js +0 -2
  166. package/dist/shared/types/context-health.d.ts +0 -33
  167. package/dist/shared/types/context-health.js +0 -2
  168. package/dist/shared/types/dialog.d.ts +0 -403
  169. package/dist/shared/types/dialog.js +0 -11
  170. package/dist/shared/types/display-state.d.ts +0 -56
  171. package/dist/shared/types/display-state.js +0 -15
  172. package/dist/shared/types/drive-intent.d.ts +0 -36
  173. package/dist/shared/types/drive-intent.js +0 -2
  174. package/dist/shared/types/i18n.d.ts +0 -2
  175. package/dist/shared/types/i18n.js +0 -2
  176. package/dist/shared/types/index.d.ts +0 -109
  177. package/dist/shared/types/index.js +0 -27
  178. package/dist/shared/types/language.d.ts +0 -10
  179. package/dist/shared/types/language.js +0 -40
  180. package/dist/shared/types/priming.d.ts +0 -55
  181. package/dist/shared/types/priming.js +0 -2
  182. package/dist/shared/types/problems.d.ts +0 -128
  183. package/dist/shared/types/problems.js +0 -2
  184. package/dist/shared/types/q4h.d.ts +0 -14
  185. package/dist/shared/types/q4h.js +0 -7
  186. package/dist/shared/types/setup.d.ts +0 -170
  187. package/dist/shared/types/setup.js +0 -2
  188. package/dist/shared/types/snippets.d.ts +0 -68
  189. package/dist/shared/types/snippets.js +0 -2
  190. package/dist/shared/types/storage.d.ts +0 -677
  191. package/dist/shared/types/storage.js +0 -87
  192. package/dist/shared/types/tools-registry.d.ts +0 -19
  193. package/dist/shared/types/tools-registry.js +0 -2
  194. package/dist/shared/types/wire.d.ts +0 -227
  195. package/dist/shared/types/wire.js +0 -18
package/README.md CHANGED
@@ -225,6 +225,23 @@ dominds
225
225
  3. In the app, create a new dialog with **shadow member** `@fuxi` (Fuxi is hidden by default; use the “Shadow members” picker in the dialog creation modal). Until you add visible members, you’ll mostly work through shadow members.
226
226
  4. Tell `@fuxi` your product idea and ask it to propose and apply a suitable agentic team configuration by updating `.minds/team.yaml` (Fuxi has the `team_mgmt` toolset scoped to `.minds/**`).
227
227
 
228
+ ## Build from source
229
+
230
+ When developing Dominds itself, use the integrated build entry from the repo root:
231
+
232
+ ```bash
233
+ pnpm run clean
234
+ pnpm run build
235
+ pnpm run lint:types
236
+ ```
237
+
238
+ Notes:
239
+
240
+ - `pnpm run build` is the canonical full build. It runs backend first, then frontend.
241
+ - `pnpm run build:backend` and `pnpm run build:frontend` are sub-steps for focused debugging. They are not the recommended "full rebuild" command.
242
+ - Do not manually run multiple top-level build commands in parallel. They share `dist/` outputs, so concurrent runs can create racey, misleading results.
243
+ - The backend build may still let pnpm build independent workspace packages concurrently according to the workspace dependency graph. That scheduler-controlled concurrency is expected.
244
+
228
245
  ## Core Philosophy
229
246
 
230
247
  Dominds is designed for long-running product development and operations, with a “division of labor” constitution:
package/README.zh.md CHANGED
@@ -106,6 +106,23 @@ https://github.com/longrun-ai/dominds-feat-dev
106
106
  - `--shared-rtws` 仅用于调试,会直接使用 `tests/script-rtws`,禁止并发运行多个用例。
107
107
  - 需要保留失败现场时,设置 `DOMINDS_TEST_RTWS_KEEP_TMP=1`,测试 CLI 会保留临时 rtws 路径。
108
108
 
109
+ ### 本仓库源码构建
110
+
111
+ 开发 Dominds 本体时,推荐把仓库根目录下的完整构建入口当成唯一标准用法:
112
+
113
+ ```bash
114
+ pnpm run clean
115
+ pnpm run build
116
+ pnpm run lint:types
117
+ ```
118
+
119
+ 说明:
120
+
121
+ - `pnpm run build` 才是标准的一体构建入口;它会先构建 backend,再构建 frontend。
122
+ - `pnpm run build:backend` / `pnpm run build:frontend` 只是便于聚焦排障的子步骤,不应被当成“完整重建”的推荐命令。
123
+ - 不要手工并行执行多个顶层构建命令,例如同时跑两个 `pnpm run build`,或把 `pnpm run build` 与 `pnpm run build:backend` 并行跑。它们会共享 `dist/` 产物目录,容易制造竞态与误导性结果。
124
+ - `build:backend` 内部的 `pnpm -r ... run build` 仍可能按依赖图并发构建彼此独立的 workspace package;这是 pnpm 调度器控制的正常行为,与“手工并行多个顶层 build”不是一回事。
125
+
109
126
  ## 快速上手(推荐:通过模板创建运行时工作区)
110
127
 
111
128
  ```bash
@@ -1,4 +1,12 @@
1
- import type { LanguageCode } from './shared/types/language';
1
+ /**
2
+ * Module: access-control
3
+ *
4
+ * Directory/file-extension based access control helpers:
5
+ * - `matchesPattern` for glob-like directory scope matching (supports `*` and `**`)
6
+ * - `hasReadAccess`/`hasWriteAccess` to evaluate member permissions
7
+ * - `getAccessDeniedMessage` to format denial responses
8
+ */
9
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
2
10
  import { Team } from './team';
3
11
  /**
4
12
  * Directory-specific pattern matching for access control.
@@ -7,14 +7,6 @@ exports.matchesPattern = matchesPattern;
7
7
  exports.hasReadAccess = hasReadAccess;
8
8
  exports.hasWriteAccess = hasWriteAccess;
9
9
  exports.getAccessDeniedMessage = getAccessDeniedMessage;
10
- /**
11
- * Module: access-control
12
- *
13
- * Directory/file-extension based access control helpers:
14
- * - `matchesPattern` for glob-like directory scope matching (supports `*` and `**`)
15
- * - `hasReadAccess`/`hasWriteAccess` to evaluate member permissions
16
- * - `getAccessDeniedMessage` to format denial responses
17
- */
18
10
  const path_1 = __importDefault(require("path"));
19
11
  const log_1 = require("./log");
20
12
  function isEncapsulatedTaskPath(targetPath) {
@@ -1,4 +1,4 @@
1
- import type { DomindsAppInstallJsonV1 } from './app-json';
1
+ import type { DomindsAppInstallJsonV1 } from '@longrun-ai/kernel/app-json';
2
2
  import type { AppsResolutionEntry } from './resolution-file';
3
3
  export type AssignedPortResolutionReason = 'no_frontend' | 'kept_existing' | 'selected_default' | 'allocated_stable_range' | 'reassigned_from_existing_conflict' | 'reassigned_from_existing_unbindable';
4
4
  export type AssignedPortResolution = Readonly<{
@@ -1,4 +1,4 @@
1
- import type { I18nText } from '../shared/types/i18n';
1
+ import type { I18nText } from '@longrun-ai/kernel/types/i18n';
2
2
  export type AppDialogRunControlMeta = Readonly<{
3
3
  appId: string;
4
4
  descriptionI18n?: I18nText;
@@ -1,4 +1,4 @@
1
- import type { DomindsAppInstallJsonV1 } from './app-json';
1
+ import { type DomindsAppInstallJsonV1 } from '@longrun-ai/kernel/app-json';
2
2
  export type AppsResolutionSchemaVersion = 1;
3
3
  export type AppsResolutionSource = Readonly<{
4
4
  kind: 'npx';
@@ -15,7 +15,7 @@ exports.setResolvedAppAssignedPort = setResolvedAppAssignedPort;
15
15
  const promises_1 = __importDefault(require("node:fs/promises"));
16
16
  const node_path_1 = __importDefault(require("node:path"));
17
17
  const yaml_1 = __importDefault(require("yaml"));
18
- const app_json_1 = require("./app-json");
18
+ const app_json_1 = require("@longrun-ai/kernel/app-json");
19
19
  exports.APPS_RESOLUTION_REL_PATH = node_path_1.default.join('.apps', 'resolution.yaml');
20
20
  function isRecord(v) {
21
21
  return typeof v === 'object' && v !== null && !Array.isArray(v);
@@ -1,4 +1,4 @@
1
- import { type DomindsAppInstallJsonV1 } from './app-json';
1
+ import { type DomindsAppInstallJsonV1 } from '@longrun-ai/kernel/app-json';
2
2
  export declare function runDomindsAppJsonViaNpx(params: {
3
3
  spec: string;
4
4
  cwdAbs: string;
@@ -9,7 +9,7 @@ const child_process_1 = require("child_process");
9
9
  const promises_1 = __importDefault(require("fs/promises"));
10
10
  const path_1 = __importDefault(require("path"));
11
11
  const util_1 = require("util");
12
- const app_json_1 = require("./app-json");
12
+ const app_json_1 = require("@longrun-ai/kernel/app-json");
13
13
  const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
14
14
  function isRecord(v) {
15
15
  return typeof v === 'object' && v !== null && !Array.isArray(v);
@@ -1,4 +1,4 @@
1
- import type { DomindsAppRunControlContext, DomindsAppRunControlResult } from '../apps-host/app-host-contract';
1
+ import type { DomindsAppRunControlContext, DomindsAppRunControlResult } from '@longrun-ai/kernel/app-host-contract';
2
2
  export declare function applyAppDialogRunControl(params: {
3
3
  controlId: string;
4
4
  payload: DomindsAppRunControlContext;
@@ -1,7 +1,7 @@
1
- import type { DomindsAppHostReminderUpdateResult, DomindsAppHostToolResult, DomindsAppInstallJsonV1, DomindsAppReminderApplyRequest, DomindsAppReminderApplyResult } from '../apps/app-json';
1
+ import type { DomindsAppDynamicToolsetsContext, DomindsAppReminderOwnerApplyContext, DomindsAppReminderOwnerRenderContext, DomindsAppReminderOwnerUpdateContext, DomindsAppRunControlContext, DomindsAppRunControlResult } from '@longrun-ai/kernel/app-host-contract';
2
+ import type { DomindsAppHostReminderUpdateResult, DomindsAppHostToolResult, DomindsAppInstallJsonV1, DomindsAppReminderApplyRequest, DomindsAppReminderApplyResult } from '@longrun-ai/kernel/app-json';
2
3
  import type { ChatMessage } from '../llm/client';
3
4
  import type { ToolArguments } from '../tool';
4
- import type { DomindsAppDynamicToolsetsContext, DomindsAppReminderOwnerApplyContext, DomindsAppReminderOwnerRenderContext, DomindsAppReminderOwnerUpdateContext, DomindsAppRunControlContext, DomindsAppRunControlResult } from './app-host-contract';
5
5
  import type { AppsHostMessageToKernel } from './ipc-types';
6
6
  export type EnabledAppForHost = Readonly<{
7
7
  appId: string;
@@ -1,6 +1,6 @@
1
- import type { DomindsAppDialogReminderRequestBatch, DomindsAppHostReminderUpdateResult, DomindsAppInstallJsonV1, DomindsAppReminderApplyRequest, DomindsAppReminderApplyResult, DomindsAppReminderState } from '../apps/app-json';
1
+ import type { DomindsAppDialogReminderRequestBatch, DomindsAppHostReminderUpdateResult, DomindsAppInstallJsonV1, DomindsAppReminderApplyRequest, DomindsAppReminderApplyResult, DomindsAppReminderState } from '@longrun-ai/kernel/app-json';
2
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
2
3
  import type { ChatMessage } from '../llm/client';
3
- import type { LanguageCode } from '../shared/types/language';
4
4
  import type { ToolArguments, ToolCallOutput } from '../tool';
5
5
  export type AppsHostKernelInitMessage = Readonly<{
6
6
  type: 'init';
@@ -1,4 +1,4 @@
1
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
1
2
  import type { Dialog } from './dialog';
2
- import type { LanguageCode } from './shared/types/language';
3
3
  export declare function buildClearedMindInvalidationNotice(language: LanguageCode): string;
4
4
  export declare function notifyWaitingDialogsOfClearedMind(dialog: Dialog): Promise<number>;
@@ -15,10 +15,10 @@
15
15
  * - Broadcasting is optional: when configured, display-state updates are pushed to all WS clients
16
16
  * so multi-tab views converge without polling.
17
17
  */
18
+ import type { DialogDisplayState, DialogInterruptionReason } from '@longrun-ai/kernel/types/display-state';
19
+ import type { DialogExecutionMarker } from '@longrun-ai/kernel/types/storage';
20
+ import type { WebSocketMessage } from '@longrun-ai/kernel/types/wire';
18
21
  import { DialogID, type Dialog } from './dialog';
19
- import type { DialogDisplayState, DialogInterruptionReason } from './shared/types/display-state';
20
- import type { DialogExecutionMarker } from './shared/types/storage';
21
- import type { WebSocketMessage } from './shared/types/wire';
22
22
  type StopRequestedReason = 'user_stop' | 'emergency_stop';
23
23
  export type RunControlCountsSnapshot = {
24
24
  proceeding: number;
@@ -1,4 +1,4 @@
1
- import type { DialogStatusKind } from './shared/types/wire';
1
+ import type { DialogStatusKind } from '@longrun-ai/kernel/types/wire';
2
2
  type ForkDialogAction = Readonly<{
3
3
  kind: 'draft_user_text';
4
4
  userText: string;
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.forkRootDialogTreeAtGeneration = forkRootDialogTreeAtGeneration;
7
7
  const promises_1 = __importDefault(require("node:fs/promises"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
+ const storage_1 = require("@longrun-ai/kernel/types/storage");
9
10
  const dialog_1 = require("./dialog");
10
11
  const persistence_1 = require("./persistence");
11
- const storage_1 = require("./shared/types/storage");
12
12
  const time_1 = require("./shared/utils/time");
13
13
  const id_1 = require("./utils/id");
14
14
  const FORK_BASELINE_ANCHOR = (0, storage_1.toRootGenerationAnchor)({
package/dist/dialog.d.ts CHANGED
@@ -1,9 +1,23 @@
1
+ /**
2
+ * Module: dialog
3
+ *
4
+ * Provides the `Dialog` object for orchestrating conversations:
5
+ * - Tracks messages, agent identity, optional supdialog/subdialog relationships
6
+ * - Receivers for streaming LLM output and tool results
7
+ * - Helpers for spawning subdialogs and prompting human input
8
+ * - Persistence support for dialog state and message history
9
+ *
10
+ * Architecture (Phase 2):
11
+ * - `Dialog` - Abstract base class for all dialogs
12
+ * - `RootDialog` - Root dialog with subdialog registry
13
+ * - `SubDialog` - Subdialog with root dialog reference and dynamic supdialog resolution
14
+ */
15
+ import type { ContextHealthSnapshot } from '@longrun-ai/kernel/types/context-health';
16
+ import type { DialogEvent, ReminderContent, WebSearchCallAction } from '@longrun-ai/kernel/types/dialog';
17
+ import type { DialogPrompt, DialogRunControlSpec, DialogSubdialogReplyTarget, DriveIntent } from '@longrun-ai/kernel/types/drive-intent';
18
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
19
+ import type { CalleeCourseNumber, CalleeGenerationSeqNumber, CallingCourseNumber, DialogMetadataFile, HumanQuestion, ProviderData, ReasoningPayload, ToolArguments as StoredToolArguments } from '@longrun-ai/kernel/types/storage';
1
20
  import { ChatMessage, FuncResultMsg } from './llm/client';
2
- import type { ContextHealthSnapshot } from './shared/types/context-health';
3
- import type { DialogEvent, ReminderContent, WebSearchCallAction } from './shared/types/dialog';
4
- import type { DialogPrompt, DialogRunControlSpec, DialogSubdialogReplyTarget, DriveIntent } from './shared/types/drive-intent';
5
- import type { LanguageCode } from './shared/types/language';
6
- import type { CalleeCourseNumber, CalleeGenerationSeqNumber, CallingCourseNumber, DialogMetadataFile, HumanQuestion, ProviderData, ReasoningPayload, ToolArguments as StoredToolArguments } from './shared/types/storage';
7
21
  import type { JsonValue } from './tool';
8
22
  import { Reminder, ReminderOptions, ReminderOwner } from './tool';
9
23
  type NewCourseHookResult = {
@@ -30,6 +44,9 @@ type NewCourseHook = (args: {
30
44
  prompt: DialogPrompt;
31
45
  runControl?: DialogRunControlSpec;
32
46
  }) => Promise<NewCourseHookResult>;
47
+ export type DialogSuspensionStatusOptions = Readonly<{
48
+ allowPendingSubdialogs?: boolean;
49
+ }>;
33
50
  export declare class DialogID {
34
51
  readonly selfId: string;
35
52
  readonly rootId: string;
@@ -196,13 +213,14 @@ export declare abstract class Dialog {
196
213
  /**
197
214
  * Check if dialog can be driven (not suspended for Q4H or subdialogs).
198
215
  */
199
- canDrive(): Promise<boolean>;
216
+ canDrive(options?: DialogSuspensionStatusOptions): Promise<boolean>;
200
217
  /**
201
218
  * Get suspension status for logging/debugging.
202
219
  */
203
- getSuspensionStatus(): Promise<{
220
+ getSuspensionStatus(options?: DialogSuspensionStatusOptions): Promise<{
204
221
  q4h: boolean;
205
222
  subdialogs: boolean;
223
+ blockingSubdialogs: boolean;
206
224
  canDrive: boolean;
207
225
  }>;
208
226
  get pendingSubdialogIds(): ReadonlyArray<DialogID>;
package/dist/dialog.js CHANGED
@@ -34,20 +34,6 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.DialogStore = exports.RootDialog = exports.SubDialog = exports.Dialog = exports.DialogID = void 0;
37
- /**
38
- * Module: dialog
39
- *
40
- * Provides the `Dialog` object for orchestrating conversations:
41
- * - Tracks messages, agent identity, optional supdialog/subdialog relationships
42
- * - Receivers for streaming LLM output and tool results
43
- * - Helpers for spawning subdialogs and prompting human input
44
- * - Persistence support for dialog state and message history
45
- *
46
- * Architecture (Phase 2):
47
- * - `Dialog` - Abstract base class for all dialogs
48
- * - `RootDialog` - Root dialog with subdialog registry
49
- * - `SubDialog` - Subdialog with root dialog reference and dynamic supdialog resolution
50
- */
51
37
  const util_1 = require("util");
52
38
  const evt_registry_1 = require("./evt-registry");
53
39
  const log_1 = require("./log");
@@ -314,21 +300,22 @@ class Dialog {
314
300
  /**
315
301
  * Check if dialog can be driven (not suspended for Q4H or subdialogs).
316
302
  */
317
- async canDrive() {
318
- const hasQ4H = await this.hasPendingQ4H();
319
- const hasSubdialogs = await this.hasPendingSubdialogs();
320
- return !hasQ4H && !hasSubdialogs;
303
+ async canDrive(options) {
304
+ const suspension = await this.getSuspensionStatus(options);
305
+ return suspension.canDrive;
321
306
  }
322
307
  /**
323
308
  * Get suspension status for logging/debugging.
324
309
  */
325
- async getSuspensionStatus() {
310
+ async getSuspensionStatus(options) {
326
311
  const hasQ4H = await this.hasPendingQ4H();
327
312
  const hasSubdialogs = await this.hasPendingSubdialogs();
313
+ const blockingSubdialogs = hasSubdialogs && options?.allowPendingSubdialogs !== true;
328
314
  return {
329
315
  q4h: hasQ4H,
330
316
  subdialogs: hasSubdialogs,
331
- canDrive: !hasQ4H && !hasSubdialogs,
317
+ blockingSubdialogs,
318
+ canDrive: !hasQ4H && !blockingSubdialogs,
332
319
  };
333
320
  }
334
321
  get pendingSubdialogIds() {
@@ -4,9 +4,9 @@
4
4
  * PubChan registry for managing dialog event streams.
5
5
  * Maps dialog IDs to PubChans for real-time event streaming during dialog driving.
6
6
  */
7
+ import type { DialogEvent, DialogEventBase, TypedDialogEvent } from '@longrun-ai/kernel/types/dialog';
7
8
  import { Dialog, DialogID } from './dialog';
8
9
  import { PubChan, SubChan } from './shared/evt';
9
- import type { DialogEvent, DialogEventBase, TypedDialogEvent } from './shared/types/dialog';
10
10
  export interface DialogEventRegistry {
11
11
  getPubChan(dialogId: DialogID): PubChan<TypedDialogEvent>;
12
12
  createSubChan(dialogId: DialogID): SubChan<TypedDialogEvent>;
@@ -1,83 +1,4 @@
1
- import type { FuncResultContentItem, ProviderData, ReasoningPayload } from '../shared/types/storage';
2
- export type EnvironmentMsg = {
3
- type: 'environment_msg';
4
- role: 'user';
5
- content: string;
6
- };
7
- export type TransientGuideMsg = {
8
- type: 'transient_guide_msg';
9
- role: 'assistant';
10
- content: string;
11
- };
12
- export type PromptingMsg = {
13
- type: 'prompting_msg';
14
- role: 'user';
15
- genseq: number;
16
- msgId: string;
17
- content: string;
18
- grammar: 'markdown';
19
- };
20
- export type SayingMsg = {
21
- type: 'saying_msg';
22
- role: 'assistant';
23
- genseq: number;
24
- content: string;
25
- provider_data?: ProviderData;
26
- };
27
- export type UiOnlyMarkdownMsg = {
28
- type: 'ui_only_markdown_msg';
29
- role: 'assistant';
30
- genseq: number;
31
- content: string;
32
- };
33
- export type ThinkingMsg = {
34
- type: 'thinking_msg';
35
- role: 'assistant';
36
- genseq: number;
37
- content: string;
38
- reasoning?: ReasoningPayload;
39
- provider_data?: ProviderData;
40
- };
41
- export type FuncCallMsg = {
42
- type: 'func_call_msg';
43
- role: 'assistant';
44
- genseq: number;
45
- id: string;
46
- name: string;
47
- arguments: string;
48
- provider_data?: ProviderData;
49
- };
50
- export type FuncResultMsg = {
51
- type: 'func_result_msg';
52
- role: 'tool';
53
- genseq: number;
54
- id: string;
55
- name: string;
56
- content: string;
57
- contentItems?: FuncResultContentItem[];
58
- };
59
- export type TellaskCallResultMsg = {
60
- type: 'tellask_result_msg';
61
- role: 'tool';
62
- responderId: string;
63
- mentionList?: string[];
64
- tellaskContent: string;
65
- status: 'completed' | 'failed';
66
- content: string;
67
- callId?: string;
68
- };
69
- export type TellaskCarryoverResultMsg = {
70
- type: 'tellask_carryover_result_msg';
71
- role: 'user';
72
- content: string;
73
- originCourse: number;
74
- responderId: string;
75
- callName: 'tellask' | 'tellaskSessionless' | 'freshBootsReasoning';
76
- tellaskContent: string;
77
- status: 'completed' | 'failed';
78
- callId: string;
79
- };
80
- export type ChatMessage = EnvironmentMsg | TransientGuideMsg | PromptingMsg | SayingMsg | UiOnlyMarkdownMsg | ThinkingMsg | FuncCallMsg | FuncResultMsg | TellaskCallResultMsg | TellaskCarryoverResultMsg;
1
+ export type { ChatMessage, EnvironmentMsg, FuncCallMsg, FuncResultMsg, PromptingMsg, SayingMsg, TellaskCallResultMsg, TellaskCarryoverResultMsg, ThinkingMsg, TransientGuideMsg, UiOnlyMarkdownMsg, } from '@longrun-ai/kernel/types/chat-message';
81
2
  export interface ModelInfo {
82
3
  name?: string;
83
4
  context_length?: number;
@@ -157,4 +78,3 @@ export declare class LlmConfig {
157
78
  export declare namespace LlmConfig {
158
79
  function load(): Promise<LlmConfig>;
159
80
  }
160
- export {};
@@ -1,5 +1,5 @@
1
1
  import type { MessageParam, MessageStreamEvent } from '@anthropic-ai/sdk/resources/messages';
2
- import type { LlmUsageStats } from '../../shared/types/context-health';
2
+ import type { LlmUsageStats } from '@longrun-ai/kernel/types/context-health';
3
3
  import type { Team } from '../../team';
4
4
  import type { FuncTool } from '../../tool';
5
5
  import type { ChatMessage, ProviderConfig } from '../client';
package/dist/llm/gen.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { LlmUsageStats } from '../shared/types/context-health';
2
- import type { ReasoningPayload } from '../shared/types/storage';
1
+ import type { LlmUsageStats } from '@longrun-ai/kernel/types/context-health';
2
+ import type { ReasoningPayload } from '@longrun-ai/kernel/types/storage';
3
3
  import { Team } from '../team';
4
4
  import { FuncTool } from '../tool';
5
5
  import { ChatMessage, ProviderConfig } from './client';
@@ -1,4 +1,4 @@
1
- import type { ContextHealthSnapshot } from '../../shared/types/context-health';
1
+ import type { ContextHealthSnapshot } from '@longrun-ai/kernel/types/context-health';
2
2
  export type KernelDriverContextHealthDecision = Readonly<{
3
3
  kind: 'proceed';
4
4
  }> | Readonly<{
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.driveDialogStreamCore = driveDialogStreamCore;
4
+ const storage_1 = require("@longrun-ai/kernel/types/storage");
4
5
  const dialog_1 = require("../../dialog");
5
6
  const dialog_display_state_1 = require("../../dialog-display-state");
6
7
  const evt_registry_1 = require("../../evt-registry");
@@ -10,7 +11,6 @@ const persistence_1 = require("../../persistence");
10
11
  const diligence_1 = require("../../shared/diligence");
11
12
  const driver_messages_1 = require("../../shared/i18n/driver-messages");
12
13
  const runtime_language_1 = require("../../shared/runtime-language");
13
- const storage_1 = require("../../shared/types/storage");
14
14
  const id_1 = require("../../shared/utils/id");
15
15
  const time_1 = require("../../shared/utils/time");
16
16
  const tool_1 = require("../../tool");
@@ -676,7 +676,7 @@ async function executeFunctionCalls(args) {
676
676
  }
677
677
  async function executeFunctionRound(args) {
678
678
  if (args.funcCalls.length === 0) {
679
- return { pairedMessages: [], tellaskToolOutputs: [] };
679
+ return { hadNormalToolCalls: false, pairedMessages: [], tellaskToolOutputs: [] };
680
680
  }
681
681
  throwIfAborted(args.abortSignal, args.dlg);
682
682
  const allowTellaskBack = args.dlg.id.rootId !== args.dlg.id.selfId;
@@ -785,6 +785,7 @@ async function executeFunctionRound(args) {
785
785
  throw new Error(`kernel-driver function result invariant violation: missing result for call id '${call.id}' (${call.name})`);
786
786
  }
787
787
  return {
788
+ hadNormalToolCalls: classified.normalCalls.length > 0,
788
789
  pairedMessages,
789
790
  tellaskToolOutputs,
790
791
  };
@@ -1455,7 +1456,9 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
1455
1456
  }
1456
1457
  // Tool execution may have created pending Q4H/subdialogs mid-round. Respect the
1457
1458
  // dialog's actual suspension state here so auto-continue is decided in one place.
1458
- const suspensionAfterToolRound = await dlg.getSuspensionStatus();
1459
+ const suspensionAfterToolRound = await dlg.getSuspensionStatus({
1460
+ allowPendingSubdialogs: routed.hadNormalToolCalls,
1461
+ });
1459
1462
  if (!suspensionAfterToolRound.canDrive) {
1460
1463
  await resetDiligenceBudgetAfterQ4H(dlg, team);
1461
1464
  break;
@@ -1,4 +1,4 @@
1
+ import type { ReasoningPayload } from '@longrun-ai/kernel/types/storage';
1
2
  import { Dialog } from '../../dialog';
2
- import type { ReasoningPayload } from '../../shared/types/storage';
3
3
  export declare function emitThinkingEvents(dlg: Dialog, content: string, reasoning?: ReasoningPayload): Promise<void>;
4
4
  export declare function emitSayingEvents(dlg: Dialog, content: string): Promise<void>;
@@ -1,5 +1,5 @@
1
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
1
2
  import { Dialog } from '../../dialog';
2
- import type { LanguageCode } from '../../shared/types/language';
3
3
  import type { Team } from '../../team';
4
4
  import type { Tool } from '../../tool';
5
5
  import type { ChatMessage } from '../client';
@@ -126,7 +126,7 @@ async function maybePrepareDiligenceAutoContinuePrompt(options) {
126
126
  return { kind: 'disabled', nextRemainingBudget: 0 };
127
127
  }
128
128
  const prompt = {
129
- content: resolved.diligenceText,
129
+ content: (0, driver_messages_1.formatDiligenceAutoContinuePrompt)((0, runtime_language_1.getWorkLanguage)(), resolved.diligenceText),
130
130
  msgId: (0, id_1.generateShortId)(),
131
131
  grammar: 'markdown',
132
132
  origin: 'diligence_push',
@@ -143,7 +143,7 @@ async function maybePrepareDiligenceAutoContinuePrompt(options) {
143
143
  return { kind: 'budget_exhausted', maxInjectCount, nextRemainingBudget: 0 };
144
144
  }
145
145
  const prompt = {
146
- content: resolved.diligenceText,
146
+ content: (0, driver_messages_1.formatDiligenceAutoContinuePrompt)((0, runtime_language_1.getWorkLanguage)(), resolved.diligenceText),
147
147
  msgId: (0, id_1.generateShortId)(),
148
148
  grammar: 'markdown',
149
149
  origin: 'diligence_push',
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.supplyResponseToSupdialog = supplyResponseToSupdialog;
4
4
  exports.supplySubdialogResponseToSpecificCallerIfPendingV2 = supplySubdialogResponseToSpecificCallerIfPendingV2;
5
5
  exports.supplySubdialogResponseToAssignedCallerIfPendingV2 = supplySubdialogResponseToAssignedCallerIfPendingV2;
6
+ const storage_1 = require("@longrun-ai/kernel/types/storage");
6
7
  const dialog_1 = require("../../dialog");
7
8
  const dialog_global_registry_1 = require("../../dialog-global-registry");
8
9
  const dialog_instance_registry_1 = require("../../dialog-instance-registry");
9
10
  const log_1 = require("../../log");
10
11
  const persistence_1 = require("../../persistence");
11
12
  const runtime_language_1 = require("../../shared/runtime-language");
12
- const storage_1 = require("../../shared/types/storage");
13
13
  const inter_dialog_format_1 = require("../../shared/utils/inter-dialog-format");
14
14
  const time_1 = require("../../shared/utils/time");
15
15
  const pending_tellask_reminder_1 = require("../../tools/pending-tellask-reminder");
@@ -4,6 +4,7 @@ exports.isTellaskSpecialFunctionName = isTellaskSpecialFunctionName;
4
4
  exports.classifyTellaskSpecialFunctionCalls = classifyTellaskSpecialFunctionCalls;
5
5
  exports.executeTellaskSpecialCalls = executeTellaskSpecialCalls;
6
6
  const util_1 = require("util");
7
+ const storage_1 = require("@longrun-ai/kernel/types/storage");
7
8
  const dialog_1 = require("../../dialog");
8
9
  const dialog_instance_registry_1 = require("../../dialog-instance-registry");
9
10
  const evt_registry_1 = require("../../evt-registry");
@@ -11,7 +12,6 @@ const log_1 = require("../../log");
11
12
  const persistence_1 = require("../../persistence");
12
13
  const driver_messages_1 = require("../../shared/i18n/driver-messages");
13
14
  const runtime_language_1 = require("../../shared/runtime-language");
14
- const storage_1 = require("../../shared/types/storage");
15
15
  const fbr_1 = require("../../shared/utils/fbr");
16
16
  const id_1 = require("../../shared/utils/id");
17
17
  const inter_dialog_format_1 = require("../../shared/utils/inter-dialog-format");
@@ -1,6 +1,6 @@
1
+ import type { DialogDisplayState, DialogInterruptionReason } from '@longrun-ai/kernel/types/display-state';
2
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
1
3
  import type { Dialog, DialogID } from '../../dialog';
2
- import type { DialogDisplayState, DialogInterruptionReason } from '../../shared/types/display-state';
3
- import type { LanguageCode } from '../../shared/types/language';
4
4
  export type KernelDriverRunControl = Readonly<{
5
5
  controlId: string;
6
6
  input: Readonly<Record<string, unknown>>;
@@ -1,4 +1,4 @@
1
- import type { WorkspaceProblem } from '../shared/types/problems';
1
+ import type { WorkspaceProblem } from '@longrun-ai/kernel/types/problems';
2
2
  import type { FuncTool } from '../tool';
3
3
  export type ProviderToolProjectionResult = {
4
4
  tools: FuncTool[];
@@ -1,4 +1,4 @@
1
- import type { LanguageCode } from '../shared/types/language';
1
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
2
2
  export declare function defaultPersonaText(language: LanguageCode): string;
3
3
  export declare function noneText(language: LanguageCode): string;
4
4
  export declare function noneRequiredFieldsText(language: LanguageCode): string;
@@ -1,4 +1,4 @@
1
- import type { LanguageCode } from '../shared/types/language';
1
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
2
2
  import type { FuncTool } from '../tool';
3
3
  export type ContextHealthPromptMode = 'normal' | 'caution' | 'critical';
4
4
  export type PromptdocContext = {
@@ -1,4 +1,4 @@
1
- import type { LanguageCode } from '../shared/types/language';
1
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
2
2
  import type { Team } from '../team';
3
3
  import type { ContextHealthPromptMode } from './system-prompt-parts';
4
4
  export declare function formatTeamIntro(team: Team, selfAgentId: string, language: LanguageCode): string;
@@ -4,14 +4,14 @@
4
4
  * Modern dialog persistence with strong typing and latest.yaml support.
5
5
  * Provides file-based storage with append-only events and atomic operations.
6
6
  */
7
+ import type { ContextHealthSnapshot } from '@longrun-ai/kernel/types/context-health';
8
+ import type { WebSearchCallAction } from '@longrun-ai/kernel/types/dialog';
9
+ import type { LanguageCode } from '@longrun-ai/kernel/types/language';
10
+ import type { CalleeCourseNumber, CalleeGenerationSeqNumber, CallingCourseNumber, DialogLatestFile, DialogMetadataFile, HumanQuestion, PendingSubdialogStateRecord, PersistedDialogRecord, ProviderData, ReasoningPayload, ReconciledRecordWriteTarget, RootDialogMetadataFile, RootGenerationAnchor, SubdialogMetadataFile, SubdialogRegistryStateRecord, SubdialogResponseStateRecord, ToolArguments } from '@longrun-ai/kernel/types/storage';
7
11
  import { WebSocket } from 'ws';
8
12
  import type { PendingSubdialog } from './dialog';
9
13
  import { Dialog, DialogID, DialogStore, RootDialog, SubDialog } from './dialog';
10
14
  import { ChatMessage, FuncResultMsg } from './llm/client';
11
- import type { ContextHealthSnapshot } from './shared/types/context-health';
12
- import type { WebSearchCallAction } from './shared/types/dialog';
13
- import type { LanguageCode } from './shared/types/language';
14
- import type { CalleeCourseNumber, CalleeGenerationSeqNumber, CallingCourseNumber, DialogLatestFile, DialogMetadataFile, HumanQuestion, PendingSubdialogStateRecord, PersistedDialogRecord, ProviderData, ReasoningPayload, ReconciledRecordWriteTarget, RootDialogMetadataFile, RootGenerationAnchor, SubdialogMetadataFile, SubdialogRegistryStateRecord, SubdialogResponseStateRecord, ToolArguments } from './shared/types/storage';
15
15
  import { Reminder } from './tool';
16
16
  export interface DialogPersistenceState {
17
17
  metadata: DialogMetadataFile;
@@ -40,6 +40,7 @@ var __importStar = (this && this.__importStar) || (function () {
40
40
  })();
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.DialogPersistence = exports.DiskFileDialogStore = void 0;
43
+ const storage_1 = require("@longrun-ai/kernel/types/storage");
43
44
  const fs = __importStar(require("fs"));
44
45
  const node_crypto_1 = require("node:crypto");
45
46
  const path = __importStar(require("path"));
@@ -48,7 +49,6 @@ const dialog_1 = require("./dialog");
48
49
  const evt_registry_1 = require("./evt-registry");
49
50
  const log_1 = require("./log");
50
51
  const async_fifo_mutex_1 = require("./shared/async-fifo-mutex");
51
- const storage_1 = require("./shared/types/storage");
52
52
  const time_1 = require("./shared/utils/time");
53
53
  const registry_1 = require("./tools/registry");
54
54
  function getErrorCode(error) {
@@ -428,7 +428,7 @@ function isSubdialogResponseRecord(value) {
428
428
  return false;
429
429
  return true;
430
430
  }
431
- // Remove old type definitions - now using shared/types/storage.ts
431
+ // Remove old type definitions - now using kernel/types/storage.ts
432
432
  const id_1 = require("./utils/id");
433
433
  const TELLASK_SPECIAL_FUNCTION_NAMES = new Set([
434
434
  'tellaskBack',