dominds 1.8.8 → 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.
- package/README.md +17 -0
- package/README.zh.md +17 -0
- package/dist/access-control.d.ts +9 -1
- package/dist/access-control.js +0 -8
- package/dist/apps/assigned-port.d.ts +1 -1
- package/dist/apps/dialog-run-controls.d.ts +1 -1
- package/dist/apps/resolution-file.d.ts +1 -1
- package/dist/apps/resolution-file.js +1 -1
- package/dist/apps/run-app-json.d.ts +1 -1
- package/dist/apps/run-app-json.js +1 -1
- package/dist/apps/run-control.d.ts +1 -1
- package/dist/apps-host/client.d.ts +2 -2
- package/dist/apps-host/ipc-types.d.ts +2 -2
- package/dist/course-transition.d.ts +1 -1
- package/dist/dialog-display-state.d.ts +3 -3
- package/dist/dialog-fork.d.ts +1 -1
- package/dist/dialog-fork.js +1 -1
- package/dist/dialog.d.ts +25 -7
- package/dist/dialog.js +7 -20
- package/dist/evt-registry.d.ts +1 -1
- package/dist/llm/client.d.ts +1 -81
- package/dist/llm/gen/anthropic.d.ts +1 -1
- package/dist/llm/gen.d.ts +2 -2
- package/dist/llm/kernel-driver/context-health.d.ts +1 -1
- package/dist/llm/kernel-driver/drive.js +6 -3
- package/dist/llm/kernel-driver/events.d.ts +1 -1
- package/dist/llm/kernel-driver/guardrails.d.ts +1 -1
- package/dist/llm/kernel-driver/runtime.js +2 -2
- package/dist/llm/kernel-driver/subdialog.js +1 -1
- package/dist/llm/kernel-driver/tellask-special.js +1 -1
- package/dist/llm/kernel-driver/types.d.ts +2 -2
- package/dist/llm/tools-projection.d.ts +1 -1
- package/dist/minds/minds-i18n.d.ts +1 -1
- package/dist/minds/system-prompt-parts.d.ts +1 -1
- package/dist/minds/system-prompt.d.ts +1 -1
- package/dist/persistence.d.ts +4 -4
- package/dist/persistence.js +2 -2
- package/dist/priming.d.ts +3 -3
- package/dist/priming.js +1 -1
- package/dist/problems.d.ts +2 -2
- package/dist/server/api-routes.js +1 -6
- package/dist/server/create-dialog-contract.d.ts +1 -1
- package/dist/server/setup-routes.d.ts +1 -1
- package/dist/server/snippets-routes.d.ts +1 -1
- package/dist/server/websocket-handler.d.ts +2 -2
- package/dist/server/websocket-handler.js +1 -1
- package/dist/shared/diligence.d.ts +1 -1
- package/dist/shared/i18n/driver-messages.d.ts +2 -1
- package/dist/shared/i18n/driver-messages.js +46 -5
- package/dist/shared/i18n/text.d.ts +2 -2
- package/dist/shared/i18n/tool-result-messages.d.ts +1 -1
- package/dist/shared/runtime-language.d.ts +1 -1
- package/dist/shared/runtime-language.js +1 -1
- package/dist/shared/utils/fbr.d.ts +1 -1
- package/dist/shared/utils/inter-dialog-format.d.ts +1 -1
- package/dist/skills/load.d.ts +1 -1
- package/dist/team-config-updates.d.ts +1 -1
- package/dist/tool.d.ts +10 -19
- package/dist/tools/app-reminders.d.ts +1 -1
- package/dist/tools/manual/render.d.ts +1 -1
- package/dist/tools/manual/schema.d.ts +1 -1
- package/dist/tools/manual/spec.d.ts +1 -1
- package/dist/tools/mem.js +0 -6
- package/dist/tools/registry-snapshot.d.ts +1 -1
- package/dist/tools/registry.d.ts +7 -2
- package/dist/tools/registry.js +0 -5
- package/dist/tools/toolset-manual.d.ts +1 -1
- package/dist/tools/txt.js +0 -6
- package/dist/utils/task-package.d.ts +1 -1
- package/package.json +9 -6
- package/webapp/dist/assets/{_basePickBy-BCETjyvF.js → _basePickBy-C8hJ6yKK.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-BCETjyvF.js.map → _basePickBy-C8hJ6yKK.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-fLqPJO5i.js → _baseUniq-DRQfuMfl.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-fLqPJO5i.js.map → _baseUniq-DRQfuMfl.js.map} +1 -1
- package/webapp/dist/assets/{arc-BzFkK7IZ.js → arc-B_wpZocz.js} +2 -2
- package/webapp/dist/assets/{arc-BzFkK7IZ.js.map → arc-B_wpZocz.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-D_hKK43_.js → architectureDiagram-VXUJARFQ-DXAPwtSX.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-D_hKK43_.js.map → architectureDiagram-VXUJARFQ-DXAPwtSX.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-CgWXic7v.js → blockDiagram-VD42YOAC-BIDI5Cy0.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-CgWXic7v.js.map → blockDiagram-VD42YOAC-BIDI5Cy0.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-COqGeM2S.js → c4Diagram-YG6GDRKO-N_7HPcit.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-COqGeM2S.js.map → c4Diagram-YG6GDRKO-N_7HPcit.js.map} +1 -1
- package/webapp/dist/assets/{channel-8XkSzwJl.js → channel-Dzb_rdsn.js} +2 -2
- package/webapp/dist/assets/{channel-8XkSzwJl.js.map → channel-Dzb_rdsn.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-B_R1ldB5.js → chunk-4BX2VUAB-XUZD2Pdn.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-B_R1ldB5.js.map → chunk-4BX2VUAB-XUZD2Pdn.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-DosUiRle.js → chunk-55IACEB6-C2UBsTCy.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-DosUiRle.js.map → chunk-55IACEB6-C2UBsTCy.js.map} +1 -1
- package/webapp/dist/assets/{chunk-B4BG7PRW-CPvx_wxK.js → chunk-B4BG7PRW-DTp6SYXa.js} +5 -5
- package/webapp/dist/assets/{chunk-B4BG7PRW-CPvx_wxK.js.map → chunk-B4BG7PRW-DTp6SYXa.js.map} +1 -1
- package/webapp/dist/assets/{chunk-DI55MBZ5-CtfFQBra.js → chunk-DI55MBZ5-DH9L614H.js} +4 -4
- package/webapp/dist/assets/{chunk-DI55MBZ5-CtfFQBra.js.map → chunk-DI55MBZ5-DH9L614H.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-BZJDYQUQ.js → chunk-FMBD7UC4-DHWcMnCh.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-BZJDYQUQ.js.map → chunk-FMBD7UC4-DHWcMnCh.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QN33PNHL-CazyQzCZ.js → chunk-QN33PNHL-BOIBicxV.js} +2 -2
- package/webapp/dist/assets/{chunk-QN33PNHL-CazyQzCZ.js.map → chunk-QN33PNHL-BOIBicxV.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-H39jWkGz.js → chunk-QZHKN3VN-DN1oI6nK.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-H39jWkGz.js.map → chunk-QZHKN3VN-DN1oI6nK.js.map} +1 -1
- package/webapp/dist/assets/{chunk-TZMSLE5B-T3mACKEk.js → chunk-TZMSLE5B-LJiVG7pu.js} +2 -2
- package/webapp/dist/assets/{chunk-TZMSLE5B-T3mACKEk.js.map → chunk-TZMSLE5B-LJiVG7pu.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-BzJbZNmh.js → classDiagram-2ON5EDUG-BGx9XLqP.js} +6 -6
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-BzJbZNmh.js.map → classDiagram-2ON5EDUG-BGx9XLqP.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-BzJbZNmh.js → classDiagram-v2-WZHVMYZB-BGx9XLqP.js} +6 -6
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-BzJbZNmh.js.map → classDiagram-v2-WZHVMYZB-BGx9XLqP.js.map} +1 -1
- package/webapp/dist/assets/{clone-Big4mBmE.js → clone-CLJ3hkWa.js} +2 -2
- package/webapp/dist/assets/{clone-Big4mBmE.js.map → clone-CLJ3hkWa.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-jAw41QnJ.js → cose-bilkent-S5V4N54A-bTUWYtqm.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-jAw41QnJ.js.map → cose-bilkent-S5V4N54A-bTUWYtqm.js.map} +1 -1
- package/webapp/dist/assets/{dagre-6UL2VRFP-D3MEMYv5.js → dagre-6UL2VRFP-Dx2-08zX.js} +7 -7
- package/webapp/dist/assets/{dagre-6UL2VRFP-D3MEMYv5.js.map → dagre-6UL2VRFP-Dx2-08zX.js.map} +1 -1
- package/webapp/dist/assets/{diagram-PSM6KHXK-CWyVYAZu.js → diagram-PSM6KHXK-CaqjCMhu.js} +8 -8
- package/webapp/dist/assets/{diagram-PSM6KHXK-CWyVYAZu.js.map → diagram-PSM6KHXK-CaqjCMhu.js.map} +1 -1
- package/webapp/dist/assets/{diagram-QEK2KX5R-CUYJiFCE.js → diagram-QEK2KX5R-CNtV7L65.js} +7 -7
- package/webapp/dist/assets/{diagram-QEK2KX5R-CUYJiFCE.js.map → diagram-QEK2KX5R-CNtV7L65.js.map} +1 -1
- package/webapp/dist/assets/{diagram-S2PKOQOG-BGfyTOuE.js → diagram-S2PKOQOG-KfLA54rd.js} +7 -7
- package/webapp/dist/assets/{diagram-S2PKOQOG-BGfyTOuE.js.map → diagram-S2PKOQOG-KfLA54rd.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-T0nE1xLf.js → erDiagram-Q2GNP2WA-BxXLN3g7.js} +5 -5
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-T0nE1xLf.js.map → erDiagram-Q2GNP2WA-BxXLN3g7.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-BOtJbmb2.js → flowDiagram-NV44I4VS-DUcdld8A.js} +6 -6
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-BOtJbmb2.js.map → flowDiagram-NV44I4VS-DUcdld8A.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BKHc1SN2.js → ganttDiagram-JELNMOA3-JnCDigk1.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BKHc1SN2.js.map → ganttDiagram-JELNMOA3-JnCDigk1.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-DEs6Jd7A.js → gitGraphDiagram-V2S2FVAM-DvCOOMqv.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-DEs6Jd7A.js.map → gitGraphDiagram-V2S2FVAM-DvCOOMqv.js.map} +1 -1
- package/webapp/dist/assets/{graph-B8rBjt0j.js → graph-CrHiw8ie.js} +3 -3
- package/webapp/dist/assets/{graph-B8rBjt0j.js.map → graph-CrHiw8ie.js.map} +1 -1
- package/webapp/dist/assets/{index-BBpM4Vs4.js → index-YIaAm3C1.js} +57 -33
- package/webapp/dist/assets/{index-BBpM4Vs4.js.map → index-YIaAm3C1.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BGHKQMyS.js → infoDiagram-HS3SLOUP-32WFJdCO.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BGHKQMyS.js.map → infoDiagram-HS3SLOUP-32WFJdCO.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-C5zIhegj.js → journeyDiagram-XKPGCS4Q-bzp4a134.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-C5zIhegj.js.map → journeyDiagram-XKPGCS4Q-bzp4a134.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-714VVE1e.js → kanban-definition-3W4ZIXB7-CKzmE6w4.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-714VVE1e.js.map → kanban-definition-3W4ZIXB7-CKzmE6w4.js.map} +1 -1
- package/webapp/dist/assets/{layout-DprNh9sN.js → layout-1PVvUgz5.js} +5 -5
- package/webapp/dist/assets/{layout-DprNh9sN.js.map → layout-1PVvUgz5.js.map} +1 -1
- package/webapp/dist/assets/{linear-BWG2T2oB.js → linear-CQxneL9_.js} +2 -2
- package/webapp/dist/assets/{linear-BWG2T2oB.js.map → linear-CQxneL9_.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-DQb2l3T_.js → mindmap-definition-VGOIOE7T-5d_MpeSf.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-DQb2l3T_.js.map → mindmap-definition-VGOIOE7T-5d_MpeSf.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-Do6Tc-Qs.js → pieDiagram-ADFJNKIX-Phz9V9S9.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-Do6Tc-Qs.js.map → pieDiagram-ADFJNKIX-Phz9V9S9.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-lfpxvyP1.js → quadrantDiagram-AYHSOK5B-DhY66aqk.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-lfpxvyP1.js.map → quadrantDiagram-AYHSOK5B-DhY66aqk.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-Dn4Cnusj.js → requirementDiagram-UZGBJVZJ-BKCTE3ev.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-Dn4Cnusj.js.map → requirementDiagram-UZGBJVZJ-BKCTE3ev.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-CcpDMXKi.js → sankeyDiagram-TZEHDZUN-CyfeAnll.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-CcpDMXKi.js.map → sankeyDiagram-TZEHDZUN-CyfeAnll.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-TfHPlNvp.js → sequenceDiagram-WL72ISMW-RyK9j-sB.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-TfHPlNvp.js.map → sequenceDiagram-WL72ISMW-RyK9j-sB.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-CrqtuS-o.js → stateDiagram-FKZM4ZOC-DK9GHWGV.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-CrqtuS-o.js.map → stateDiagram-FKZM4ZOC-DK9GHWGV.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-CwYGywpf.js → stateDiagram-v2-4FDKWEC3-CfUBvaXU.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-CwYGywpf.js.map → stateDiagram-v2-4FDKWEC3-CfUBvaXU.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-DoP5HyAE.js → timeline-definition-IT6M3QCI-CVBZPyrb.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-DoP5HyAE.js.map → timeline-definition-IT6M3QCI-CVBZPyrb.js.map} +1 -1
- package/webapp/dist/assets/{treemap-GDKQZRPO-3rSE1o-R.js → treemap-GDKQZRPO-BepTQXv6.js} +5 -5
- package/webapp/dist/assets/{treemap-GDKQZRPO-3rSE1o-R.js.map → treemap-GDKQZRPO-BepTQXv6.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DFTw6wXn.js → xychartDiagram-PRI3JC2R-CcskGEOH.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DFTw6wXn.js.map → xychartDiagram-PRI3JC2R-CcskGEOH.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
- package/dist/apps/app-json.d.ts +0 -127
- package/dist/apps/app-json.js +0 -241
- package/dist/apps-host/app-host-contract.d.ts +0 -87
- package/dist/apps-host/app-host-contract.js +0 -2
- package/dist/shared/types/context-health.d.ts +0 -33
- package/dist/shared/types/context-health.js +0 -2
- package/dist/shared/types/dialog.d.ts +0 -403
- package/dist/shared/types/dialog.js +0 -11
- package/dist/shared/types/display-state.d.ts +0 -56
- package/dist/shared/types/display-state.js +0 -15
- package/dist/shared/types/drive-intent.d.ts +0 -36
- package/dist/shared/types/drive-intent.js +0 -2
- package/dist/shared/types/i18n.d.ts +0 -2
- package/dist/shared/types/i18n.js +0 -2
- package/dist/shared/types/index.d.ts +0 -109
- package/dist/shared/types/index.js +0 -27
- package/dist/shared/types/language.d.ts +0 -10
- package/dist/shared/types/language.js +0 -40
- package/dist/shared/types/priming.d.ts +0 -55
- package/dist/shared/types/priming.js +0 -2
- package/dist/shared/types/problems.d.ts +0 -128
- package/dist/shared/types/problems.js +0 -2
- package/dist/shared/types/q4h.d.ts +0 -14
- package/dist/shared/types/q4h.js +0 -7
- package/dist/shared/types/setup.d.ts +0 -170
- package/dist/shared/types/setup.js +0 -2
- package/dist/shared/types/snippets.d.ts +0 -68
- package/dist/shared/types/snippets.js +0 -2
- package/dist/shared/types/storage.d.ts +0 -677
- package/dist/shared/types/storage.js +0 -87
- package/dist/shared/types/tools-registry.d.ts +0 -19
- package/dist/shared/types/tools-registry.js +0 -2
- package/dist/shared/types/wire.d.ts +0 -227
- 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
|
package/dist/access-control.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
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.
|
package/dist/access-control.js
CHANGED
|
@@ -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 '
|
|
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<{
|
|
@@ -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("
|
|
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);
|
|
@@ -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("
|
|
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 '
|
|
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 {
|
|
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 '
|
|
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;
|
package/dist/dialog-fork.d.ts
CHANGED
package/dist/dialog-fork.js
CHANGED
|
@@ -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
|
|
319
|
-
|
|
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
|
-
|
|
317
|
+
blockingSubdialogs,
|
|
318
|
+
canDrive: !hasQ4H && !blockingSubdialogs,
|
|
332
319
|
};
|
|
333
320
|
}
|
|
334
321
|
get pendingSubdialogIds() {
|
package/dist/evt-registry.d.ts
CHANGED
|
@@ -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>;
|
package/dist/llm/client.d.ts
CHANGED
|
@@ -1,83 +1,4 @@
|
|
|
1
|
-
|
|
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 '
|
|
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 '
|
|
2
|
-
import type { ReasoningPayload } from '
|
|
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,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 { LanguageCode } from '
|
|
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 '
|
|
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 '
|
|
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;
|
package/dist/persistence.d.ts
CHANGED
|
@@ -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;
|
package/dist/persistence.js
CHANGED
|
@@ -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
|
|
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',
|