dominds 1.20.4 → 1.20.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dialog-factory.d.ts +3 -0
- package/dist/dialog-factory.js +2 -6
- package/dist/dialog-fork.js +4 -2
- package/dist/dialog.d.ts +11 -0
- package/dist/dialog.js +6 -0
- package/dist/docs/dialog-system.md +15 -0
- package/dist/docs/dialog-system.zh.md +11 -0
- package/dist/docs/q4h.md +14 -10
- package/dist/docs/q4h.zh.md +13 -11
- package/dist/docs/tellask-revive-context-refactor.zh.md +1 -0
- package/dist/llm/kernel-driver/drive.js +32 -1
- package/dist/llm/kernel-driver/flow.js +2 -2
- package/dist/llm/kernel-driver/sideDialog.d.ts +9 -0
- package/dist/llm/kernel-driver/sideDialog.js +14 -12
- package/dist/llm/kernel-driver/tellask-special.js +163 -16
- package/dist/llm/kernel-driver/types.d.ts +3 -0
- package/dist/persistence.d.ts +3 -1
- package/dist/persistence.js +47 -34
- package/dist/priming.js +68 -9
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-BrC49DPW.js → _basePickBy-DFzVggWM.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-BrC49DPW.js.map → _basePickBy-DFzVggWM.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-C_Wcx-_S.js → _baseUniq-CXD_3O9i.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-C_Wcx-_S.js.map → _baseUniq-CXD_3O9i.js.map} +1 -1
- package/webapp/dist/assets/{arc-X5iIdpx0.js → arc--yzhIodb.js} +2 -2
- package/webapp/dist/assets/{arc-X5iIdpx0.js.map → arc--yzhIodb.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DFfhMGkT.js → architectureDiagram-2XIMDMQ5-B2jDlUga.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DFfhMGkT.js.map → architectureDiagram-2XIMDMQ5-B2jDlUga.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-BAt4BaxZ.js → blockDiagram-WCTKOSBZ-BUPbccZo.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-BAt4BaxZ.js.map → blockDiagram-WCTKOSBZ-BUPbccZo.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-BYxKH5AA.js → c4Diagram-IC4MRINW-DwTime9I.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-BYxKH5AA.js.map → c4Diagram-IC4MRINW-DwTime9I.js.map} +1 -1
- package/webapp/dist/assets/{channel-CuYhL59H.js → channel-C44ixz_J.js} +2 -2
- package/webapp/dist/assets/{channel-CuYhL59H.js.map → channel-C44ixz_J.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-Ch1PfLiD.js → chunk-4BX2VUAB-D8GtQm2f.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-Ch1PfLiD.js.map → chunk-4BX2VUAB-D8GtQm2f.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-B3rzakPd.js → chunk-55IACEB6-D581Sluc.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-B3rzakPd.js.map → chunk-55IACEB6-D581Sluc.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-CCZWJRJ5.js → chunk-FMBD7UC4-DflSPxF8.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-CCZWJRJ5.js.map → chunk-FMBD7UC4-DflSPxF8.js.map} +1 -1
- package/webapp/dist/assets/{chunk-JSJVCQXG-Dqd_MOPD.js → chunk-JSJVCQXG-CcUETDd7.js} +2 -2
- package/webapp/dist/assets/{chunk-JSJVCQXG-Dqd_MOPD.js.map → chunk-JSJVCQXG-CcUETDd7.js.map} +1 -1
- package/webapp/dist/assets/{chunk-KX2RTZJC-DOpPZD_q.js → chunk-KX2RTZJC-DfcLbXaY.js} +2 -2
- package/webapp/dist/assets/{chunk-KX2RTZJC-DOpPZD_q.js.map → chunk-KX2RTZJC-DfcLbXaY.js.map} +1 -1
- package/webapp/dist/assets/{chunk-NQ4KR5QH-CUj2LNV0.js → chunk-NQ4KR5QH-B0hUHzGe.js} +4 -4
- package/webapp/dist/assets/{chunk-NQ4KR5QH-CUj2LNV0.js.map → chunk-NQ4KR5QH-B0hUHzGe.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-DXeWDyzh.js → chunk-QZHKN3VN-V0IQhkyq.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-DXeWDyzh.js.map → chunk-QZHKN3VN-V0IQhkyq.js.map} +1 -1
- package/webapp/dist/assets/{chunk-WL4C6EOR-CqTowzs6.js → chunk-WL4C6EOR-Dlq3MRVu.js} +6 -6
- package/webapp/dist/assets/{chunk-WL4C6EOR-CqTowzs6.js.map → chunk-WL4C6EOR-Dlq3MRVu.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-CvsxEN3D.js → classDiagram-VBA2DB6C-23iqCPis.js} +7 -7
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-CvsxEN3D.js.map → classDiagram-VBA2DB6C-23iqCPis.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-CvsxEN3D.js → classDiagram-v2-RAHNMMFH-23iqCPis.js} +7 -7
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-CvsxEN3D.js.map → classDiagram-v2-RAHNMMFH-23iqCPis.js.map} +1 -1
- package/webapp/dist/assets/{clone-PGWIYNYc.js → clone-DOk1nA0K.js} +2 -2
- package/webapp/dist/assets/{clone-PGWIYNYc.js.map → clone-DOk1nA0K.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-Cf8RR_8j.js → cose-bilkent-S5V4N54A-BRI_M3Z1.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-Cf8RR_8j.js.map → cose-bilkent-S5V4N54A-BRI_M3Z1.js.map} +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-C1yQDg-6.js → dagre-KLK3FWXG-PjbaHNi2.js} +7 -7
- package/webapp/dist/assets/{dagre-KLK3FWXG-C1yQDg-6.js.map → dagre-KLK3FWXG-PjbaHNi2.js.map} +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-CrT4qBJh.js → diagram-E7M64L7V-C9jrc2Yj.js} +8 -8
- package/webapp/dist/assets/{diagram-E7M64L7V-CrT4qBJh.js.map → diagram-E7M64L7V-C9jrc2Yj.js.map} +1 -1
- package/webapp/dist/assets/{diagram-IFDJBPK2-B8WaCOcr.js → diagram-IFDJBPK2-D_B_8ZEE.js} +7 -7
- package/webapp/dist/assets/{diagram-IFDJBPK2-B8WaCOcr.js.map → diagram-IFDJBPK2-D_B_8ZEE.js.map} +1 -1
- package/webapp/dist/assets/{diagram-P4PSJMXO-BCZeNfu_.js → diagram-P4PSJMXO-BAGUvld_.js} +7 -7
- package/webapp/dist/assets/{diagram-P4PSJMXO-BCZeNfu_.js.map → diagram-P4PSJMXO-BAGUvld_.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-INFDFZHY-BrYt0-mW.js → erDiagram-INFDFZHY-5ufs8FDF.js} +5 -5
- package/webapp/dist/assets/{erDiagram-INFDFZHY-BrYt0-mW.js.map → erDiagram-INFDFZHY-5ufs8FDF.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-8lZ5d5y-.js → flowDiagram-PKNHOUZH-Bax4wCyq.js} +7 -7
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-8lZ5d5y-.js.map → flowDiagram-PKNHOUZH-Bax4wCyq.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-CQ8pOLf-.js → ganttDiagram-A5KZAMGK-9ZX_VymK.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-CQ8pOLf-.js.map → ganttDiagram-A5KZAMGK-9ZX_VymK.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-aOTOe0HP.js → gitGraphDiagram-K3NZZRJ6-YbGo4EFg.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-aOTOe0HP.js.map → gitGraphDiagram-K3NZZRJ6-YbGo4EFg.js.map} +1 -1
- package/webapp/dist/assets/{graph-CyMR1egR.js → graph-B4UFhGtz.js} +3 -3
- package/webapp/dist/assets/{graph-CyMR1egR.js.map → graph-B4UFhGtz.js.map} +1 -1
- package/webapp/dist/assets/{index-B9TTmMv-.js → index-D7y9EEAl.js} +544 -671
- package/webapp/dist/assets/{index-B9TTmMv-.js.map → index-D7y9EEAl.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CXR9XjRe.js → infoDiagram-LFFYTUFH-K9JKlk7P.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CXR9XjRe.js.map → infoDiagram-LFFYTUFH-K9JKlk7P.js.map} +1 -1
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-zwe-cqRW.js → ishikawaDiagram-PHBUUO56-D7h7bNU_.js} +2 -2
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-zwe-cqRW.js.map → ishikawaDiagram-PHBUUO56-D7h7bNU_.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BV-8X5hz.js → journeyDiagram-4ABVD52K-BHhkjUnE.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BV-8X5hz.js.map → journeyDiagram-4ABVD52K-BHhkjUnE.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-E3W-szUv.js → kanban-definition-K7BYSVSG-BsdCCeJO.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-E3W-szUv.js.map → kanban-definition-K7BYSVSG-BsdCCeJO.js.map} +1 -1
- package/webapp/dist/assets/{layout-DvIjuV8I.js → layout-CTqY3yh8.js} +5 -5
- package/webapp/dist/assets/{layout-DvIjuV8I.js.map → layout-CTqY3yh8.js.map} +1 -1
- package/webapp/dist/assets/{linear-C-SIS0ki.js → linear-D3vXpsJz.js} +2 -2
- package/webapp/dist/assets/{linear-C-SIS0ki.js.map → linear-D3vXpsJz.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-wigkPJ2B.js → mindmap-definition-YRQLILUH-Df26nneZ.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-wigkPJ2B.js.map → mindmap-definition-YRQLILUH-Df26nneZ.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-BKrYJ0LE.js → pieDiagram-SKSYHLDU-CORXrWQD.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-BKrYJ0LE.js.map → pieDiagram-SKSYHLDU-CORXrWQD.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-fjwd0gVY.js → quadrantDiagram-337W2JSQ-D1iEgnz7.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-fjwd0gVY.js.map → quadrantDiagram-337W2JSQ-D1iEgnz7.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-vgTMObSA.js → requirementDiagram-Z7DCOOCP-BTi9foPw.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-vgTMObSA.js.map → requirementDiagram-Z7DCOOCP-BTi9foPw.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-B-ZV3LF7.js → sankeyDiagram-WA2Y5GQK-DlXqXBte.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-B-ZV3LF7.js.map → sankeyDiagram-WA2Y5GQK-DlXqXBte.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DPhZYHhW.js → sequenceDiagram-2WXFIKYE-DtV5AvqW.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DPhZYHhW.js.map → sequenceDiagram-2WXFIKYE-DtV5AvqW.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-DLsw3SC8.js → stateDiagram-RAJIS63D-BD05KYfc.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-DLsw3SC8.js.map → stateDiagram-RAJIS63D-BD05KYfc.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DqXB3dNs.js → stateDiagram-v2-FVOUBMTO-ZWU-eA69.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DqXB3dNs.js.map → stateDiagram-v2-FVOUBMTO-ZWU-eA69.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BFSqlDfo.js → timeline-definition-YZTLITO2-Bz0iSxAq.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BFSqlDfo.js.map → timeline-definition-YZTLITO2-Bz0iSxAq.js.map} +1 -1
- package/webapp/dist/assets/{treemap-KZPCXAKY-sdfq6mHG.js → treemap-KZPCXAKY-VCn63bTk.js} +5 -5
- package/webapp/dist/assets/{treemap-KZPCXAKY-sdfq6mHG.js.map → treemap-KZPCXAKY-VCn63bTk.js.map} +1 -1
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-D7Cioksz.js → vennDiagram-LZ73GAT5-DMD4pzqJ.js} +2 -2
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-D7Cioksz.js.map → vennDiagram-LZ73GAT5-DMD4pzqJ.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-No65aXqH.js → xychartDiagram-JWTSCODW-B5BYuiJN.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-No65aXqH.js.map → xychartDiagram-JWTSCODW-B5BYuiJN.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
package/dist/dialog-factory.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Factory for creating Dialog instances with proper type hierarchy.
|
|
5
5
|
* Provides a single point of dialog creation to ensure consistent initialization.
|
|
6
6
|
*/
|
|
7
|
+
import type { CallSiteCourseNo, CallSiteGenseqNo } from '@longrun-ai/kernel/types/storage';
|
|
7
8
|
import { Dialog, DialogID, DialogInitParams, DialogStore, MainDialog, SideDialog } from './dialog';
|
|
8
9
|
/**
|
|
9
10
|
* Factory for creating Dialog instances.
|
|
@@ -22,6 +23,8 @@ export declare class DialogFactory {
|
|
|
22
23
|
originMemberId: string;
|
|
23
24
|
askerDialogId: string;
|
|
24
25
|
callId: string;
|
|
26
|
+
callSiteCourse: CallSiteCourseNo;
|
|
27
|
+
callSiteGenseq: CallSiteGenseqNo;
|
|
25
28
|
sessionSlug?: string;
|
|
26
29
|
collectiveTargets?: string[];
|
|
27
30
|
effectiveFbrEffort?: number;
|
package/dist/dialog-factory.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DialogFactory = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Module: dialog-factory
|
|
6
|
-
*
|
|
7
|
-
* Factory for creating Dialog instances with proper type hierarchy.
|
|
8
|
-
* Provides a single point of dialog creation to ensure consistent initialization.
|
|
9
|
-
*/
|
|
10
4
|
const dialog_1 = require("./dialog");
|
|
11
5
|
const dialog_global_registry_1 = require("./dialog-global-registry");
|
|
12
6
|
const id_1 = require("./utils/id");
|
|
@@ -45,6 +39,8 @@ class DialogFactory {
|
|
|
45
39
|
originMemberId: options.originMemberId,
|
|
46
40
|
askerDialogId: options.askerDialogId,
|
|
47
41
|
callId: options.callId,
|
|
42
|
+
callSiteCourse: options.callSiteCourse,
|
|
43
|
+
callSiteGenseq: options.callSiteGenseq,
|
|
48
44
|
collectiveTargets: options.collectiveTargets,
|
|
49
45
|
effectiveFbrEffort: options.effectiveFbrEffort,
|
|
50
46
|
},
|
package/dist/dialog-fork.js
CHANGED
|
@@ -140,7 +140,8 @@ function isPersistedMessageRecord(record) {
|
|
|
140
140
|
case 'user_image_ingest_record':
|
|
141
141
|
case 'sideDialog_request_record':
|
|
142
142
|
case 'tellask_reply_resolution_record':
|
|
143
|
-
case '
|
|
143
|
+
case 'tellask_anchor_record':
|
|
144
|
+
case 'tellask_callee_record':
|
|
144
145
|
case 'gen_start_record':
|
|
145
146
|
case 'gen_finish_record':
|
|
146
147
|
case 'sideDialog_created_record':
|
|
@@ -212,7 +213,8 @@ function rewriteRecordForFork(record, newRootId) {
|
|
|
212
213
|
case 'native_tool_call_record':
|
|
213
214
|
case 'sideDialog_request_record':
|
|
214
215
|
case 'tellask_reply_resolution_record':
|
|
215
|
-
case '
|
|
216
|
+
case 'tellask_anchor_record':
|
|
217
|
+
case 'tellask_callee_record':
|
|
216
218
|
case 'gen_start_record':
|
|
217
219
|
case 'gen_finish_record':
|
|
218
220
|
return record;
|
package/dist/dialog.d.ts
CHANGED
|
@@ -122,6 +122,8 @@ export interface AssignmentFromAsker {
|
|
|
122
122
|
originMemberId: string;
|
|
123
123
|
askerDialogId: string;
|
|
124
124
|
callId: string;
|
|
125
|
+
callSiteCourse: CallSiteCourseNo;
|
|
126
|
+
callSiteGenseq: CallSiteGenseqNo;
|
|
125
127
|
collectiveTargets?: string[];
|
|
126
128
|
effectiveFbrEffort?: number;
|
|
127
129
|
}
|
|
@@ -253,8 +255,11 @@ export declare abstract class Dialog {
|
|
|
253
255
|
originMemberId: string;
|
|
254
256
|
askerDialogId: string;
|
|
255
257
|
callId: string;
|
|
258
|
+
callSiteCourse: CallSiteCourseNo;
|
|
259
|
+
callSiteGenseq: CallSiteGenseqNo;
|
|
256
260
|
sessionSlug?: string;
|
|
257
261
|
collectiveTargets?: string[];
|
|
262
|
+
effectiveFbrEffort?: number;
|
|
258
263
|
}): Promise<SideDialog>;
|
|
259
264
|
/**
|
|
260
265
|
* Post a dialog event using the standard event registry.
|
|
@@ -468,6 +473,8 @@ export declare class SideDialog extends Dialog {
|
|
|
468
473
|
originMemberId: string;
|
|
469
474
|
askerDialogId: string;
|
|
470
475
|
callId: string;
|
|
476
|
+
callSiteCourse: CallSiteCourseNo;
|
|
477
|
+
callSiteGenseq: CallSiteGenseqNo;
|
|
471
478
|
sessionSlug?: string;
|
|
472
479
|
collectiveTargets?: string[];
|
|
473
480
|
effectiveFbrEffort?: number;
|
|
@@ -528,6 +535,8 @@ export declare class MainDialog extends Dialog {
|
|
|
528
535
|
originMemberId: string;
|
|
529
536
|
askerDialogId: string;
|
|
530
537
|
callId: string;
|
|
538
|
+
callSiteCourse: CallSiteCourseNo;
|
|
539
|
+
callSiteGenseq: CallSiteGenseqNo;
|
|
531
540
|
sessionSlug?: string;
|
|
532
541
|
collectiveTargets?: string[];
|
|
533
542
|
effectiveFbrEffort?: number;
|
|
@@ -561,6 +570,8 @@ export declare abstract class DialogStore {
|
|
|
561
570
|
originMemberId: string;
|
|
562
571
|
askerDialogId: string;
|
|
563
572
|
callId: string;
|
|
573
|
+
callSiteCourse: CallSiteCourseNo;
|
|
574
|
+
callSiteGenseq: CallSiteGenseqNo;
|
|
564
575
|
sessionSlug?: string;
|
|
565
576
|
collectiveTargets?: string[];
|
|
566
577
|
effectiveFbrEffort?: number;
|
package/dist/dialog.js
CHANGED
|
@@ -126,6 +126,8 @@ function buildSideDialogAssignmentPromptMeta(sideDialog) {
|
|
|
126
126
|
ownerDialogId: assignment.askerDialogId,
|
|
127
127
|
callType: 'B',
|
|
128
128
|
callId: assignment.callId,
|
|
129
|
+
callSiteCourse: assignment.callSiteCourse,
|
|
130
|
+
callSiteGenseq: assignment.callSiteGenseq,
|
|
129
131
|
},
|
|
130
132
|
};
|
|
131
133
|
case 'tellaskSessionless':
|
|
@@ -141,6 +143,8 @@ function buildSideDialogAssignmentPromptMeta(sideDialog) {
|
|
|
141
143
|
ownerDialogId: assignment.askerDialogId,
|
|
142
144
|
callType: 'C',
|
|
143
145
|
callId: assignment.callId,
|
|
146
|
+
callSiteCourse: assignment.callSiteCourse,
|
|
147
|
+
callSiteGenseq: assignment.callSiteGenseq,
|
|
144
148
|
},
|
|
145
149
|
};
|
|
146
150
|
}
|
|
@@ -1791,6 +1795,8 @@ class DialogStore {
|
|
|
1791
1795
|
originMemberId: options.originMemberId,
|
|
1792
1796
|
askerDialogId: options.askerDialogId,
|
|
1793
1797
|
callId: options.callId,
|
|
1798
|
+
callSiteCourse: options.callSiteCourse,
|
|
1799
|
+
callSiteGenseq: options.callSiteGenseq,
|
|
1794
1800
|
collectiveTargets: options.collectiveTargets,
|
|
1795
1801
|
effectiveFbrEffort: options.effectiveFbrEffort,
|
|
1796
1802
|
};
|
|
@@ -1305,6 +1305,21 @@ sequenceDiagram
|
|
|
1305
1305
|
end
|
|
1306
1306
|
```
|
|
1307
1307
|
|
|
1308
|
+
Call-site correspondence invariant: every `tellask` call-site `callId` must later have a
|
|
1309
|
+
same-`callId` historical correspondence point in the tellasker's dialog. A normal sideDialog reply,
|
|
1310
|
+
cross-course carryover, or registered-session replacement notice can close the call; silently removing
|
|
1311
|
+
or overwriting a pending round cannot.
|
|
1312
|
+
|
|
1313
|
+
WebUI external-link invariant: every `/dl/*` URL must be generated at the business call site with the
|
|
1314
|
+
target semantics written out there; avoid generic deep-link helpers. `/dl/callsite` only means the
|
|
1315
|
+
originating bubble in the tellasker's dialog: `selfId/course` are tellasker-dialog coordinates, and
|
|
1316
|
+
`callId` is that dialog's function-call id. SideDialog assignment/update targets are not call sites;
|
|
1317
|
+
they use `/dl/dialog` for the sideDialog, or `/dl/genseq` once the delivered assignment `genseq` is
|
|
1318
|
+
known.
|
|
1319
|
+
When an existing registered sideDialog is reused, the WebUI first links the new call-site bubble to
|
|
1320
|
+
the sideDialog via `tellask_call_callee_evt`; the later `tellask_call_anchor_evt` upgrades that target
|
|
1321
|
+
to the delivered sideDialog `genseq`.
|
|
1322
|
+
|
|
1308
1323
|
#### TYPE C: Transient SideDialog Tellask (`Fresh Tellask`) (`tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })`; `freshBootsReasoning({ tellaskContent: "..." })` is FBR tool-less)
|
|
1309
1324
|
|
|
1310
1325
|
```mermaid
|
|
@@ -1287,6 +1287,17 @@ sequenceDiagram
|
|
|
1287
1287
|
end
|
|
1288
1288
|
```
|
|
1289
1289
|
|
|
1290
|
+
call-site 呼应不变量:每个 `tellask` 发起点的 `callId`,后续都必须在诉请者对话历史里留下同
|
|
1291
|
+
`callId` 的呼应点。正常支线回复、跨程 carryover、已注册会话被更新后的替代通知都可以结束这次
|
|
1292
|
+
call;不能静默删除或覆盖 pending 轮次。
|
|
1293
|
+
|
|
1294
|
+
WebUI 外链不变量:生成 `/dl/*` URL 时必须在业务现场显式写出目标语义,避免复用泛化 deep-link
|
|
1295
|
+
helper。`/dl/callsite` 只表示诉请者对话里的发起气泡:`selfId/course` 是诉请者对话坐标,`callId`
|
|
1296
|
+
是该对话内的 function-call id。支线投递/更新目标不是 call-site,应使用 `/dl/dialog` 指向支线对话,
|
|
1297
|
+
或在投递 `genseq` 已知后使用 `/dl/genseq` 指向支线对话内的投递生成。
|
|
1298
|
+
复用已有注册支线时,WebUI 先用 `tellask_call_callee_evt` 把新发起气泡连到支线对话;后续
|
|
1299
|
+
`tellask_call_anchor_evt` 到达后再升级为支线投递 `genseq`。
|
|
1300
|
+
|
|
1290
1301
|
#### TYPE C:瞬态支线对话诉请(一次性诉请)(`tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })`,或 `freshBootsReasoning({ tellaskContent: "..." })`)
|
|
1291
1302
|
|
|
1292
1303
|
```mermaid
|
package/dist/docs/q4h.md
CHANGED
|
@@ -68,13 +68,15 @@ When a message bubble has a meaningful call site reference (e.g. “response ↔
|
|
|
68
68
|
|
|
69
69
|
### Query parameter schema
|
|
70
70
|
|
|
71
|
-
The WebUI recognizes `window.location.search`
|
|
71
|
+
The WebUI recognizes deep links by `/dl/<kind>` paths plus `window.location.search` parameters.
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
Implementation rule: external-link generation must write the `/dl/*` URL and every field's business
|
|
74
|
+
meaning directly at the generating call site; avoid generic deep-link helpers. For `/dl/callsite`,
|
|
75
|
+
`selfId/course/callId` only identify the originating bubble in the tellasker's dialog. SideDialog
|
|
76
|
+
assignment/update targets must use `/dl/dialog`, or `/dl/genseq` once the delivered assignment
|
|
77
|
+
`genseq` is known.
|
|
74
78
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
#### `dl=q4h` (Q4H question deep link)
|
|
79
|
+
#### `/dl/q4h` (Q4H question deep link)
|
|
78
80
|
|
|
79
81
|
Required:
|
|
80
82
|
|
|
@@ -95,7 +97,7 @@ Behavior:
|
|
|
95
97
|
- If the Q4H is not pending (already answered/cleared), the WebUI still scrolls to the call site but does **not**
|
|
96
98
|
enter answer mode (no selection); it may show a toast indicating the question is no longer pending.
|
|
97
99
|
|
|
98
|
-
####
|
|
100
|
+
#### `/dl/callsite` (generic tellask call site deep link)
|
|
99
101
|
|
|
100
102
|
Required:
|
|
101
103
|
|
|
@@ -109,7 +111,7 @@ Behavior:
|
|
|
109
111
|
- The WebUI navigates to the dialog + course and scrolls to the calling section with `data-call-id=callId`.
|
|
110
112
|
- The input is focused (normal message mode).
|
|
111
113
|
|
|
112
|
-
####
|
|
114
|
+
#### `/dl/genseq` (generation bubble deep link)
|
|
113
115
|
|
|
114
116
|
Required:
|
|
115
117
|
|
|
@@ -126,9 +128,11 @@ Behavior:
|
|
|
126
128
|
### URL examples
|
|
127
129
|
|
|
128
130
|
```text
|
|
129
|
-
|
|
131
|
+
/dl/q4h?qid=q4h-abc123&rootId=R1&selfId=S2&course=3&callId=call-xyz&msg=12
|
|
132
|
+
|
|
133
|
+
/dl/callsite?rootId=R1&selfId=R1&course=1&callId=call-xyz
|
|
130
134
|
|
|
131
|
-
|
|
135
|
+
/dl/genseq?rootId=R1&selfId=S2&course=3&genseq=42
|
|
132
136
|
```
|
|
133
137
|
|
|
134
138
|
Notes:
|
|
@@ -159,7 +163,7 @@ Back-compat:
|
|
|
159
163
|
|
|
160
164
|
- `dominds-q4h-panel`:
|
|
161
165
|
- Keeps internal navigation (same tab).
|
|
162
|
-
- Adds an external icon action that opens a deep link (
|
|
166
|
+
- Adds an external icon action that opens a deep link (`/dl/q4h`) in a new tab/window.
|
|
163
167
|
- `dominds-app`:
|
|
164
168
|
- Parses deep link parameters once at startup and stores a pending deep link intent.
|
|
165
169
|
- Applies the intent after dialogs and (when needed) Q4H state are available.
|
package/dist/docs/q4h.zh.md
CHANGED
|
@@ -69,15 +69,15 @@ Q4H 是 Dominds 的运行时机制:在任何对话中通过向 `askHuman({ tel
|
|
|
69
69
|
|
|
70
70
|
## Deep Link 契约(WebUI)
|
|
71
71
|
|
|
72
|
-
###
|
|
72
|
+
### URL 约定
|
|
73
73
|
|
|
74
|
-
WebUI 通过 `window.location.search`
|
|
74
|
+
WebUI 通过 `/dl/<kind>` 路径和 `window.location.search` 参数识别 deep link。
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
实现规则:生成外链的代码必须在生成现场直接写出 `/dl/*` URL 和每个字段的业务含义,避免泛化
|
|
77
|
+
deep-link helper。`/dl/callsite` 的 `selfId/course/callId` 只表示诉请者对话里的发起气泡;支线投递
|
|
78
|
+
或更新目标应使用 `/dl/dialog` 或已知投递 `genseq` 后的 `/dl/genseq`。
|
|
77
79
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
#### `dl=q4h`(Q4H 提问点 deep link)
|
|
80
|
+
#### `/dl/q4h`(Q4H 提问点 deep link)
|
|
81
81
|
|
|
82
82
|
必需:
|
|
83
83
|
|
|
@@ -97,7 +97,7 @@ WebUI 通过 `window.location.search` 识别 deep link 参数。
|
|
|
97
97
|
- 若该 Q4H 仍待处理:输入框选中 `qid`(回答模式)并聚焦。
|
|
98
98
|
- 若该 Q4H 已不再待处理(已回答/已清理):仍定位/高亮提问点,但**不进入回答模式**(不选中问题);可提示“已不再待处理”。
|
|
99
99
|
|
|
100
|
-
####
|
|
100
|
+
#### `/dl/callsite`(通用 tellask call site deep link)
|
|
101
101
|
|
|
102
102
|
必需:
|
|
103
103
|
|
|
@@ -111,7 +111,7 @@ WebUI 通过 `window.location.search` 识别 deep link 参数。
|
|
|
111
111
|
- WebUI 切换到目标对话 + course,并滚动到 `data-call-id=callId` 对应的 calling section。
|
|
112
112
|
- 输入框聚焦(普通消息模式)。
|
|
113
113
|
|
|
114
|
-
####
|
|
114
|
+
#### `/dl/genseq`(生成气泡 deep link)
|
|
115
115
|
|
|
116
116
|
必需:
|
|
117
117
|
|
|
@@ -128,9 +128,11 @@ WebUI 通过 `window.location.search` 识别 deep link 参数。
|
|
|
128
128
|
### URL 示例
|
|
129
129
|
|
|
130
130
|
```text
|
|
131
|
-
|
|
131
|
+
/dl/q4h?qid=q4h-abc123&rootId=R1&selfId=S2&course=3&callId=call-xyz&msg=12
|
|
132
|
+
|
|
133
|
+
/dl/callsite?rootId=R1&selfId=R1&course=1&callId=call-xyz
|
|
132
134
|
|
|
133
|
-
|
|
135
|
+
/dl/genseq?rootId=R1&selfId=S2&course=3&genseq=42
|
|
134
136
|
```
|
|
135
137
|
|
|
136
138
|
说明:
|
|
@@ -161,7 +163,7 @@ WebUI 通过 `window.location.search` 识别 deep link 参数。
|
|
|
161
163
|
|
|
162
164
|
- `dominds-q4h-panel`:
|
|
163
165
|
- 保留内链“去提问点”。
|
|
164
|
-
- 增加外链图标按钮:打开
|
|
166
|
+
- 增加外链图标按钮:打开 `/dl/q4h` deep link(新 tab/窗口)。
|
|
165
167
|
- `dominds-app`:
|
|
166
168
|
- 启动时解析 deep link,并保存“待执行导航意图”。
|
|
167
169
|
- 在 dialogs / Q4H state 到齐后尝试执行意图。
|
|
@@ -406,6 +406,7 @@ auto-revive 能因为某个 wait-group 齐活而继续 drive,并不等于 owne
|
|
|
406
406
|
replace pending 不是 silent overwrite,也不是 failed-result fallback。它是显式栈操作:
|
|
407
407
|
|
|
408
408
|
- 定位旧 frame 的匹配键必须稳定,倾向使用 `askerDialogId + targetCallId` / `ownerDialogId + callId`,具体以 pending record 与 reply directive 对齐后的字段为准;
|
|
409
|
+
- 每个 `tellask` call-site 的 `callId` 最终都必须在诉请者对话历史里有同 `callId` 的呼应点;被替换时,这个呼应点就是替代通知 / carryover result,而不是等支线对话后续回复时才补;
|
|
409
410
|
- 如果 replace 找不到旧 frame,必须 loud fail,不允许降级成普通 push;
|
|
410
411
|
- 因为持久文件采用 append/truncate-only JSONL,replace 的落盘算法是:
|
|
411
412
|
1. 读取 stack frames 与每行 byte offset;
|
|
@@ -1579,7 +1579,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
|
|
|
1579
1579
|
}
|
|
1580
1580
|
const record = {
|
|
1581
1581
|
ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
|
|
1582
|
-
type: '
|
|
1582
|
+
type: 'tellask_anchor_record',
|
|
1583
1583
|
anchorRole: 'assignment',
|
|
1584
1584
|
callId: normalizedCallId,
|
|
1585
1585
|
genseq: dlg.activeGenSeq,
|
|
@@ -1590,6 +1590,37 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
|
|
|
1590
1590
|
};
|
|
1591
1591
|
const course = dlg.activeGenCourseOrUndefined ?? dlg.currentCourse;
|
|
1592
1592
|
await persistence_1.DialogPersistence.appendEvent(dlg.id, course, record, dlg.status);
|
|
1593
|
+
if (dlg instanceof dialog_1.SideDialog) {
|
|
1594
|
+
const ownerDialogId = new dialog_1.DialogID(replyTarget.ownerDialogId, dlg.id.rootId);
|
|
1595
|
+
const ownerDialogStatus = ownerDialogId.selfId === dlg.mainDialog.id.selfId
|
|
1596
|
+
? dlg.mainDialog.status
|
|
1597
|
+
: dlg.status;
|
|
1598
|
+
const calleeCourse = (0, storage_1.toCalleeCourseNumber)(course);
|
|
1599
|
+
const calleeGenseq = (0, storage_1.toCalleeGenerationSeqNumber)(dlg.activeGenSeq);
|
|
1600
|
+
const calleeRecord = {
|
|
1601
|
+
ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
|
|
1602
|
+
type: 'tellask_callee_record',
|
|
1603
|
+
...(0, storage_1.toRootGenerationAnchor)({
|
|
1604
|
+
rootCourse: dlg.mainDialog.currentCourse,
|
|
1605
|
+
rootGenseq: dlg.mainDialog.activeGenSeqOrUndefined ?? 0,
|
|
1606
|
+
}),
|
|
1607
|
+
genseq: replyTarget.callSiteGenseq,
|
|
1608
|
+
callId: normalizedCallId,
|
|
1609
|
+
calleeDialogId: dlg.id.selfId,
|
|
1610
|
+
calleeCourse,
|
|
1611
|
+
calleeGenseq,
|
|
1612
|
+
};
|
|
1613
|
+
await persistence_1.DialogPersistence.appendEvent(ownerDialogId, replyTarget.callSiteCourse, calleeRecord, ownerDialogStatus);
|
|
1614
|
+
(0, evt_registry_1.postDialogEventById)(ownerDialogId, {
|
|
1615
|
+
type: 'tellask_callee_evt',
|
|
1616
|
+
course: replyTarget.callSiteCourse,
|
|
1617
|
+
genseq: replyTarget.callSiteGenseq,
|
|
1618
|
+
callId: normalizedCallId,
|
|
1619
|
+
calleeDialogId: dlg.id.selfId,
|
|
1620
|
+
calleeCourse,
|
|
1621
|
+
calleeGenseq,
|
|
1622
|
+
});
|
|
1623
|
+
}
|
|
1593
1624
|
}
|
|
1594
1625
|
}
|
|
1595
1626
|
await dlg.processReminderUpdates();
|
|
@@ -273,7 +273,7 @@ async function inspectNoPromptSideDialogDrive(args) {
|
|
|
273
273
|
}
|
|
274
274
|
return courseEvents[courseEvents.length - 1];
|
|
275
275
|
})();
|
|
276
|
-
const lastEvent = rawLastEvent?.type === '
|
|
276
|
+
const lastEvent = rawLastEvent?.type === 'tellask_anchor_record'
|
|
277
277
|
? { type: rawLastEvent.type, anchorRole: rawLastEvent.anchorRole }
|
|
278
278
|
: rawLastEvent
|
|
279
279
|
? { type: rawLastEvent.type }
|
|
@@ -282,7 +282,7 @@ async function inspectNoPromptSideDialogDrive(args) {
|
|
|
282
282
|
latest?.executionMarker?.kind === 'interrupted';
|
|
283
283
|
const supplyResponseParentReviveAllowed = source === 'kernel_driver_supply_response_parent_revive' &&
|
|
284
284
|
hasNoPromptSideDialogResumeEntitlement(args.dialog, args.driveOptions);
|
|
285
|
-
if (lastEvent?.type === '
|
|
285
|
+
if (lastEvent?.type === 'tellask_anchor_record' && lastEvent.anchorRole === 'response') {
|
|
286
286
|
return {
|
|
287
287
|
shouldReject: true,
|
|
288
288
|
source,
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import { type AskerCourseNumber } from '@longrun-ai/kernel/types/storage';
|
|
2
2
|
import { Dialog, DialogID, SideDialog } from '../../dialog';
|
|
3
|
+
import { type DialogPersistenceStatus } from '../../dialog-instance-registry';
|
|
3
4
|
import type { KernelDriverDriveCallOptions, KernelDriverSideDialogReplyTarget } from './types';
|
|
4
5
|
export type SideDialogReplyTarget = KernelDriverSideDialogReplyTarget;
|
|
5
6
|
export type ScheduleDriveFn = (dialog: Dialog, options: KernelDriverDriveCallOptions) => void;
|
|
7
|
+
export declare function resolveLatestAssignmentAnchorRef(args: {
|
|
8
|
+
calleeDialogId: DialogID;
|
|
9
|
+
callId: string;
|
|
10
|
+
status: DialogPersistenceStatus;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
course: number;
|
|
13
|
+
genseq: number;
|
|
14
|
+
} | undefined>;
|
|
6
15
|
export declare function supplyResponseToAskerDialog(args: {
|
|
7
16
|
parentDialog: Dialog;
|
|
8
17
|
sideDialogId: DialogID;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveLatestAssignmentAnchorRef = resolveLatestAssignmentAnchorRef;
|
|
3
4
|
exports.supplyResponseToAskerDialog = supplyResponseToAskerDialog;
|
|
4
5
|
exports.supplySideDialogResponseToSpecificAskerIfPendingV2 = supplySideDialogResponseToSpecificAskerIfPendingV2;
|
|
5
6
|
exports.supplySideDialogResponseToAssignedAskerIfPendingV2 = supplySideDialogResponseToAssignedAskerIfPendingV2;
|
|
@@ -130,7 +131,7 @@ async function resolveLatestAssignmentAnchorRef(args) {
|
|
|
130
131
|
const courseEvents = await persistence_1.DialogPersistence.loadCourseEvents(args.calleeDialogId, course, args.status);
|
|
131
132
|
for (let i = courseEvents.length - 1; i >= 0; i -= 1) {
|
|
132
133
|
const event = courseEvents[i];
|
|
133
|
-
if (event.type !== '
|
|
134
|
+
if (event.type !== 'tellask_anchor_record') {
|
|
134
135
|
continue;
|
|
135
136
|
}
|
|
136
137
|
if (event.anchorRole !== 'assignment') {
|
|
@@ -347,7 +348,7 @@ async function supplyResponseToAskerDialog(args) {
|
|
|
347
348
|
}
|
|
348
349
|
const anchorRecord = {
|
|
349
350
|
ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
|
|
350
|
-
type: '
|
|
351
|
+
type: 'tellask_anchor_record',
|
|
351
352
|
anchorRole: 'response',
|
|
352
353
|
callId: resolvedCallId,
|
|
353
354
|
genseq: calleeResponseRef.genseq,
|
|
@@ -369,6 +370,7 @@ async function supplyResponseToAskerDialog(args) {
|
|
|
369
370
|
await persistence_1.DialogPersistence.appendEvent(sideDialogId, calleeResponseRef.course, anchorRecord, parentDialog.status);
|
|
370
371
|
}
|
|
371
372
|
await syncPendingTellaskReminderBestEffort(parentDialog, 'kernel-driver:supplyResponseToAskerDialog');
|
|
373
|
+
const responseRouteRef = calleeResponseRef;
|
|
372
374
|
await parentDialog.receiveTellaskResponse(result.responderId, result.callName, result.mentionList, result.tellaskContent, status, sideDialogId, {
|
|
373
375
|
response: tellaskerResponseText,
|
|
374
376
|
agentId: result.responderAgentId ?? result.responderId,
|
|
@@ -382,11 +384,11 @@ async function supplyResponseToAskerDialog(args) {
|
|
|
382
384
|
: undefined,
|
|
383
385
|
carryoverContent,
|
|
384
386
|
sessionSlug: result.sessionSlug,
|
|
385
|
-
calleeCourse:
|
|
386
|
-
? (0, storage_1.toCalleeCourseNumber)(
|
|
387
|
+
calleeCourse: responseRouteRef !== undefined
|
|
388
|
+
? (0, storage_1.toCalleeCourseNumber)(responseRouteRef.course)
|
|
387
389
|
: undefined,
|
|
388
|
-
calleeGenseq:
|
|
389
|
-
? (0, storage_1.toCalleeGenerationSeqNumber)(
|
|
390
|
+
calleeGenseq: responseRouteRef !== undefined
|
|
391
|
+
? (0, storage_1.toCalleeGenerationSeqNumber)(responseRouteRef.genseq)
|
|
390
392
|
: undefined,
|
|
391
393
|
});
|
|
392
394
|
const immediateMirror = carryoverContent !== undefined
|
|
@@ -415,11 +417,11 @@ async function supplyResponseToAskerDialog(args) {
|
|
|
415
417
|
mentionList: result.mentionList ?? [],
|
|
416
418
|
}
|
|
417
419
|
: {}),
|
|
418
|
-
...(
|
|
420
|
+
...(responseRouteRef !== undefined
|
|
419
421
|
? {
|
|
420
422
|
calleeDialogId: sideDialogId.selfId,
|
|
421
|
-
calleeCourse:
|
|
422
|
-
calleeGenseq:
|
|
423
|
+
calleeCourse: responseRouteRef.course,
|
|
424
|
+
calleeGenseq: responseRouteRef.genseq,
|
|
423
425
|
}
|
|
424
426
|
: {
|
|
425
427
|
calleeDialogId: sideDialogId.selfId,
|
|
@@ -461,10 +463,10 @@ async function supplyResponseToAskerDialog(args) {
|
|
|
461
463
|
},
|
|
462
464
|
route: {
|
|
463
465
|
calleeDialogId: sideDialogId.selfId,
|
|
464
|
-
...(
|
|
466
|
+
...(responseRouteRef !== undefined
|
|
465
467
|
? {
|
|
466
|
-
calleeCourse:
|
|
467
|
-
calleeGenseq:
|
|
468
|
+
calleeCourse: responseRouteRef.course,
|
|
469
|
+
calleeGenseq: responseRouteRef.genseq,
|
|
468
470
|
}
|
|
469
471
|
: {}),
|
|
470
472
|
},
|