@undefineds.co/xpod 0.3.48 → 0.3.50
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/bin/xpod.js +0 -0
- package/dist/api/auth/MultiAuthenticator.js +2 -2
- package/dist/api/auth/MultiAuthenticator.js.map +1 -1
- package/dist/api/chatkit/pod-store.d.ts +16 -17
- package/dist/api/chatkit/pod-store.js +299 -231
- package/dist/api/chatkit/pod-store.js.map +1 -1
- package/dist/api/chatkit/schema.d.ts +1 -1
- package/dist/api/chatkit/service.js +13 -11
- package/dist/api/chatkit/service.js.map +1 -1
- package/dist/api/chatkit/store.d.ts +1 -0
- package/dist/api/chatkit/store.js +23 -11
- package/dist/api/chatkit/store.js.map +1 -1
- package/dist/api/chatkit/types.d.ts +17 -10
- package/dist/api/chatkit/types.js +97 -14
- package/dist/api/chatkit/types.js.map +1 -1
- package/dist/api/container/common.js +16 -2
- package/dist/api/container/common.js.map +1 -1
- package/dist/api/container/routes.js +3 -0
- package/dist/api/container/routes.js.map +1 -1
- package/dist/api/container/types.d.ts +3 -0
- package/dist/api/container/types.js.map +1 -1
- package/dist/api/handlers/ChatKitV1Handler.js +1 -2
- package/dist/api/handlers/ChatKitV1Handler.js.map +1 -1
- package/dist/api/handlers/CoordinationHandler.d.ts +6 -0
- package/dist/api/handlers/CoordinationHandler.js +115 -0
- package/dist/api/handlers/CoordinationHandler.js.map +1 -0
- package/dist/api/handlers/MatrixHandler.d.ts +11 -0
- package/dist/api/handlers/MatrixHandler.js +144 -2
- package/dist/api/handlers/MatrixHandler.js.map +1 -1
- package/dist/api/handlers/RunHandler.js +33 -15
- package/dist/api/handlers/RunHandler.js.map +1 -1
- package/dist/api/handlers/index.d.ts +1 -0
- package/dist/api/handlers/index.js +1 -0
- package/dist/api/handlers/index.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/matrix/PodMatrixStore.d.ts +25 -1
- package/dist/api/matrix/PodMatrixStore.js +253 -41
- package/dist/api/matrix/PodMatrixStore.js.map +1 -1
- package/dist/api/matrix/index.d.ts +1 -1
- package/dist/api/matrix/index.js.map +1 -1
- package/dist/api/matrix/types.d.ts +25 -2
- package/dist/api/matrix/types.js.map +1 -1
- package/dist/api/middleware/AuthMiddleware.d.ts +1 -0
- package/dist/api/middleware/AuthMiddleware.js +13 -1
- package/dist/api/middleware/AuthMiddleware.js.map +1 -1
- package/dist/api/protocol-metadata.d.ts +4 -0
- package/dist/api/protocol-metadata.js +64 -0
- package/dist/api/protocol-metadata.js.map +1 -0
- package/dist/api/reconciler/ClientReconcilerCoordinator.d.ts +42 -0
- package/dist/api/reconciler/ClientReconcilerCoordinator.js +250 -0
- package/dist/api/reconciler/ClientReconcilerCoordinator.js.map +1 -0
- package/dist/api/reconciler/ClientReconcilerCoordinator.jsonld +186 -0
- package/dist/api/reconciler/ServerGroupReconcilerService.d.ts +39 -0
- package/dist/api/reconciler/ServerGroupReconcilerService.js +91 -0
- package/dist/api/reconciler/ServerGroupReconcilerService.js.map +1 -0
- package/dist/api/reconciler/ServerGroupReconcilerService.jsonld +146 -0
- package/dist/api/reconciler/WakeAgentQueue.d.ts +23 -0
- package/dist/api/reconciler/WakeAgentQueue.js +123 -0
- package/dist/api/reconciler/WakeAgentQueue.js.map +1 -0
- package/dist/api/reconciler/WakeAgentQueue.jsonld +91 -0
- package/dist/api/reconciler/coordination.d.ts +61 -0
- package/dist/api/reconciler/coordination.js +109 -0
- package/dist/api/reconciler/coordination.js.map +1 -0
- package/dist/api/reconciler/coordination.jsonld +186 -0
- package/dist/api/reconciler/index.d.ts +4 -0
- package/dist/api/reconciler/index.js +21 -0
- package/dist/api/reconciler/index.js.map +1 -0
- package/dist/api/runs/ManagedRunWorker.js +0 -5
- package/dist/api/runs/ManagedRunWorker.js.map +1 -1
- package/dist/api/runs/RunStateCenter.d.ts +1 -1
- package/dist/api/runs/RunStateCenter.js +12 -28
- package/dist/api/runs/RunStateCenter.js.map +1 -1
- package/dist/api/runs/store.d.ts +12 -15
- package/dist/api/runs/store.js +24 -15
- package/dist/api/runs/store.js.map +1 -1
- package/dist/api/tasks/TaskMaterializer.d.ts +1 -0
- package/dist/api/tasks/TaskMaterializer.js +10 -13
- package/dist/api/tasks/TaskMaterializer.js.map +1 -1
- package/dist/api/tasks/TaskService.d.ts +0 -2
- package/dist/api/tasks/TaskService.js +6 -16
- package/dist/api/tasks/TaskService.js.map +1 -1
- package/dist/api/tasks/store.d.ts +0 -2
- package/dist/api/tasks/store.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +1 -1
- package/dist/cli/commands/auth.js +4 -5
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/backup.js +1 -1
- package/dist/cli/commands/backup.js.map +1 -1
- package/dist/cli/commands/login.js +1 -1
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/pod.js +1 -1
- package/dist/cli/commands/pod.js.map +1 -1
- package/dist/cli/lib/auth-context.js +10 -7
- package/dist/cli/lib/auth-context.js.map +1 -1
- package/dist/cli/lib/auth-helper.d.ts +10 -6
- package/dist/cli/lib/auth-helper.js +10 -6
- package/dist/cli/lib/auth-helper.js.map +1 -1
- package/dist/cli/lib/credentials-store.d.ts +22 -4
- package/dist/cli/lib/credentials-store.js +68 -51
- package/dist/cli/lib/credentials-store.js.map +1 -1
- package/dist/cli/lib/oidc-auth.d.ts +4 -0
- package/dist/cli/lib/oidc-auth.js +90 -0
- package/dist/cli/lib/oidc-auth.js.map +1 -0
- package/dist/cli/lib/oidc-session-storage.d.ts +3 -0
- package/dist/cli/lib/oidc-session-storage.js +41 -0
- package/dist/cli/lib/oidc-session-storage.js.map +1 -0
- package/dist/components/components.jsonld +5 -1
- package/dist/components/context.jsonld +103 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/provision/LocalPodProvisioningService.d.ts +1 -0
- package/dist/provision/LocalPodProvisioningService.js +9 -0
- package/dist/provision/LocalPodProvisioningService.js.map +1 -1
- package/dist/provision/LocalPodProvisioningService.jsonld +4 -0
- package/dist/runtime/Proxy.d.ts +1 -0
- package/dist/runtime/Proxy.js +8 -1
- package/dist/runtime/Proxy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +19 -9
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +19 -9
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/package.json +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": [
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@undefineds.co/xpod/^0.0.0/components/context.jsonld"
|
|
4
|
+
],
|
|
5
|
+
"@id": "npmd:@undefineds.co/xpod",
|
|
6
|
+
"components": [
|
|
7
|
+
{
|
|
8
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ReconcilerCoordinationMetadata",
|
|
9
|
+
"@type": "AbstractClass",
|
|
10
|
+
"requireElement": "ReconcilerCoordinationMetadata",
|
|
11
|
+
"parameters": [],
|
|
12
|
+
"memberFields": [
|
|
13
|
+
{
|
|
14
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ReconcilerCoordinationMetadata__member_reconcilerOwner",
|
|
15
|
+
"memberFieldName": "reconcilerOwner"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"constructorArguments": []
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob",
|
|
22
|
+
"@type": "AbstractClass",
|
|
23
|
+
"requireElement": "SharedWakeAgentJob",
|
|
24
|
+
"parameters": [],
|
|
25
|
+
"memberFields": [
|
|
26
|
+
{
|
|
27
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob__member_id",
|
|
28
|
+
"memberFieldName": "id"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob__member_thread",
|
|
32
|
+
"memberFieldName": "thread"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob__member_triggerMessage",
|
|
36
|
+
"memberFieldName": "triggerMessage"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob__member_agent",
|
|
40
|
+
"memberFieldName": "agent"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob__member_reason",
|
|
44
|
+
"memberFieldName": "reason"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob__member_status",
|
|
48
|
+
"memberFieldName": "status"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#SharedWakeAgentJob__member_createdAt",
|
|
52
|
+
"memberFieldName": "createdAt"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"constructorArguments": []
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#WakeAgentLeaseFields",
|
|
59
|
+
"@type": "AbstractClass",
|
|
60
|
+
"requireElement": "WakeAgentLeaseFields",
|
|
61
|
+
"parameters": [],
|
|
62
|
+
"memberFields": [
|
|
63
|
+
{
|
|
64
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#WakeAgentLeaseFields__member_priority",
|
|
65
|
+
"memberFieldName": "priority"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#WakeAgentLeaseFields__member_leaseOwner",
|
|
69
|
+
"memberFieldName": "leaseOwner"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#WakeAgentLeaseFields__member_leaseExpiresAt",
|
|
73
|
+
"memberFieldName": "leaseExpiresAt"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"constructorArguments": []
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability",
|
|
80
|
+
"@type": "AbstractClass",
|
|
81
|
+
"requireElement": "ClientCapability",
|
|
82
|
+
"parameters": [],
|
|
83
|
+
"memberFields": [
|
|
84
|
+
{
|
|
85
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability__member_clientId",
|
|
86
|
+
"memberFieldName": "clientId"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability__member_kind",
|
|
90
|
+
"memberFieldName": "kind"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability__member_user",
|
|
94
|
+
"memberFieldName": "user"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability__member_canCoordinateClientOwnedThread",
|
|
98
|
+
"memberFieldName": "canCoordinateClientOwnedThread"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability__member_canRunAgent",
|
|
102
|
+
"memberFieldName": "canRunAgent"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability__member_workspaces",
|
|
106
|
+
"memberFieldName": "workspaces"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientCapability__member_heartbeatAt",
|
|
110
|
+
"memberFieldName": "heartbeatAt"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"constructorArguments": []
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerLease",
|
|
117
|
+
"@type": "AbstractClass",
|
|
118
|
+
"requireElement": "ClientReconcilerLease",
|
|
119
|
+
"parameters": [],
|
|
120
|
+
"memberFields": [
|
|
121
|
+
{
|
|
122
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerLease__member_thread",
|
|
123
|
+
"memberFieldName": "thread"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerLease__member_ownerClientId",
|
|
127
|
+
"memberFieldName": "ownerClientId"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerLease__member_ownerUser",
|
|
131
|
+
"memberFieldName": "ownerUser"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerLease__member_fencingToken",
|
|
135
|
+
"memberFieldName": "fencingToken"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerLease__member_expiresAt",
|
|
139
|
+
"memberFieldName": "expiresAt"
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"constructorArguments": []
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions",
|
|
146
|
+
"@type": "AbstractClass",
|
|
147
|
+
"requireElement": "ClientReconcilerActivationOptions",
|
|
148
|
+
"parameters": [],
|
|
149
|
+
"memberFields": [
|
|
150
|
+
{
|
|
151
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_thread",
|
|
152
|
+
"memberFieldName": "thread"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_ownerUser",
|
|
156
|
+
"memberFieldName": "ownerUser"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_clients",
|
|
160
|
+
"memberFieldName": "clients"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_currentLease",
|
|
164
|
+
"memberFieldName": "currentLease"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_now",
|
|
168
|
+
"memberFieldName": "now"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_heartbeatTtlMs",
|
|
172
|
+
"memberFieldName": "heartbeatTtlMs"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_leaseTtlMs",
|
|
176
|
+
"memberFieldName": "leaseTtlMs"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"@id": "undefineds:dist/api/reconciler/coordination.jsonld#ClientReconcilerActivationOptions__member_fencingToken",
|
|
180
|
+
"memberFieldName": "fencingToken"
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"constructorArguments": []
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./coordination"), exports);
|
|
18
|
+
__exportStar(require("./ClientReconcilerCoordinator"), exports);
|
|
19
|
+
__exportStar(require("./WakeAgentQueue"), exports);
|
|
20
|
+
__exportStar(require("./ServerGroupReconcilerService"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/reconciler/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,gEAA8C;AAC9C,mDAAiC;AACjC,iEAA+C","sourcesContent":["export * from './coordination';\nexport * from './ClientReconcilerCoordinator';\nexport * from './WakeAgentQueue';\nexport * from './ServerGroupReconcilerService';\n"]}
|
|
@@ -337,12 +337,8 @@ class ManagedRunWorker {
|
|
|
337
337
|
id: (0, store_1.generateRunStepResourceId)({
|
|
338
338
|
key: (0, types_1.generateId)('run-step'),
|
|
339
339
|
runId: run.id,
|
|
340
|
-
commandKind: run.commandKind,
|
|
341
|
-
surfaceId: run.surfaceId,
|
|
342
340
|
createdAt,
|
|
343
341
|
}),
|
|
344
|
-
commandKind: run.commandKind,
|
|
345
|
-
surfaceId: run.surfaceId,
|
|
346
342
|
runId: run.id,
|
|
347
343
|
run: this.resolveRunResource(run, context),
|
|
348
344
|
type,
|
|
@@ -390,7 +386,6 @@ class ManagedRunWorker {
|
|
|
390
386
|
}
|
|
391
387
|
return (0, types_1.toThreadRef)({
|
|
392
388
|
thread_id: this.extractThreadId(run.thread),
|
|
393
|
-
chat_id: run.surfaceId,
|
|
394
389
|
});
|
|
395
390
|
}
|
|
396
391
|
extractThreadId(thread) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedRunWorker.js","sourceRoot":"","sources":["../../../src/api/runs/ManagedRunWorker.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChatKitStore, StoreContext } from '../chatkit/store';\nimport type {\n AssistantMessageItem,\n ThreadItem,\n ThreadMetadata,\n ThreadRef,\n UserMessageItem,\n} from '../chatkit/types';\nimport {\n extractAssistantMessageText,\n extractUserMessageText,\n generateId,\n nowTimestamp,\n toThreadRef,\n} from '../chatkit/types';\nimport type { AgentRuntimeConfig, AgentRuntimeEvent, RunnerProtocol, RunnerType } from './AgentRuntimeTypes';\nimport type { RunExecutionBackend, RunExecutionInput } from './RunExecutionBackend';\nimport { RunStatus, XpodRunStepType as RunStepType } from './schema';\nimport {\n canClaimRun,\n generateRunStepResourceId,\n resolveDataResource,\n resolveRunUrn,\n type RunRecordData,\n type RunStepRecordData,\n type RunStore,\n} from './store';\nimport { isWorkspaceRef } from '../workspace/types';\n\nexport type ManagedRunStore<TContext = StoreContext> = ChatKitStore<TContext> & RunStore<TContext>;\n\nexport interface ManagedRunWorkerOptions<TContext = StoreContext> {\n store: ManagedRunStore<TContext>;\n runtimeDriver: RunExecutionBackend;\n leaseOwner?: string;\n leaseDurationSeconds?: number;\n}\n\nexport interface ManagedRunExecutionResult {\n runId: string;\n status: RunRecordData['status'] | 'skipped';\n}\n\nconst RUN_WAITING_STATUSES = new Set<string>([\n RunStatus.WAITING_INPUT,\n RunStatus.WAITING_RUNNER,\n]);\n\ntype LoadedRunInput<TContext> = {\n run: RunRecordData;\n thread: ThreadMetadata;\n threadRef: ThreadRef;\n userMessage: UserMessageItem;\n runtimeConfig: AgentRuntimeConfig;\n context: TContext;\n};\n\n/**\n * Store-backed Managed Agent worker.\n *\n * The worker is the durable Inngest callback path: it restores Run/Thread/\n * Message state from the configured store, invokes the stateless Agent Runtime,\n * then projects runtime output back into RunStep and assistant Message facts.\n */\nexport class ManagedRunWorker<TContext = StoreContext> {\n private readonly store: ManagedRunStore<TContext>;\n private readonly runtimeDriver: RunExecutionBackend;\n private readonly leaseOwner: string;\n private readonly leaseDurationSeconds: number;\n\n public constructor(options: ManagedRunWorkerOptions<TContext>) {\n this.store = options.store;\n this.runtimeDriver = options.runtimeDriver;\n this.leaseOwner = options.leaseOwner ?? `worker-${Math.random().toString(36).slice(2)}`;\n this.leaseDurationSeconds = options.leaseDurationSeconds ?? 300;\n }\n\n public async executeRun(runId: string, context: TContext): Promise<ManagedRunExecutionResult> {\n const claimed = await this.claimRun(runId, context);\n if (!claimed) {\n return { runId, status: 'skipped' };\n }\n\n const loaded = await this.loadRunInput(runId, context);\n const { run, thread, threadRef, userMessage, runtimeConfig } = loaded;\n\n if (!this.canExecuteClaimedRun(run)) {\n return { runId, status: 'skipped' };\n }\n\n const assistantItem = await this.createAssistantMessage(thread, context);\n await this.store.addThreadItem(threadRef, assistantItem, context);\n await this.markRunStarted(run, context);\n\n let fullText = '';\n let runtimeError: string | undefined;\n\n for await (\n const event of this.runtimeDriver.start({\n runId: run.id,\n threadId: thread.id,\n prompt: run.prompt ?? '',\n conversation: await this.loadConversation(threadRef, userMessage.id, context),\n config: runtimeConfig,\n authBindingId: this.authBindingIdFromRun(run),\n context: context as StoreContext,\n })\n ) {\n const cancellation = await this.checkCancellation(run, context);\n if (cancellation) {\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n return { runId, status: cancellation };\n }\n\n if (event.type === 'text') {\n fullText += event.text;\n await this.appendRunStep(run, RunStepType.TEXT_DELTA, context, {\n message: event.text,\n data: { delta: event.text },\n });\n continue;\n }\n\n if (event.type === 'auth_required' || event.type === 'tool_call' || event.type === 'waiting_runner') {\n const terminalStatus = await this.handleRuntimeControlEvent(event, run, assistantItem, threadRef, context, fullText);\n if (terminalStatus) {\n return { runId, status: terminalStatus };\n }\n continue;\n }\n\n runtimeError = event.message;\n await this.appendRunStep(run, RunStepType.ERROR, context, {\n message: event.message,\n });\n break;\n }\n\n assistantItem.status = runtimeError ? 'incomplete' : 'completed';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n const finalStatus = runtimeError ? RunStatus.FAILED : RunStatus.COMPLETED;\n await this.finishRun(run, finalStatus, context, runtimeError);\n return { runId, status: finalStatus };\n }\n\n private async claimRun(runId: string, context: TContext): Promise<boolean> {\n const now = nowTimestamp();\n const run = this.store.claimRun\n ? await this.store.claimRun({\n runId,\n leaseOwner: this.leaseOwner,\n leaseExpiresAt: now + this.leaseDurationSeconds,\n now,\n }, context)\n : await this.claimRunWithSave(runId, context, now);\n if (!run) {\n return false;\n }\n if (run.cancelRequestedAt) {\n run.status = RunStatus.CANCELLED;\n run.completedAt = now;\n run.updatedAt = now;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n await this.store.saveRun(run, context);\n await this.appendRunStep(run, RunStepType.CANCELLED, context, {\n message: 'Run cancelled before start',\n data: { status: RunStatus.CANCELLED },\n });\n return false;\n }\n return true;\n }\n\n private async claimRunWithSave(runId: string, context: TContext, now: number): Promise<RunRecordData | undefined> {\n const run = await this.store.loadRun(runId, context);\n if (!canClaimRun(run, { leaseOwner: this.leaseOwner, now })) {\n return undefined;\n }\n\n run.leaseOwner = this.leaseOwner;\n run.leaseExpiresAt = now + this.leaseDurationSeconds;\n run.heartbeatAt = now;\n run.updatedAt = now;\n await this.store.saveRun(run, context);\n\n const claimed = await this.store.loadRun(runId, context);\n return claimed.leaseOwner === this.leaseOwner ? claimed : undefined;\n }\n\n private canExecuteClaimedRun(run: RunRecordData): boolean {\n if (run.leaseOwner !== this.leaseOwner) {\n return false;\n }\n return run.status === RunStatus.QUEUED || run.status === RunStatus.RUNNING;\n }\n\n private async checkCancellation(run: RunRecordData, context: TContext): Promise<RunRecordData['status'] | undefined> {\n const latest = await this.store.loadRun(run.id, context);\n if (!latest.cancelRequestedAt) {\n return undefined;\n }\n await this.finishRun(run, RunStatus.CANCELLED, context, 'Run cancellation requested');\n await this.appendRunStep(run, RunStepType.CANCELLED, context, {\n message: 'Run cancelled',\n data: { status: RunStatus.CANCELLED },\n });\n return RunStatus.CANCELLED;\n }\n\n public async loadExecutionInput(runId: string, context: TContext): Promise<RunExecutionInput> {\n const loaded = await this.loadRunInput(runId, context);\n return {\n runId: loaded.run.id,\n threadId: loaded.thread.id,\n prompt: loaded.run.prompt ?? '',\n conversation: await this.loadConversation(loaded.threadRef, loaded.userMessage.id, context),\n config: loaded.runtimeConfig,\n authBindingId: this.authBindingIdFromRun(loaded.run),\n context: context as StoreContext,\n };\n }\n\n private async loadRunInput(runId: string, context: TContext): Promise<LoadedRunInput<TContext>> {\n const run = await this.store.loadRun(runId, context);\n const threadRef = this.threadRefFromRun(run);\n const thread = await this.store.loadThread(threadRef, context);\n const userMessage = await this.resolveUserMessage(run, threadRef, context);\n return {\n run,\n thread,\n threadRef,\n userMessage,\n runtimeConfig: this.resolveRuntimeConfig(run, thread),\n context,\n };\n }\n\n private async resolveUserMessage(\n run: RunRecordData,\n threadRef: ThreadRef,\n context: TContext,\n ): Promise<UserMessageItem> {\n const metadataUserMessageId = run.metadata?.userMessageId;\n if (typeof metadataUserMessageId === 'string' && metadataUserMessageId.length > 0) {\n const item = await this.store.loadItem(threadRef, metadataUserMessageId, context);\n if (item.type === 'user_message') {\n return item as UserMessageItem;\n }\n throw new Error(`Run userMessageId does not point to a user message: ${metadataUserMessageId}`);\n }\n\n const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);\n const prompt = run.prompt?.trim();\n const candidates = items.data.filter((item): item is UserMessageItem => item.type === 'user_message');\n const matching = prompt\n ? candidates.find((item) => extractUserMessageText(item.content).trim() === prompt)\n : undefined;\n const fallback = matching ?? candidates[candidates.length - 1];\n if (!fallback) {\n throw new Error(`Cannot restore Run input without a user message: ${run.id}`);\n }\n return fallback;\n }\n\n private resolveRuntimeConfig(run: RunRecordData, thread: ThreadMetadata): AgentRuntimeConfig {\n const fromRun = this.asRuntimeConfig(run.metadata?.runtimeConfig);\n if (fromRun) {\n return fromRun;\n }\n\n const runtime = (thread.metadata as Record<string, unknown> | undefined)?.runtime;\n const fromThread = this.asRuntimeConfig(runtime);\n if (fromThread) {\n return fromThread;\n }\n\n if (!isWorkspaceRef(run.workspace)) {\n throw new Error('Run workspace reference is required');\n }\n return {\n workspace: run.workspace,\n runner: this.parseRunner(run.runner),\n };\n }\n\n private authBindingIdFromRun(run: RunRecordData): string | undefined {\n const authBindingId = run.metadata?.authBindingId;\n if (typeof authBindingId === 'string' && authBindingId.length > 0) {\n return authBindingId;\n }\n const authBinding = run.metadata?.authBinding;\n if (authBinding && typeof authBinding === 'object') {\n const id = (authBinding as { id?: unknown }).id;\n return typeof id === 'string' && id.length > 0 ? id : undefined;\n }\n return undefined;\n }\n\n private asRuntimeConfig(value: unknown): AgentRuntimeConfig | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n const candidate = value as Partial<AgentRuntimeConfig>;\n if (!isWorkspaceRef(candidate.workspace) || !candidate.runner) {\n return undefined;\n }\n const runnerType = candidate.runner.type;\n if (!this.isRunnerType(runnerType)) {\n return undefined;\n }\n return {\n ...candidate,\n workspace: candidate.workspace,\n runner: {\n ...candidate.runner,\n type: runnerType,\n protocol: candidate.runner.protocol === 'acp' ? 'acp' : 'pi',\n },\n } as AgentRuntimeConfig;\n }\n\n private parseRunner(runner: string): { protocol: RunnerProtocol; type: RunnerType } {\n const [protocol, type] = runner.split(':');\n return {\n protocol: protocol === 'acp' ? 'acp' : 'pi',\n type: this.isRunnerType(type) ? type : 'pi',\n };\n }\n\n private isRunnerType(value: unknown): value is RunnerType {\n return value === 'pi' || value === 'codex' || value === 'claude' || value === 'codebuddy';\n }\n\n private async handleRuntimeControlEvent(\n event: AgentRuntimeEvent,\n run: RunRecordData,\n assistantItem: AssistantMessageItem,\n threadRef: ThreadRef,\n context: TContext,\n fullText: string,\n ): Promise<RunRecordData['status'] | undefined> {\n if (event.type === 'auth_required') {\n await this.appendRunStep(run, RunStepType.AUTH_REQUIRED, context, {\n message: event.message,\n data: {\n method: event.method,\n url: event.url,\n options: event.options,\n },\n });\n return undefined;\n }\n\n if (event.type === 'tool_call') {\n await this.appendRunStep(run, RunStepType.TOOL_CALL, context, {\n message: event.name,\n data: {\n requestId: event.requestId,\n name: event.name,\n arguments: event.arguments,\n },\n });\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n await this.finishRun(run, RunStatus.WAITING_INPUT, context, `Tool call ${event.name} requires steering`);\n return RunStatus.WAITING_INPUT;\n }\n\n if (event.type === 'waiting_runner') {\n await this.appendRunStep(run, RunStepType.WAITING_RUNNER, context, {\n message: event.message,\n data: { workspace: event.workspace },\n });\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n await this.finishRun(run, RunStatus.WAITING_RUNNER, context, event.message);\n return RunStatus.WAITING_RUNNER;\n }\n\n return undefined;\n }\n\n private async markRunStarted(run: RunRecordData, context: TContext): Promise<void> {\n const now = nowTimestamp();\n run.status = RunStatus.RUNNING;\n run.startedAt = now;\n run.heartbeatAt = now;\n run.updatedAt = now;\n await this.store.saveRun(run, context);\n await this.appendRunStep(run, RunStepType.STARTED, context, {\n message: 'Run started',\n });\n }\n\n private async finishRun(\n run: RunRecordData,\n status: RunRecordData['status'],\n context: TContext,\n error?: string,\n ): Promise<void> {\n const now = nowTimestamp();\n run.status = status;\n run.completedAt = RUN_WAITING_STATUSES.has(status) ? undefined : now;\n run.heartbeatAt = now;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n run.updatedAt = now;\n run.error = error;\n await this.store.saveRun(run, context);\n await this.appendRunStep(\n run,\n this.stepTypeForStatus(status),\n context,\n {\n message: error ?? `Run ${status}`,\n data: { status },\n },\n );\n }\n\n private stepTypeForStatus(status: RunRecordData['status']): RunStepRecordData['type'] {\n if (status === RunStatus.COMPLETED) {\n return RunStepType.COMPLETED;\n }\n if (status === RunStatus.CANCELLED) {\n return RunStepType.CANCELLED;\n }\n if (status === RunStatus.WAITING_INPUT) {\n return RunStepType.WAITING_INPUT;\n }\n if (status === RunStatus.WAITING_RUNNER) {\n return RunStepType.WAITING_RUNNER;\n }\n return RunStepType.FAILED;\n }\n\n private async appendRunStep(\n run: RunRecordData,\n type: RunStepRecordData['type'],\n context: TContext,\n options: {\n message?: string;\n data?: Record<string, unknown>;\n } = {},\n ): Promise<void> {\n const createdAt = nowTimestamp();\n await this.store.appendRunStep({\n id: generateRunStepResourceId({\n key: generateId('run-step'),\n runId: run.id,\n commandKind: run.commandKind,\n surfaceId: run.surfaceId,\n createdAt,\n }),\n commandKind: run.commandKind,\n surfaceId: run.surfaceId,\n runId: run.id,\n run: this.resolveRunResource(run, context),\n type,\n message: options.message,\n data: options.data,\n createdAt,\n }, context);\n }\n\n private async createAssistantMessage(\n thread: ThreadMetadata,\n context: TContext,\n ): Promise<AssistantMessageItem> {\n return {\n id: this.store.generateItemId('assistant_message', thread, context),\n thread_id: thread.id,\n type: 'assistant_message',\n content: [{ type: 'output_text', text: '' }],\n status: 'in_progress',\n created_at: nowTimestamp(),\n };\n }\n\n private async loadConversation(\n threadRef: ThreadRef,\n currentUserMessageId: string,\n context: TContext,\n ): Promise<Array<{ role: 'user' | 'assistant'; text: string; createdAt: number }>> {\n const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);\n const conversation: Array<{ role: 'user' | 'assistant'; text: string; createdAt: number }> = [];\n\n for (const item of items.data) {\n if (item.id === currentUserMessageId) {\n break;\n }\n if (item.type === 'user_message') {\n const text = extractUserMessageText(item.content).trim();\n if (text) {\n conversation.push({ role: 'user', text, createdAt: item.created_at });\n }\n continue;\n }\n if (item.type === 'assistant_message' && item.status !== 'in_progress') {\n const text = extractAssistantMessageText(item.content).trim();\n if (text) {\n conversation.push({ role: 'assistant', text, createdAt: item.created_at });\n }\n }\n }\n\n return conversation;\n }\n\n private threadRefFromRun(run: RunRecordData): ThreadRef {\n if (/^https?:\\/\\//.test(run.thread)) {\n return { thread_id: run.thread as `http://${string}` | `https://${string}` };\n }\n return toThreadRef({\n thread_id: this.extractThreadId(run.thread),\n chat_id: run.surfaceId,\n });\n }\n\n private extractThreadId(thread: string): string {\n const dataMarker = '/.data/';\n if (/^https?:\\/\\//.test(thread)) {\n try {\n const url = new URL(thread);\n const markerIndex = url.pathname.indexOf(dataMarker);\n if (markerIndex >= 0 && url.hash) {\n return `${url.pathname.slice(markerIndex + dataMarker.length)}${url.hash}`;\n }\n return url.hash.startsWith('#') ? decodeURIComponent(url.hash.slice(1)) : thread;\n } catch {\n return thread;\n }\n }\n if (thread.includes(dataMarker)) {\n return thread.slice(thread.indexOf(dataMarker) + dataMarker.length);\n }\n const urnMarker = 'urn:xpod:thread:';\n if (thread.startsWith(urnMarker)) {\n const parts = thread.slice(urnMarker.length).split(':');\n return parts.length > 1 ? decodeURIComponent(parts[1]) : decodeURIComponent(parts[0]);\n }\n return thread;\n }\n\n private resolveRunResource(run: RunRecordData, context: TContext): string {\n const podBaseUrl = this.resolvePodBaseUrl(context);\n if (podBaseUrl) {\n return resolveDataResource(podBaseUrl, run.id);\n }\n return resolveRunUrn(run.id);\n }\n\n private resolvePodBaseUrl(context: TContext): string | undefined {\n const auth = (context as Record<string, unknown>).auth as { webId?: unknown } | undefined;\n const webId = typeof auth?.webId === 'string' ? auth.webId : undefined;\n if (!webId) {\n return undefined;\n }\n try {\n const url = new URL(webId);\n url.hash = '';\n url.search = '';\n const normalizedPath = url.pathname.replace(/\\/+$/, '');\n if (!normalizedPath.endsWith('/profile/card')) {\n return undefined;\n }\n const podPath = normalizedPath.slice(0, -'/profile/card'.length) || '/';\n url.pathname = podPath;\n return url.toString().replace(/\\/$/, '');\n } catch {\n return undefined;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ManagedRunWorker.js","sourceRoot":"","sources":["../../../src/api/runs/ManagedRunWorker.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChatKitStore, StoreContext } from '../chatkit/store';\nimport type {\n AssistantMessageItem,\n ThreadItem,\n ThreadMetadata,\n ThreadRef,\n UserMessageItem,\n} from '../chatkit/types';\nimport {\n extractAssistantMessageText,\n extractUserMessageText,\n generateId,\n nowTimestamp,\n toThreadRef,\n} from '../chatkit/types';\nimport type { AgentRuntimeConfig, AgentRuntimeEvent, RunnerProtocol, RunnerType } from './AgentRuntimeTypes';\nimport type { RunExecutionBackend, RunExecutionInput } from './RunExecutionBackend';\nimport { RunStatus, XpodRunStepType as RunStepType } from './schema';\nimport {\n canClaimRun,\n generateRunStepResourceId,\n resolveDataResource,\n resolveRunUrn,\n type RunRecordData,\n type RunStepRecordData,\n type RunStore,\n} from './store';\nimport { isWorkspaceRef } from '../workspace/types';\n\nexport type ManagedRunStore<TContext = StoreContext> = ChatKitStore<TContext> & RunStore<TContext>;\n\nexport interface ManagedRunWorkerOptions<TContext = StoreContext> {\n store: ManagedRunStore<TContext>;\n runtimeDriver: RunExecutionBackend;\n leaseOwner?: string;\n leaseDurationSeconds?: number;\n}\n\nexport interface ManagedRunExecutionResult {\n runId: string;\n status: RunRecordData['status'] | 'skipped';\n}\n\nconst RUN_WAITING_STATUSES = new Set<string>([\n RunStatus.WAITING_INPUT,\n RunStatus.WAITING_RUNNER,\n]);\n\ntype LoadedRunInput<TContext> = {\n run: RunRecordData;\n thread: ThreadMetadata;\n threadRef: ThreadRef;\n userMessage: UserMessageItem;\n runtimeConfig: AgentRuntimeConfig;\n context: TContext;\n};\n\n/**\n * Store-backed Managed Agent worker.\n *\n * The worker is the durable Inngest callback path: it restores Run/Thread/\n * Message state from the configured store, invokes the stateless Agent Runtime,\n * then projects runtime output back into RunStep and assistant Message facts.\n */\nexport class ManagedRunWorker<TContext = StoreContext> {\n private readonly store: ManagedRunStore<TContext>;\n private readonly runtimeDriver: RunExecutionBackend;\n private readonly leaseOwner: string;\n private readonly leaseDurationSeconds: number;\n\n public constructor(options: ManagedRunWorkerOptions<TContext>) {\n this.store = options.store;\n this.runtimeDriver = options.runtimeDriver;\n this.leaseOwner = options.leaseOwner ?? `worker-${Math.random().toString(36).slice(2)}`;\n this.leaseDurationSeconds = options.leaseDurationSeconds ?? 300;\n }\n\n public async executeRun(runId: string, context: TContext): Promise<ManagedRunExecutionResult> {\n const claimed = await this.claimRun(runId, context);\n if (!claimed) {\n return { runId, status: 'skipped' };\n }\n\n const loaded = await this.loadRunInput(runId, context);\n const { run, thread, threadRef, userMessage, runtimeConfig } = loaded;\n\n if (!this.canExecuteClaimedRun(run)) {\n return { runId, status: 'skipped' };\n }\n\n const assistantItem = await this.createAssistantMessage(thread, context);\n await this.store.addThreadItem(threadRef, assistantItem, context);\n await this.markRunStarted(run, context);\n\n let fullText = '';\n let runtimeError: string | undefined;\n\n for await (\n const event of this.runtimeDriver.start({\n runId: run.id,\n threadId: thread.id,\n prompt: run.prompt ?? '',\n conversation: await this.loadConversation(threadRef, userMessage.id, context),\n config: runtimeConfig,\n authBindingId: this.authBindingIdFromRun(run),\n context: context as StoreContext,\n })\n ) {\n const cancellation = await this.checkCancellation(run, context);\n if (cancellation) {\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n return { runId, status: cancellation };\n }\n\n if (event.type === 'text') {\n fullText += event.text;\n await this.appendRunStep(run, RunStepType.TEXT_DELTA, context, {\n message: event.text,\n data: { delta: event.text },\n });\n continue;\n }\n\n if (event.type === 'auth_required' || event.type === 'tool_call' || event.type === 'waiting_runner') {\n const terminalStatus = await this.handleRuntimeControlEvent(event, run, assistantItem, threadRef, context, fullText);\n if (terminalStatus) {\n return { runId, status: terminalStatus };\n }\n continue;\n }\n\n runtimeError = event.message;\n await this.appendRunStep(run, RunStepType.ERROR, context, {\n message: event.message,\n });\n break;\n }\n\n assistantItem.status = runtimeError ? 'incomplete' : 'completed';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n const finalStatus = runtimeError ? RunStatus.FAILED : RunStatus.COMPLETED;\n await this.finishRun(run, finalStatus, context, runtimeError);\n return { runId, status: finalStatus };\n }\n\n private async claimRun(runId: string, context: TContext): Promise<boolean> {\n const now = nowTimestamp();\n const run = this.store.claimRun\n ? await this.store.claimRun({\n runId,\n leaseOwner: this.leaseOwner,\n leaseExpiresAt: now + this.leaseDurationSeconds,\n now,\n }, context)\n : await this.claimRunWithSave(runId, context, now);\n if (!run) {\n return false;\n }\n if (run.cancelRequestedAt) {\n run.status = RunStatus.CANCELLED;\n run.completedAt = now;\n run.updatedAt = now;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n await this.store.saveRun(run, context);\n await this.appendRunStep(run, RunStepType.CANCELLED, context, {\n message: 'Run cancelled before start',\n data: { status: RunStatus.CANCELLED },\n });\n return false;\n }\n return true;\n }\n\n private async claimRunWithSave(runId: string, context: TContext, now: number): Promise<RunRecordData | undefined> {\n const run = await this.store.loadRun(runId, context);\n if (!canClaimRun(run, { leaseOwner: this.leaseOwner, now })) {\n return undefined;\n }\n\n run.leaseOwner = this.leaseOwner;\n run.leaseExpiresAt = now + this.leaseDurationSeconds;\n run.heartbeatAt = now;\n run.updatedAt = now;\n await this.store.saveRun(run, context);\n\n const claimed = await this.store.loadRun(runId, context);\n return claimed.leaseOwner === this.leaseOwner ? claimed : undefined;\n }\n\n private canExecuteClaimedRun(run: RunRecordData): boolean {\n if (run.leaseOwner !== this.leaseOwner) {\n return false;\n }\n return run.status === RunStatus.QUEUED || run.status === RunStatus.RUNNING;\n }\n\n private async checkCancellation(run: RunRecordData, context: TContext): Promise<RunRecordData['status'] | undefined> {\n const latest = await this.store.loadRun(run.id, context);\n if (!latest.cancelRequestedAt) {\n return undefined;\n }\n await this.finishRun(run, RunStatus.CANCELLED, context, 'Run cancellation requested');\n await this.appendRunStep(run, RunStepType.CANCELLED, context, {\n message: 'Run cancelled',\n data: { status: RunStatus.CANCELLED },\n });\n return RunStatus.CANCELLED;\n }\n\n public async loadExecutionInput(runId: string, context: TContext): Promise<RunExecutionInput> {\n const loaded = await this.loadRunInput(runId, context);\n return {\n runId: loaded.run.id,\n threadId: loaded.thread.id,\n prompt: loaded.run.prompt ?? '',\n conversation: await this.loadConversation(loaded.threadRef, loaded.userMessage.id, context),\n config: loaded.runtimeConfig,\n authBindingId: this.authBindingIdFromRun(loaded.run),\n context: context as StoreContext,\n };\n }\n\n private async loadRunInput(runId: string, context: TContext): Promise<LoadedRunInput<TContext>> {\n const run = await this.store.loadRun(runId, context);\n const threadRef = this.threadRefFromRun(run);\n const thread = await this.store.loadThread(threadRef, context);\n const userMessage = await this.resolveUserMessage(run, threadRef, context);\n return {\n run,\n thread,\n threadRef,\n userMessage,\n runtimeConfig: this.resolveRuntimeConfig(run, thread),\n context,\n };\n }\n\n private async resolveUserMessage(\n run: RunRecordData,\n threadRef: ThreadRef,\n context: TContext,\n ): Promise<UserMessageItem> {\n const metadataUserMessageId = run.metadata?.userMessageId;\n if (typeof metadataUserMessageId === 'string' && metadataUserMessageId.length > 0) {\n const item = await this.store.loadItem(threadRef, metadataUserMessageId, context);\n if (item.type === 'user_message') {\n return item as UserMessageItem;\n }\n throw new Error(`Run userMessageId does not point to a user message: ${metadataUserMessageId}`);\n }\n\n const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);\n const prompt = run.prompt?.trim();\n const candidates = items.data.filter((item): item is UserMessageItem => item.type === 'user_message');\n const matching = prompt\n ? candidates.find((item) => extractUserMessageText(item.content).trim() === prompt)\n : undefined;\n const fallback = matching ?? candidates[candidates.length - 1];\n if (!fallback) {\n throw new Error(`Cannot restore Run input without a user message: ${run.id}`);\n }\n return fallback;\n }\n\n private resolveRuntimeConfig(run: RunRecordData, thread: ThreadMetadata): AgentRuntimeConfig {\n const fromRun = this.asRuntimeConfig(run.metadata?.runtimeConfig);\n if (fromRun) {\n return fromRun;\n }\n\n const runtime = (thread.metadata as Record<string, unknown> | undefined)?.runtime;\n const fromThread = this.asRuntimeConfig(runtime);\n if (fromThread) {\n return fromThread;\n }\n\n if (!isWorkspaceRef(run.workspace)) {\n throw new Error('Run workspace reference is required');\n }\n return {\n workspace: run.workspace,\n runner: this.parseRunner(run.runner),\n };\n }\n\n private authBindingIdFromRun(run: RunRecordData): string | undefined {\n const authBindingId = run.metadata?.authBindingId;\n if (typeof authBindingId === 'string' && authBindingId.length > 0) {\n return authBindingId;\n }\n const authBinding = run.metadata?.authBinding;\n if (authBinding && typeof authBinding === 'object') {\n const id = (authBinding as { id?: unknown }).id;\n return typeof id === 'string' && id.length > 0 ? id : undefined;\n }\n return undefined;\n }\n\n private asRuntimeConfig(value: unknown): AgentRuntimeConfig | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n const candidate = value as Partial<AgentRuntimeConfig>;\n if (!isWorkspaceRef(candidate.workspace) || !candidate.runner) {\n return undefined;\n }\n const runnerType = candidate.runner.type;\n if (!this.isRunnerType(runnerType)) {\n return undefined;\n }\n return {\n ...candidate,\n workspace: candidate.workspace,\n runner: {\n ...candidate.runner,\n type: runnerType,\n protocol: candidate.runner.protocol === 'acp' ? 'acp' : 'pi',\n },\n } as AgentRuntimeConfig;\n }\n\n private parseRunner(runner: string): { protocol: RunnerProtocol; type: RunnerType } {\n const [protocol, type] = runner.split(':');\n return {\n protocol: protocol === 'acp' ? 'acp' : 'pi',\n type: this.isRunnerType(type) ? type : 'pi',\n };\n }\n\n private isRunnerType(value: unknown): value is RunnerType {\n return value === 'pi' || value === 'codex' || value === 'claude' || value === 'codebuddy';\n }\n\n private async handleRuntimeControlEvent(\n event: AgentRuntimeEvent,\n run: RunRecordData,\n assistantItem: AssistantMessageItem,\n threadRef: ThreadRef,\n context: TContext,\n fullText: string,\n ): Promise<RunRecordData['status'] | undefined> {\n if (event.type === 'auth_required') {\n await this.appendRunStep(run, RunStepType.AUTH_REQUIRED, context, {\n message: event.message,\n data: {\n method: event.method,\n url: event.url,\n options: event.options,\n },\n });\n return undefined;\n }\n\n if (event.type === 'tool_call') {\n await this.appendRunStep(run, RunStepType.TOOL_CALL, context, {\n message: event.name,\n data: {\n requestId: event.requestId,\n name: event.name,\n arguments: event.arguments,\n },\n });\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n await this.finishRun(run, RunStatus.WAITING_INPUT, context, `Tool call ${event.name} requires steering`);\n return RunStatus.WAITING_INPUT;\n }\n\n if (event.type === 'waiting_runner') {\n await this.appendRunStep(run, RunStepType.WAITING_RUNNER, context, {\n message: event.message,\n data: { workspace: event.workspace },\n });\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n await this.finishRun(run, RunStatus.WAITING_RUNNER, context, event.message);\n return RunStatus.WAITING_RUNNER;\n }\n\n return undefined;\n }\n\n private async markRunStarted(run: RunRecordData, context: TContext): Promise<void> {\n const now = nowTimestamp();\n run.status = RunStatus.RUNNING;\n run.startedAt = now;\n run.heartbeatAt = now;\n run.updatedAt = now;\n await this.store.saveRun(run, context);\n await this.appendRunStep(run, RunStepType.STARTED, context, {\n message: 'Run started',\n });\n }\n\n private async finishRun(\n run: RunRecordData,\n status: RunRecordData['status'],\n context: TContext,\n error?: string,\n ): Promise<void> {\n const now = nowTimestamp();\n run.status = status;\n run.completedAt = RUN_WAITING_STATUSES.has(status) ? undefined : now;\n run.heartbeatAt = now;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n run.updatedAt = now;\n run.error = error;\n await this.store.saveRun(run, context);\n await this.appendRunStep(\n run,\n this.stepTypeForStatus(status),\n context,\n {\n message: error ?? `Run ${status}`,\n data: { status },\n },\n );\n }\n\n private stepTypeForStatus(status: RunRecordData['status']): RunStepRecordData['type'] {\n if (status === RunStatus.COMPLETED) {\n return RunStepType.COMPLETED;\n }\n if (status === RunStatus.CANCELLED) {\n return RunStepType.CANCELLED;\n }\n if (status === RunStatus.WAITING_INPUT) {\n return RunStepType.WAITING_INPUT;\n }\n if (status === RunStatus.WAITING_RUNNER) {\n return RunStepType.WAITING_RUNNER;\n }\n return RunStepType.FAILED;\n }\n\n private async appendRunStep(\n run: RunRecordData,\n type: RunStepRecordData['type'],\n context: TContext,\n options: {\n message?: string;\n data?: Record<string, unknown>;\n } = {},\n ): Promise<void> {\n const createdAt = nowTimestamp();\n await this.store.appendRunStep({\n id: generateRunStepResourceId({\n key: generateId('run-step'),\n runId: run.id,\n createdAt,\n }),\n runId: run.id,\n run: this.resolveRunResource(run, context),\n type,\n message: options.message,\n data: options.data,\n createdAt,\n }, context);\n }\n\n private async createAssistantMessage(\n thread: ThreadMetadata,\n context: TContext,\n ): Promise<AssistantMessageItem> {\n return {\n id: this.store.generateItemId('assistant_message', thread, context),\n thread_id: thread.id,\n type: 'assistant_message',\n content: [{ type: 'output_text', text: '' }],\n status: 'in_progress',\n created_at: nowTimestamp(),\n };\n }\n\n private async loadConversation(\n threadRef: ThreadRef,\n currentUserMessageId: string,\n context: TContext,\n ): Promise<Array<{ role: 'user' | 'assistant'; text: string; createdAt: number }>> {\n const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);\n const conversation: Array<{ role: 'user' | 'assistant'; text: string; createdAt: number }> = [];\n\n for (const item of items.data) {\n if (item.id === currentUserMessageId) {\n break;\n }\n if (item.type === 'user_message') {\n const text = extractUserMessageText(item.content).trim();\n if (text) {\n conversation.push({ role: 'user', text, createdAt: item.created_at });\n }\n continue;\n }\n if (item.type === 'assistant_message' && item.status !== 'in_progress') {\n const text = extractAssistantMessageText(item.content).trim();\n if (text) {\n conversation.push({ role: 'assistant', text, createdAt: item.created_at });\n }\n }\n }\n\n return conversation;\n }\n\n private threadRefFromRun(run: RunRecordData): ThreadRef {\n if (/^https?:\\/\\//.test(run.thread)) {\n return { thread_id: run.thread as `http://${string}` | `https://${string}` };\n }\n return toThreadRef({\n thread_id: this.extractThreadId(run.thread),\n });\n }\n\n private extractThreadId(thread: string): string {\n const dataMarker = '/.data/';\n if (/^https?:\\/\\//.test(thread)) {\n try {\n const url = new URL(thread);\n const markerIndex = url.pathname.indexOf(dataMarker);\n if (markerIndex >= 0 && url.hash) {\n return `${url.pathname.slice(markerIndex + dataMarker.length)}${url.hash}`;\n }\n return url.hash.startsWith('#') ? decodeURIComponent(url.hash.slice(1)) : thread;\n } catch {\n return thread;\n }\n }\n if (thread.includes(dataMarker)) {\n return thread.slice(thread.indexOf(dataMarker) + dataMarker.length);\n }\n const urnMarker = 'urn:xpod:thread:';\n if (thread.startsWith(urnMarker)) {\n const parts = thread.slice(urnMarker.length).split(':');\n return parts.length > 1 ? decodeURIComponent(parts[1]) : decodeURIComponent(parts[0]);\n }\n return thread;\n }\n\n private resolveRunResource(run: RunRecordData, context: TContext): string {\n const podBaseUrl = this.resolvePodBaseUrl(context);\n if (podBaseUrl) {\n return resolveDataResource(podBaseUrl, run.id);\n }\n return resolveRunUrn(run.id);\n }\n\n private resolvePodBaseUrl(context: TContext): string | undefined {\n const auth = (context as Record<string, unknown>).auth as { webId?: unknown } | undefined;\n const webId = typeof auth?.webId === 'string' ? auth.webId : undefined;\n if (!webId) {\n return undefined;\n }\n try {\n const url = new URL(webId);\n url.hash = '';\n url.search = '';\n const normalizedPath = url.pathname.replace(/\\/+$/, '');\n if (!normalizedPath.endsWith('/profile/card')) {\n return undefined;\n }\n const podPath = normalizedPath.slice(0, -'/profile/card'.length) || '/';\n url.pathname = podPath;\n return url.toString().replace(/\\/$/, '');\n } catch {\n return undefined;\n }\n }\n}\n"]}
|
|
@@ -73,7 +73,7 @@ export declare class RunStateCenter<TContext = StoreContext> {
|
|
|
73
73
|
private buildContinuationPrompt;
|
|
74
74
|
private resolveRuntimeConfigForContinuation;
|
|
75
75
|
private isRunnerType;
|
|
76
|
-
private
|
|
76
|
+
private resolveThreadStorageParent;
|
|
77
77
|
private resolvePodBaseUrl;
|
|
78
78
|
private createAssistantMessage;
|
|
79
79
|
private finalizeAssistantMessage;
|
|
@@ -246,19 +246,16 @@ class RunStateCenter {
|
|
|
246
246
|
async createRun(input) {
|
|
247
247
|
const { thread, userMessage, prompt, runtimeConfig, context } = input;
|
|
248
248
|
const now = (0, types_1.nowTimestamp)();
|
|
249
|
-
const
|
|
250
|
-
const surfaceId = this.resolveSurfaceId(thread);
|
|
249
|
+
const parent = this.resolveThreadStorageParent(thread);
|
|
251
250
|
const run = {
|
|
252
251
|
id: (0, store_1.generateRunResourceId)({
|
|
253
252
|
key: (0, types_1.generateId)('run'),
|
|
254
|
-
|
|
255
|
-
|
|
253
|
+
parentKind: parent.parentKind,
|
|
254
|
+
parentKey: parent.parentKey,
|
|
256
255
|
createdAt: now,
|
|
257
256
|
}),
|
|
258
257
|
thread: this.resolveThreadResource(thread, context),
|
|
259
258
|
workspace: runtimeConfig.workspace,
|
|
260
|
-
commandKind,
|
|
261
|
-
surfaceId,
|
|
262
259
|
status: schema_1.RunStatus.QUEUED,
|
|
263
260
|
runner: `${runtimeConfig.runner.protocol ?? 'pi'}:${runtimeConfig.runner.type}`,
|
|
264
261
|
prompt,
|
|
@@ -266,7 +263,6 @@ class RunStateCenter {
|
|
|
266
263
|
threadId: thread.id,
|
|
267
264
|
userMessageId: userMessage.id,
|
|
268
265
|
runtimeConfig,
|
|
269
|
-
surfaceId,
|
|
270
266
|
},
|
|
271
267
|
createdAt: now,
|
|
272
268
|
updatedAt: now,
|
|
@@ -275,7 +271,6 @@ class RunStateCenter {
|
|
|
275
271
|
await this.appendRunStep(run, schema_1.XpodRunStepType.CREATED, context, {
|
|
276
272
|
message: 'Run created',
|
|
277
273
|
data: {
|
|
278
|
-
commandKind: run.commandKind,
|
|
279
274
|
thread: run.thread,
|
|
280
275
|
workspace: run.workspace,
|
|
281
276
|
runner: run.runner,
|
|
@@ -449,12 +444,8 @@ class RunStateCenter {
|
|
|
449
444
|
id: (0, store_1.generateRunStepResourceId)({
|
|
450
445
|
key: (0, types_1.generateId)('run-step'),
|
|
451
446
|
runId: run.id,
|
|
452
|
-
commandKind: run.commandKind,
|
|
453
|
-
surfaceId: run.surfaceId,
|
|
454
447
|
createdAt,
|
|
455
448
|
}),
|
|
456
|
-
commandKind: run.commandKind,
|
|
457
|
-
surfaceId: run.surfaceId,
|
|
458
449
|
runId: run.id,
|
|
459
450
|
run: this.resolveRunResource(run, context),
|
|
460
451
|
type,
|
|
@@ -468,16 +459,15 @@ class RunStateCenter {
|
|
|
468
459
|
if (/^https?:\/\//.test(threadId)) {
|
|
469
460
|
return threadId;
|
|
470
461
|
}
|
|
471
|
-
const
|
|
472
|
-
const surfaceId = this.resolveSurfaceId(thread);
|
|
462
|
+
const parent = this.resolveThreadStorageParent(thread);
|
|
473
463
|
const podBaseUrl = this.resolvePodBaseUrl(context);
|
|
474
464
|
if (podBaseUrl) {
|
|
475
465
|
if (threadId.includes('#') && !threadId.startsWith('#')) {
|
|
476
466
|
return (0, store_1.resolveDataResource)(podBaseUrl, threadId);
|
|
477
467
|
}
|
|
478
|
-
return `${podBaseUrl}/.data/${
|
|
468
|
+
return `${podBaseUrl}/.data/${parent.parentKind}/${parent.parentKey}/index.ttl#${threadId}`;
|
|
479
469
|
}
|
|
480
|
-
return `urn:xpod:thread:${
|
|
470
|
+
return `urn:xpod:thread:${parent.parentKind}:${encodeURIComponent(parent.parentKey)}:${encodeURIComponent(threadId)}`;
|
|
481
471
|
}
|
|
482
472
|
resolveRunResource(run, context) {
|
|
483
473
|
const podBaseUrl = this.resolvePodBaseUrl(context);
|
|
@@ -515,9 +505,6 @@ class RunStateCenter {
|
|
|
515
505
|
return undefined;
|
|
516
506
|
}
|
|
517
507
|
extractThreadIdFromRef(threadRef) {
|
|
518
|
-
if ('chat_id' in threadRef) {
|
|
519
|
-
return threadRef.thread_id;
|
|
520
|
-
}
|
|
521
508
|
return threadRef.thread_id;
|
|
522
509
|
}
|
|
523
510
|
threadCandidatesForRunLookup(threadRef, context) {
|
|
@@ -580,14 +567,12 @@ class RunStateCenter {
|
|
|
580
567
|
isRunnerType(value) {
|
|
581
568
|
return value === 'pi' || value === 'codex' || value === 'claude' || value === 'codebuddy';
|
|
582
569
|
}
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
}
|
|
590
|
-
return types_1.DEFAULT_THREAD_CHAT_ID;
|
|
570
|
+
resolveThreadStorageParent(thread) {
|
|
571
|
+
const parent = (0, types_1.getThreadParent)(thread);
|
|
572
|
+
return {
|
|
573
|
+
parentKind: parent?.kind ?? 'chat',
|
|
574
|
+
parentKey: parent?.key ?? 'default',
|
|
575
|
+
};
|
|
591
576
|
}
|
|
592
577
|
resolvePodBaseUrl(context) {
|
|
593
578
|
const auth = context.auth;
|
|
@@ -631,7 +616,6 @@ class RunStateCenter {
|
|
|
631
616
|
threadRefFromThread(thread) {
|
|
632
617
|
return (0, types_1.toThreadRef)({
|
|
633
618
|
thread_id: thread.id,
|
|
634
|
-
chat_id: typeof thread.metadata?.chat_id === 'string' ? thread.metadata.chat_id : types_1.DEFAULT_THREAD_CHAT_ID,
|
|
635
619
|
});
|
|
636
620
|
}
|
|
637
621
|
async loadConversation(threadRef, currentUserMessageId, context) {
|