@makaio/framework 1.0.0-dev-1783439621927 → 1.0.0-dev-1783477169057
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/.makaio-build.json +2 -2
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/index.d.mts +2 -2
- package/dist/adapters/index.mjs +1 -1
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +4 -4
- package/dist/{base-orchestrator-ODRyDBzu.d.mts → base-orchestrator-J1WKAUkF.d.mts} +24 -3
- package/dist/bus/index.d.mts +22 -22
- package/dist/bus/index.mjs +1 -1
- package/dist/{client-n0OJiTt1.mjs → client-l1Rq5p6X.mjs} +1 -1
- package/dist/clients/index.d.mts +30 -0
- package/dist/clients/index.mjs +2 -2
- package/dist/contracts/adapter/index.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +1 -1
- package/dist/contracts/canonical-model/index.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/config/index.d.mts +6 -6
- package/dist/contracts/extension/index.d.mts +2 -2
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +199 -199
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/provider/index.d.mts +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/workflow/index.d.mts +2 -2
- package/dist/{definition-DpkfJi8v.d.mts → definition-DePb3ke-.d.mts} +1 -1
- package/dist/{index-BwGfdbI0.d.mts → index-2fK9iSHI.d.mts} +9 -9
- package/dist/{index-D7rWAEY0.d.mts → index-B-6DtLLz.d.mts} +1 -1
- package/dist/{index-DTBQOCar.d.mts → index-BMbmoarE.d.mts} +16 -16
- package/dist/{index-DS6kxiFl.d.mts → index-BX1MxwFr.d.mts} +28 -28
- package/dist/{index-CqCe7Phc.d.mts → index-BcwOnvUh.d.mts} +6 -6
- package/dist/{index-Cyi7y_aG.d.mts → index-BeouVICp.d.mts} +24 -24
- package/dist/{index-C8k2f_E0.d.mts → index-BjO4Zkap.d.mts} +1 -1
- package/dist/{index-BvjLe_w9.d.mts → index-Bl42SCEI.d.mts} +8 -8
- package/dist/{index-B5Uczo3R.d.mts → index-CA-AJbq6.d.mts} +28 -28
- package/dist/{index-Dtb2cVJz.d.mts → index-CQQcnpev.d.mts} +11 -11
- package/dist/{index-D7Fu3375.d.mts → index-C_xQM96Y.d.mts} +380 -380
- package/dist/{index-DFK3tpEY.d.mts → index-CwFSL4xI.d.mts} +75 -12
- package/dist/{index-WHUV7neB.d.mts → index-DMz-2ACU.d.mts} +105 -105
- package/dist/{index-CwHP8Jxs.d.mts → index-DScUb-hF.d.mts} +190 -2
- package/dist/{index-CYHWOXUm.d.mts → index-Di84JjS0.d.mts} +1 -1
- package/dist/{index-DmJ-OpTD.d.mts → index-Dv4oGVZK.d.mts} +335 -335
- package/dist/{index-DLNRgZPo2.d.mts → index-j_X5xefv2.d.mts} +26 -26
- package/dist/{index-BIZeIA5k.d.mts → index-uM4KZopE.d.mts} +8 -8
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/{namespace-C74bbsdZ.d.mts → namespace-3yGm4WF9.d.mts} +2 -2
- package/dist/{namespace-DRXQyBe0.d.mts → namespace-Boh42UoL.d.mts} +20 -20
- package/dist/{namespace-BLER-Qom.d.mts → namespace-COEUMuHL.d.mts} +154 -154
- package/dist/{namespace-CGxFYDlK.d.mts → namespace-D94HrTtq.d.mts} +38 -38
- package/dist/{namespace-D4Uf5Mw_.d.mts → namespace-OLAh9wHU.d.mts} +9 -9
- package/dist/{namespace-JFzrlNs4.d.mts → namespace-TPbegIMi.d.mts} +8 -8
- package/dist/package.json +1 -1
- package/dist/{schema-B9goOieO.d.mts → schema-B5vHi7Uu.d.mts} +1 -1
- package/dist/{schemas-CurUbHy4.d.mts → schemas-BemsLc_V.d.mts} +4 -4
- package/dist/{schemas-B_t6oOK-.d.mts → schemas-CDBn9MTz.d.mts} +154 -154
- package/dist/{schemas-CW6YsPT4.d.mts → schemas-CscdPqCt.d.mts} +3 -3
- package/dist/{schemas-DXeGCbJ9.d.mts → schemas-D512XweP.d.mts} +5 -5
- package/dist/{schemas-9S9Y9PHT2.d.mts → schemas-DOV4UouN2.d.mts} +10 -10
- package/dist/{schemas-DnmbwE_V.d.mts → schemas-DWfo0wp4.d.mts} +7 -7
- package/dist/services/adapter-subsystem/index.d.mts +2 -2
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +11 -11
- package/dist/services/execution-target/index.d.mts +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/harness/index.d.mts +3 -3
- package/dist/services/index.d.mts +130 -130
- package/dist/services/index.mjs +1 -1
- package/dist/services/log-import/browser.d.mts +2 -2
- package/dist/services/log-import/index.d.mts +2 -2
- package/dist/services/log-import/index.mjs +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/log-import/namespace.d.mts +2 -2
- package/dist/services/log-import/schemas.d.mts +1 -1
- package/dist/services/preferences/index.d.mts +2 -2
- package/dist/services/preferences/schemas.d.mts +1 -1
- package/dist/services/preferences/storage-namespace.d.mts +2 -2
- package/dist/services/session/index.d.mts +6 -6
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/testing/index.mjs +1 -1
- package/dist/services/settings/namespace.d.mts +13 -13
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/subagent-template/index.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/tray-menu/index.d.mts +2 -2
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/session-CoGaTin6.mjs +69 -0
- package/dist/{storage-namespace-BvRF22by.d.mts → storage-namespace-Di1A3DMm.d.mts} +10 -10
- package/dist/{tool-approval-service-BIbUSuqg.mjs → tool-approval-service-BNXgr-az.mjs} +1 -1
- package/dist/tools-BaO4GYj0.mjs +1 -0
- package/dist/{transition-DYorNHZu.d.mts → transition-Bbjlwv5K.d.mts} +1 -1
- package/dist/{types-BWduCvRU.d.mts → types-CNkx2awa.d.mts} +1 -1
- package/dist/{types-N_BOtTqt.d.mts → types-D7W0ntGr.d.mts} +16 -0
- package/dist/{types-9XCB1aPK.d.mts → types-jruUn6oW.d.mts} +254 -254
- package/dist/ui-kernel/index.d.mts +4 -4
- package/dist/ui-kernel/pages/namespace.d.mts +4 -4
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/workflow-engine/index.d.mts +19 -19
- package/package.json +1 -1
- package/dist/session-CZUrp7gC.mjs +0 -69
- package/dist/tools-Yz8XyiwA.mjs +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as PageSurfaceConfig, s as SurfaceId } from "../schemas-
|
|
1
|
+
import { r as PageSurfaceConfig, s as SurfaceId } from "../schemas-BemsLc_V.mjs";
|
|
2
2
|
import * as _$zod from "zod";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import * as _$_makaio_core0 from "@makaio/framework/core";
|
|
@@ -2309,8 +2309,8 @@ declare const UiSchemas: {
|
|
|
2309
2309
|
ready: z.ZodObject<{
|
|
2310
2310
|
surface: z.ZodEnum<{
|
|
2311
2311
|
tray: "tray";
|
|
2312
|
-
web: "web";
|
|
2313
2312
|
mobile: "mobile";
|
|
2313
|
+
web: "web";
|
|
2314
2314
|
electron: "electron";
|
|
2315
2315
|
electrobun: "electrobun";
|
|
2316
2316
|
}>;
|
|
@@ -2409,8 +2409,8 @@ declare const UiNamespace: _$_makaio_core0.BusNamespaceDefinition<"ui", {
|
|
|
2409
2409
|
ready: _$zod.ZodObject<{
|
|
2410
2410
|
surface: _$zod.ZodEnum<{
|
|
2411
2411
|
tray: "tray";
|
|
2412
|
-
web: "web";
|
|
2413
2412
|
mobile: "mobile";
|
|
2413
|
+
web: "web";
|
|
2414
2414
|
electron: "electron";
|
|
2415
2415
|
electrobun: "electrobun";
|
|
2416
2416
|
}>;
|
|
@@ -2450,8 +2450,8 @@ declare const UiSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.FlatSubjec
|
|
|
2450
2450
|
ready: _$zod.ZodObject<{
|
|
2451
2451
|
surface: _$zod.ZodEnum<{
|
|
2452
2452
|
tray: "tray";
|
|
2453
|
-
web: "web";
|
|
2454
2453
|
mobile: "mobile";
|
|
2454
|
+
web: "web";
|
|
2455
2455
|
electron: "electron";
|
|
2456
2456
|
electrobun: "electrobun";
|
|
2457
2457
|
}>;
|
|
@@ -15,8 +15,8 @@ declare const PageNamespace: _$_makaio_core0.BusNamespaceDefinition<"pages", {
|
|
|
15
15
|
readonly request: _$zod.ZodObject<{
|
|
16
16
|
surface: _$zod.ZodOptional<_$zod.ZodEnum<{
|
|
17
17
|
tray: "tray";
|
|
18
|
-
web: "web";
|
|
19
18
|
mobile: "mobile";
|
|
19
|
+
web: "web";
|
|
20
20
|
electron: "electron";
|
|
21
21
|
electrobun: "electrobun";
|
|
22
22
|
}>>;
|
|
@@ -35,8 +35,8 @@ declare const PageNamespace: _$_makaio_core0.BusNamespaceDefinition<"pages", {
|
|
|
35
35
|
level: _$zod.ZodCustom<_$_makaio_contracts0.UiNavigationLevel, _$_makaio_contracts0.UiNavigationLevel>;
|
|
36
36
|
surfaces: _$zod.ZodOptional<_$zod.ZodUnion<readonly [_$zod.ZodLiteral<"all">, _$zod.ZodArray<_$zod.ZodEnum<{
|
|
37
37
|
tray: "tray";
|
|
38
|
-
web: "web";
|
|
39
38
|
mobile: "mobile";
|
|
39
|
+
web: "web";
|
|
40
40
|
electron: "electron";
|
|
41
41
|
electrobun: "electrobun";
|
|
42
42
|
}>>]>>;
|
|
@@ -55,8 +55,8 @@ declare const PageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.FlatSubj
|
|
|
55
55
|
readonly request: _$zod.ZodObject<{
|
|
56
56
|
surface: _$zod.ZodOptional<_$zod.ZodEnum<{
|
|
57
57
|
tray: "tray";
|
|
58
|
-
web: "web";
|
|
59
58
|
mobile: "mobile";
|
|
59
|
+
web: "web";
|
|
60
60
|
electron: "electron";
|
|
61
61
|
electrobun: "electrobun";
|
|
62
62
|
}>>;
|
|
@@ -75,8 +75,8 @@ declare const PageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.FlatSubj
|
|
|
75
75
|
level: _$zod.ZodCustom<_$_makaio_contracts0.UiNavigationLevel, _$_makaio_contracts0.UiNavigationLevel>;
|
|
76
76
|
surfaces: _$zod.ZodOptional<_$zod.ZodUnion<readonly [_$zod.ZodLiteral<"all">, _$zod.ZodArray<_$zod.ZodEnum<{
|
|
77
77
|
tray: "tray";
|
|
78
|
-
web: "web";
|
|
79
78
|
mobile: "mobile";
|
|
79
|
+
web: "web";
|
|
80
80
|
electron: "electron";
|
|
81
81
|
electrobun: "electrobun";
|
|
82
82
|
}>>]>>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SurfaceCapabilitySchema, c as SurfaceIdSchema, i as SurfaceCapability, l as isPageVisibleOnSurface, n as PageSchemas, o as SurfaceDeclaration, r as PageSurfaceConfig, s as SurfaceId, t as PageMetadata } from "../../schemas-
|
|
1
|
+
import { a as SurfaceCapabilitySchema, c as SurfaceIdSchema, i as SurfaceCapability, l as isPageVisibleOnSurface, n as PageSchemas, o as SurfaceDeclaration, r as PageSurfaceConfig, s as SurfaceId, t as PageMetadata } from "../../schemas-BemsLc_V.mjs";
|
|
2
2
|
export { PageMetadata, PageSchemas, PageSurfaceConfig, SurfaceCapability, SurfaceCapabilitySchema, SurfaceDeclaration, SurfaceId, SurfaceIdSchema, isPageVisibleOnSurface };
|
|
@@ -950,8 +950,8 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
950
950
|
"delegate-agent": "delegate-agent";
|
|
951
951
|
"delegate-role": "delegate-role";
|
|
952
952
|
sequence: "sequence";
|
|
953
|
-
gate: "gate";
|
|
954
953
|
parallel: "parallel";
|
|
954
|
+
gate: "gate";
|
|
955
955
|
iterate: "iterate";
|
|
956
956
|
"iterate-chain": "iterate-chain";
|
|
957
957
|
loop: "loop";
|
|
@@ -996,8 +996,8 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
996
996
|
"delegate-agent": "delegate-agent";
|
|
997
997
|
"delegate-role": "delegate-role";
|
|
998
998
|
sequence: "sequence";
|
|
999
|
-
gate: "gate";
|
|
1000
999
|
parallel: "parallel";
|
|
1000
|
+
gate: "gate";
|
|
1001
1001
|
iterate: "iterate";
|
|
1002
1002
|
"iterate-chain": "iterate-chain";
|
|
1003
1003
|
loop: "loop";
|
|
@@ -1039,8 +1039,8 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
1039
1039
|
"delegate-agent": "delegate-agent";
|
|
1040
1040
|
"delegate-role": "delegate-role";
|
|
1041
1041
|
sequence: "sequence";
|
|
1042
|
-
gate: "gate";
|
|
1043
1042
|
parallel: "parallel";
|
|
1043
|
+
gate: "gate";
|
|
1044
1044
|
iterate: "iterate";
|
|
1045
1045
|
"iterate-chain": "iterate-chain";
|
|
1046
1046
|
loop: "loop";
|
|
@@ -1996,7 +1996,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
1996
1996
|
tableName: "workflow_definitions";
|
|
1997
1997
|
dataType: "string";
|
|
1998
1998
|
columnType: "SQLiteText";
|
|
1999
|
-
data: "external" | "
|
|
1999
|
+
data: "external" | "global" | "workspace" | "session";
|
|
2000
2000
|
driverParam: string;
|
|
2001
2001
|
notNull: true;
|
|
2002
2002
|
hasDefault: false;
|
|
@@ -2009,7 +2009,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
2009
2009
|
generated: undefined;
|
|
2010
2010
|
}, {}, {
|
|
2011
2011
|
length: number | undefined;
|
|
2012
|
-
$type: "external" | "
|
|
2012
|
+
$type: "external" | "global" | "workspace" | "session";
|
|
2013
2013
|
}>;
|
|
2014
2014
|
scopeKind: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
|
|
2015
2015
|
name: "scope_kind";
|
|
@@ -2367,7 +2367,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
2367
2367
|
tableName: "workflow_executions";
|
|
2368
2368
|
dataType: "string";
|
|
2369
2369
|
columnType: "SQLiteText";
|
|
2370
|
-
data: "external" | "
|
|
2370
|
+
data: "external" | "global" | "workspace" | "session";
|
|
2371
2371
|
driverParam: string;
|
|
2372
2372
|
notNull: true;
|
|
2373
2373
|
hasDefault: false;
|
|
@@ -2380,7 +2380,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
2380
2380
|
generated: undefined;
|
|
2381
2381
|
}, {}, {
|
|
2382
2382
|
length: number | undefined;
|
|
2383
|
-
$type: "external" | "
|
|
2383
|
+
$type: "external" | "global" | "workspace" | "session";
|
|
2384
2384
|
}>;
|
|
2385
2385
|
scopeKind: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
|
|
2386
2386
|
name: "scope_kind";
|
|
@@ -2713,7 +2713,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
2713
2713
|
tableName: "workflow_execution_frames";
|
|
2714
2714
|
dataType: "string";
|
|
2715
2715
|
columnType: "SQLiteText";
|
|
2716
|
-
data: "station" | "delegate-agent" | "delegate-role" | "sequence" | "
|
|
2716
|
+
data: "station" | "delegate-agent" | "delegate-role" | "sequence" | "parallel" | "gate" | "iterate" | "iterate-chain" | "loop";
|
|
2717
2717
|
driverParam: string;
|
|
2718
2718
|
notNull: true;
|
|
2719
2719
|
hasDefault: false;
|
|
@@ -2726,7 +2726,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
2726
2726
|
generated: undefined;
|
|
2727
2727
|
}, {}, {
|
|
2728
2728
|
length: number | undefined;
|
|
2729
|
-
$type: "station" | "delegate-agent" | "delegate-role" | "sequence" | "
|
|
2729
|
+
$type: "station" | "delegate-agent" | "delegate-role" | "sequence" | "parallel" | "gate" | "iterate" | "iterate-chain" | "loop";
|
|
2730
2730
|
}>;
|
|
2731
2731
|
path: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
|
|
2732
2732
|
name: string;
|
|
@@ -4101,7 +4101,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
4101
4101
|
tableName: "workflow_run_contexts";
|
|
4102
4102
|
dataType: "string";
|
|
4103
4103
|
columnType: "SQLiteText";
|
|
4104
|
-
data: "external" | "
|
|
4104
|
+
data: "external" | "global" | "workspace" | "session";
|
|
4105
4105
|
driverParam: string;
|
|
4106
4106
|
notNull: true;
|
|
4107
4107
|
hasDefault: true;
|
|
@@ -4114,7 +4114,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
4114
4114
|
generated: undefined;
|
|
4115
4115
|
}, {}, {
|
|
4116
4116
|
length: number | undefined;
|
|
4117
|
-
$type: "external" | "
|
|
4117
|
+
$type: "external" | "global" | "workspace" | "session";
|
|
4118
4118
|
}>;
|
|
4119
4119
|
scopeKind: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
|
|
4120
4120
|
name: "scope_kind";
|
|
@@ -4552,7 +4552,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
4552
4552
|
tableName: "worklog_frame_entries";
|
|
4553
4553
|
dataType: "string";
|
|
4554
4554
|
columnType: "SQLiteText";
|
|
4555
|
-
data: "station" | "delegate-agent" | "delegate-role" | "sequence" | "
|
|
4555
|
+
data: "station" | "delegate-agent" | "delegate-role" | "sequence" | "parallel" | "gate" | "iterate" | "iterate-chain" | "loop";
|
|
4556
4556
|
driverParam: string;
|
|
4557
4557
|
notNull: true;
|
|
4558
4558
|
hasDefault: false;
|
|
@@ -4565,7 +4565,7 @@ declare const WorkflowStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
4565
4565
|
generated: undefined;
|
|
4566
4566
|
}, {}, {
|
|
4567
4567
|
length: number | undefined;
|
|
4568
|
-
$type: "station" | "delegate-agent" | "delegate-role" | "sequence" | "
|
|
4568
|
+
$type: "station" | "delegate-agent" | "delegate-role" | "sequence" | "parallel" | "gate" | "iterate" | "iterate-chain" | "loop";
|
|
4569
4569
|
}>;
|
|
4570
4570
|
path: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
|
|
4571
4571
|
name: string;
|
|
@@ -6212,8 +6212,8 @@ declare const WorkflowStorageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
|
|
|
6212
6212
|
"delegate-agent": "delegate-agent";
|
|
6213
6213
|
"delegate-role": "delegate-role";
|
|
6214
6214
|
sequence: "sequence";
|
|
6215
|
-
gate: "gate";
|
|
6216
6215
|
parallel: "parallel";
|
|
6216
|
+
gate: "gate";
|
|
6217
6217
|
iterate: "iterate";
|
|
6218
6218
|
"iterate-chain": "iterate-chain";
|
|
6219
6219
|
loop: "loop";
|
|
@@ -6258,8 +6258,8 @@ declare const WorkflowStorageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
|
|
|
6258
6258
|
"delegate-agent": "delegate-agent";
|
|
6259
6259
|
"delegate-role": "delegate-role";
|
|
6260
6260
|
sequence: "sequence";
|
|
6261
|
-
gate: "gate";
|
|
6262
6261
|
parallel: "parallel";
|
|
6262
|
+
gate: "gate";
|
|
6263
6263
|
iterate: "iterate";
|
|
6264
6264
|
"iterate-chain": "iterate-chain";
|
|
6265
6265
|
loop: "loop";
|
|
@@ -6301,8 +6301,8 @@ declare const WorkflowStorageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
|
|
|
6301
6301
|
"delegate-agent": "delegate-agent";
|
|
6302
6302
|
"delegate-role": "delegate-role";
|
|
6303
6303
|
sequence: "sequence";
|
|
6304
|
-
gate: "gate";
|
|
6305
6304
|
parallel: "parallel";
|
|
6305
|
+
gate: "gate";
|
|
6306
6306
|
iterate: "iterate";
|
|
6307
6307
|
"iterate-chain": "iterate-chain";
|
|
6308
6308
|
loop: "loop";
|
|
@@ -7230,7 +7230,7 @@ declare const workflowDefinitionsDual: _$_makaio_storage_drizzle0.DualTable<"wor
|
|
|
7230
7230
|
} | undefined;
|
|
7231
7231
|
providers?: Record<string, JsonValue> | undefined;
|
|
7232
7232
|
}>>;
|
|
7233
|
-
scopeType: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_type", ["global", "workspace", "session", "external"], number | undefined>>, "external" | "
|
|
7233
|
+
scopeType: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_type", ["global", "workspace", "session", "external"], number | undefined>>, "external" | "global" | "workspace" | "session">, _$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"scope_type", ["global", "workspace", "session", "external"]>>, "external" | "global" | "workspace" | "session">>;
|
|
7234
7234
|
scopeKind: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_kind", [string, ...string[]], number | undefined>>>, _$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"scope_kind", [string, ...string[]]>>>>;
|
|
7235
7235
|
scopeId: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_id", [string, ...string[]], number | undefined>>>, _$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"scope_id", [string, ...string[]]>>>>; /** Unique workflow identifier. */
|
|
7236
7236
|
id: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.IsPrimaryKey<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"id", [string, ...string[]], number | undefined>>>, _$drizzle_orm0.IsPrimaryKey<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"id", [string, ...string[]]>>>>; /** Workflow name. */
|
|
@@ -7369,7 +7369,7 @@ declare const workflowDefinitionsDual: _$_makaio_storage_drizzle0.DualTable<"wor
|
|
|
7369
7369
|
* Stores runtime state of workflow executions.
|
|
7370
7370
|
*/
|
|
7371
7371
|
declare const workflowExecutionsDual: _$_makaio_storage_drizzle0.DualTable<"workflow_executions", {
|
|
7372
|
-
scopeType: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_type", ["global", "workspace", "session", "external"], number | undefined>>, "external" | "
|
|
7372
|
+
scopeType: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_type", ["global", "workspace", "session", "external"], number | undefined>>, "external" | "global" | "workspace" | "session">, _$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"scope_type", ["global", "workspace", "session", "external"]>>, "external" | "global" | "workspace" | "session">>;
|
|
7373
7373
|
scopeKind: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_kind", [string, ...string[]], number | undefined>>>, _$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"scope_kind", [string, ...string[]]>>>>;
|
|
7374
7374
|
scopeId: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"scope_id", [string, ...string[]], number | undefined>>>, _$drizzle_orm0.HasDefault<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"scope_id", [string, ...string[]]>>>>; /** Unique execution identifier. */
|
|
7375
7375
|
id: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.IsPrimaryKey<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"id", [string, ...string[]], number | undefined>>>, _$drizzle_orm0.IsPrimaryKey<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"id", [string, ...string[]]>>>>; /** Workflow definition or ephemeral source execution identifier. */
|
|
@@ -7442,7 +7442,7 @@ declare const worklogFrameEntriesDual: _$_makaio_storage_drizzle0.DualTable<"wor
|
|
|
7442
7442
|
/** Unique frame identifier within the execution. */frameId: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.IsPrimaryKey<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"frame_id", [string, ...string[]], number | undefined>>>, _$drizzle_orm0.IsPrimaryKey<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"frame_id", [string, ...string[]]>>>>; /** Execution this frame belongs to. */
|
|
7443
7443
|
executionId: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"execution_id", [string, ...string[]], number | undefined>>, _$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"execution_id", [string, ...string[]]>>>; /** Node identifier from the workflow definition. */
|
|
7444
7444
|
nodeId: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"node_id", [string, ...string[]], number | undefined>>, _$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"node_id", [string, ...string[]]>>>; /** Node type discriminant. */
|
|
7445
|
-
nodeType: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"node_type", [string, ...string[]], number | undefined>>, "station" | "delegate-agent" | "delegate-role" | "sequence" | "
|
|
7445
|
+
nodeType: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"node_type", [string, ...string[]], number | undefined>>, "station" | "delegate-agent" | "delegate-role" | "sequence" | "parallel" | "gate" | "iterate" | "iterate-chain" | "loop">, _$drizzle_orm0.$Type<_$drizzle_orm0.NotNull<_$drizzle_orm_pg_core0.PgTextBuilderInitial<"node_type", [string, ...string[]]>>, "station" | "delegate-agent" | "delegate-role" | "sequence" | "parallel" | "gate" | "iterate" | "iterate-chain" | "loop">>;
|
|
7446
7446
|
/**
|
|
7447
7447
|
* Ordered path of frame IDs from the root frame to this frame (inclusive).
|
|
7448
7448
|
* Stored as a JSON array for tree correlation.
|
package/package.json
CHANGED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import{agents as e,agentsDual as t,sessions as n,sessionsDual as r}from"./services/session/storage/schema.mjs";import"./schema-7aKBGB7S.mjs";import{a as i,n as a,o}from"./namespace-dFBD2ZmS.mjs";import{A as s,E as c,I as l,L as u,O as d,R as f,S as p,_ as m,d as h,f as g,g as _,h as v,l as ee,m as y,p as te,u as b,v as ne,y as x,z as S}from"./handlers-B74FvKlA.mjs";import{TurnStorageSubjects as C}from"./services/turn/namespace.mjs";import{SessionStorageSubjects as w}from"./services/session/storage/namespace.mjs";import{r as re,t as ie}from"./provider-context-DC_eq7es.mjs";import{AdapterRuntimeSubjects as ae}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as T}from"./services/session/messages/namespace.mjs";import{n as oe}from"./namespace-wke7juzy.mjs";import{z as E}from"zod";import{createBusNamespace as se}from"@makaio/framework/core";import{MakaioBus as ce,NoHandlerError as le,TimeoutError as ue}from"@makaio/framework/bus";import{AdapterSubjects as D,AgentSubjects as O,CanonicalModelSubjects as de,CapabilitySubjects as fe,ClientSubjects as pe,CompressionModeSchema as me,FORK_SESSION_LINEAGE_KIND as he,ForkTransformsSchema as ge,MessageRoutingSchema as _e,ROOT_SESSION_LINEAGE_KIND as ve,SessionContextSchema as ye,SessionDiscoveredSchema as be,SessionRecordMetadataSchema as xe,SessionStorageSetRequestSchema as Se,SessionStorageUpdateSchema as Ce,SessionSubjects as k,TurnIngestionMarkerSchema as we,compareMessageCursorAsc as Te,compareMessageCursorDesc as Ee,isCanonicalModelParseError as De,messageToCursor as A,parseCanonicalModel as Oe}from"@makaio/framework/contracts";import{BaseService as ke}from"@makaio/framework/service-base";import{blob as Ae,index as je,integer as Me,primaryKey as Ne,sqliteTable as Pe,text as j,uniqueIndex as Fe}from"drizzle-orm/sqlite-core";import{index as Ie,primaryKey as Le}from"drizzle-orm/pg-core";import{defineDialectSchema as Re,defineDualTable as ze,didAffectRows as M,getRawSqlExecutor as Be,getStorageEngine as Ve,resolveSchema as N,resolveStorageEngine as P}from"@makaio/framework/storage/drizzle";import{and as F,asc as He,count as I,desc as Ue,eq as L,gt as We,gte as Ge,inArray as R,isNull as z,lt as Ke,lte as qe,or as Je,sql as B}from"drizzle-orm";import{createStorageNamespaceDefinition as Ye}from"@makaio/framework/storage";import{ClientIdentityObservationSchema as Xe}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Ze}from"@makaio/framework/adapters";function Qe(e){return e.on(k.agent.added,async t=>{let n=await e.requestOptional(w.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(r.adapterSessionId||(r.adapterSessionId=t.payload.adapterSessionId,r.adapterName=t.payload.adapterName,r.adapterId=t.payload.adapterId),(t.payload.role??(r.leadAgentId?`member`:`lead`))===`lead`&&(r.leadAgentId=t.payload.agentId),r.lastActivityAt=Date.now(),await e.request(w.set,{sessionId:t.payload.sessionId,session:r}))})}function $e(e){return e.on(k.agent.removed,async t=>{let n=await e.requestOptional(w.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(l.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(w.set,{sessionId:t.payload.sessionId,session:r}))})}function et(e){return e.on(O.started,async t=>{let{agentId:n,adapterSessionId:r,adapterName:i,adapterId:a,sessionId:o}=t.payload;if(!r||!o)return;let s=await e.requestOptional(l.get,{agentId:n}),c=s.handled?s.data.agent:null;c&&!c.adapterSessionId&&await e.requestOptional(l.updateRuntime,{agentId:n,adapterSessionId:r});let u=await e.requestOptional(w.get,{sessionId:o}),d=u.handled?u.data.session:null;if(d&&!d.adapterSessionId){if(d.adapterName){if(i!==d.adapterName)return;d.adapterSessionId=r}else d.adapterSessionId=r,d.adapterName=i,d.adapterId=a;d.lastActivityAt=Date.now(),await e.requestOptional(w.set,{sessionId:o,session:d})}})}function tt(e){return[it(e),at(e),ot(e),nt(e),st(e),ut(e),dt(e),ft(e),pt(e),Qe(e.bus),$e(e.bus),et(e.bus)]}function nt(e){let{bus:t}=e;return t.on(k.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(k.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await rt(t,n,r);if(s!==void 0){a.abort(),e.setResult({completion:s});return}try{let t=await o;e.setResult({completion:t.payload})}catch(e){throw e instanceof Error&&e.name===`OnceTimeoutError`?new ue(`session.turn.await`,i):e}})}async function rt(e,t,n){let r=await e.requestOptional(C.get,{turnId:n}),i=r.handled?r.data.turn:null;if(!(i?.sessionId!==t||i.status!==`completed`&&i.status!==`error`))return{sessionId:t,turnId:n,turnNumber:i.turnNumber,success:i.status===`completed`,...i.error!==void 0&&{error:i.error},...i.usage!==void 0&&{usage:i.usage},...i.initiator!==void 0&&{initiator:i.initiator}}}function it(e){let{bus:t}=e;return t.on(k.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,originWindowId:p,machineId:m}=e.payload,h=n??crypto.randomUUID(),g=r===void 0?void 0:(await t.request(k.get,{sessionId:r})).session;if(r!==void 0&&g===null)throw Error(`[session.create] Parent session not found: ${r}`);let _=g?g.rootSessionId??g.sessionId:void 0,v=Date.now(),ee={sessionId:h,createdAt:v,lastActivityAt:v,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,..._!==void 0&&{rootSessionId:_},...m!==void 0&&{machineId:m}},y=await t.requestOptional(w.set,{sessionId:h,session:ee,ifAbsent:!0});if(y.handled&&!y.data.success){e.setResult({sessionId:h});return}await t.emit(k.created,{sessionId:h,createdAt:ee.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:h})})}function at(e){let{bus:t}=e;return t.on(k.get,async e=>{let n=await t.requestOptional(w.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function ot(e){let{bus:t}=e;return t.on(k.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(w.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:o}),c=s.handled?s.data.sessions:[],l=s.handled?s.data.total:0;e.setResult({sessions:c,total:l})})}function st(e){let{bus:t}=e;return t.on(k.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(w.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`closed`){e.setResult({success:!0});return}if(i.status!==`active`){e.setResult({success:!1});return}i.status=`closed`,i.lastActivityAt=Date.now(),await t.requestOptional(w.set,{sessionId:n,session:i}),await t.emit(k.closed,{sessionId:n}),e.setResult({success:!0})})}async function ct(e,t){try{let n=await e.requestOptional(D.getCapabilities,{adapterId:t});return n.handled?new Set(n.data.capabilities).has(`session:resume`):!1}catch{return!1}}async function lt(e,t){if(t!==void 0)return t;let n=await e.requestOptional(ae.getMachineId,{});return n.handled?n.data.machineId:void 0}function ut(e){let{bus:t}=e;return t.on(k.restartAgents,async e=>{let{sessionId:n,machineId:r}=e.payload,i=await t.requestOptional(l.listBySession,{sessionId:n}),a=i.handled?i.data.agents:[],o=[],s=await lt(t,r),u=await t.requestOptional(w.get,{sessionId:n}),d=u.handled?u.data.session??void 0:void 0;for(let e of a)try{let n,r=!1;if(d!==void 0&&(p({intent:`resume`,session:d,localMachineId:s,adapterSupportsNative:await ct(t,e.adapterId),targetAdapterName:e.adapterName,currentCwd:e.cwd,targetCwd:e.cwd}).kind===`native`&&e.adapterSessionId!==void 0?n=e.adapterSessionId:r=!0),r){o.push({agentId:e.agentId,adapterId:e.adapterId,success:!0});continue}let i=await c(t,e,{cwd:e.cwd,model:e.model,resumeAdapterSessionId:n});await t.requestOptional(l.updateRuntime,{agentId:i.agentId,adapterId:i.adapterId}),o.push({agentId:i.agentId,adapterId:i.adapterId,success:!0})}catch(t){let n=t instanceof Error?t.cause:void 0,r=n instanceof Error?n.message:t instanceof Error?t.message:String(t);o.push({agentId:e.agentId,adapterId:e.adapterId,success:!1,error:r})}e.setResult({sessionId:n,results:o})})}function dt(e){let{bus:t}=e;return t.on(k.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}=e.payload,s=await t.requestOptional(w.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),o!==void 0&&e.push(`metadata`),e.length>0&&await t.emit(k.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function ft(e){let{bus:t}=e;return t.on(k.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(w.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`archived`){e.setResult({success:!0});return}if(i.status!==`closed`){e.setResult({success:!1});return}i.status=`archived`,i.lastActivityAt=Date.now(),await t.requestOptional(w.set,{sessionId:n,session:i}),await t.emit(k.archived,{sessionId:n}),e.setResult({success:!0})})}function pt(e){let{bus:t}=e;return t.on(k.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(w.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1,error:`Session not found`});return}if(i.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let o=await t.requestOptional(w.list,{status:`all`}),s=o.handled?o.data.sessions:[];for(let e of s)e.parentSessionId===n&&await t.requestOptional(w.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let c=await t.requestOptional(a.getEvents,{sessionId:n,options:{limit:1}}),l=c.handled?c.data.totalCount:0;await t.requestOptional(a.deleteBySession,{sessionId:n}),await t.requestOptional(w.delete,{sessionId:n}),await t.emit(k.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:l})})}var mt=class extends ke{constructor(e=ce){super(e)}async onInit(){for(let e of tt({bus:this.bus}))this.addCleanup(e);this.addCleanup(S(this.bus)),await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(C.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(C.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});if(t){let t={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:!1,error:`process-restart`,ingestionMarker:`live`};await u(this.bus,{type:`turn.completed`,sessionId:e.sessionId,payload:t}),await this.bus.emit(k.turn.completed,t)}}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function ht(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var gt=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(D.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw ht(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(ae.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw ht(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};async function _t(e,t){e.emit(T.stored,{message:structuredClone(t)});try{await e.request(a.append,{event:{sessionId:t.sessionId,eventId:crypto.randomUUID(),timestamp:t.timestamp,type:`message`,payload:{messageId:t.messageId,turnId:t.turnId,role:t.role}}})}catch(e){console.error(`[MessageStorage] Failed to emit session event for message:`,e)}}function V(e){return{messageId:e.messageId,turnId:e.turnId,sessionId:e.sessionId,role:e.role,contentText:e.contentText,blocks:JSON.parse(e.blocks),agentId:e.agentId??void 0,adapterSessionId:e.adapterSessionId??void 0,adapterMessageId:e.adapterMessageId??void 0,timestamp:e.timestamp,editOf:e.editOf??void 0,origin:e.origin??void 0}}function vt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await n.insert(r).values({messageId:o,turnId:s.turnId,sessionId:s.sessionId,role:s.role,contentText:s.contentText,blocks:JSON.stringify(s.blocks),agentId:s.agentId??null,adapterSessionId:s.adapterSessionId??null,adapterMessageId:s.adapterMessageId??null,timestamp:s.timestamp,editOf:s.editOf??null,origin:s.origin??null}),e.setResult({message:s}),(a??!0)&&await _t(t,s)})}function yt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?Ue:He,l=n.select().from(r).where(L(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?Je(Ke(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?qe(r.messageId,a.messageId):Ke(r.messageId,a.messageId))):Je(We(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?Ge(r.messageId,a.messageId):We(r.messageId,a.messageId)));l=n.select().from(r).where(F(L(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?A(p[p.length-1]):null;e.setResult({messages:p.map(V),nextCursor:m})})}function bt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(L(r.turnId,t)).orderBy(He(r.timestamp));e.setResult({messages:i.map(V)})})}function xt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.messageId,t)).limit(1);e.setResult({message:i?V(i):null})})}function St(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=P(n).fts;return t.on(T.search,async e=>{let{query:t,sessionId:a,limit:o}=e.payload,s=o??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let{rows:c,total:l}=await i.searchMessages(n,r,{query:t,sessionId:a,limit:s});e.setResult({messages:c.map(V),total:l})})}function Ct(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=P(n).fts;return t.on(T.ftsSearch,async e=>{let{query:t,sessionId:a,limit:o=20}=e.payload;if(!t.trim()){e.setResult({results:[],total:0});return}let{results:s,total:c}=await i.searchMessageExcerpts(n,r,{query:t,sessionId:a,limit:o});e.setResult({results:s,total:c})})}function wt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.adapterMessageId,t)).limit(1);e.setResult({message:i?V(i):null})})}function Tt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.upsertByAdapterMessageId,async e=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=e.payload,[m]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(m){m.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,m.messageId)),e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();if((await n.insert(r).values({messageId:h,turnId:o,sessionId:a,role:s,contentText:c,blocks:JSON.stringify(l),agentId:u??null,adapterSessionId:d??null,adapterMessageId:i,timestamp:f,editOf:null,origin:p??null}).onConflictDoNothing({target:[r.adapterMessageId,r.sessionId]}).returning({messageId:r.messageId})).length===0){let[t]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(t===void 0)throw Error(`Message upsert conflict winner disappeared before reread completed`);t.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,t.messageId)),e.setResult({messageId:t.messageId,created:!1});return}e.setResult({messageId:h,created:!0}),await _t(t,{messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0})})}function Et(e,t){let n={bus:e,db:t},r=[vt(n),yt(n),bt(n),xt(n),St(n),Ct(n),Tt(n),wt(n)];return()=>r.forEach(e=>e())}function Dt(e,t){return Te(A(e),A(t))}function Ot(e,t){return Ee(A(e),A(t))}function kt(e,t){let n=e.get(t);if(n!==void 0)return n;let r=new Map;return e.set(t,r),r}function At(e,t,n,r){if(r===null)return;let i=e.get(n);if(i===void 0||i.turnId!==null)return;i.turnId=r;let a=t.get(r)??[];a.includes(n)||(a.push(n),t.set(r,a))}function jt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Mt(t,n,r,i),o=[Nt(e,t,a),Pt(e,t,n),Ft(e,t,r),It(e,t),Lt(e,t),Rt(e,t,r,i,a),zt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Mt(e,t,n,r){return i=>{e.set(i.messageId,i);let a=t.get(i.sessionId)??[];if(a.push(i.messageId),t.set(i.sessionId,a),i.turnId){let e=n.get(i.turnId)??[];e.push(i.messageId),n.set(i.turnId,e)}i.adapterMessageId&&kt(r,i.sessionId).set(i.adapterMessageId,i.messageId)}}function Nt(e,t,n){return e.on(T.append,async t=>{let{message:r,emitEvent:i}=t.payload,a=r.messageId??crypto.randomUUID(),o={...r,messageId:a,blocks:r.blocks??[]};n(o),t.setResult({message:o}),(i??!0)&&await _t(e,o)})}function Pt(e,t,n){return e.on(T.getBySession,async e=>{let{sessionId:r,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=n.get(r)??[],l=s===`desc`?Ot:Dt,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?Ee(A(e),a):Te(A(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?A(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Ft(e,t,n){return e.on(T.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(Dt);e.setResult({messages:i})})}function It(e,t){return e.on(T.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Lt(e,t){return e.on(T.search,async e=>{let{query:n,sessionId:r,limit:i}=e.payload,a=i??50,o=n.trim().toLowerCase(),s=[...t.values()].filter(e=>r?e.sessionId===r:!0),c=o.length===0?[]:s.filter(e=>e.contentText.toLowerCase().includes(o));c.sort(Dt),e.setResult({messages:c.slice(0,a),total:c.length})})}function Rt(e,t,n,r,i){return e.on(T.upsertByAdapterMessageId,async a=>{let{adapterMessageId:o,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f,adapterSessionId:p,timestamp:m,origin:h}=a.payload,g=r.get(s)?.get(o);if(g){At(t,n,g,c),a.setResult({messageId:g,created:!1});return}let _=crypto.randomUUID(),v={messageId:_,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f??void 0,adapterSessionId:p??void 0,adapterMessageId:o,timestamp:m,editOf:void 0,origin:h??void 0};i(v),a.setResult({messageId:_,created:!0}),await _t(e,v)})}function zt(e,t,n,r,i){return e.on(w.delete,e=>{let{sessionId:a}=e.payload,o=n.get(a)??[];for(let e of o){let n=t.get(e);if(n){if(t.delete(e),n.turnId){let t=(r.get(n.turnId)??[]).filter(t=>t!==e);t.length===0?r.delete(n.turnId):r.set(n.turnId,t)}if(n.adapterMessageId){let e=i.get(n.sessionId);e?.delete(n.adapterMessageId),e?.size===0&&i.delete(n.sessionId)}}}n.delete(a)})}const Bt=ze(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(i,{onDelete:`cascade`}),agentId:e.text(`agent_id`).notNull(),status:e.textEnum(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:e.epochMs(`timestamp`).notNull(),error:e.text(`error`)}),{sqlite:e=>[Ne({columns:[e.messageId,e.agentId,e.status]}),je(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[Le({columns:[e.messageId,e.agentId,e.status]}),Ie(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),Vt=Bt.sqlite,Ht=Ye(`messageRouting`,{schemas:{record:{request:_e,response:E.object({success:E.boolean()})},getByMessage:{request:E.object({messageId:E.string()}),response:E.object({routing:E.array(_e)})},getCompleted:{request:E.object({messageId:E.string()}),response:E.object({agentIds:E.array(E.string())})},isComplete:{request:E.object({messageId:E.string(),targetAgentIds:E.array(E.string())}),response:E.object({complete:E.boolean(),pending:E.array(E.string())})}},extensions:{drizzle:{messageRouting:Vt}}}),H=Ht.subjects,Ut=Bt.postgres,Wt=Re({messageRouting:Vt},{messageRouting:Ut});function Gt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function Kt(e,t){let{messageRouting:n}=N(t,Wt),r=[];return r.push(e.on(H.record,async e=>{let{messageId:r,agentId:i,status:a,timestamp:o,error:s}=e.payload;await t.insert(n).values({messageId:r,agentId:i,status:a,timestamp:o,error:s??null}).onConflictDoUpdate({target:[n.messageId,n.agentId,n.status],set:{timestamp:o,error:s??null}}),e.setResult({success:!0})})),r.push(e.on(H.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(L(n.messageId,r));e.setResult({routing:i.map(Gt)})})),r.push(e.on(H.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(H.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`))),o=new Set(a.map(e=>e.agentId)),s=i.filter(e=>!o.has(e));e.setResult({complete:s.length===0,pending:s})})),()=>r.forEach(e=>e())}var qt=class{byAgent=new Map;add(e){let t=this.byAgent.get(e.agentId);t?(t.inputTokens+=e.inputTokens,t.outputTokens+=e.outputTokens):this.byAgent.set(e.agentId,{inputTokens:e.inputTokens,outputTokens:e.outputTokens})}snapshot(){if(this.byAgent.size===0)return;let e=0,t=0,n={};for(let[r,i]of this.byAgent)e+=i.inputTokens,t+=i.outputTokens,n[r]={...i};return{total:{inputTokens:e,outputTokens:t},byAgent:n}}flush(){let e=this.snapshot();return this.byAgent.clear(),e}clear(){this.byAgent.clear()}},Jt=class{bus;activeTurns=new Map;usageAccumulators=new Map;completingTurnIds=new Set;completingTurns=new Map;pendingTerminalCompletions=new Map;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;assistantStoredCounts=new Map;assistantPersistenceWaiters=new Map;cleanups=[];constructor(e){this.bus=e,this.registerAssistantPersistenceCounter()}async createTurn(e,t,n,r){let i=await this.bus.requestOptional(C.create,{sessionId:e,...r!==void 0&&{turnId:r},...n!==void 0&&{initiator:n}}),a,o;if(i.handled)a=i.data.turn.turnId,o=i.data.turn.turnNumber;else{a=r??crypto.randomUUID();let t=(this.syntheticTurnCounters.get(e)??0)+1;this.syntheticTurnCounters.set(e,t),o=t}let s=new x({sessionId:e,agentIds:t,turnId:a,turnNumber:o,initiator:n});return this.activeTurns.set(e,s),this.usageAccumulators.set(s.turnId,new qt),s}discardActiveTurn(e){this.clearActiveRoutingTurn(e)&&(this.usageAccumulators.delete(e.turnId),this.assistantStoredCounts.delete(e.turnId))}async failActiveTurnSetup(e,t){if(this.activeTurns.get(e.sessionId)?.turnId===e.turnId&&!(e.messageIds.length>0||e.hasPendingMessageAppends)){try{await this.bus.requestOptional(C.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:t})}catch(t){console.error(`[SessionTurnManager] Failed to mark setup-failed turn ${e.turnId} as error:`,t)}this.discardActiveTurn(e)}}clearActiveRoutingTurn(e){return this.activeTurns.get(e.sessionId)?.turnId===e.turnId?(this.activeTurns.delete(e.sessionId),!0):!1}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(O.usage,e=>{let{agentId:t,turnId:n,inputTokens:r,outputTokens:i}=e.payload;if(!n){console.warn(`[SessionTurnManager] Dropping usage event without turnId (agentId=${t}).`);return}let a=this.findTurnForUsage(n);if(!a){console.warn(`[SessionTurnManager] Dropping usage for inactive turn ${n} (agentId=${t}).`);return}if(!a.hasAgent(t)){console.warn(`[SessionTurnManager] Dropping usage for turn ${n}: agent ${t} is not part of the turn.`);return}if(this.completingTurnIds.has(a.turnId)){this.bufferUsageDuringCompletion(a.turnId,{agentId:t,inputTokens:r,outputTokens:i});return}this.usageAccumulators.get(a.turnId)?.add({agentId:t,inputTokens:r,outputTokens:i})})),this.cleanups.push(this.bus.on(O.complete,async t=>{let{agentId:n,outcome:r,error:i,turnId:a}=t.payload,o=r!==`error`;await this.handleAgentCompletion(n,o,o?void 0:i,e,a)}))}async completeTurn(e,t){if(this.completingTurnIds.has(e.turnId))return;this.completingTurnIds.add(e.turnId),this.completingTurns.set(e.turnId,e);let n=this.usageAccumulators.get(e.turnId),r=n?.snapshot(),i=this.pendingTerminalCompletions.get(e.turnId)??!1;try{if(!this.pendingTerminalCompletions.has(e.turnId)){let a=await this.persistTurnCompletion(e,t,r,`active`);if(i=a.handled,!a.transitioned){this.clearActiveRoutingTurn(e),this.clearCompletionState(e,n);return}this.pendingTerminalCompletions.set(e.turnId,i),r=await this.flushBufferedUsageDuringCompletion(e,t,n,r)}}catch(t){throw this.completingTurnIds.delete(e.turnId),this.completingTurns.delete(e.turnId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${e.turnId}:`,t),t}this.clearActiveRoutingTurn(e);let a=!1;try{i&&await this.awaitAssistantPersistence(e),r=await this.flushBufferedUsageDuringCompletion(e,t,n,r);let o={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r},initiator:e.initiator,ingestionMarker:`live`};await u(this.bus,{type:`turn.completed`,sessionId:e.sessionId,eventId:`turn.completed:${e.turnId}`,payload:o}),a=!0,await this.bus.emit(k.turn.completed,o)}catch(t){throw a?this.clearCompletionState(e,n):this.completingTurnIds.delete(e.turnId),t}this.clearCompletionState(e,n)}clearCompletionState(e,t){t?.clear(),this.usageAccumulators.delete(e.turnId),this.bufferedUsageDuringCompletion.delete(e.turnId),this.assistantStoredCounts.delete(e.turnId),this.completingTurns.delete(e.turnId),this.completingTurnIds.delete(e.turnId),this.pendingTerminalCompletions.delete(e.turnId)}getActiveTurn(e){return this.activeTurns.get(e)}getActiveTurnsMap(){return this.activeTurns}findActiveTurnByTurnId(e){for(let t of this.activeTurns.values())if(t.turnId===e)return t}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.activeTurns.clear(),this.usageAccumulators.clear(),this.completingTurnIds.clear(),this.completingTurns.clear(),this.pendingTerminalCompletions.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear();for(let e of[...this.assistantPersistenceWaiters.values()])e.settle();this.assistantPersistenceWaiters.clear(),this.assistantStoredCounts.clear()}async handleAgentCompletion(e,t,n,r,i){let a=i?this.findTurnForCompletion(i):this.findTurnForUncorrelatedCompletion(e);if(!a||!a.hasAgent(e)||this.hasTerminalOutcome(a,e))return;let o=t?a.markAgentCompleted(e):a.markAgentErrored(e,n??`Unknown error`);for(let r of a.messageIds)await this.bus.emit(k.user_message.completed,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:r,agentId:e,outcome:t?`completed`:`error`,error:n});o.turnComplete&&await r(a,o.result)}bufferUsageDuringCompletion(e,t){let n=this.bufferedUsageDuringCompletion.get(e)??[];n.push(t),this.bufferedUsageDuringCompletion.set(e,n)}findTurnForUsage(e){return this.findActiveTurnByTurnId(e)??this.completingTurns.get(e)}findTurnForCompletion(e){return this.findActiveTurnByTurnId(e)??this.completingTurns.get(e)}findTurnForUncorrelatedCompletion(e){for(let t of this.completingTurns.values())if(t.hasAgent(e))return;return y(this.activeTurns,e)}hasTerminalOutcome(e,t){return e.completedAgents.has(t)||e.erroredAgents.has(t)}async persistTurnCompletion(e,t,n,r){let i=await this.bus.requestOptional(C.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,...r!==void 0&&{expectedStatus:r},error:t.errors.length>0?t.errors.join(`; `):void 0,...n!==void 0&&{usage:n}});return{handled:i.handled,transitioned:i.handled?i.data.transitioned:!0}}async flushBufferedUsageDuringCompletion(e,t,n,r){let i=this.bufferedUsageDuringCompletion.get(e.turnId)??[];if(i.length===0)return r;for(let e of i)n?.add(e);this.bufferedUsageDuringCompletion.delete(e.turnId);let a=n?.snapshot()??r;try{await this.persistTurnCompletion(e,t,a)}catch(t){console.warn(`[SessionTurnManager] Failed to persist buffered usage for turn ${e.turnId}:`,t)}return a}registerAssistantPersistenceCounter(){this.cleanups.push(this.bus.on(T.stored,e=>{let{message:t}=e.payload;if(t.role!==`assistant`||!t.turnId)return;let n=t.turnId;if(!this.assistantStoredCounts.has(n)&&this.assistantStoredCounts.size>=1024){let e=this.assistantStoredCounts.keys().next().value;e!==void 0&&this.assistantStoredCounts.delete(e)}let r=(this.assistantStoredCounts.get(n)??0)+1;this.assistantStoredCounts.set(n,r);let i=this.assistantPersistenceWaiters.get(n);i&&r>=i.expected&&i.settle()}))}async awaitAssistantPersistence(e){let t=e.agentIds.length;if(t<=0||(this.assistantStoredCounts.get(e.turnId)??0)>=t)return;let n=await this.bus.requestOptional(T.getByTurn,{turnId:e.turnId});n.handled&&(n.data.messages.filter(e=>e.role===`assistant`).length>=t||(this.assistantStoredCounts.get(e.turnId)??0)>=t||await new Promise(n=>{let r=()=>{clearTimeout(i),this.assistantPersistenceWaiters.delete(e.turnId),n()},i=setTimeout(r,1500);this.assistantPersistenceWaiters.set(e.turnId,{expected:t,settle:r}),(this.assistantStoredCounts.get(e.turnId)??0)>=t&&r()}))}},Yt=class{bus;turnManager;adapterRegistry;machineId;cleanups=[];constructor(e=ce,t){this.bus=e,this.machineId=t,this.turnManager=new Jt(e),this.adapterRegistry=new gt(e),this.cleanups.push(b(this.bus,this.turnManager.getActiveTurnsMap(),t)),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(k.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:s}=e.payload,c=te(o,e.payload.extensionId),u=e.payload.sessionContext?ye.parse(e.payload.sessionContext):void 0,{sessionId:p,session:g}=await v(this.bus,t,u,e.payload.originWindowId,this.machineId);if(g.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,p,n,u),t=await this.resolveAdapterName(e,p),r=h(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=e.providerConfigId===void 0?void 0:await re(this.bus,e.providerConfigId),o=e.providerConfigId??i?.providerConfigId;i!==void 0&&await ie(this.bus,i);let s=await this.bus.request(D.startAgent,{adapterId:r,sessionId:p,role:`lead`,...i!==void 0&&{providerContext:i},...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},...u!==void 0&&{sessionContext:u}});if(!s.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${p}, adapterName=${t}): ${s.message}`);let c=Date.now();g.agents.push({agentId:s.agentId,adapterId:s.adapterId,adapterName:t,sessionId:p,role:`lead`,status:`idle`,...o!==void 0&&{providerConfigId:o},createdAt:c,lastActivityAt:c}),g.leadAgentId=s.agentId,o!==void 0&&await this.bus.requestOptional(l.updateRuntime,{agentId:s.agentId,providerConfigId:o})}let y=_(g,r);if(y.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${p})`);let b=new Set;for(let e of y){let t=await this.bus.requestOptional(D.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&b.add(e.agentId)}let x;if(b.size>0){x=await d(this.bus,g);for(let e of y)b.has(e.agentId)&&await this.bus.requestOptional(D.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let S=this.turnManager.getActiveTurn(p);S||=await this.turnManager.createTurn(p,y.map(e=>e.agentId),c,e.payload.turnId);let C=crypto.randomUUID(),w=ne(n);S.claimMessageAppend(C);try{if(!(await this.bus.requestOptional(T.append,{message:{messageId:C,turnId:S.turnId,sessionId:p,role:`user`,contentText:m(n),blocks:w,timestamp:Date.now(),...s!==void 0&&{origin:s}}})).handled)throw Error(`Message storage append handler is not registered`)}catch(e){throw console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:p,messageId:C,error:e instanceof Error?e.message:String(e)}),S.releaseMessageAppend(C),await this.turnManager.failActiveTurnSetup(S,`user-message-persistence-failed`),e}let ae=S.messageIds.length===0;S.addMessage(C);for(let e of y)this.bus.requestOptional(H.record,{messageId:C,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:p,messageId:C,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});ae&&await f(this.bus,{sessionId:p,turnId:S.turnId,turnNumber:S.turnNumber,messageId:C,agentIds:[...S.agentIds],initiator:S.initiator,ingestionMarker:`live`}),await this.bus.emit(k.user_message.sent,{sessionId:p,turnId:S.turnId,turnNumber:S.turnNumber,messageId:C,content:n,agentIds:y.map(e=>e.agentId),...o!==void 0&&{source:o},...s!==void 0&&{origin:s}});let oe=x?{...u,...x}:u;await ee(this.bus,g,y,n,C,S,i,this.completeTurn.bind(this),oe,e.payload.responseSchema),e.setResult({messageId:C,turnId:S.turnId,sessionId:p})}))}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}async resolveAdapterName(e,t){let n=h(e.adapterName),r=h(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?g(this.bus,r,n,`[SessionOrchestrator.sendMessage] (sessionId=${t}) `):n}async resolveInitialAdapterSelection(e,t,n,r){if(!e)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${t})`);if(e.kind===`adapter`)return e;if(e.kind===`canonical-model`)return await this.resolveCanonicalModelSelection(e,t,n,r);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${t})`)}async resolveCanonicalModelSelection(e,t,n,r){let i=Oe(e.model);if(De(i))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${e.model}" (sessionId=${t}): ${i.message}`);if(i.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${t})`);let a=await this.bus.request(de.resolve,{parsed:i,context:{sessionId:t,promptText:m(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},Xt=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(T.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof le||console.warn(`[TurnContextEnricher] Failed to load turn-so-far context:`,e),[]}}async enrichForDeliveryMode(e,t,n){if(n!==`immediate`)return e;let r=await this.getTurnSoFarContext(t);return r.length===0?e:[...e??[],...r]}convertSessionMessagesToMessages(e){return e.map(e=>({role:e.role,blocks:e.blocks}))}};function Zt(e){let{bus:t}=e;return t.on(k.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(w.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function Qt(e){let{bus:t}=e;return t.on(k.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(w.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(w.set,{sessionId:n,session:r}),await t.emit(k.resumed,{sessionId:n}),e.setResult({success:!0})})}function $t(e){return e.on(oe.listActions,e=>{let t=s.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const en=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function tn(e){return{...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools}}}var nn=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=ce){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(k.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(k.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&(this.agentToSession.delete(t),this.agentContext.delete(t),this.agentBlocks.delete(t))}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(k.turn.started,e=>{let{sessionId:t,turnId:n,agentIds:r}=e.payload;for(let e of r){let r=this.agentContext.get(e);this.agentContext.set(e,{...r,sessionId:t,turnId:n}),this.agentBlocks.set(e,[])}})),this.cleanups.push(this.bus.on(k.user_message.acknowledged,e=>{let t=this.agentContext.get(e.payload.agentId);this.agentContext.set(e.payload.agentId,{...t,sessionId:e.payload.sessionId,turnId:e.payload.turnId}),this.agentBlocks.has(e.payload.agentId)||this.agentBlocks.set(e.payload.agentId,[])}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(O.message,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(O.reasoning,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(O.tool.use,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`tool_call`,toolCallId:e.payload.toolCallId,name:e.payload.toolName,args:e.payload.args??{}})})),this.cleanups.push(this.bus.on(O.tool.completed,e=>{let t=this.agentBlocks.get(e.payload.agentId);if(t){let n=e.payload.result,r=typeof n==`string`?n:JSON.stringify(n);t.push({type:`tool_output`,toolCallId:e.payload.toolCallId,output:r,isError:e.payload.success===!1})}})),this.cleanups.push(this.bus.on(O.complete,async e=>{if(e.payload._import){this.agentBlocks.delete(e.payload.agentId);return}let{agentId:t,adapterSessionId:n,outcome:r,error:i,message:a,structuredOutputValidation:o}=e.payload;await this.storeAssistantMessage(t,r===`error`?void 0:n,r===`error`?i:void 0,o===void 0?void 0:{content:a})}))}async storeAssistantMessage(e,t,n,r){let i=this.agentContext.get(e);if(!i?.turnId)return;let a=r===void 0?this.agentBlocks.get(e)??[]:r.content===void 0?[]:[{type:`text`,content:r.content}];if(a.length===0&&!n){this.agentBlocks.delete(e);return}let o=a.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
2
|
-
`),s=crypto.randomUUID();try{if(!(await this.bus.requestOptional(T.append,{message:{messageId:s,turnId:i.turnId,sessionId:i.sessionId,role:`assistant`,contentText:o||(n?`[Error: ${n}]`:``),blocks:a,agentId:e,adapterSessionId:t,timestamp:Date.now()}})).handled){this.agentBlocks.delete(e);return}let r=await this.bus.requestOptional(T.getByTurn,{turnId:i.turnId});if(r.handled){let t=r.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(H.record,{messageId:t.messageId,agentId:e,status:`completed`,timestamp:Date.now(),error:n})}}catch(e){console.error(`[SessionBridge] Failed to store assistant message:`,e)}this.agentBlocks.delete(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.agentToSession.clear(),this.agentContext.clear(),this.agentBlocks.clear()}},rn=class{bus;_sessionId;_extensionId;_turnId;_parentSessionId;contextTracker;contextContributions=new Map;constructor(e,t,n,r,i,a){this.bus=e,this._sessionId=t,this._extensionId=n,this._turnId=r,this._parentSessionId=i,this.contextTracker=a}get sessionId(){return this._sessionId}get turnId(){return this._turnId}get parentSessionId(){return this._parentSessionId}get extensionId(){return this._extensionId}async sendToAgent(e,t){await this.bus.request(k.sendMessage,{sessionId:this._sessionId,agentIds:[e],message:t,source:`extension`,extensionId:this._extensionId})}contributeContext(e,t){this.contextContributions.set(e,t)}getContributions(){return Object.fromEntries(this.contextContributions)}async fork(e){return(await this.bus.request(k.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(k.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(k.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(k.compressionRequested,{sessionId:this._sessionId,reason:e,source:`extension`,extensionId:this._extensionId})}async getContextWindowState(){if(this.contextTracker){let e=this.contextTracker.getSessionState(this._sessionId);if(e)return{currentTokens:e.currentTokens,maxTokens:e.maxTokens,percentage:e.percentage,level:e.level}}let{session:e}=await this.bus.request(k.get,{sessionId:this._sessionId});return!e||e.agents.length===0?{currentTokens:0,maxTokens:1,percentage:0,level:`ok`}:{currentTokens:0,maxTokens:2e5,percentage:0,level:`ok`}}async getChildSessions(){return(await this.bus.request(k.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function an(e,t,n,r,i,a){return new rn(e,t,n,r,i,a)}function on(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function U(e,t){let n=t.lastClientIdentityObservation;if(t.clientAccountId!==void 0&&!n)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without lastClientIdentityObservation`);if(t.clientAccountId!==void 0&&t.clientId===void 0)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without clientId`);if(n&&t.clientId!==void 0&&t.clientId!==n.clientId)throw Error(`Session "${t.sessionId}" cannot persist clientId "${t.clientId}" because lastClientIdentityObservation belongs to "${n.clientId}"`)}function W(e,t,n){let r=on(t,n);if(!r)return;let i=n.lastClientIdentityObservation;if(!i)return;let a={sessionId:n.sessionId,clientId:i.clientId,previousClientAccountId:r.previousClientAccountId,clientAccountId:r.clientAccountId,source:i.source,observedAt:i.observedAt,lastClientIdentityObservation:structuredClone(i)};queueMicrotask(()=>{Promise.resolve().then(()=>e.emit(k.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function sn(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function cn(e){switch(e.kind){case`root`:return{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null};case`fork`:return{kind:`fork`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId};case`subagent`:return{kind:`subagent`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case`compress`:return{kind:`compress`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};default:return e.kind}}function ln(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}const un=ln();function dn(e,t){return e===`imported`||t===`imported`?`imported`:e===`tracking`||t===`tracking`?`tracking`:e??t??`discovered`}function fn(e,t,n){n!==void 0&&(e[t]=n)}function pn(e,t,n){let r=e.startedAt??n;return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:`discovered`,branchKind:sn(e.kind),adapterName:e.source,adapterSessionId:e.externalSessionId,adapterId:e.adapterId,clientId:e.clientId,isOrchestrated:!1,isImported:!0,title:e.title??void 0,targetWorkingDirectory:e.cwd??void 0,source:e.source,parentExternalSessionId:e.parentAdapterSessionId??void 0,logFilePath:e.logFilePath??void 0,discoveredAt:n,importStatus:e.importStatus??`discovered`,forkPointMessageId:e.forkPointMessageId??void 0,metadata:e.metadata,lastClientIdentityObservation:e.lastClientIdentityObservation,isSidechain:e.isSidechain,machineId:e.machineId??void 0}}function mn(e,t,n){let r=dn(e.importStatus,t.importStatus);r===`discovered`&&(e.status=`discovered`),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function hn(e,t){t.logFilePath!==void 0&&t.logFilePath!==null&&(e.logFilePath??=t.logFilePath),t.cwd!==null&&(e.targetWorkingDirectory=t.cwd),t.title!==void 0&&t.title!==null&&(e.title=t.title),e.forkPointMessageId===void 0&&t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),e.parentExternalSessionId===void 0&&t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=sn(t.kind);n!==void 0&&e.branchKind===void 0&&(e.branchKind=n),fn(e,`adapterId`,t.adapterId),fn(e,`clientId`,t.clientId),t.metadata!==void 0&&(e.metadata={...t.metadata,...e.metadata??{}}),fn(e,`isSidechain`,t.isSidechain),fn(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),t.machineId===null?e.machineId=void 0:t.machineId!==void 0&&(e.machineId??=t.machineId)}function gn(e,t,n){t.startedAt!==void 0&&((n===void 0||e.createdAt===n)&&(e.createdAt=t.startedAt),(n===void 0||e.lastActivityAt===n)&&(e.lastActivityAt=t.startedAt))}function _n(e,t,n){let r=e.discoveredAt;mn(e,t,n),hn(e,t),gn(e,t,r)}function vn(e,t){if(t.parentExternalSessionId===void 0)return;let n=t.source??t.adapterName,r=Array.from(e.values()).find(e=>e.adapterSessionId===t.parentExternalSessionId&&(e.source??e.adapterName)===n);r&&(t.parentSessionId=r.sessionId,t.rootSessionId=r.rootSessionId??r.sessionId)}function yn(e,t,n){if(n){e.emit(k.created,{sessionId:t.sessionId,parentSessionId:t.parentSessionId??null,branchKind:t.branchKind??null,createdAt:t.createdAt}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e));return}e.emit(k.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function bn(e){let t=0,n=0,r=0;for(let i of e)i.importStatus===`imported`&&(t+=1),i.importStatus===`tracking`&&(n+=1),i.importStatus===`discovered`&&(r+=1);return{total:e.length,imported:t,tracking:n,discovered:r}}function xn(e,t,n){e.emit(k.importStatusChanged,{sessionId:t.sessionId,importStatus:n}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let r=t.source??t.adapterName;n!==`imported`||t.adapterSessionId===void 0||r===void 0||e.emit(k.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function Sn(e){let{bus:t,store:n,cloneSession:r,populateAgents:i}=e;return[t.on(w.importUpsert,e=>{let r=e.payload,i=Array.from(n.values()).find(e=>e.adapterSessionId===r.externalSessionId&&e.source===r.source),a=un(),o=i===void 0,s=i??pn(r,crypto.randomUUID(),a);i?(_n(i,r,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&vn(n,i)):(n.set(s.sessionId,s),vn(n,s)),yn(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),t.on(w.getByLogFilePath,async e=>{let a=Array.from(n.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!a){e.setResult({session:null});return}let o=await i(t,a.sessionId);e.setResult({session:{...r(a),agents:o}})}),t.on(w.listImported,async e=>{let{source:a,importStatus:o}=e.payload,s=Array.from(n.values()).filter(e=>e.isImported===!0).filter(e=>a===void 0||e.source===a).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...r(e),agents:await i(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(w.countBySource,e=>{let t=Array.from(n.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(bn(t))}),t.on(w.updateImportStatus,e=>{let r=n.get(e.payload.sessionId),i=e.payload.importStatus;if(!r||r.importStatus===i){e.setResult({success:!1});return}r.importStatus=i,i===`imported`&&r.status===`discovered`&&(r.status=`active`),e.setResult({success:!0}),xn(t,r,i)})]}async function Cn(e,t){let n=await e.requestOptional(l.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function G(e){return structuredClone(e)}function K(e,t,n){n!==void 0&&(e[t]=n)}function wn(e,t,n){n!==void 0&&(e[t]=n??void 0)}function Tn(e,t){let n=e;return t.status!==`all`&&(n=n.filter(e=>e.status===t.status)),t.executionTargetId!==void 0&&(n=n.filter(e=>e.executionTargetId===t.executionTargetId)),n}function En(e,t){K(e,`status`,t.status),K(e,`parentSessionId`,t.parentSessionId),K(e,`contextInheritance`,t.contextInheritance),K(e,`rootSessionId`,t.rootSessionId),K(e,`forkPointMessageId`,t.forkPointMessageId),K(e,`branchKind`,t.branchKind),K(e,`isOrchestrated`,t.isOrchestrated),K(e,`clientId`,t.clientId),K(e,`clientAccountId`,t.clientAccountId),K(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),K(e,`title`,t.title),K(e,`targetWorkingDirectory`,t.targetWorkingDirectory),K(e,`createdAt`,t.createdAt),K(e,`lastActivityAt`,t.lastActivityAt),K(e,`machineId`,t.machineId),wn(e,`executionTargetId`,t.executionTargetId),wn(e,`approvalPolicyOverride`,t.approvalPolicyOverride),wn(e,`metadata`,t.metadata),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function Dn(e,t){return e.on(w.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=Tn(Array.from(t.values()),{status:r,executionTargetId:s});c.sort((e,t)=>t.lastActivityAt-e.lastActivityAt);let l=c.length;i!==void 0&&(c=c.slice(a,a+i));let u=await Promise.all(c.map(async t=>({...G(t),agents:await Cn(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function On(e,t){return e.on(w.update,async n=>{let r=structuredClone(Ce.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=G(i);U(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),En(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),W(e,a,G(i))})}function kn(e){let t=new Map,n=[];return n.push(e.on(w.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await Cn(e,n.payload.sessionId);n.setResult({session:{...G(r),agents:i}})})),n.push(e.on(w.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=Se.parse(n.payload);if(a&&t.has(r)){n.setResult({success:!1,clientAccountChanged:!1});return}let o=structuredClone(i),s=t.get(r)??null,c=s?G(s):null;U(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),W(e,c,G(o))})),n.push(e.on(w.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(Dn(e,t)),n.push(e.on(w.getChildren,e=>{let{sessionId:n}=e.payload,r=Array.from(t.values()),i=r.filter(e=>e.parentSessionId===n),a=new Set(r.map(e=>e.parentSessionId).filter(e=>!!e)),o=i.map(e=>({sessionId:e.sessionId,title:e.title??null,forkPointMessageId:e.forkPointMessageId??null,branchKind:e.branchKind??null,messageCount:0,hasChildren:a.has(e.sessionId),spawningToolCallId:e.spawningToolCallId}));e.setResult({children:o})})),n.push(e.on(w.getStatusCounts,e=>{e.payload;let n=Array.from(t.values()),r=n.filter(e=>e.status===`active`).length,i=n.filter(e=>e.status===`closed`).length,a=n.filter(e=>e.status===`archived`).length,o=n.filter(e=>e.status===`discovered`).length;e.setResult({all:r+i+a+o,active:r,closed:i,archived:a,discovered:o})})),n.push(On(e,t)),n.push(An(e,t)),n.push(...Sn({bus:e,store:t,populateAgents:Cn,cloneSession:G})),()=>n.forEach(e=>e())}function An(e,t){return e.on(w.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:i,adapterName:a}=n.payload,o=Array.from(t.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r&&(i===void 0||e.source===i)&&(a===void 0||e.adapterName===a)),s=o[0];if(o.length!==1||s===void 0){n.setResult({session:null});return}let c=await e.requestOptional(l.listBySession,{sessionId:s.sessionId}),u=c.handled?c.data.agents:[];n.setResult({session:{...G(s),agents:u}})})}const jn=r.postgres,Mn=t.postgres,q=Re({sessions:n,agents:e},{sessions:jn,agents:Mn});function Nn(e,t){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return F(n===null?z(t.clientId):L(t.clientId,n),r===null?z(t.clientAccountId):L(t.clientAccountId,r),i===null?z(t.lastClientIdentityObservation):L(t.lastClientIdentityObservation,i))}function Pn(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0,allowedDirectories:e.allowedDirectories??void 0,providerConfigId:e.providerConfigId??void 0,personaId:e.personaId??void 0,profileId:e.profileId??void 0,harnessId:e.harnessId??void 0,clientId:e.clientId??void 0,compressionMode:e.compressionMode?me.parse(e.compressionMode):void 0}}function Fn(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??null,adapterSessionId:e.adapterSessionId??null,cwd:e.cwd??null,allowedDirectories:e.allowedDirectories??null,providerConfigId:e.providerConfigId??null,personaId:e.personaId??null,profileId:e.profileId??null,harnessId:e.harnessId??null,clientId:e.clientId??null,compressionMode:e.compressionMode??null}}function In(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function Ln(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.get,async e=>{let[t]=await n.select().from(r).where(L(r.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?Pn(t):null})})}function Rn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.set,async e=>{let{agent:t}=e.payload,i=Fn(t),a=await n.insert(r).values(i).onConflictDoUpdate({target:r.agentId,set:i});e.setResult({success:M(a)})})}function zn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.delete,async e=>{let t=await n.delete(r).where(L(r.agentId,e.payload.agentId));e.setResult({success:M(t)})})}function Bn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.listByAdapter,async e=>{let{adapterName:t,status:i}=e.payload,a=[L(r.adapterName,t)];i&&i!==`all`&&a.push(L(r.status,i));let o=a.length>1?F(...a):a[0],s=await n.select().from(r).where(o);e.setResult({agents:s.map(Pn)})})}function Vn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.listBySession,async e=>{let{sessionId:t}=e.payload,i=await n.select().from(r).where(L(r.sessionId,t));e.setResult({agents:i.map(Pn)})})}function Hn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.updateStatus,async e=>{let{agentId:t,status:i}=e.payload,a=Date.now(),o=await n.update(r).set({status:i,lastActivityAt:a}).where(L(r.agentId,t));e.setResult({success:M(o)})})}function Un(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.updateActivity,async e=>{let{agentId:t,lastActivityAt:i}=e.payload,a=await n.update(r).set({lastActivityAt:i}).where(L(r.agentId,t));e.setResult({success:M(a)})})}function Wn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(l.updateRuntime,async e=>{let{agentId:t,adapterId:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l}=e.payload,u={lastActivityAt:Date.now()};i!==void 0&&(u.adapterId=i),a!==void 0&&(u.adapterSessionId=a),o!==void 0&&(u.cwd=o),s!==void 0&&(u.model=s),c!==void 0&&(u.allowedDirectories=c),l!==void 0&&(u.providerConfigId=l);let d=await n.update(r).set(u).where(L(r.agentId,t));e.setResult({success:M(d)})})}function Gn(e,t){let n={bus:e,db:t},r=[Ln(n),Rn(n),zn(n),Bn(n),Vn(n),Hn(n),Un(n),Wn(n)];return()=>In(r)}function J(e){return e??void 0}function Kn(e){if(e)try{let t=JSON.parse(e),n=Xe.safeParse(t);return n.success?n.data:void 0}catch{return}}function qn(e){if(e)try{let t=JSON.parse(e),n=ge.safeParse(t);return n.success?n.data:void 0}catch{return}}function Y(e,t){let n=qn(e.forkTransforms),r=Kn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:J(e.leadAgentId),parentSessionId:J(e.parentSessionId),contextInheritance:J(e.contextInheritance),rootSessionId:J(e.rootSessionId),forkPointMessageId:J(e.forkPointMessageId),branchKind:J(e.branchKind),adapterName:J(e.adapterName),adapterSessionId:J(e.adapterSessionId),adapterId:J(e.adapterId),clientId:J(e.clientId),clientAccountId:J(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:J(e.isOrchestrated),isImported:J(e.isImported),title:J(e.title),summary:J(e.summary),summaryUpdatedAt:J(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:J(e.targetWorkingDirectory),executionTargetId:J(e.executionTargetId),agents:t.map(Pn),approvalPolicyOverride:J(e.approvalPolicyOverride),metadata:J(e.metadata),spawningToolCallId:J(e.spawningToolCallId),source:J(e.source),parentExternalSessionId:J(e.parentExternalSessionId),logFilePath:J(e.logFilePath),discoveredAt:J(e.discoveredAt),importStatus:J(e.importStatus),isSidechain:J(e.isSidechain),machineId:J(e.machineId)}}function Jn(e){let t=new Map;for(let n of e){let e=t.get(n.sessionId)??[];e.push(n),t.set(n.sessionId,e)}return t}async function Yn(e,t,n){if(!n||t.length===0)return{};let{messages:r}=N(e,o),i=e.select({sessionId:r.sessionId,minTimestamp:B`MIN(${r.timestamp})`.as(`min_timestamp`)}).from(r).where(F(L(r.role,`user`),R(r.sessionId,t))).groupBy(r.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:r.sessionId,preview:r.contentText}).from(r).innerJoin(i,F(L(r.sessionId,i.sessionId),L(r.timestamp,i.minTimestamp))).where(L(r.role,`user`)),s=new Map;for(let e of a)s.has(e.sessionId)||s.set(e.sessionId,e.preview);let c=await e.select({sessionId:r.sessionId,count:I()}).from(r).where(R(r.sessionId,t)).groupBy(r.sessionId),l=new Map;for(let e of c)l.set(e.sessionId,e.count);return{previewBySession:s,countBySession:l}}function Xn(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function Zn(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function Qn(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(w.getByAdapterSessionId,async e=>{let{adapterSessionId:t,source:a,adapterName:o}=e.payload,s=[L(r.adapterSessionId,t)];a!==void 0&&s.push(L(r.source,a)),o!==void 0&&s.push(L(r.adapterName,o));let c=await n.select().from(r).where(F(...s)).limit(2),l=c[0];if(c.length!==1||l===void 0){e.setResult({session:null});return}let u=await n.select().from(i).where(L(i.sessionId,l.sessionId));e.setResult({session:Y(l,u)})})}function $n(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q),{messages:i}=N(n,o);return t.on(w.getChildren,async e=>{let{sessionId:t}=e.payload,a=await n.select().from(r).where(L(r.parentSessionId,t));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await n.select({sessionId:i.sessionId,count:I()}).from(i).where(R(i.sessionId,o)).groupBy(i.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await n.select({parentSessionId:r.parentSessionId,count:I()}).from(r).where(R(r.parentSessionId,o)).groupBy(r.parentSessionId),u=new Set;for(let e of l)e.parentSessionId&&u.add(e.parentSessionId);let d=a.map(e=>e.forkPointMessageId).filter(e=>e!==null),f=new Map;if(d.length>0){let e=await n.select({messageId:i.messageId,adapterMessageId:i.adapterMessageId}).from(i).where(F(L(i.sessionId,t),R(i.adapterMessageId,d)));for(let t of e)t.adapterMessageId&&f.set(t.adapterMessageId,t.messageId)}let p=a.map(e=>{let t=e.forkPointMessageId,n=t?f.get(t)??t:null;return{sessionId:e.sessionId,title:e.title??null,forkPointMessageId:n,branchKind:e.branchKind??null,messageCount:c.get(e.sessionId)??0,hasChildren:u.has(e.sessionId),spawningToolCallId:e.spawningToolCallId??void 0}});e.setResult({children:p})})}const er=ln();function tr(e){return e?JSON.stringify(e):null}function nr(e,t){return B`
|
|
3
|
-
SELECT ${t}.key AS key,
|
|
4
|
-
CASE ${t}.type
|
|
5
|
-
WHEN 'object' THEN ${t}.value
|
|
6
|
-
WHEN 'array' THEN ${t}.value
|
|
7
|
-
WHEN 'true' THEN 'true'
|
|
8
|
-
WHEN 'false' THEN 'false'
|
|
9
|
-
WHEN 'null' THEN 'null'
|
|
10
|
-
WHEN 'text' THEN json_quote(${t}.value)
|
|
11
|
-
ELSE CAST(${t}.value AS TEXT)
|
|
12
|
-
END AS vjson
|
|
13
|
-
FROM json_each(${e}) AS ${t}
|
|
14
|
-
`}function rr(e,t){let n=t===`postgres`?B`excluded.metadata || ${e.metadata}`:B`(
|
|
15
|
-
SELECT json_group_object(mk.key, json(mk.vjson)) FROM (
|
|
16
|
-
${nr(B`excluded.metadata`,B`inc`)}
|
|
17
|
-
WHERE inc.key NOT IN (SELECT ex2.key FROM json_each(${e.metadata}) AS ex2)
|
|
18
|
-
UNION ALL
|
|
19
|
-
${nr(B`${e.metadata}`,B`ex`)}
|
|
20
|
-
) AS mk
|
|
21
|
-
)`;return B`
|
|
22
|
-
CASE
|
|
23
|
-
WHEN ${e.metadata} IS NULL THEN excluded.metadata
|
|
24
|
-
WHEN excluded.metadata IS NULL THEN ${e.metadata}
|
|
25
|
-
ELSE ${n}
|
|
26
|
-
END
|
|
27
|
-
`}function ir(e,t,n){return t===void 0?B`${e}`:B`
|
|
28
|
-
CASE
|
|
29
|
-
WHEN ${n.discoveredAt} IS NULL OR ${e} = ${n.discoveredAt} THEN ${t}
|
|
30
|
-
ELSE ${e}
|
|
31
|
-
END
|
|
32
|
-
`}function ar(e,t,n,r){return{status:B`
|
|
33
|
-
CASE
|
|
34
|
-
WHEN COALESCE(${e.importStatus}, excluded.import_status) = 'discovered' THEN excluded.status
|
|
35
|
-
ELSE ${e.status}
|
|
36
|
-
END
|
|
37
|
-
`,isImported:!0,importStatus:B`
|
|
38
|
-
CASE
|
|
39
|
-
WHEN ${e.importStatus} = 'imported' OR excluded.import_status = 'imported' THEN 'imported'
|
|
40
|
-
WHEN ${e.importStatus} = 'tracking' OR excluded.import_status = 'tracking' THEN 'tracking'
|
|
41
|
-
ELSE COALESCE(${e.importStatus}, excluded.import_status, 'discovered')
|
|
42
|
-
END
|
|
43
|
-
`,adapterName:B`COALESCE(${e.adapterName}, excluded.adapter_name)`,discoveredAt:B`COALESCE(${e.discoveredAt}, excluded.discovered_at)`,source:B`COALESCE(${e.source}, excluded.source)`,logFilePath:B`COALESCE(${e.logFilePath}, excluded.log_file_path)`,targetWorkingDirectory:B`COALESCE(excluded.target_working_directory, ${e.targetWorkingDirectory})`,title:B`COALESCE(excluded.title, ${e.title})`,forkPointMessageId:B`COALESCE(${e.forkPointMessageId}, excluded.fork_point_message_id)`,parentExternalSessionId:B`COALESCE(${e.parentExternalSessionId}, excluded.parent_external_session_id)`,branchKind:B`COALESCE(${e.branchKind}, excluded.branch_kind)`,adapterId:B`COALESCE(excluded.adapter_id, ${e.adapterId})`,clientId:B`COALESCE(excluded.client_id, ${e.clientId})`,isSidechain:B`COALESCE(excluded.is_sidechain, ${e.isSidechain})`,lastClientIdentityObservation:B`COALESCE(excluded.last_client_identity_observation, ${e.lastClientIdentityObservation})`,machineId:r===void 0?B`${e.machineId}`:r===null?B`NULL`:B`COALESCE(${e.machineId}, excluded.machine_id)`,metadata:rr(e,n),createdAt:ir(e.createdAt,t,e),lastActivityAt:ir(e.lastActivityAt,t,e)}}function or(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q),{dialect:i}=Be(n);return t.on(w.importUpsert,async e=>{let{externalSessionId:a,source:o,clientId:s,adapterId:c,cwd:l,logFilePath:u,startedAt:d,title:f,kind:p,parentAdapterSessionId:m,forkPointMessageId:h,metadata:g,lastClientIdentityObservation:_,importStatus:v,isSidechain:ee,machineId:y}=e.payload,te=er(),b=crypto.randomUUID(),ne=d??te,x=sn(p)??null,S=m??null,[C]=await n.insert(r).values({sessionId:b,status:`discovered`,isImported:!0,importStatus:v??`discovered`,adapterName:o,adapterSessionId:a,source:o??null,clientId:s??null,adapterId:c??null,targetWorkingDirectory:l??null,logFilePath:u??null,forkPointMessageId:h??null,branchKind:x,parentExternalSessionId:S,discoveredAt:te,title:f??null,metadata:g??null,lastClientIdentityObservation:tr(_),isSidechain:ee??null,machineId:y??null,createdAt:ne,lastActivityAt:ne}).onConflictDoUpdate({target:[r.source,r.adapterSessionId],set:ar(r,d,i,y)}).returning({sessionId:r.sessionId,discoveredAt:r.discoveredAt,parentExternalSessionId:r.parentExternalSessionId,parentSessionId:r.parentSessionId}),w=C.sessionId===b;await sr(t,n,C,w,x,ne,o),e.setResult({sessionId:C.sessionId,created:w})})}async function sr(e,t,n,r,i,a,o){if(r){let r=await cr(t,n.sessionId,n.parentExternalSessionId,o);e.emit(k.created,{sessionId:n.sessionId,parentSessionId:r,branchKind:i,createdAt:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e))}else n.parentExternalSessionId!==null&&n.parentSessionId===null&&await cr(t,n.sessionId,n.parentExternalSessionId,o),e.emit(k.updated,{sessionId:n.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}async function cr(e,t,n,r){let{sessions:i}=N(e,q);if(n===null||r===void 0)return null;let[a]=await e.select({sessionId:i.sessionId,rootSessionId:i.rootSessionId}).from(i).where(F(L(i.adapterSessionId,n),L(i.source,r))).limit(1);if(!a)return null;let o=a.rootSessionId??a.sessionId;return await e.update(i).set({parentSessionId:a.sessionId,rootSessionId:o}).where(L(i.sessionId,t)),a.sessionId}function lr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(w.getByLogFilePath,async e=>{let{logFilePath:t}=e.payload,[a]=await n.select().from(r).where(L(r.logFilePath,t)).limit(1);if(!a){e.setResult({session:null});return}let o=await n.select().from(i).where(L(i.sessionId,a.sessionId));e.setResult({session:Y(a,o)})})}function ur(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(w.listImported,async e=>{let{source:t,importStatus:a}=e.payload,o=[L(r.isImported,!0)];t!==void 0&&o.push(L(r.source,t)),a!==void 0&&o.push(L(r.importStatus,a));let s=F(...o),c=await n.select().from(r).where(s).orderBy(Ue(r.createdAt));if(c.length===0){e.setResult({sessions:[]});return}let l=c.map(e=>e.sessionId),u=Jn(await n.select().from(i).where(R(i.sessionId,l)));e.setResult({sessions:c.map(e=>Y(e,u.get(e.sessionId)??[]))})})}function dr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(w.countBySource,async e=>{let{source:t}=e.payload,i=await n.select({importStatus:r.importStatus,count:B`count(*)`}).from(r).where(F(L(r.isImported,!0),L(r.source,t))).groupBy(r.importStatus),a=0,o=0,s=0,c=0;for(let e of i){let t=Number(e.count);a+=t,e.importStatus===`imported`&&(o+=t),e.importStatus===`tracking`&&(s+=t),e.importStatus===`discovered`&&(c=t)}e.setResult({total:a,imported:o,tracking:s,discovered:c})})}function fr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(w.updateImportStatus,async e=>{let{sessionId:i,importStatus:a}=e.payload,o=a===`imported`?{status:B`
|
|
44
|
-
CASE
|
|
45
|
-
WHEN ${r.status} = 'discovered' THEN 'active'
|
|
46
|
-
ELSE ${r.status}
|
|
47
|
-
END
|
|
48
|
-
`}:{},[s]=await n.update(r).set({importStatus:a,...o}).where(F(L(r.sessionId,i),Je(z(r.importStatus),B`${r.importStatus} <> ${a}`))).returning({adapterSessionId:r.adapterSessionId,adapterName:r.adapterName,source:r.source}),c=s!==void 0;if(e.setResult({success:c}),c){t.emit(k.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&t.emit(k.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function pr(e,t){let n={bus:e,db:t};return[or(n),lr(n),ur(n),dr(n),fr(n)]}function X(e){return e??null}function mr(e){return e?JSON.stringify(e):null}function hr(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:X(e.leadAgentId),parentSessionId:X(e.parentSessionId),contextInheritance:X(e.contextInheritance),rootSessionId:X(e.rootSessionId),forkPointMessageId:X(e.forkPointMessageId),branchKind:X(e.branchKind),adapterName:X(e.adapterName),adapterSessionId:X(e.adapterSessionId),adapterId:X(e.adapterId),clientId:X(e.clientId),clientAccountId:X(e.clientAccountId),lastClientIdentityObservation:gr(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:X(e.title),summary:X(e.summary),summaryUpdatedAt:X(e.summaryUpdatedAt),forkTransforms:mr(e.forkTransforms),targetWorkingDirectory:X(e.targetWorkingDirectory),executionTargetId:X(e.executionTargetId),approvalPolicyOverride:X(e.approvalPolicyOverride),metadata:X(e.metadata),spawningToolCallId:X(e.spawningToolCallId),source:X(e.source),parentExternalSessionId:X(e.parentExternalSessionId),logFilePath:X(e.logFilePath),discoveredAt:X(e.discoveredAt),importStatus:X(e.importStatus),machineId:X(e.machineId)}}function gr(e){return e?JSON.stringify(e):null}function Z(e,t,n){n!==void 0&&(e[t]=n)}function _r(e,t,n){n!==void 0&&(e[t]=n??null)}function vr(e,t){let n={};return Z(n,`status`,e.status),Z(n,`parentSessionId`,e.parentSessionId),Z(n,`contextInheritance`,e.contextInheritance),Z(n,`rootSessionId`,e.rootSessionId),Z(n,`forkPointMessageId`,e.forkPointMessageId),Z(n,`branchKind`,e.branchKind),Z(n,`isOrchestrated`,e.isOrchestrated),Z(n,`clientId`,e.clientId),Z(n,`clientAccountId`,e.clientAccountId),Z(n,`title`,e.title),Z(n,`targetWorkingDirectory`,e.targetWorkingDirectory),Z(n,`createdAt`,e.createdAt),Z(n,`lastActivityAt`,e.lastActivityAt),Z(n,`machineId`,e.machineId),_r(n,`executionTargetId`,e.executionTargetId),_r(n,`approvalPolicyOverride`,e.approvalPolicyOverride),_r(n,`metadata`,e.metadata),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=B`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=gr(e.lastClientIdentityObservation)),n}function yr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(w.get,async e=>{let[t]=await n.select().from(r).where(L(r.sessionId,e.payload.sessionId)).limit(1);if(!t){e.setResult({session:null});return}let a=await n.select().from(i).where(L(i.sessionId,e.payload.sessionId));e.setResult({session:Y(t,a)})})}function br(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(w.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=Se.parse(e.payload),s=hr(a);if(o){U(null,a);let o=M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&W(t,null,a);return}for(let o=0;o<3;o++){let[o]=await n.select().from(r).where(L(r.sessionId,i)).limit(1),c=o?Y(o,[]):null;if(U(c,a),M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:r.sessionId,set:s,setWhere:Nn(o,r)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),W(t,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function xr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(w.delete,async e=>{await n.delete(r).where(L(r.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function Sr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(w.update,async e=>{let i=Ce.request.parse(e.payload),{sessionId:a}=i,o=vr(i,r),s=Zn(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}if(!s){let t=await n.update(r).set(o).where(L(r.sessionId,a));e.setResult({success:M(t),clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await n.select().from(r).where(L(r.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=Y(s,[]),l=Xn(c,i);if(U(c,l),M(await n.update(r).set(o).where(F(L(r.sessionId,a),Nn(s,r))))){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),W(t,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function Cr(e,t){let n=[];return e.status!==`all`&&n.push(L(t.status,e.status)),e.executionTargetId!==void 0&&n.push(L(t.executionTargetId,e.executionTargetId)),F(...n)}function wr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(w.list,async e=>{let{status:t=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=e.payload,l=Cr({status:t,executionTargetId:c},r),u=l?n.select().from(r).where(l):n.select().from(r),d=a===void 0?await u.orderBy(Ue(r.lastActivityAt)):await u.orderBy(Ue(r.lastActivityAt)).limit(a).offset(o),[f]=await(l?n.select({count:I()}).from(r).where(l):n.select({count:I()}).from(r)),p=f?.count??0;if(d.length===0){e.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=Jn(await n.select().from(i).where(R(i.sessionId,m))),{previewBySession:g,countBySession:_}=await Yn(n,m,s),v=d.map(e=>{let t=Y(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});e.setResult({sessions:v,total:p})})}function Tr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(w.getStatusCounts,async e=>{e.payload;let t=await n.select({status:r.status,count:I()}).from(r).groupBy(r.status),i=0,a=0,o=0,s=0;for(let e of t)e.status===`active`?i=e.count:e.status===`closed`?a=e.count:e.status===`archived`?o=e.count:e.status===`discovered`&&(s=e.count);let c=i+a+o+s;e.setResult({all:c,active:i,closed:a,archived:o,discovered:s})})}function Er(e,t){let n={bus:e,db:t},r=[yr(n),br(n),xr(n),Sr(n),wr(n),$n(n),Qn(n),Tr(n),...pr(e,t)];return()=>r.forEach(e=>e())}function Dr(e,t){let{adapterId:n,adapterSessionId:r,cwd:i,model:a,allowedDirectories:o,providerConfigId:s}=t;return n===void 0&&r===void 0&&i===void 0&&a===void 0&&o===void 0&&s===void 0?!1:(n!==void 0&&(e.adapterId=n),r!==void 0&&(e.adapterSessionId=r),i!==void 0&&(e.cwd=i),a!==void 0&&(e.model=a),o!==void 0&&(e.allowedDirectories=o),s!==void 0&&(e.providerConfigId=s),!0)}function Or(e){let t=new Map,n=[];return n.push(e.on(l.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(l.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(l.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(l.listByAdapter,e=>{let{adapterName:n,status:r}=e.payload,i=Array.from(t.values()).filter(e=>e.adapterName===n);r&&r!==`all`&&(i=i.filter(e=>e.status===r)),e.setResult({agents:i})})),n.push(e.on(l.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(l.updateStatus,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.status=e.payload.status,n.lastActivityAt=Date.now(),e.setResult({success:!0})})),n.push(e.on(l.updateActivity,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.lastActivityAt=e.payload.lastActivityAt,e.setResult({success:!0})})),n.push(e.on(l.updateRuntime,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}let{adapterId:r,adapterSessionId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c}=e.payload;if(!Dr(n,{adapterId:r,adapterSessionId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c})){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function kr(e,t){if(t.length===0)return new Map;let{agents:n}=N(e,q),r=[...new Set(t)],i=await e.select().from(n).where(R(n.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function Ar(e,t){return P(e).fts.fetchFirstUserMessagePreviews(e,t)}async function jr(e,t){if(t.length===0)return new Map;let{messages:n}=N(e,o),r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:I()}).from(n).where(R(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Mr(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function Nr(e){if(e!==null)try{let t=typeof e==`string`?JSON.parse(e):e,n=xe.safeParse(t);return n.success?n.data:void 0}catch{return}}function Pr(e,t,n,r){return{sessionId:e.session_id,createdAt:e.created_at,lastActivityAt:e.last_activity_at,status:e.status,title:e.title??void 0,leadAgentId:e.lead_agent_id??void 0,parentSessionId:e.parent_session_id??void 0,rootSessionId:e.root_session_id??void 0,forkPointMessageId:e.fork_point_message_id??void 0,branchKind:e.branch_kind??void 0,adapterName:e.adapter_name??void 0,adapterSessionId:e.adapter_session_id??void 0,adapterId:e.adapter_id??void 0,isOrchestrated:e.is_orchestrated===null?void 0:!!e.is_orchestrated,isImported:e.is_imported===null?void 0:!!e.is_imported,summary:e.summary??void 0,summaryUpdatedAt:e.summary_updated_at??void 0,forkTransforms:Mr(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,metadata:Nr(e.metadata),machineId:e.machine_id??void 0,agents:t.map(e=>({agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0})),preview:{messageCount:r.get(e.session_id)??0,firstUserMessage:n.get(e.session_id)??null}}}function Fr(e,t){let n=P(t).fts,r=[];return r.push(e.on(w.search,async e=>{let{query:r,limit:i=20,status:a=`all`,isImported:o}=e.payload,s=r.trim();if(!s){e.setResult({sessions:[],total:0});return}let c={query:s,likePattern:`%${s.toLowerCase()}%`,status:a===`all`?void 0:a,isImported:o},l=await n.searchSessionRows(t,{...c,limit:i});if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await n.countSessionMatches(t,c),d=l.map(e=>e.session_id),f=await kr(t,d),p=await Ar(t,d),m=await jr(t,d),h=l.map(e=>Pr(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>r.forEach(e=>e())}async function Ir(e,t){return(await Be(e).all(B`
|
|
49
|
-
WITH RECURSIVE ancestors AS (
|
|
50
|
-
SELECT session_id, parent_session_id
|
|
51
|
-
FROM sessions
|
|
52
|
-
WHERE session_id = ${t}
|
|
53
|
-
|
|
54
|
-
UNION ALL
|
|
55
|
-
|
|
56
|
-
SELECT s.session_id, s.parent_session_id
|
|
57
|
-
FROM sessions s
|
|
58
|
-
JOIN ancestors a ON s.session_id = a.parent_session_id
|
|
59
|
-
)
|
|
60
|
-
SELECT session_id FROM ancestors
|
|
61
|
-
`)).map(e=>e.session_id)}const Lr=new Map;function Rr(e,t){let n=(Lr.get(e)??Promise.resolve()).then(t),r=n.then(()=>void 0,()=>void 0);return Lr.set(e,r),r.then(()=>{Lr.get(e)===r&&Lr.delete(e)}),n}function zr(e,t){return`${e}:${t}`}async function Br(e,t,n){let r=await e.requestOptional(a.getByIds,{sessionId:t,eventIds:[zr(`turn.completed`,n)]});if(r.handled)return r.data.events.length>0}function Vr(e,t){return Rr(`${t.sessionId}${t.turnAnchorId}`,()=>Hr(e,t))}async function Hr(e,t){let{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}=t,{turn:u,created:d}=await e.request(C.ingestCompleted,{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}),f,p;for(let r of t.messages){let{messageId:t}=await e.request(T.upsertByAdapterMessageId,{sessionId:n,turnId:u.turnId,adapterMessageId:r.adapterMessageId,role:r.role,contentText:r.contentText,blocks:r.blocks,agentId:r.agentId,adapterSessionId:r.adapterSessionId,timestamp:r.timestamp,origin:r.origin});p??=t,f===void 0&&r.role===`user`&&(f=t)}let m=d;return d||(m=await Br(e,n,u.turnId)===!1),m&&(p===void 0?console.warn(`[turn-ingest] Turn ${u.turnId} (session ${n}) ingested without messages — skipping session.turn.* emission (getByTurn contract unfulfillable)`):await Ur(e,t,u,f??p)),{turnId:u.turnId,turnNumber:u.turnNumber,created:d}}async function Ur(e,t,n,r){let{sessionId:i,status:a,error:o,usage:s,initiator:c,ingestionMarker:l}=t,d={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,agentIds:[...new Set(t.messages.flatMap(e=>e.role===`assistant`&&e.agentId?[e.agentId]:[]))],initiator:c,ingestionMarker:l},f={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,success:a===`completed`,error:o,usage:s,initiator:c,ingestionMarker:l};await u(e,{type:`turn.started`,sessionId:i,payload:d,eventId:zr(`turn.started`,n.turnId)}),await u(e,{type:`turn.completed`,sessionId:i,payload:f,eventId:zr(`turn.completed`,n.turnId)}),await e.emit(k.turn.started,d),await e.emit(k.turn.completed,f)}const Q=`observed-session-ingestion-policy`;function Wr(e,t){return e.emit(fe.register,{capabilityId:Q,provider:t})}function Gr(e,t){return e.emit(fe.unregister,{capabilityId:Q,providerId:t})}const Kr=se(`log-import`,{listImporters:{request:E.object({}),response:E.object({importers:E.array(E.object({adapterName:E.string(),clientId:E.string().optional()}))})},importFile:{request:E.object({filePath:E.string(),adapterName:E.string(),ingestionMarker:we.optional()}),response:E.discriminatedUnion(`status`,[E.object({status:E.literal(`imported`),sessionId:E.string(),messageCount:E.number(),turnCount:E.number()}),E.object({status:E.literal(`skipped`),reason:E.enum([`no-importer`,`file-missing`])})])},importSession:{request:E.object({adapterSessionId:E.string(),adapterName:E.string(),ingestionMarker:we.optional()}),response:E.object({sessionId:E.string(),messageCount:E.number()})}}).subjects;function $(e,t){process.env.MAKAIO_DEBUG===`true`&&console.debug(`[ObservedSessionIngestion] ${e}`,t??{})}function qr(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&typeof t.displayName==`string`&&typeof t.decideObservedSessionIngestion==`function`}function Jr(e){return e.importStatus===`discovered`&&e.clientId!==void 0}var Yr=class{bus;managedAdapterSessionIds=new Set;importerByClientId=new Map;unresolvedClientIds=new Set;policyProviders=new Map;cleanups=[];constructor(e=ce){this.bus=e,this.cleanups.push(this.bus.on(pe.runtime.started,e=>{this.handleRuntimeStarted(e.payload)}),this.bus.on(pe.session.started,async e=>{try{await this.handleSessionStarted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to register observed session`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(pe.session.turn.completed,async e=>{try{await this.handleTurnCompleted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to trigger import for observed turn`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(fe.register,e=>{let{provider:t}=e.payload;qr(t)&&this.policyProviders.set(t.id,t)},{filter:{capabilityId:Q}}),this.bus.on(fe.unregister,e=>{this.policyProviders.delete(e.payload.providerId)},{filter:{capabilityId:Q}}))}destroy(){for(let e of this.cleanups.splice(0))e()}handleRuntimeStarted(e){if(!(e.source.layer!==`adapter`||e.adapterSessionId===void 0)&&!this.managedAdapterSessionIds.has(e.adapterSessionId)){if(this.managedAdapterSessionIds.size>=1e4){let e=this.managedAdapterSessionIds.values().next().value;e!==void 0&&this.managedAdapterSessionIds.delete(e)}this.managedAdapterSessionIds.add(e.adapterSessionId)}}async resolveImporter(e){let t=this.importerByClientId.get(e);if(t!==void 0)return t===null?null:{adapterName:t};let n=await this.bus.requestOptional(Kr.listImporters,{});if(!n.handled)return this.debugUnresolved(e,`no log-import service registered`),null;let r=n.data.importers.find(t=>t.clientId===e);return r===void 0?(this.importerByClientId.set(e,null),this.debugUnresolved(e,`no importer registered for client`),null):(this.importerByClientId.set(e,r.adapterName),{adapterName:r.adapterName})}debugUnresolved(e,t){this.unresolvedClientIds.has(e)||(this.unresolvedClientIds.add(e),$(`Skipping observed ingestion for client '${e}': ${t}`))}async handleSessionStarted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n===null)return;let r=Xr(e.metadata),i=await this.decideImportStatus({clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n.adapterName,...e.cwd===void 0?{}:{cwd:e.cwd},...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}}),a=e.startMode===`fork`&&e.parentAdapterSessionId!==void 0&&e.parentAdapterSessionId.length>0?e.parentAdapterSessionId:void 0,o=a===void 0?{kind:ve,parentAdapterSessionId:null,forkPointMessageId:null}:{kind:he,parentAdapterSessionId:a,forkPointMessageId:null};(await this.bus.requestOptional(w.importUpsert,{...o,externalSessionId:t,source:n.adapterName,clientId:e.clientId,cwd:e.cwd??null,...e.transcriptPath===void 0?{}:{logFilePath:e.transcriptPath},...e.machineId===void 0?{}:{machineId:e.machineId},startedAt:e.observedAt,importStatus:i,...r===void 0?{}:{metadata:r}})).handled||$(`Session storage unavailable; skipped observed-session registration`,{adapterSessionId:t})}async handleTurnCompleted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n!==null&&await this.shouldImportObservedContent({clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n.adapterName,...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}})){if(e.transcriptPath!==void 0){let r=await this.bus.requestOptional(Kr.importFile,{filePath:e.transcriptPath,adapterName:n.adapterName,ingestionMarker:`live`});r.handled?r.data.status===`skipped`&&$(`Targeted import skipped`,{adapterSessionId:t,reason:r.data.reason}):$(`log-import.importFile unhandled; watcher fallback will ingest`,{adapterSessionId:t});return}try{await this.bus.requestOptional(Kr.importSession,{adapterSessionId:t,adapterName:n.adapterName,ingestionMarker:`live`})}catch(e){$(`Discovery-based import fallback failed (no stub yet); watcher will ingest`,{adapterSessionId:t,error:e})}}}async decideImportStatus(e){for(let t of this.policyProviders.values())if((await t.decideObservedSessionIngestion(e)).importStatus===`discovered`)return`discovered`;return`tracking`}async shouldImportObservedContent(e){let t=await this.bus.requestOptional(w.getByAdapterSessionId,{adapterSessionId:e.adapterSessionId,source:e.adapterName});if(t.handled&&t.data.session!==null){if(Jr(t.data.session))return!1;if(t.data.session.importStatus!==`discovered`)return!0}return await this.decideImportStatus(e)===`tracking`}};function Xr(e){if(e===void 0)return;let t=xe.safeParse(e);return t.success?t.data:void 0}const Zr=ze(`import_cursors`,e=>({filePath:e.text(`file_path`).primaryKey(),bytesRead:e.int8(`bytes_read`).notNull(),lastModified:e.text(`last_modified`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()})),Qr=Zr.sqlite,$r=Zr.postgres,ei=Re({importCursors:Qr},{importCursors:$r});function ti(e,t){let{importCursors:n}=N(t,ei),r=[];return r.push(e.on(Ze.get,async e=>{let{filePath:r}=e.payload,i=(await t.select().from(n).where(L(n.filePath,r)).limit(1))[0];if(!i){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:i.filePath,bytesRead:i.bytesRead,lastModified:i.lastModified}})})),r.push(e.on(Ze.set,async e=>{let{filePath:r,bytesRead:i,lastModified:a}=e.payload;await t.insert(n).values({filePath:r,bytesRead:i,lastModified:a,updatedAt:Date.now()}).onConflictDoUpdate({target:n.filePath,set:{bytesRead:i,lastModified:a,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Ze.delete,async e=>{let{filePath:r}=e.payload,i=await t.delete(n).where(L(n.filePath,r));e.setResult({success:M(i)})})),()=>{r.forEach(e=>e())}}Pe(`embeddings`,{id:Me(`id`).primaryKey({autoIncrement:!0}),entityType:j(`entity_type`).notNull(),entityId:j(`entity_id`).notNull(),model:j(`model`).notNull(),dimensions:Me(`dimensions`).notNull(),content:j(`content`),embedding:Ae(`embedding`,{mode:`buffer`}).notNull(),createdAt:Me(`created_at`).notNull()},e=>[je(`idx_embeddings_entity`).on(e.entityType,e.entityId),je(`idx_embeddings_model`).on(e.model),Fe(`idx_embeddings_unique`).on(e.entityType,e.entityId,e.model)]);function ni(e){if(e.byteLength%4!=0)throw Error(`Invalid embedding blob: byte length ${e.byteLength} is not a multiple of 4 (IEEE-754 f32 lanes)`);return e instanceof ArrayBuffer?new Float32Array(e):e.byteOffset%4==0?new Float32Array(e.buffer,e.byteOffset,e.byteLength/4):new Float32Array(Uint8Array.from(e).buffer)}var ri=class{rawSql;engine;knownTables=new Set;constructor(e){this.rawSql=Be(e),this.engine=Ve(this.rawSql.dialect)}slugify(e){return e.replace(/[^a-zA-Z0-9]/g,`_`).toLowerCase()}hashModel(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return t.toString(36)}getTableName(e){return`embeddings_idx_${this.slugify(e)}_${this.hashModel(e)}`}async ensureIndexTable(e,t){let n=this.getTableName(e);if(this.knownTables.has(n))return n;let r=B.identifier(n),i=B.raw(this.engine.capabilities.binaryColumnType);return await this.rawSql.run(B`CREATE TABLE IF NOT EXISTS ${r} (
|
|
62
|
-
entity_type TEXT NOT NULL,
|
|
63
|
-
entity_id TEXT NOT NULL,
|
|
64
|
-
embedding ${i} NOT NULL,
|
|
65
|
-
PRIMARY KEY (entity_type, entity_id)
|
|
66
|
-
)`),this.knownTables.add(n),n}async upsertIndexed(e,t,n,r,i){let a=await this.ensureIndexTable(e,t),o=new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s=B.identifier(a);await this.rawSql.run(B`INSERT INTO ${s} (entity_type, entity_id, embedding)
|
|
67
|
-
VALUES (${n}, ${r}, ${o})
|
|
68
|
-
ON CONFLICT(entity_type, entity_id) DO UPDATE SET
|
|
69
|
-
embedding = excluded.embedding`)}async searchSimilar(e,t,n=10){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return[];this.knownTables.add(r)}let i=B.identifier(r),a=await this.rawSql.all(B`SELECT entity_type, entity_id, embedding FROM ${i}`);return a.length===0?[]:a.map(e=>{let n=ni(e.embedding),r=this.euclideanDistance(t,n);return{entityType:e.entity_type,entityId:e.entity_id,distance:r}}).sort((e,t)=>e.distance-t.distance).slice(0,n)}async deleteByEntity(e,t,n){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return;this.knownTables.add(r)}let i=B.identifier(r);await this.rawSql.run(B`DELETE FROM ${i} WHERE entity_type = ${t} AND entity_id = ${n}`)}euclideanDistance(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return Math.sqrt(n)}},ii=class{sessionId;parentSessionId;status=`active`;_turns=[];_completedTurnIds=new Set;bus;constructor(e){this.sessionId=e.sessionId??crypto.randomUUID(),this.parentSessionId=e.parentSessionId,this.bus=e.bus}get turns(){return this._turns}async startTurn(e){if(this.status!==`active`)throw Error(`Cannot start turn on non-active session`);let t=new x({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await f(this.bus,{sessionId:this.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId,ingestionMarker:`live`}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);let t=e.getResult(),n={turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0};await u(this.bus,{type:`turn.completed`,sessionId:this.sessionId,payload:{sessionId:this.sessionId,...n}}),await this.emit(k.turn.completed,n),this._completedTurnIds.add(e.turnId)}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function ai(e,t){let{sessions:n}=N(t,q);async function r(i,a,o,s=0){if(s>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,parentSessionId:n.parentSessionId}).from(n).where(F(L(n.parentExternalSessionId,i),L(n.source,a)));for(let t of c)t.parentSessionId!==null&&await e.request(w.update,{sessionId:t.sessionId,rootSessionId:o}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,o,s+1)}return e.on(k.import.completed,async i=>{let{adapterSessionId:a,sessionId:o,source:s}=i.payload,c=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(F(L(n.parentExternalSessionId,a),L(n.source,s),z(n.parentSessionId)));if(c.length===0)return;let{session:l}=await e.request(w.get,{sessionId:o}),u=l?.rootSessionId??o;for(let t of c)await e.request(w.update,{sessionId:t.sessionId,parentSessionId:o,rootSessionId:u,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,s,u)})}const oi=new Set([`Agent`,`spawn_subagent`]),si=`[^A-Za-z0-9_-]`;function ci(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function li(e,t){return t.test(e)}async function ui(e,t){let n=[],r,i=0;do{let a=await e.request(T.getBySession,{sessionId:t,order:`asc`,...r===void 0?{}:{after:r}});if(n.push(...a.messages),r=a.nextCursor??void 0,i+=1,r!==void 0&&i>=1e3)throw Error(`Exceeded 1000 message pages while loading session ${t}`)}while(r!==void 0);return n}function di(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&oi.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function fi(e,t){let n=new Map;for(let r of e)for(let e of r.blocks)if(e.type===`tool_output`){for(let r of t)if(li(e.output,r.pattern)){let t=n.get(e.toolCallId)??new Set;t.add(r.id),n.set(e.toolCallId,t)}}let r=new Map;for(let[e,t]of n)if(t.size===1){let[n]=t;r.set(e,n)}return r}function pi(e){let t=new Map,n=new Set;for(let r of e)if(!(r===null||n.has(r.adapterSessionId))){if(t.has(r.adapterSessionId)){t.delete(r.adapterSessionId),n.add(r.adapterSessionId);continue}t.set(r.adapterSessionId,r.sessionId)}return t}function mi(e){return[...e].map(e=>{let t=ci(e);return{id:e,pattern:RegExp(`(^|${si})${t}($|${si})`)}})}async function hi(e,t,n){let{children:r}=await e.request(w.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(w.get,{sessionId:t}),o=a?.adapterSessionId;if(!o)return;let s=mi(new Set([o])),c=(await Promise.all(i.map(async t=>{let n=await ui(e,t.sessionId),r=di(n);if(r.length===0)return null;let i=fi(n,s);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===o);if(a.length!==1)return null;let[c]=a[0];return r.some(e=>e.toolCallId===c)?{parentSessionId:t.sessionId,toolCallId:c}:null}))).filter(e=>e!==null);c.length===1&&await e.request(w.update,{sessionId:t,parentSessionId:c[0].parentSessionId,spawningToolCallId:c[0].toolCallId})}async function gi(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:o}=await e.request(w.getByAdapterSessionId,{adapterSessionId:r,source:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(w.getChildren,{sessionId:s}),l=await _i(e,c);if(l.size===0)return;let u=await ui(e,a),d=di(u);if(d.length===0)return;let f=fi(u,mi(new Set(l.keys()))),p=new Map;for(let e of d){let t=f.get(e.toolCallId);t!==void 0&&p.set(t,(p.get(t)??0)+1)}let m=new Map;for(let e of d){let t=f.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&p.get(t)===1&&m.set(n,e.toolCallId)}if(m.size===0)return;let h=[...m].map(async([t,n])=>{try{await e.request(w.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:s,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(h)}async function _i(e,t){return pi(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(w.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function vi(e){return e.on(k.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(w.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await hi(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await gi(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function yi(e){return[...e].map(e=>{let t=ci(e);return{id:e,pattern:RegExp(`(^|${si})${t}($|${si})`)}})}async function bi(e,t,n){return pi(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(w.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function xi(e){return e.on(k.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(w.getChildren,{sessionId:n}),a=await bi(e,r,i),o=new Set(a.keys());if(o.size===0)return;let s=await ui(e,n),c=di(s);if(c.length===0)return;let l=fi(s,yi(o)),u=new Map;for(let e of c){let t=l.get(e.toolCallId);t!==void 0&&u.set(t,(u.get(t)??0)+1)}let d=new Map;for(let e of c){let t=l.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&u.get(t)===1&&d.set(n,e.toolCallId)}let f=[...d].map(async([t,r])=>{try{let{session:n}=await e.request(w.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(w.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(f)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function Si(e){return e.on(D.session.discovered,async t=>{let n=be.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:o,title:s,logFilePath:c,startedAt:l,machineId:u,kind:d,parentAdapterSessionId:f,forkPointMessageId:p}=n.data,m=cn({kind:d,parentAdapterSessionId:f??null,forkPointMessageId:p??null});await e.request(w.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:o??null,...s===void 0?{}:{title:s},...c===void 0?{}:{logFilePath:c},...l===void 0?{}:{startedAt:l},...u===void 0?{}:{machineId:u},...m})})}var Ci=class{bus;agentStates=new Map;sessionStates=new Map;unsubscribe;staleThresholdMs;constructor(e,t){this.bus=e,this.staleThresholdMs=t?.staleThresholdMs??36e5}start(){this.unsubscribe||=this.bus.on(O.contextWindow.updated,e=>{let{agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s}=e.payload;if(!n)return;let c={agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s,updatedAt:Date.now()};this.agentStates.set(t,c),this.recomputeSessionState(n)})}stop(){this.unsubscribe?.(),this.unsubscribe=void 0,this.agentStates.clear(),this.sessionStates.clear()}getSessionState(e){return this.sessionStates.get(e)}clearSession(e){this.sessionStates.delete(e);for(let[t,n]of this.agentStates)n.sessionId===e&&this.agentStates.delete(t)}recomputeSessionState(e){let t=Date.now(),n;for(let[r,i]of this.agentStates){if(t-i.updatedAt>this.staleThresholdMs){this.agentStates.delete(r);continue}i.sessionId===e&&(!n||i.percentage>n.percentage)&&(n=i)}n&&this.sessionStates.set(e,{currentTokens:n.currentTokens,maxTokens:n.maxTokens,percentage:n.percentage,level:n.level,worstAgentId:n.agentId,lastUpdatedAt:n.updatedAt})}};export{mt as $,Gn as A,Zt as B,Pr as C,Yn as D,Er as E,an as F,Kt as G,Xt as H,nn as I,Vt as J,Ht as K,tn as L,sn as M,cn as N,Jn as O,rn as P,gt as Q,en as R,Ar as S,Or as T,Yt as U,Qt as V,Jt as W,jt as X,Bt as Y,Et as Z,Vr as _,ai as a,kr as b,ti as c,Kr as d,tt as et,Yr as f,Gr as g,Wr as h,vi as i,kn as j,Y as k,Qr as l,Q as m,Si as n,ii as o,Jr as p,H as q,xi as r,ri as s,Ci as t,Zr as u,Ir as v,Mr as w,jr as x,Fr as y,$t as z};
|