@parlor/chat 0.0.0-stage → 0.1.0

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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -2
  3. package/dist/events.d.ts +4 -0
  4. package/dist/events.d.ts.map +1 -0
  5. package/dist/events.js +12 -0
  6. package/dist/events.js.map +1 -0
  7. package/dist/id-schemas.d.ts +5 -0
  8. package/dist/id-schemas.d.ts.map +1 -0
  9. package/dist/id-schemas.js +11 -0
  10. package/dist/id-schemas.js.map +1 -0
  11. package/dist/index.d.ts +9 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +7 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/items.d.ts +295 -0
  16. package/dist/items.d.ts.map +1 -0
  17. package/dist/items.js +113 -0
  18. package/dist/items.js.map +1 -0
  19. package/dist/limits.d.ts +4 -0
  20. package/dist/limits.d.ts.map +1 -0
  21. package/dist/limits.js +4 -0
  22. package/dist/limits.js.map +1 -0
  23. package/dist/model.d.ts +143 -0
  24. package/dist/model.d.ts.map +1 -0
  25. package/dist/model.js +2 -0
  26. package/dist/model.js.map +1 -0
  27. package/dist/open-turns.d.ts +19 -0
  28. package/dist/open-turns.d.ts.map +1 -0
  29. package/dist/open-turns.js +31 -0
  30. package/dist/open-turns.js.map +1 -0
  31. package/dist/protocol.d.ts +67 -0
  32. package/dist/protocol.d.ts.map +1 -0
  33. package/dist/protocol.js +78 -0
  34. package/dist/protocol.js.map +1 -0
  35. package/dist/server/actions.d.ts +561 -0
  36. package/dist/server/actions.d.ts.map +1 -0
  37. package/dist/server/actions.js +422 -0
  38. package/dist/server/actions.js.map +1 -0
  39. package/dist/server/context.d.ts +24 -0
  40. package/dist/server/context.d.ts.map +1 -0
  41. package/dist/server/context.js +77 -0
  42. package/dist/server/context.js.map +1 -0
  43. package/dist/server/index.d.ts +35 -0
  44. package/dist/server/index.d.ts.map +1 -0
  45. package/dist/server/index.js +129 -0
  46. package/dist/server/index.js.map +1 -0
  47. package/dist/server/live.d.ts +24 -0
  48. package/dist/server/live.d.ts.map +1 -0
  49. package/dist/server/live.js +130 -0
  50. package/dist/server/live.js.map +1 -0
  51. package/dist/server/migrations.d.ts +3 -0
  52. package/dist/server/migrations.d.ts.map +1 -0
  53. package/dist/server/migrations.js +96 -0
  54. package/dist/server/migrations.js.map +1 -0
  55. package/dist/server/party.d.ts +24 -0
  56. package/dist/server/party.d.ts.map +1 -0
  57. package/dist/server/party.js +38 -0
  58. package/dist/server/party.js.map +1 -0
  59. package/dist/server/routes.d.ts +17 -0
  60. package/dist/server/routes.d.ts.map +1 -0
  61. package/dist/server/routes.js +105 -0
  62. package/dist/server/routes.js.map +1 -0
  63. package/dist/server/rows.d.ts +49 -0
  64. package/dist/server/rows.d.ts.map +1 -0
  65. package/dist/server/rows.js +136 -0
  66. package/dist/server/rows.js.map +1 -0
  67. package/dist/server/store.d.ts +130 -0
  68. package/dist/server/store.d.ts.map +1 -0
  69. package/dist/server/store.js +539 -0
  70. package/dist/server/store.js.map +1 -0
  71. package/dist/tags.d.ts +7 -0
  72. package/dist/tags.d.ts.map +1 -0
  73. package/dist/tags.js +7 -0
  74. package/dist/tags.js.map +1 -0
  75. package/dist/testing/index.d.ts +46 -0
  76. package/dist/testing/index.d.ts.map +1 -0
  77. package/dist/testing/index.js +96 -0
  78. package/dist/testing/index.js.map +1 -0
  79. package/dist/view.d.ts +87 -0
  80. package/dist/view.d.ts.map +1 -0
  81. package/dist/view.js +236 -0
  82. package/dist/view.js.map +1 -0
  83. package/package.json +47 -3
@@ -0,0 +1,561 @@
1
+ import { type ActionContext, type HostId, type ThreadId } from "@parlor/core";
2
+ import { type ActionsOf } from "@parlor/core/registry";
3
+ import { type AuthProvider, HOST_GRANTS_TAG } from "@parlor/server";
4
+ import { z } from "zod";
5
+ import { idSchema } from "../id-schemas.js";
6
+ import { type LoggedItem } from "../items.js";
7
+ import type { ChatOwner, ChatSnapshot, ThreadHistory, ThreadList, ClaimedTurn, HostSummary, TurnSignals } from "../model.js";
8
+ import { type HostWelcome } from "../protocol.js";
9
+ import { CHAT_ACTIVITY_TAG, CHAT_TAG, HOSTS_TAG } from "../tags.js";
10
+ import type { LiveRelay } from "./live.js";
11
+ import { type ChatDb, type ChatStore } from "./store.js";
12
+ export { CHAT_ACTIVITY_TAG, CHAT_TAG, HOSTS_TAG, HOST_GRANTS_TAG };
13
+ export interface Written<T> {
14
+ readonly result: T;
15
+ readonly threadId: ThreadId | undefined;
16
+ }
17
+ export interface ChatActionDeps {
18
+ readonly enforcing: boolean;
19
+ /**
20
+ * Runs `work` in one transaction with the thread's sync event. Actions that call the auth
21
+ * provider do so outside it, because a provider may read through another connection
22
+ * (PGlite has one, and the transaction holds it).
23
+ */
24
+ /** Runs `work` in one transaction and wakes only `owner`'s tabs and computers. */
25
+ readonly transact: <T>(owner: ChatOwner, work: (tx: ChatDb) => Promise<Written<T>>) => Promise<T>;
26
+ /** Commits the lapsed leases and liveness of `owner`, with the sync events they owe. */
27
+ readonly reconcile: (owner: ChatOwner) => Promise<void>;
28
+ /** Drops the owner's computer rows whose grant is gone; best effort, never fails a read. */
29
+ readonly pruneHosts: (owner: ChatOwner, hostIds: readonly HostId[]) => Promise<void>;
30
+ readonly auth: AuthProvider;
31
+ readonly store: ChatStore;
32
+ readonly relay: LiveRelay;
33
+ readonly leaseMs: number;
34
+ readonly heartbeatMs: number;
35
+ readonly maxQueued: number;
36
+ readonly instructions: string | undefined;
37
+ readonly appName: string;
38
+ readonly appOrigin: (ctx: ActionContext) => string;
39
+ }
40
+ export declare function userChatActions(deps: ChatActionDeps): {
41
+ open: import("@parlor/core").ActionDefinition<z.ZodObject<{
42
+ threadId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>>;
43
+ limit: z.ZodDefault<z.ZodNumber>;
44
+ }, z.core.$strip>, ChatSnapshot>;
45
+ items: import("@parlor/core").ActionDefinition<z.ZodObject<{
46
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
47
+ afterSeq: z.ZodNumber;
48
+ }, z.core.$strip>, LoggedItem[]>;
49
+ history: import("@parlor/core").ActionDefinition<z.ZodObject<{
50
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
51
+ beforeSeq: z.ZodNumber;
52
+ limit: z.ZodDefault<z.ZodNumber>;
53
+ }, z.core.$strip>, ThreadHistory>;
54
+ threadsBefore: import("@parlor/core").ActionDefinition<z.ZodObject<{
55
+ before: z.ZodObject<{
56
+ updatedAt: z.ZodNumber;
57
+ id: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
58
+ }, z.core.$strip>;
59
+ limit: z.ZodDefault<z.ZodNumber>;
60
+ }, z.core.$strip>, ThreadList>;
61
+ hosts: import("@parlor/core").ActionDefinition<z.ZodObject<{}, z.core.$strip>, HostSummary[]>;
62
+ send: import("@parlor/core").ActionDefinition<z.ZodObject<{
63
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
64
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
65
+ itemId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
66
+ clientId: z.ZodString;
67
+ prompt: z.ZodObject<{
68
+ text: z.ZodString;
69
+ agent: z.ZodObject<{
70
+ hostId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"host">, string>>;
71
+ agentId: z.ZodString;
72
+ }, z.core.$strip>;
73
+ signed: z.ZodOptional<z.ZodObject<{
74
+ deviceId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"device">, string>>;
75
+ at: z.ZodNumber;
76
+ signature: z.ZodObject<{
77
+ keyId: z.ZodString;
78
+ presence: z.ZodEnum<{
79
+ none: "none";
80
+ user: "user";
81
+ }>;
82
+ format: z.ZodEnum<{
83
+ "es256-raw": "es256-raw";
84
+ webauthn: "webauthn";
85
+ }>;
86
+ signature: z.ZodString;
87
+ authenticatorData: z.ZodOptional<z.ZodString>;
88
+ clientDataJSON: z.ZodOptional<z.ZodString>;
89
+ }, z.core.$strip>;
90
+ pairing: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$strip>>;
92
+ }, z.core.$strip>;
93
+ }, z.core.$strip>, {
94
+ readonly id: string;
95
+ readonly turnId: string;
96
+ }>;
97
+ answer: import("@parlor/core").ActionDefinition<z.ZodObject<{
98
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
99
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
100
+ itemId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
101
+ answer: z.ZodObject<{
102
+ askId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
103
+ choice: z.ZodString;
104
+ values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
105
+ signed: z.ZodOptional<z.ZodObject<{
106
+ deviceId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"device">, string>>;
107
+ at: z.ZodNumber;
108
+ signature: z.ZodObject<{
109
+ keyId: z.ZodString;
110
+ presence: z.ZodEnum<{
111
+ none: "none";
112
+ user: "user";
113
+ }>;
114
+ format: z.ZodEnum<{
115
+ "es256-raw": "es256-raw";
116
+ webauthn: "webauthn";
117
+ }>;
118
+ signature: z.ZodString;
119
+ authenticatorData: z.ZodOptional<z.ZodString>;
120
+ clientDataJSON: z.ZodOptional<z.ZodString>;
121
+ }, z.core.$strip>;
122
+ pairing: z.ZodOptional<z.ZodString>;
123
+ }, z.core.$strip>>;
124
+ }, z.core.$strip>;
125
+ }, z.core.$strip>, {
126
+ readonly id: string;
127
+ }>;
128
+ cancel: import("@parlor/core").ActionDefinition<z.ZodObject<{
129
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
130
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
131
+ itemId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
132
+ }, z.core.$strip>, {
133
+ readonly id: string;
134
+ }>;
135
+ userActive: import("@parlor/core").ActionDefinition<z.ZodObject<{}, z.core.$strip>, {
136
+ readonly ok: true;
137
+ }>;
138
+ };
139
+ /** What the user's computers call; `hostHello` first on every link. */
140
+ export declare function hostChatActions(deps: ChatActionDeps): {
141
+ hostHello: import("@parlor/core").ActionDefinition<z.ZodObject<{
142
+ protocols: z.ZodObject<{
143
+ min: z.ZodNumber;
144
+ max: z.ZodNumber;
145
+ }, z.core.$strip>;
146
+ hostVersion: z.ZodString;
147
+ name: z.ZodString;
148
+ platform: z.ZodString;
149
+ agents: z.ZodArray<z.ZodObject<{
150
+ id: z.ZodString;
151
+ name: z.ZodString;
152
+ version: z.ZodOptional<z.ZodString>;
153
+ ready: z.ZodBoolean;
154
+ problem: z.ZodOptional<z.ZodString>;
155
+ }, z.core.$strip>>;
156
+ devices: z.ZodOptional<z.ZodArray<z.ZodString>>;
157
+ presenceDue: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
158
+ }, z.core.$strip>, HostWelcome & {
159
+ readonly id: string;
160
+ }>;
161
+ hostReport: import("@parlor/core").ActionDefinition<z.ZodObject<{
162
+ online: z.ZodBoolean;
163
+ agents: z.ZodArray<z.ZodObject<{
164
+ id: z.ZodString;
165
+ name: z.ZodString;
166
+ version: z.ZodOptional<z.ZodString>;
167
+ ready: z.ZodBoolean;
168
+ problem: z.ZodOptional<z.ZodString>;
169
+ }, z.core.$strip>>;
170
+ devices: z.ZodOptional<z.ZodArray<z.ZodString>>;
171
+ presenceDue: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
172
+ }, z.core.$strip>, {
173
+ readonly id: string;
174
+ readonly onlineUntil: number;
175
+ }>;
176
+ hostClaim: import("@parlor/core").ActionDefinition<z.ZodObject<{}, z.core.$strip>, ClaimedTurn>;
177
+ hostSignals: import("@parlor/core").ActionDefinition<z.ZodObject<{
178
+ turns: z.ZodArray<z.ZodObject<{
179
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
180
+ afterSeq: z.ZodNumber;
181
+ }, z.core.$strip>>;
182
+ }, z.core.$strip>, TurnSignals[]>;
183
+ hostAppend: import("@parlor/core").ActionDefinition<z.ZodObject<{
184
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
185
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
186
+ id: ReturnType<typeof idSchema<"item">>;
187
+ kind: z.ZodLiteral<"reply">;
188
+ body: z.ZodObject<{
189
+ text: z.ZodString;
190
+ interrupted: z.ZodOptional<z.ZodLiteral<true>>;
191
+ }, z.core.$strip>;
192
+ }, z.core.$strip>, z.ZodObject<{
193
+ id: ReturnType<typeof idSchema<"item">>;
194
+ kind: z.ZodLiteral<"reasoning">;
195
+ body: z.ZodObject<{
196
+ text: z.ZodString;
197
+ }, z.core.$strip>;
198
+ }, z.core.$strip>, z.ZodObject<{
199
+ id: ReturnType<typeof idSchema<"item">>;
200
+ kind: z.ZodLiteral<"tool">;
201
+ body: z.ZodObject<{
202
+ title: z.ZodString;
203
+ tool: z.ZodObject<{
204
+ kind: z.ZodEnum<{
205
+ app: "app";
206
+ local: "local";
207
+ }>;
208
+ name: z.ZodString;
209
+ }, z.core.$strip>;
210
+ status: z.ZodEnum<{
211
+ cancelled: "cancelled";
212
+ done: "done";
213
+ failed: "failed";
214
+ }>;
215
+ detail: z.ZodOptional<z.ZodString>;
216
+ }, z.core.$strip>;
217
+ }, z.core.$strip>, z.ZodObject<{
218
+ id: ReturnType<typeof idSchema<"item">>;
219
+ kind: z.ZodLiteral<"plan">;
220
+ body: z.ZodObject<{
221
+ entries: z.ZodArray<z.ZodObject<{
222
+ content: z.ZodString;
223
+ status: z.ZodEnum<{
224
+ completed: "completed";
225
+ in_progress: "in_progress";
226
+ pending: "pending";
227
+ }>;
228
+ }, z.core.$strip>>;
229
+ }, z.core.$strip>;
230
+ }, z.core.$strip>, z.ZodObject<{
231
+ id: ReturnType<typeof idSchema<"item">>;
232
+ kind: z.ZodLiteral<"ask">;
233
+ body: z.ZodObject<{
234
+ question: z.ZodString;
235
+ choices: z.ZodArray<z.ZodObject<{
236
+ id: z.ZodString;
237
+ label: z.ZodString;
238
+ effect: z.ZodEnum<{
239
+ allow_always: "allow_always";
240
+ allow_once: "allow_once";
241
+ reject_always: "reject_always";
242
+ reject_once: "reject_once";
243
+ }>;
244
+ }, z.core.$strip>>;
245
+ form: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
246
+ approval: z.ZodOptional<z.ZodEnum<{
247
+ computer: "computer";
248
+ presence: "presence";
249
+ }>>;
250
+ }, z.core.$strip>;
251
+ }, z.core.$strip>, z.ZodObject<{
252
+ id: ReturnType<typeof idSchema<"item">>;
253
+ kind: z.ZodLiteral<"event">;
254
+ body: z.ZodObject<{
255
+ event: z.ZodEnum<{
256
+ agent_exited: "agent_exited";
257
+ agent_started: "agent_started";
258
+ agent_switched: "agent_switched";
259
+ answer_rejected: "answer_rejected";
260
+ answered_on_computer: "answered_on_computer";
261
+ device_pending: "device_pending";
262
+ device_rejected: "device_rejected";
263
+ host_lost: "host_lost";
264
+ turn_failed: "turn_failed";
265
+ }>;
266
+ detail: z.ZodOptional<z.ZodString>;
267
+ itemId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>>;
268
+ choice: z.ZodOptional<z.ZodString>;
269
+ }, z.core.$strip>;
270
+ }, z.core.$strip>], "kind">>;
271
+ }, z.core.$strip>, {
272
+ readonly id: string;
273
+ readonly leaseUntil: number;
274
+ readonly token: ClaimedTurn["token"];
275
+ }>;
276
+ hostFinish: import("@parlor/core").ActionDefinition<z.ZodObject<{
277
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
278
+ outcome: z.ZodDiscriminatedUnion<[z.ZodObject<{
279
+ state: z.ZodLiteral<"done">;
280
+ stopReason: z.ZodString;
281
+ }, z.core.$strip>, z.ZodObject<{
282
+ state: z.ZodLiteral<"cancelled">;
283
+ }, z.core.$strip>, z.ZodObject<{
284
+ state: z.ZodLiteral<"failed">;
285
+ reason: z.ZodEnum<{
286
+ agent_exited: "agent_exited";
287
+ agent_unavailable: "agent_unavailable";
288
+ device_rejected: "device_rejected";
289
+ host_lost: "host_lost";
290
+ prompt_expired: "prompt_expired";
291
+ signature_invalid: "signature_invalid";
292
+ }>;
293
+ }, z.core.$strip>], "state">;
294
+ }, z.core.$strip>, {
295
+ readonly id: string;
296
+ }>;
297
+ };
298
+ /**
299
+ * The chat's actions at `/_parlor/chat/actions/<name>`: plugin actions, so never on MCP
300
+ * and never callable by an agent. Writes return the thread or host id as `id`.
301
+ */
302
+ export declare function chatActions(deps: ChatActionDeps): import("@parlor/core/registry").ActionRegistry<{
303
+ open: import("@parlor/core").ActionDefinition<z.ZodObject<{
304
+ threadId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>>;
305
+ limit: z.ZodDefault<z.ZodNumber>;
306
+ }, z.core.$strip>, ChatSnapshot>;
307
+ items: import("@parlor/core").ActionDefinition<z.ZodObject<{
308
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
309
+ afterSeq: z.ZodNumber;
310
+ }, z.core.$strip>, LoggedItem[]>;
311
+ history: import("@parlor/core").ActionDefinition<z.ZodObject<{
312
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
313
+ beforeSeq: z.ZodNumber;
314
+ limit: z.ZodDefault<z.ZodNumber>;
315
+ }, z.core.$strip>, ThreadHistory>;
316
+ threadsBefore: import("@parlor/core").ActionDefinition<z.ZodObject<{
317
+ before: z.ZodObject<{
318
+ updatedAt: z.ZodNumber;
319
+ id: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
320
+ }, z.core.$strip>;
321
+ limit: z.ZodDefault<z.ZodNumber>;
322
+ }, z.core.$strip>, ThreadList>;
323
+ hosts: import("@parlor/core").ActionDefinition<z.ZodObject<{}, z.core.$strip>, HostSummary[]>;
324
+ send: import("@parlor/core").ActionDefinition<z.ZodObject<{
325
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
326
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
327
+ itemId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
328
+ clientId: z.ZodString;
329
+ prompt: z.ZodObject<{
330
+ text: z.ZodString;
331
+ agent: z.ZodObject<{
332
+ hostId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"host">, string>>;
333
+ agentId: z.ZodString;
334
+ }, z.core.$strip>;
335
+ signed: z.ZodOptional<z.ZodObject<{
336
+ deviceId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"device">, string>>;
337
+ at: z.ZodNumber;
338
+ signature: z.ZodObject<{
339
+ keyId: z.ZodString;
340
+ presence: z.ZodEnum<{
341
+ none: "none";
342
+ user: "user";
343
+ }>;
344
+ format: z.ZodEnum<{
345
+ "es256-raw": "es256-raw";
346
+ webauthn: "webauthn";
347
+ }>;
348
+ signature: z.ZodString;
349
+ authenticatorData: z.ZodOptional<z.ZodString>;
350
+ clientDataJSON: z.ZodOptional<z.ZodString>;
351
+ }, z.core.$strip>;
352
+ pairing: z.ZodOptional<z.ZodString>;
353
+ }, z.core.$strip>>;
354
+ }, z.core.$strip>;
355
+ }, z.core.$strip>, {
356
+ readonly id: string;
357
+ readonly turnId: string;
358
+ }>;
359
+ answer: import("@parlor/core").ActionDefinition<z.ZodObject<{
360
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
361
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
362
+ itemId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
363
+ answer: z.ZodObject<{
364
+ askId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
365
+ choice: z.ZodString;
366
+ values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
367
+ signed: z.ZodOptional<z.ZodObject<{
368
+ deviceId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"device">, string>>;
369
+ at: z.ZodNumber;
370
+ signature: z.ZodObject<{
371
+ keyId: z.ZodString;
372
+ presence: z.ZodEnum<{
373
+ none: "none";
374
+ user: "user";
375
+ }>;
376
+ format: z.ZodEnum<{
377
+ "es256-raw": "es256-raw";
378
+ webauthn: "webauthn";
379
+ }>;
380
+ signature: z.ZodString;
381
+ authenticatorData: z.ZodOptional<z.ZodString>;
382
+ clientDataJSON: z.ZodOptional<z.ZodString>;
383
+ }, z.core.$strip>;
384
+ pairing: z.ZodOptional<z.ZodString>;
385
+ }, z.core.$strip>>;
386
+ }, z.core.$strip>;
387
+ }, z.core.$strip>, {
388
+ readonly id: string;
389
+ }>;
390
+ cancel: import("@parlor/core").ActionDefinition<z.ZodObject<{
391
+ threadId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"thread">, string>>;
392
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
393
+ itemId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>;
394
+ }, z.core.$strip>, {
395
+ readonly id: string;
396
+ }>;
397
+ userActive: import("@parlor/core").ActionDefinition<z.ZodObject<{}, z.core.$strip>, {
398
+ readonly ok: true;
399
+ }>;
400
+ hostHello: import("@parlor/core").ActionDefinition<z.ZodObject<{
401
+ protocols: z.ZodObject<{
402
+ min: z.ZodNumber;
403
+ max: z.ZodNumber;
404
+ }, z.core.$strip>;
405
+ hostVersion: z.ZodString;
406
+ name: z.ZodString;
407
+ platform: z.ZodString;
408
+ agents: z.ZodArray<z.ZodObject<{
409
+ id: z.ZodString;
410
+ name: z.ZodString;
411
+ version: z.ZodOptional<z.ZodString>;
412
+ ready: z.ZodBoolean;
413
+ problem: z.ZodOptional<z.ZodString>;
414
+ }, z.core.$strip>>;
415
+ devices: z.ZodOptional<z.ZodArray<z.ZodString>>;
416
+ presenceDue: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
417
+ }, z.core.$strip>, HostWelcome & {
418
+ readonly id: string;
419
+ }>;
420
+ hostReport: import("@parlor/core").ActionDefinition<z.ZodObject<{
421
+ online: z.ZodBoolean;
422
+ agents: z.ZodArray<z.ZodObject<{
423
+ id: z.ZodString;
424
+ name: z.ZodString;
425
+ version: z.ZodOptional<z.ZodString>;
426
+ ready: z.ZodBoolean;
427
+ problem: z.ZodOptional<z.ZodString>;
428
+ }, z.core.$strip>>;
429
+ devices: z.ZodOptional<z.ZodArray<z.ZodString>>;
430
+ presenceDue: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
431
+ }, z.core.$strip>, {
432
+ readonly id: string;
433
+ readonly onlineUntil: number;
434
+ }>;
435
+ hostClaim: import("@parlor/core").ActionDefinition<z.ZodObject<{}, z.core.$strip>, ClaimedTurn>;
436
+ hostSignals: import("@parlor/core").ActionDefinition<z.ZodObject<{
437
+ turns: z.ZodArray<z.ZodObject<{
438
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
439
+ afterSeq: z.ZodNumber;
440
+ }, z.core.$strip>>;
441
+ }, z.core.$strip>, TurnSignals[]>;
442
+ hostAppend: import("@parlor/core").ActionDefinition<z.ZodObject<{
443
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
444
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
445
+ id: ReturnType<typeof idSchema<"item">>;
446
+ kind: z.ZodLiteral<"reply">;
447
+ body: z.ZodObject<{
448
+ text: z.ZodString;
449
+ interrupted: z.ZodOptional<z.ZodLiteral<true>>;
450
+ }, z.core.$strip>;
451
+ }, z.core.$strip>, z.ZodObject<{
452
+ id: ReturnType<typeof idSchema<"item">>;
453
+ kind: z.ZodLiteral<"reasoning">;
454
+ body: z.ZodObject<{
455
+ text: z.ZodString;
456
+ }, z.core.$strip>;
457
+ }, z.core.$strip>, z.ZodObject<{
458
+ id: ReturnType<typeof idSchema<"item">>;
459
+ kind: z.ZodLiteral<"tool">;
460
+ body: z.ZodObject<{
461
+ title: z.ZodString;
462
+ tool: z.ZodObject<{
463
+ kind: z.ZodEnum<{
464
+ app: "app";
465
+ local: "local";
466
+ }>;
467
+ name: z.ZodString;
468
+ }, z.core.$strip>;
469
+ status: z.ZodEnum<{
470
+ cancelled: "cancelled";
471
+ done: "done";
472
+ failed: "failed";
473
+ }>;
474
+ detail: z.ZodOptional<z.ZodString>;
475
+ }, z.core.$strip>;
476
+ }, z.core.$strip>, z.ZodObject<{
477
+ id: ReturnType<typeof idSchema<"item">>;
478
+ kind: z.ZodLiteral<"plan">;
479
+ body: z.ZodObject<{
480
+ entries: z.ZodArray<z.ZodObject<{
481
+ content: z.ZodString;
482
+ status: z.ZodEnum<{
483
+ completed: "completed";
484
+ in_progress: "in_progress";
485
+ pending: "pending";
486
+ }>;
487
+ }, z.core.$strip>>;
488
+ }, z.core.$strip>;
489
+ }, z.core.$strip>, z.ZodObject<{
490
+ id: ReturnType<typeof idSchema<"item">>;
491
+ kind: z.ZodLiteral<"ask">;
492
+ body: z.ZodObject<{
493
+ question: z.ZodString;
494
+ choices: z.ZodArray<z.ZodObject<{
495
+ id: z.ZodString;
496
+ label: z.ZodString;
497
+ effect: z.ZodEnum<{
498
+ allow_always: "allow_always";
499
+ allow_once: "allow_once";
500
+ reject_always: "reject_always";
501
+ reject_once: "reject_once";
502
+ }>;
503
+ }, z.core.$strip>>;
504
+ form: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
505
+ approval: z.ZodOptional<z.ZodEnum<{
506
+ computer: "computer";
507
+ presence: "presence";
508
+ }>>;
509
+ }, z.core.$strip>;
510
+ }, z.core.$strip>, z.ZodObject<{
511
+ id: ReturnType<typeof idSchema<"item">>;
512
+ kind: z.ZodLiteral<"event">;
513
+ body: z.ZodObject<{
514
+ event: z.ZodEnum<{
515
+ agent_exited: "agent_exited";
516
+ agent_started: "agent_started";
517
+ agent_switched: "agent_switched";
518
+ answer_rejected: "answer_rejected";
519
+ answered_on_computer: "answered_on_computer";
520
+ device_pending: "device_pending";
521
+ device_rejected: "device_rejected";
522
+ host_lost: "host_lost";
523
+ turn_failed: "turn_failed";
524
+ }>;
525
+ detail: z.ZodOptional<z.ZodString>;
526
+ itemId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"item">, string>>>;
527
+ choice: z.ZodOptional<z.ZodString>;
528
+ }, z.core.$strip>;
529
+ }, z.core.$strip>], "kind">>;
530
+ }, z.core.$strip>, {
531
+ readonly id: string;
532
+ readonly leaseUntil: number;
533
+ readonly token: ClaimedTurn["token"];
534
+ }>;
535
+ hostFinish: import("@parlor/core").ActionDefinition<z.ZodObject<{
536
+ turnId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@parlor/core").Id<"turn">, string>>;
537
+ outcome: z.ZodDiscriminatedUnion<[z.ZodObject<{
538
+ state: z.ZodLiteral<"done">;
539
+ stopReason: z.ZodString;
540
+ }, z.core.$strip>, z.ZodObject<{
541
+ state: z.ZodLiteral<"cancelled">;
542
+ }, z.core.$strip>, z.ZodObject<{
543
+ state: z.ZodLiteral<"failed">;
544
+ reason: z.ZodEnum<{
545
+ agent_exited: "agent_exited";
546
+ agent_unavailable: "agent_unavailable";
547
+ device_rejected: "device_rejected";
548
+ host_lost: "host_lost";
549
+ prompt_expired: "prompt_expired";
550
+ signature_invalid: "signature_invalid";
551
+ }>;
552
+ }, z.core.$strip>], "state">;
553
+ }, z.core.$strip>, {
554
+ readonly id: string;
555
+ }>;
556
+ }>;
557
+ export type ChatActionRegistry = ReturnType<typeof chatActions>;
558
+ export type ChatActionMap = ActionsOf<ChatActionRegistry>;
559
+ export type ChatUserActionMap = ReturnType<typeof userChatActions>;
560
+ export type ChatHostActionMap = ReturnType<typeof hostChatActions>;
561
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}