@undefineds.co/xpod 0.3.48 → 0.3.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/bin/xpod.js +0 -0
  2. package/dist/api/chatkit/pod-store.d.ts +16 -17
  3. package/dist/api/chatkit/pod-store.js +299 -231
  4. package/dist/api/chatkit/pod-store.js.map +1 -1
  5. package/dist/api/chatkit/schema.d.ts +1 -1
  6. package/dist/api/chatkit/service.js +13 -11
  7. package/dist/api/chatkit/service.js.map +1 -1
  8. package/dist/api/chatkit/store.d.ts +1 -0
  9. package/dist/api/chatkit/store.js +23 -11
  10. package/dist/api/chatkit/store.js.map +1 -1
  11. package/dist/api/chatkit/types.d.ts +17 -10
  12. package/dist/api/chatkit/types.js +97 -14
  13. package/dist/api/chatkit/types.js.map +1 -1
  14. package/dist/api/container/common.js +16 -2
  15. package/dist/api/container/common.js.map +1 -1
  16. package/dist/api/container/routes.js +3 -0
  17. package/dist/api/container/routes.js.map +1 -1
  18. package/dist/api/container/types.d.ts +3 -0
  19. package/dist/api/container/types.js.map +1 -1
  20. package/dist/api/handlers/ChatKitV1Handler.js +1 -2
  21. package/dist/api/handlers/ChatKitV1Handler.js.map +1 -1
  22. package/dist/api/handlers/CoordinationHandler.d.ts +6 -0
  23. package/dist/api/handlers/CoordinationHandler.js +115 -0
  24. package/dist/api/handlers/CoordinationHandler.js.map +1 -0
  25. package/dist/api/handlers/MatrixHandler.d.ts +11 -0
  26. package/dist/api/handlers/MatrixHandler.js +120 -2
  27. package/dist/api/handlers/MatrixHandler.js.map +1 -1
  28. package/dist/api/handlers/RunHandler.js +33 -15
  29. package/dist/api/handlers/RunHandler.js.map +1 -1
  30. package/dist/api/handlers/index.d.ts +1 -0
  31. package/dist/api/handlers/index.js +1 -0
  32. package/dist/api/handlers/index.js.map +1 -1
  33. package/dist/api/index.d.ts +1 -0
  34. package/dist/api/index.js +1 -0
  35. package/dist/api/index.js.map +1 -1
  36. package/dist/api/matrix/PodMatrixStore.d.ts +25 -1
  37. package/dist/api/matrix/PodMatrixStore.js +243 -38
  38. package/dist/api/matrix/PodMatrixStore.js.map +1 -1
  39. package/dist/api/matrix/index.d.ts +1 -1
  40. package/dist/api/matrix/index.js.map +1 -1
  41. package/dist/api/matrix/types.d.ts +23 -2
  42. package/dist/api/matrix/types.js.map +1 -1
  43. package/dist/api/protocol-metadata.d.ts +4 -0
  44. package/dist/api/protocol-metadata.js +54 -0
  45. package/dist/api/protocol-metadata.js.map +1 -0
  46. package/dist/api/reconciler/ClientReconcilerCoordinator.d.ts +42 -0
  47. package/dist/api/reconciler/ClientReconcilerCoordinator.js +250 -0
  48. package/dist/api/reconciler/ClientReconcilerCoordinator.js.map +1 -0
  49. package/dist/api/reconciler/ClientReconcilerCoordinator.jsonld +186 -0
  50. package/dist/api/reconciler/ServerGroupReconcilerService.d.ts +39 -0
  51. package/dist/api/reconciler/ServerGroupReconcilerService.js +91 -0
  52. package/dist/api/reconciler/ServerGroupReconcilerService.js.map +1 -0
  53. package/dist/api/reconciler/ServerGroupReconcilerService.jsonld +146 -0
  54. package/dist/api/reconciler/WakeAgentQueue.d.ts +23 -0
  55. package/dist/api/reconciler/WakeAgentQueue.js +123 -0
  56. package/dist/api/reconciler/WakeAgentQueue.js.map +1 -0
  57. package/dist/api/reconciler/WakeAgentQueue.jsonld +91 -0
  58. package/dist/api/reconciler/coordination.d.ts +61 -0
  59. package/dist/api/reconciler/coordination.js +109 -0
  60. package/dist/api/reconciler/coordination.js.map +1 -0
  61. package/dist/api/reconciler/coordination.jsonld +186 -0
  62. package/dist/api/reconciler/index.d.ts +4 -0
  63. package/dist/api/reconciler/index.js +21 -0
  64. package/dist/api/reconciler/index.js.map +1 -0
  65. package/dist/api/runs/ManagedRunWorker.js +0 -5
  66. package/dist/api/runs/ManagedRunWorker.js.map +1 -1
  67. package/dist/api/runs/RunStateCenter.d.ts +1 -1
  68. package/dist/api/runs/RunStateCenter.js +12 -28
  69. package/dist/api/runs/RunStateCenter.js.map +1 -1
  70. package/dist/api/runs/store.d.ts +12 -15
  71. package/dist/api/runs/store.js +24 -15
  72. package/dist/api/runs/store.js.map +1 -1
  73. package/dist/api/tasks/TaskMaterializer.d.ts +1 -0
  74. package/dist/api/tasks/TaskMaterializer.js +10 -13
  75. package/dist/api/tasks/TaskMaterializer.js.map +1 -1
  76. package/dist/api/tasks/TaskService.d.ts +0 -2
  77. package/dist/api/tasks/TaskService.js +6 -16
  78. package/dist/api/tasks/TaskService.js.map +1 -1
  79. package/dist/api/tasks/store.d.ts +0 -2
  80. package/dist/api/tasks/store.js.map +1 -1
  81. package/dist/cli/commands/auth.d.ts +1 -1
  82. package/dist/cli/commands/auth.js +4 -5
  83. package/dist/cli/commands/auth.js.map +1 -1
  84. package/dist/cli/commands/backup.js +1 -1
  85. package/dist/cli/commands/backup.js.map +1 -1
  86. package/dist/cli/commands/login.js +1 -1
  87. package/dist/cli/commands/login.js.map +1 -1
  88. package/dist/cli/commands/pod.js +1 -1
  89. package/dist/cli/commands/pod.js.map +1 -1
  90. package/dist/cli/lib/auth-helper.d.ts +5 -3
  91. package/dist/cli/lib/auth-helper.js +5 -3
  92. package/dist/cli/lib/auth-helper.js.map +1 -1
  93. package/dist/cli/lib/credentials-store.d.ts +22 -4
  94. package/dist/cli/lib/credentials-store.js +68 -51
  95. package/dist/cli/lib/credentials-store.js.map +1 -1
  96. package/dist/components/components.jsonld +5 -1
  97. package/dist/components/context.jsonld +103 -0
  98. package/dist/index.d.ts +1 -0
  99. package/dist/index.js +15 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/provision/LocalPodProvisioningService.d.ts +1 -0
  102. package/dist/provision/LocalPodProvisioningService.js +9 -0
  103. package/dist/provision/LocalPodProvisioningService.js.map +1 -1
  104. package/dist/provision/LocalPodProvisioningService.jsonld +4 -0
  105. package/package.json +2 -2
@@ -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,4 @@
1
+ export * from './coordination';
2
+ export * from './ClientReconcilerCoordinator';
3
+ export * from './WakeAgentQueue';
4
+ export * from './ServerGroupReconcilerService';
@@ -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 resolveSurfaceId;
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 commandKind = thread.metadata?.commandKind === 'task' ? 'task' : 'chat';
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
- commandKind,
255
- surfaceId,
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 commandKind = thread.metadata?.commandKind === 'task' ? 'task' : 'chat';
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/${commandKind}/${surfaceId}/index.ttl#${threadId}`;
468
+ return `${podBaseUrl}/.data/${parent.parentKind}/${parent.parentKey}/index.ttl#${threadId}`;
479
469
  }
480
- return `urn:xpod:thread:${commandKind}:${encodeURIComponent(surfaceId)}:${encodeURIComponent(threadId)}`;
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
- resolveSurfaceId(thread) {
584
- if (typeof thread.metadata?.surface_id === 'string') {
585
- return thread.metadata.surface_id;
586
- }
587
- if (typeof thread.metadata?.chat_id === 'string') {
588
- return thread.metadata.chat_id;
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) {