@parlor/client 0.1.0 → 0.2.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 (87) hide show
  1. package/README.md +2 -0
  2. package/dist/action-client.d.ts +2 -0
  3. package/dist/action-client.d.ts.map +1 -1
  4. package/dist/action-client.js +13 -4
  5. package/dist/action-client.js.map +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/plugin-client.js.map +1 -1
  8. package/dist/query-keys.js.map +1 -1
  9. package/dist/react/action-query.d.ts +26 -0
  10. package/dist/react/action-query.d.ts.map +1 -0
  11. package/dist/react/action-query.js +33 -0
  12. package/dist/react/action-query.js.map +1 -0
  13. package/dist/react/agent-ui/activity-state.js.map +1 -1
  14. package/dist/react/agent-ui/chat-activity.js.map +1 -1
  15. package/dist/react/agent-ui/chat-confirm.js.map +1 -1
  16. package/dist/react/agent-ui/chat.js.map +1 -1
  17. package/dist/react/agent-ui/dev.js.map +1 -1
  18. package/dist/react/agent-ui/runtime.js.map +1 -1
  19. package/dist/react/agent-ui/use-agent-activity.js.map +1 -1
  20. package/dist/react/agent-ui/use-agent-confirmations.js.map +1 -1
  21. package/dist/react/agent-ui/use-agent-view.js.map +1 -1
  22. package/dist/react/chat/ask-fields.js.map +1 -1
  23. package/dist/react/chat/chat-ask.js.map +1 -1
  24. package/dist/react/chat/chat-composer.d.ts.map +1 -1
  25. package/dist/react/chat/chat-composer.js +1 -1
  26. package/dist/react/chat/chat-composer.js.map +1 -1
  27. package/dist/react/chat/chat-root.js.map +1 -1
  28. package/dist/react/chat/chat-thread.js.map +1 -1
  29. package/dist/react/chat/context.js.map +1 -1
  30. package/dist/react/chat/create.js.map +1 -1
  31. package/dist/react/chat/open-turns.js.map +1 -1
  32. package/dist/react/chat/runtime.d.ts +12 -1
  33. package/dist/react/chat/runtime.d.ts.map +1 -1
  34. package/dist/react/chat/runtime.js +12 -1
  35. package/dist/react/chat/runtime.js.map +1 -1
  36. package/dist/react/chat/use-chat.js.map +1 -1
  37. package/dist/react/chat/use-device-setup.js.map +1 -1
  38. package/dist/react/hooks.d.ts +7 -1
  39. package/dist/react/hooks.d.ts.map +1 -1
  40. package/dist/react/hooks.js +17 -13
  41. package/dist/react/hooks.js.map +1 -1
  42. package/dist/react/index.d.ts +3 -2
  43. package/dist/react/index.d.ts.map +1 -1
  44. package/dist/react/index.js +2 -1
  45. package/dist/react/index.js.map +1 -1
  46. package/dist/react/provider.d.ts +6 -3
  47. package/dist/react/provider.d.ts.map +1 -1
  48. package/dist/react/provider.js +61 -11
  49. package/dist/react/provider.js.map +1 -1
  50. package/dist/react/retry.js.map +1 -1
  51. package/dist/react/sync-bridge.d.ts +4 -1
  52. package/dist/react/sync-bridge.d.ts.map +1 -1
  53. package/dist/react/sync-bridge.js.map +1 -1
  54. package/dist/react/sync.d.ts +41 -2
  55. package/dist/react/sync.d.ts.map +1 -1
  56. package/dist/react/sync.js +127 -9
  57. package/dist/react/sync.js.map +1 -1
  58. package/dist/react/use-capability.js.map +1 -1
  59. package/dist/react/use-devices.js.map +1 -1
  60. package/dist/react/use-link-device.js.map +1 -1
  61. package/dist/register.js.map +1 -1
  62. package/dist/router/errors.d.ts +13 -0
  63. package/dist/router/errors.d.ts.map +1 -0
  64. package/dist/router/errors.js +16 -0
  65. package/dist/router/errors.js.map +1 -0
  66. package/dist/router/index.d.ts +4 -0
  67. package/dist/router/index.d.ts.map +1 -0
  68. package/dist/router/index.js +4 -0
  69. package/dist/router/index.js.map +1 -0
  70. package/dist/router/mount.d.ts +22 -0
  71. package/dist/router/mount.d.ts.map +1 -0
  72. package/dist/router/mount.js +27 -0
  73. package/dist/router/mount.js.map +1 -0
  74. package/dist/router/router.d.ts +29 -0
  75. package/dist/router/router.d.ts.map +1 -0
  76. package/dist/router/router.js +44 -0
  77. package/dist/router/router.js.map +1 -0
  78. package/dist/session.js.map +1 -1
  79. package/dist/ssr/index.d.ts +2 -0
  80. package/dist/ssr/index.d.ts.map +1 -0
  81. package/dist/ssr/index.js +2 -0
  82. package/dist/ssr/index.js.map +1 -0
  83. package/dist/ssr/render.d.ts +18 -0
  84. package/dist/ssr/render.d.ts.map +1 -0
  85. package/dist/ssr/render.js +96 -0
  86. package/dist/ssr/render.js.map +1 -0
  87. package/package.json +15 -7
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/react/chat/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/react/chat/runtime.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,12 @@ const UNFIXABLE_BY_RETRY = new Set([
15
15
  "forbidden",
16
16
  ]);
17
17
  const retryable = (error) => !(error instanceof ActionError && UNFIXABLE_BY_RETRY.has(error.code));
18
+ const unavailableBecause = (error) => error instanceof ActionError &&
19
+ (error.code === "forbidden" ||
20
+ error.code === "not_found" ||
21
+ error.code === "unauthenticated")
22
+ ? error.code
23
+ : "error";
18
24
  const mint = (kind) => asId(kind, generateClientId());
19
25
  const isActive = (turn) => turn.state === "queued" || turn.state === "running";
20
26
  const exceedsPromptLimit = (error) => error.issues?.some((issue) => issue.code === "too_big" && issue.path.join(".") === "prompt.text") ?? false;
@@ -73,6 +79,7 @@ export function createChatRuntime(deps) {
73
79
  let dirty = false;
74
80
  const staleReads = new Set();
75
81
  let unfixable = false;
82
+ let unavailable;
76
83
  let retryTimer;
77
84
  let retryDelay = READ_RETRY_BASE_MS;
78
85
  let lastPing;
@@ -187,6 +194,7 @@ export function createChatRuntime(deps) {
187
194
  return {
188
195
  status,
189
196
  wait,
197
+ unavailable: loaded === "failed" ? unavailable : undefined,
190
198
  thread,
191
199
  threads: [
192
200
  ...threads,
@@ -873,8 +881,10 @@ export function createChatRuntime(deps) {
873
881
  return;
874
882
  lastPing = now;
875
883
  calls.call("userActive", {}).catch((error) => {
876
- if (error instanceof ActionError && error.code === "not_found")
884
+ if (error instanceof ActionError &&
885
+ (error.code === "not_found" || error.code === "forbidden")) {
877
886
  pingRefused = true;
887
+ }
878
888
  });
879
889
  }
880
890
  async function loadFirst() {
@@ -885,6 +895,7 @@ export function createChatRuntime(deps) {
885
895
  catch (error) {
886
896
  if (running) {
887
897
  loaded = "failed";
898
+ unavailable = { reason: unavailableBecause(error) };
888
899
  unfixable = !retryable(error);
889
900
  if (!unfixable)
890
901
  scheduleRetry();
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/react/chat/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/react/chat/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentConfirmation, AgentUiClient } from \"@parlor/agent-ui/client\";\nimport type { CapabilityHandle, LocalAgentHost } from \"@parlor/capabilities\";\nimport {\n CHAT_CHANNEL,\n CHAT_TAG,\n type ChatFrame,\n type AnswerToSign,\n type ChatItem,\n foldThread,\n type HostSummary,\n HOSTS_TAG,\n isPromptTooLong,\n type ItemSignature,\n type LoggedItem,\n parseChatFrame,\n PROMPT_LIMIT_MESSAGE,\n type PromptToSign,\n type ThreadSummary,\n type TurnStatus,\n} from \"@parlor/chat\";\nimport type { ChatUserActionMap } from \"@parlor/chat/server\";\nimport {\n ActionError,\n asId,\n type ItemId,\n type Tag,\n tagsOverlap,\n type ThreadId,\n type TurnId,\n} from \"@parlor/core\";\nimport type { ClientChannel } from \"@parlor/sync\";\n\nimport { generateClientId } from \"../../action-client.js\";\nimport type { PluginClient } from \"../../plugin-client.js\";\nimport type {\n DeviceLinker,\n DeviceSource,\n HostAuthorizer,\n SessionDevice,\n} from \"../../session.js\";\nimport {\n applyFrame,\n mergeSnapshot,\n NO_OPEN_TURNS,\n type OpenTurns,\n pruneOpen,\n} from \"./open-turns.js\";\n\n/** One agent the user can talk to; `key` is `<hostId>/<agentId>`. */\nexport interface AgentChoice {\n readonly key: string;\n readonly name: string;\n readonly hostName: string;\n readonly online: boolean;\n readonly ready: boolean;\n readonly problem: string | undefined;\n}\n\n/** How this client adds a computer, decided by the `localAgentHost` capability. */\nexport type ConnectOption =\n | { readonly kind: \"command\"; readonly command: string }\n | { readonly kind: \"here\"; start(): Promise<void> };\n\n/**\n * `waiting`: a prompt waits for a computer, which `ChatState.wait` names: one that must\n * still approve this device, or one that is offline while the prompt queues.\n * `unavailable`: this backend has no chat, this user may not use it, or the first read\n * failed and is being retried; `ChatState.unavailable` says which.\n */\nexport type ChatStatus =\n | \"loading\"\n | \"idle\"\n | \"sending\"\n | \"waiting\"\n | \"running\"\n | \"unavailable\";\n\n/**\n * Why chat is `unavailable`: `forbidden` when the app's chat `access` refuses this user,\n * so the agent should not show at all; `not_found` when the server has no chat;\n * `unauthenticated` when nobody is signed in; `error` while a failed read is retried.\n */\nexport interface ChatUnavailable {\n readonly reason: \"forbidden\" | \"not_found\" | \"unauthenticated\" | \"error\";\n}\n\nexport interface ChatWait {\n readonly reason: \"offline\" | \"approval\";\n readonly hostId: string;\n readonly hostName: string;\n}\n\n/**\n * Whether this device may send: `linked` (or nothing to link), `checking` until it knows, or\n * `unlinked` with the code it shows once `startLink` made one. A device links once, from a\n * device already linked or from the computer.\n */\nexport type LinkState =\n | { readonly status: \"linked\" | \"checking\" }\n | {\n readonly status: \"unlinked\";\n readonly hostName: string;\n readonly code?: string | undefined;\n /** What a linked phone's camera opens to link this device: `<app>/link#d=…&c=…`. */\n readonly qr?: string | undefined;\n /** What to run on the computer to link this device there instead, while `code` is shown. */\n readonly command?: string | undefined;\n readonly expiresAt?: string | undefined;\n /** The code shown last ran out; `startLink` shows a new one. */\n readonly expired: boolean;\n /** No other device is linked yet to link this one, so only the computer can, with `command`. */\n readonly onlyComputer: boolean;\n readonly busy: boolean;\n readonly error?: string | undefined;\n };\n\n/**\n * Set while an action waits for this device to be set up: on a browser, the first prompt\n * would otherwise open a passkey prompt with no warning. `explain` until the user picks,\n * `passkey` while the browser asks, `cancelled` once they dismissed it.\n */\nexport interface DeviceSetup {\n readonly step: \"explain\" | \"passkey\" | \"cancelled\";\n}\n\nexport interface ChatState {\n readonly status: ChatStatus;\n /** Set exactly while `status` is `waiting`; approval wins when both reasons hold. */\n readonly wait: ChatWait | undefined;\n /** Set exactly while `status` is `unavailable`. */\n readonly unavailable: ChatUnavailable | undefined;\n readonly thread: ThreadSummary | undefined;\n readonly threads: readonly ThreadSummary[];\n /** Older threads exist past `threads`; `loadMoreThreads` reads them. */\n readonly moreThreads: boolean;\n readonly items: readonly ChatItem<AgentConfirmation>[];\n /** The thread has items before the first one shown; `loadOlder` reads them. */\n readonly hasOlder: boolean;\n /** Set while `loadOlder` or `loadMoreThreads` reads. */\n readonly loadingOlder: boolean;\n readonly hosts: readonly HostSummary[];\n readonly agents: readonly AgentChoice[];\n readonly agent: AgentChoice | undefined;\n readonly connect: ConnectOption;\n readonly draft: string;\n /** Why the last send, stop or answer failed; cleared by the next one that succeeds. */\n readonly error: string | undefined;\n readonly setup: DeviceSetup | undefined;\n readonly link: LinkState;\n /**\n * The chosen agent's computer wants this device to confirm it is the user again, so\n * sending asks for Face ID or Touch ID first.\n */\n readonly presenceDue: boolean;\n}\n\nexport interface ChatCommands {\n setDraft(text: string): void;\n /** Signs the draft (or `text`) and sends it to the chosen agent; idempotent per call. */\n send(text?: string): Promise<void>;\n stop(): Promise<void>;\n /** Sends a prompt again as a new turn in its thread, signed anew. */\n resend(promptItemId: string): Promise<void>;\n /** Reads the thread's next earlier page while `hasOlder`. */\n loadOlder(): Promise<void>;\n /** Reads the next older threads while `moreThreads`. */\n loadMoreThreads(): Promise<void>;\n /** A `presence` ask triggers the OS prompt first; a `computer` ask refuses. */\n answer(\n askId: string,\n choice: string,\n values?: Readonly<Record<string, string | number | boolean>>,\n ): Promise<void>;\n choose(agentKey: string): void;\n /** `undefined` opens the most recent thread, if there is one. */\n openThread(threadId: string | undefined): void;\n /** Starts a blank thread; it exists on the server once the first prompt is sent. */\n newThread(): void;\n /** Shows this device's link code, after Face ID or Touch ID unless `presence` is false. */\n startLink(options?: { readonly presence?: boolean }): Promise<void>;\n}\n\nexport interface DeviceSetupCommands {\n /** Sets this device up, with a passkey or without one, then runs what waited for it. */\n setUpDevice(options: { readonly passkey: boolean }): Promise<void>;\n /** Drops what waited for the setup; the draft stays. */\n dismissSetup(): void;\n}\n\nexport interface ChatRuntime extends ChatCommands, DeviceSetupCommands {\n subscribe(listener: () => void): () => void;\n get(): ChatState;\n start(): () => void;\n /**\n * Called by a UI that explains the device setup, until it unmounts. Without one, the first\n * prompt enrolls the device directly, as before.\n */\n explainSetup(): () => void;\n}\n\nexport interface ChatRuntimeDeps {\n readonly calls: PluginClient<ChatUserActionMap>;\n readonly clientId: string;\n readonly appOrigin: string;\n readonly agentUi: AgentUiClient;\n readonly addChannel: (channel: ClientChannel) => () => void;\n readonly onSyncTags: (listener: (tags: readonly Tag[]) => void) => () => void;\n readonly onResume: (listener: () => void) => () => void;\n /** What the server negotiated for sync; `undefined` until it has. */\n readonly transport: () => \"sse\" | \"poll\" | undefined;\n readonly onNegotiated: (listener: (transport: \"sse\" | \"poll\") => void) => () => void;\n readonly isHidden?: (() => boolean) | undefined;\n readonly auth: Partial<DeviceSource & HostAuthorizer & DeviceLinker> | undefined;\n readonly localHost: Promise<CapabilityHandle<LocalAgentHost>>;\n readonly threadId: string | undefined;\n}\n\nexport const HOST_GRANTS_TAG = \"parlor_auth_hosts\";\nexport const DEVICES_TAG = \"parlor_auth_devices\";\n\nconst LINKED: LinkState = { status: \"linked\" };\nconst CHECKING: LinkState = { status: \"checking\" };\n\nconst READ_RETRY_BASE_MS = 1_000;\nconst READ_RETRY_MAX_MS = 30_000;\nconst ACTIVITY_PING_MS = 60_000;\nconst UNFIXABLE_BY_RETRY: ReadonlySet<string> = new Set([\n \"not_found\",\n \"unauthenticated\",\n \"forbidden\",\n]);\n\nconst retryable = (error: unknown) =>\n !(error instanceof ActionError && UNFIXABLE_BY_RETRY.has(error.code));\n\nconst unavailableBecause = (error: unknown): ChatUnavailable[\"reason\"] =>\n error instanceof ActionError &&\n (error.code === \"forbidden\" ||\n error.code === \"not_found\" ||\n error.code === \"unauthenticated\")\n ? error.code\n : \"error\";\n\ntype StaleRead = \"lists\" | \"hosts\";\n\ninterface PendingSend {\n readonly text: string;\n readonly agent: string;\n readonly openedIn: ThreadId | undefined;\n readonly threadId: ThreadId;\n readonly turnId: TurnId;\n readonly itemId: ItemId;\n}\n\nconst mint = <K extends \"thread\" | \"turn\" | \"item\">(kind: K) =>\n asId(kind, generateClientId());\n\nconst isActive = (turn: TurnStatus) =>\n turn.state === \"queued\" || turn.state === \"running\";\n\nconst exceedsPromptLimit = (error: ActionError): boolean =>\n error.issues?.some(\n (issue) => issue.code === \"too_big\" && issue.path.join(\".\") === \"prompt.text\",\n ) ?? false;\n\nclass NeedsDevice extends Error {\n override readonly name = \"NeedsDevice\";\n}\n\n/** Prompts are signed with presence this long before the computer's deadline, for clock skew. */\nconst PRESENCE_MARGIN_MS = 10 * 60_000;\nconst LONGEST_TIMEOUT_MS = 2 ** 31 - 1;\n\nconst readable = (error: unknown): string => {\n if (error instanceof NeedsDevice) return error.message;\n if (error instanceof Error && error.name === \"NotAllowedError\") {\n return \"Face ID or Touch ID was cancelled.\";\n }\n if (!(error instanceof ActionError)) return \"Could not reach the server.\";\n if (error.issues === undefined) return error.message;\n return exceedsPromptLimit(error)\n ? PROMPT_LIMIT_MESSAGE\n : \"That message could not be sent. Try again.\";\n};\n\nconst bySeq = (a: LoggedItem, b: LoggedItem) => a.seq - b.seq;\n\nexport function createChatRuntime(deps: ChatRuntimeDeps): ChatRuntime {\n const { calls, agentUi } = deps;\n const listeners = new Set<() => void>();\n\n let threadId = deps.threadId === undefined ? undefined : asId(\"thread\", deps.threadId);\n let loaded: \"no\" | \"yes\" | \"failed\" = \"no\";\n let thread: ThreadSummary | undefined;\n let threads: readonly ThreadSummary[] = [];\n let olderThreads: readonly ThreadSummary[] = [];\n let moreThreads = false;\n let hasOlder = false;\n let loadingOlder = false;\n let hosts: readonly HostSummary[] = [];\n let items = new Map<string, LoggedItem>();\n let turns: readonly TurnStatus[] = [];\n let open: OpenTurns = NO_OPEN_TURNS;\n let beforeLoad: ChatFrame[] = [];\n let draft = \"\";\n let failure: string | undefined;\n let chosen: string | undefined;\n let sending = false;\n let pendingSend: PendingSend | undefined;\n let startedNew = false;\n let connect: ConnectOption = {\n kind: \"command\",\n command: `npx @parlor/agent-host connect ${deps.appOrigin}`,\n };\n let stopWatching: (() => void) | undefined;\n let watched: ThreadId | undefined;\n let running = false;\n let channelOpen = false;\n let staleAfterLoad = false;\n let dirty = false;\n const staleReads = new Set<StaleRead>();\n let unfixable = false;\n let unavailable: ChatUnavailable | undefined;\n let retryTimer: ReturnType<typeof setTimeout> | undefined;\n let retryDelay = READ_RETRY_BASE_MS;\n let lastPing: number | undefined;\n let pingRefused = false;\n let generation = 0;\n let device: SessionDevice | undefined;\n let linkInfo: Awaited<ReturnType<DeviceLinker[\"linkState\"]>> | undefined;\n let linking:\n | {\n readonly deviceId: string;\n readonly code: string;\n readonly qr: string;\n readonly expiresAt: string;\n }\n | undefined;\n let linkBusy = false;\n let linkError: string | undefined;\n let linkExpired = false;\n let linkTimer: ReturnType<typeof setTimeout> | undefined;\n let presenceTimer: ReturnType<typeof setTimeout> | undefined;\n let setup: DeviceSetup | undefined;\n let afterSetup: (() => Promise<void>) | undefined;\n let explainers = 0;\n const resends = new Map<ItemId, PendingSend>();\n const answerIds = new Map<string, ItemId>();\n const stopIds = new Map<TurnId, ItemId>();\n\n const refusedLast = (hostId: string, deviceId: string): boolean => {\n const last = [...turns].reverse().find((turn) => turn.agent.hostId === hostId);\n if (last?.failure !== \"device_rejected\") return false;\n return [...items.values()].some(\n (item) =>\n item.turnId === last.turnId &&\n item.kind === \"prompt\" &&\n item.body.signed?.deviceId === deviceId,\n );\n };\n\n /**\n * When the computer behind `agentKey` wants this device's next prompt signed with presence:\n * by its report, or now if it refused this device's last prompt, whatever the clocks say.\n */\n const presenceDueAt = (agentKey: string): number | undefined => {\n const deviceId = device?.id ?? linkInfo?.deviceId;\n if (deviceId === undefined) return undefined;\n const hostId = agentKey.split(\"/\")[0]!;\n const due = hosts.find((host) => host.id === hostId)?.presenceDue?.[deviceId];\n if (due === undefined) return undefined;\n return refusedLast(hostId, deviceId) ? 0 : due - PRESENCE_MARGIN_MS;\n };\n\n const choices = (): AgentChoice[] =>\n hosts.flatMap((host) =>\n host.agents.map((agent) => ({\n key: `${host.id}/${agent.id}`,\n name: agent.name,\n hostName: host.name,\n online: host.online,\n ready: agent.ready,\n problem: agent.problem,\n })),\n );\n\n const waitOn = (reason: ChatWait[\"reason\"], hostId: string): ChatWait => ({\n reason,\n hostId,\n hostName: hosts.find((host) => host.id === hostId)?.name ?? \"your computer\",\n });\n\n const linkOf = (): LinkState => {\n if (!deps.auth?.linkState) return LINKED;\n const reporting = hosts.filter((host) => host.online && host.devices !== undefined);\n if (reporting.length === 0) return LINKED;\n if (!linkInfo) return CHECKING;\n const { deviceId } = linkInfo;\n if (\n linkInfo.pairing ||\n linkInfo.vouched ||\n (deviceId !== undefined &&\n reporting.some((host) => host.devices?.includes(deviceId)))\n ) {\n return LINKED;\n }\n const listing = hosts.filter((host) => host.devices !== undefined);\n return {\n status: \"unlinked\",\n hostName: reporting[0]!.name,\n code: linking?.code,\n qr: linking?.qr,\n command: linking && `npx @parlor/agent-host link ${deps.appOrigin} ${linking.code}`,\n expiresAt: linking?.expiresAt,\n expired: linkExpired,\n onlyComputer: listing.every((host) => host.devices!.every((id) => id === deviceId)),\n busy: linkBusy,\n error: linkError,\n };\n };\n\n const waitOf = (): ChatWait | undefined => {\n const approving = turns.find(awaitsApproval);\n if (approving) return waitOn(\"approval\", approving.agent.hostId);\n const offline = turns.find(\n (turn) =>\n turn.state === \"queued\" &&\n hosts.some((host) => host.id === turn.agent.hostId && !host.online),\n );\n return offline && waitOn(\"offline\", offline.agent.hostId);\n };\n\n const compute = (): ChatState => {\n const agents = choices();\n const wanted =\n chosen ??\n (thread?.agent ? `${thread.agent.hostId}/${thread.agent.agentId}` : undefined);\n const agent =\n agents.find((choice) => choice.key === wanted) ??\n agents.find((choice) => choice.online && choice.ready) ??\n agents[0];\n const wait = loaded === \"yes\" && !sending ? waitOf() : undefined;\n const due = agent && presenceDueAt(agent.key);\n const status: ChatStatus =\n loaded === \"failed\"\n ? \"unavailable\"\n : loaded === \"no\"\n ? \"loading\"\n : sending\n ? \"sending\"\n : wait\n ? \"waiting\"\n : turns.some(isActive) || open.turns.size > 0\n ? \"running\"\n : \"idle\";\n return {\n status,\n wait,\n unavailable: loaded === \"failed\" ? unavailable : undefined,\n thread,\n threads: [\n ...threads,\n ...olderThreads.filter(\n (older) => !threads.some((shown) => shown.id === older.id),\n ),\n ],\n moreThreads,\n hasOlder,\n loadingOlder,\n items: foldThread({\n items: [...items.values()].sort(bySeq),\n open: [...open.turns.values()],\n turns,\n confirmations: agentUi.confirmations.get().filter((c) => c.threadId === threadId),\n deviceId: device?.id,\n }),\n hosts,\n agents,\n agent,\n connect,\n draft,\n error: failure,\n setup,\n link: linkOf(),\n presenceDue: due !== undefined && Date.now() >= due,\n };\n };\n\n /** Re-emits once the chosen computer's presence deadline arrives, so the hint shows unprompted. */\n const watchPresence = () => {\n clearTimeout(presenceTimer);\n presenceTimer = undefined;\n const due = running && state.agent ? presenceDueAt(state.agent.key) : undefined;\n if (due === undefined || state.presenceDue) return;\n presenceTimer = setTimeout(emit, Math.min(due - Date.now(), LONGEST_TIMEOUT_MS));\n };\n\n let state = compute();\n const emit = () => {\n state = compute();\n watchPresence();\n for (const listener of [...listeners]) listener();\n };\n\n const watch = () => {\n if (watched === threadId) return;\n stopWatching?.();\n watched = threadId;\n stopWatching = threadId === undefined ? undefined : agentUi.watch(threadId);\n };\n\n const absorb = (page: {\n readonly items: readonly LoggedItem[];\n readonly turns?: readonly TurnStatus[] | undefined;\n }) => {\n items = new Map(items);\n for (const item of page.items) items.set(item.id, item);\n if (page.turns) {\n const fresh = new Map(page.turns.map((turn) => [turn.turnId, turn]));\n turns = [...turns.filter((turn) => !fresh.has(turn.turnId)), ...page.turns];\n }\n open = pruneOpen(open, items, turns);\n };\n\n const oldestSeq = (): number | undefined =>\n items.size === 0\n ? undefined\n : Math.min(...[...items.values()].map((item) => item.seq));\n\n const takeThreads = (snapshot: {\n readonly threads: readonly ThreadSummary[];\n readonly moreThreads?: boolean | undefined;\n }) => {\n threads = snapshot.threads;\n if (olderThreads.length === 0) moreThreads = snapshot.moreThreads === true;\n };\n\n const load = async (target: ThreadId | undefined) => {\n const epoch = generation;\n const snapshot = await calls.call(\"open\", target ? { threadId: target } : {});\n if (epoch !== generation) return;\n staleReads.clear();\n takeThreads(snapshot);\n hosts = snapshot.hosts;\n const page = startedNew && target === undefined ? undefined : snapshot.page;\n thread = page?.thread;\n threadId = page?.thread?.id ?? target;\n if (page) {\n const oldest = oldestSeq();\n absorb(page);\n const first = page.items[0];\n if (oldest === undefined || (first !== undefined && first.seq <= oldest)) {\n hasOlder = page.hasMore;\n }\n }\n open = mergeSnapshot(open, channelOpen && page ? page.open : []);\n const replay = beforeLoad;\n beforeLoad = [];\n loaded = \"yes\";\n retryDelay = READ_RETRY_BASE_MS;\n for (const frame of replay) {\n if (frame.threadId === threadId) open = applyFrame(open, frame);\n }\n open = pruneOpen(open, items, turns);\n watch();\n };\n\n const refreshLists = async () => {\n const epoch = generation;\n const fresh = await calls.call(\"open\", {});\n if (epoch !== generation || threadId !== undefined) return;\n takeThreads(fresh);\n hosts = fresh.hosts;\n emit();\n };\n\n const refreshHosts = async () => {\n const fresh = await calls.call(\"hosts\", {});\n hosts = fresh;\n emit();\n };\n\n const readLists = async () => {\n if (threadId === undefined && !startedNew && draft.trim() === \"\") {\n await load(undefined);\n emit();\n } else await refreshLists();\n };\n\n const staleReaders: Record<StaleRead, () => Promise<void>> = {\n lists: readLists,\n hosts: refreshHosts,\n };\n\n const cancelRetry = () => {\n if (retryTimer !== undefined) globalThis.clearTimeout(retryTimer);\n retryTimer = undefined;\n };\n\n const clearRetry = () => {\n cancelRetry();\n retryDelay = READ_RETRY_BASE_MS;\n };\n\n const scheduleRetry = () => {\n if (!running || retryTimer !== undefined) return;\n const wait = retryDelay;\n retryDelay = Math.min(retryDelay * 2, READ_RETRY_MAX_MS);\n retryTimer = globalThis.setTimeout(() => {\n retryTimer = undefined;\n void mend();\n }, wait);\n };\n\n const settled = () => {\n if (!dirty && staleReads.size === 0) clearRetry();\n };\n\n const rereadStale = async (kind: StaleRead) => {\n const epoch = generation;\n try {\n await staleReaders[kind]();\n staleReads.delete(kind);\n settled();\n } catch (error) {\n if (epoch !== generation) return;\n staleReads.add(kind);\n if (retryable(error)) scheduleRetry();\n }\n };\n\n let refreshing = false;\n let refreshAgain = false;\n const refresh = async () => {\n if (refreshing) {\n refreshAgain = true;\n return;\n }\n refreshing = true;\n try {\n do {\n refreshAgain = false;\n if (loaded !== \"yes\" || threadId === undefined) break;\n const epoch = generation;\n const target = threadId;\n if (turns.some(isActive)) {\n await load(target);\n } else {\n const lastSeq = Math.max(0, ...[...items.values()].map((item) => item.seq));\n const fresh = await calls.call(\"items\", {\n threadId: target,\n afterSeq: lastSeq,\n });\n if (epoch !== generation) break;\n absorb({ items: fresh });\n const known = new Set(turns.map((turn) => turn.turnId));\n if (fresh.some((item) => !known.has(item.turnId))) await load(target);\n }\n dirty = false;\n settled();\n emit();\n } while (refreshAgain);\n } catch (error) {\n refreshAgain = false;\n dirty = true;\n if (retryable(error)) scheduleRetry();\n } finally {\n refreshing = false;\n }\n };\n\n const reporting = async (command: () => Promise<void>) => {\n try {\n await command();\n } catch (error) {\n failure = readable(error);\n emit();\n throw error;\n }\n if (failure !== undefined) {\n failure = undefined;\n emit();\n }\n };\n\n const awaitsApproval = (turn: TurnStatus): boolean => {\n if (!isActive(turn)) return false;\n let waiting = false;\n for (const item of [...items.values()].sort(bySeq)) {\n if (item.turnId !== turn.turnId) continue;\n if (item.kind === \"event\" && item.body.event === \"device_pending\") waiting = true;\n else if (item.author !== \"user\") waiting = false;\n }\n return waiting;\n };\n\n const deviceOf = async (): Promise<SessionDevice | undefined> => {\n const found = await deps.auth?.device?.();\n device = found ?? device;\n return found;\n };\n\n const refreshLink = async () => {\n if (!deps.auth?.linkState) return;\n try {\n linkInfo = await deps.auth.linkState();\n } catch {\n return;\n }\n if (linking && linking.deviceId !== linkInfo.deviceId) linking = undefined;\n emit();\n };\n\n const whenSetUp = async (action: () => Promise<void>): Promise<void> => {\n if (\n explainers > 0 &&\n device === undefined &&\n (await deps.auth?.deviceSetup?.()) === \"needed\"\n ) {\n afterSetup = action;\n setup = { step: \"explain\" };\n emit();\n return;\n }\n await action();\n };\n\n const signPrompt = async (prompt: PromptToSign): Promise<ItemSignature | undefined> => {\n const own = await deviceOf();\n if (!own) return undefined;\n const due = presenceDueAt(`${prompt.agent.hostId}/${prompt.agent.agentId}`);\n return due !== undefined && Date.now() >= due\n ? own.signPrompt(prompt, { presence: true })\n : own.signPrompt(prompt);\n };\n\n const submit = async (\n attempt: PendingSend,\n agentKey: string,\n settle: () => void,\n ): Promise<void> => {\n const [hostId, agentId] = agentKey.split(\"/\") as [string, string];\n const epoch = generation;\n sending = true;\n emit();\n try {\n await reporting(async () => {\n const agent = { hostId: asId(\"host\", hostId), agentId };\n const signed = deps.auth?.device\n ? await signPrompt({\n threadId: attempt.threadId,\n turnId: attempt.turnId,\n agent,\n text: attempt.text,\n })\n : undefined;\n await calls.call(\"send\", {\n threadId: attempt.threadId,\n turnId: attempt.turnId,\n itemId: attempt.itemId,\n clientId: deps.clientId,\n prompt: { text: attempt.text, agent, ...(signed ? { signed } : {}) },\n });\n settle();\n if (epoch !== generation) return;\n startedNew = false;\n threadId = attempt.threadId;\n watch();\n await load(threadId);\n });\n } finally {\n sending = false;\n emit();\n }\n };\n\n const activeTurn = (): TurnStatus | undefined => [...turns].reverse().find(isActive);\n\n const switchTo = (target: ThreadId | undefined, blank: boolean) => {\n generation += 1;\n threadId = target;\n startedNew = blank;\n thread = undefined;\n items = new Map();\n turns = [];\n hasOlder = false;\n open = NO_OPEN_TURNS;\n beforeLoad = [];\n pendingSend = undefined;\n stopIds.clear();\n answerIds.clear();\n dirty = false;\n staleReads.clear();\n clearRetry();\n watch();\n if (blank && loaded === \"yes\") {\n emit();\n return;\n }\n loaded = \"no\";\n emit();\n void loadFirst().then(emit);\n };\n\n const runtime: ChatRuntime = {\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n get: () => state,\n setDraft(text) {\n draft = text;\n emit();\n announceActivity();\n },\n async send(text = draft) {\n announceActivity();\n const prompt = text.trim();\n const target = state.agent;\n if (!prompt || isPromptTooLong(prompt) || !target || sending || loaded !== \"yes\") {\n return;\n }\n const retrying =\n pendingSend?.text === prompt &&\n pendingSend.agent === target.key &&\n pendingSend.openedIn === threadId;\n const attempt =\n retrying && pendingSend\n ? pendingSend\n : (pendingSend = {\n text: prompt,\n agent: target.key,\n openedIn: threadId,\n threadId: threadId ?? mint(\"thread\"),\n turnId: mint(\"turn\"),\n itemId: mint(\"item\"),\n });\n await whenSetUp(() =>\n submit(attempt, target.key, () => {\n pendingSend = undefined;\n if (draft.trim() === prompt) draft = \"\";\n }),\n );\n },\n async loadOlder() {\n const target = threadId;\n const before = oldestSeq();\n if (target === undefined || before === undefined || !hasOlder || loadingOlder)\n return;\n const epoch = generation;\n loadingOlder = true;\n emit();\n try {\n await reporting(async () => {\n const older = await calls.call(\"history\", {\n threadId: target,\n beforeSeq: before,\n });\n if (epoch !== generation) return;\n absorb(older);\n hasOlder = older.hasMore;\n });\n } finally {\n loadingOlder = false;\n emit();\n }\n },\n async loadMoreThreads() {\n const last = olderThreads.at(-1) ?? threads.at(-1);\n if (!last || !moreThreads || loadingOlder) return;\n loadingOlder = true;\n emit();\n try {\n await reporting(async () => {\n const next = await calls.call(\"threadsBefore\", {\n before: { updatedAt: last.updatedAt, id: last.id },\n });\n olderThreads = [...olderThreads, ...next.threads];\n moreThreads = next.hasMore;\n });\n } finally {\n loadingOlder = false;\n emit();\n }\n },\n async resend(promptItemId) {\n const prompt = state.items.find(\n (item) => item.kind === \"prompt\" && item.id === promptItemId,\n );\n if (prompt?.kind !== \"prompt\" || sending || loaded !== \"yes\" || !threadId) return;\n const key = `${prompt.agent.hostId}/${prompt.agent.agentId}`;\n let attempt = resends.get(prompt.id);\n if (!attempt) {\n attempt = {\n text: prompt.text,\n agent: key,\n openedIn: threadId,\n threadId,\n turnId: mint(\"turn\"),\n itemId: mint(\"item\"),\n };\n resends.set(prompt.id, attempt);\n }\n await whenSetUp(() => submit(attempt, key, () => resends.delete(prompt.id)));\n },\n async stop() {\n const turn = activeTurn();\n if (!turn || threadId === undefined) return;\n const itemId = stopIds.get(turn.turnId) ?? mint(\"item\");\n stopIds.set(turn.turnId, itemId);\n const target = threadId;\n await reporting(async () => {\n await calls.call(\"cancel\", { threadId: target, turnId: turn.turnId, itemId });\n await refresh();\n });\n },\n async answer(askId, choice, values) {\n const ask = state.items.find((item) => item.kind === \"ask\" && item.id === askId);\n if (!ask || ask.kind !== \"ask\" || ask.answer.state !== \"open\" || !threadId) return;\n if (ask.approval === \"computer\") {\n throw new Error(\"This question is answered on your computer.\");\n }\n const itemId = answerIds.get(askId) ?? mint(\"item\");\n answerIds.set(askId, itemId);\n const target = threadId;\n const toSign: AnswerToSign = {\n threadId: target,\n askId: ask.id,\n choice,\n ...(values ? { values } : {}),\n };\n await whenSetUp(() =>\n reporting(async () => {\n const found = deps.auth?.device ? await deviceOf() : undefined;\n if (ask.approval === \"presence\" && !found) {\n throw new NeedsDevice(\n \"This question needs a device that can confirm it is you.\",\n );\n }\n const signed = await found?.signAnswer(toSign, {\n presence: ask.approval === \"presence\",\n });\n await calls.call(\"answer\", {\n threadId: target,\n turnId: ask.turnId,\n itemId,\n answer: {\n askId: ask.id,\n choice,\n ...(values ? { values } : {}),\n ...(signed ? { signed } : {}),\n },\n });\n answerIds.delete(askId);\n await refresh();\n }),\n );\n },\n async setUpDevice({ passkey }) {\n if (setup === undefined || setup.step === \"passkey\") return;\n setup = { step: \"passkey\" };\n emit();\n try {\n device = (await deps.auth?.device?.({ presence: passkey })) ?? device;\n } catch (error) {\n if (error instanceof Error && error.name === \"PresenceSetupCancelled\") {\n setup = { step: \"cancelled\" };\n emit();\n return;\n }\n setup = undefined;\n afterSetup = undefined;\n failure = readable(error);\n emit();\n return;\n }\n const waiting = afterSetup;\n setup = undefined;\n afterSetup = undefined;\n emit();\n await waiting?.();\n },\n dismissSetup() {\n setup = undefined;\n afterSetup = undefined;\n emit();\n },\n async startLink(options) {\n if (!deps.auth?.startLink || linkBusy) return;\n linkBusy = true;\n linkError = undefined;\n emit();\n try {\n const started = await deps.auth.startLink(options);\n linking = {\n deviceId: started.deviceId,\n code: started.code,\n qr: `${deps.appOrigin}/link#${new URLSearchParams({ d: started.deviceId, c: started.commitment })}`,\n expiresAt: started.expiresAt,\n };\n linkExpired = false;\n clearTimeout(linkTimer);\n linkTimer = setTimeout(\n () => {\n linking = undefined;\n linkExpired = true;\n emit();\n },\n Math.min(\n Math.max(0, Date.parse(started.expiresAt) - Date.now()),\n LONGEST_TIMEOUT_MS,\n ),\n );\n linkInfo = {\n vouched: false,\n pairing: false,\n ...linkInfo,\n deviceId: started.deviceId,\n };\n } catch (error) {\n linkError =\n error instanceof Error && error.name === \"PresenceSetupCancelled\"\n ? \"Face ID or Touch ID was cancelled. Try again, or link without it.\"\n : readable(error);\n } finally {\n linkBusy = false;\n emit();\n }\n },\n explainSetup() {\n explainers += 1;\n return () => {\n explainers -= 1;\n if (explainers === 0 && setup !== undefined) runtime.dismissSetup();\n };\n },\n choose(agentKey) {\n chosen = agentKey;\n emit();\n },\n openThread(target) {\n switchTo(target === undefined ? undefined : asId(\"thread\", target), false);\n },\n newThread() {\n switchTo(undefined, true);\n },\n start() {\n running = true;\n const detachChannel = deps.addChannel({\n event: CHAT_CHANNEL,\n opened: () => {\n channelOpen = true;\n if (loaded === \"yes\" && turns.some(isActive) && !refreshing) void refresh();\n },\n receive(data) {\n const frame = parseChatFrame(data);\n if (!frame) return;\n if (loaded === \"no\") {\n beforeLoad.push(frame);\n return;\n }\n if (loaded !== \"yes\" || frame.threadId !== threadId) return;\n open = applyFrame(open, frame);\n emit();\n },\n closed: () => {\n channelOpen = false;\n },\n });\n const offTags = deps.onSyncTags((tags) => {\n const mine = tags.some((tag) =>\n tagsOverlap(tag, threadId === undefined ? [CHAT_TAG] : [CHAT_TAG, threadId]),\n );\n const computers = tags.some(\n (tag) => tagsOverlap(tag, [HOSTS_TAG]) || tagsOverlap(tag, [HOST_GRANTS_TAG]),\n );\n if (tags.some((tag) => tagsOverlap(tag, [DEVICES_TAG]))) void refreshLink();\n if (loaded === \"failed\" && (mine || computers)) {\n cancelRetry();\n void loadFirst().then(emit);\n } else if (loaded === \"no\") {\n if (mine || computers) staleAfterLoad = true;\n } else {\n if (mine && threadId !== undefined) void refresh();\n else if (mine) void rereadStale(\"lists\");\n if (computers) void rereadStale(\"hosts\");\n }\n });\n const offResume = deps.onResume(() => {\n if (loaded === \"failed\") {\n if (!unfixable) {\n cancelRetry();\n void loadFirst().then(emit);\n }\n } else if (loaded === \"no\") staleAfterLoad = true;\n else void refresh();\n });\n const offNegotiated = deps.onNegotiated((transport) => {\n if (transport === \"poll\") announceActivity();\n });\n const offConfirmations = agentUi.confirmations.subscribe(emit);\n emit();\n announceActivity();\n void initial();\n return () => {\n running = false;\n channelOpen = false;\n generation += 1;\n clearRetry();\n clearTimeout(presenceTimer);\n presenceTimer = undefined;\n clearTimeout(linkTimer);\n linkTimer = undefined;\n detachChannel();\n offTags();\n offResume();\n offNegotiated();\n offConfirmations();\n stopWatching?.();\n stopWatching = undefined;\n watched = undefined;\n };\n },\n };\n\n async function mend() {\n if (loaded === \"failed\") await loadFirst();\n else if (loaded === \"yes\") {\n if (dirty) await refresh();\n for (const kind of [...staleReads]) await rereadStale(kind);\n }\n emit();\n }\n\n function announceActivity() {\n if (!running || pingRefused || deps.transport() !== \"poll\") return;\n if (deps.isHidden?.() === true) return;\n const now = Date.now();\n if (lastPing !== undefined && now - lastPing < ACTIVITY_PING_MS) return;\n lastPing = now;\n calls.call(\"userActive\", {}).catch((error: unknown) => {\n if (\n error instanceof ActionError &&\n (error.code === \"not_found\" || error.code === \"forbidden\")\n ) {\n pingRefused = true;\n }\n });\n }\n\n async function loadFirst() {\n try {\n await load(threadId);\n unfixable = false;\n } catch (error) {\n if (running) {\n loaded = \"failed\";\n unavailable = { reason: unavailableBecause(error) };\n unfixable = !retryable(error);\n if (!unfixable) scheduleRetry();\n }\n return;\n }\n if (staleAfterLoad) {\n staleAfterLoad = false;\n await refresh();\n }\n }\n\n async function initial() {\n void deps.localHost.then((handle) => {\n const authorizeHost = deps.auth?.authorizeHost;\n if (!handle.available || !authorizeHost || !running) return;\n connect = {\n kind: \"here\",\n start: async () => {\n const own = await deps.auth?.device?.();\n const outcome = await handle.api.connect({\n appOrigin: deps.appOrigin,\n authorize: authorizeHost,\n ...(own ? { device: own.keys } : {}),\n });\n if (!outcome.connected) throw new Error(`Connecting failed: ${outcome.reason}`);\n await refreshHosts();\n await refreshLink();\n },\n };\n emit();\n });\n void refreshLink();\n await loadFirst();\n announceActivity();\n emit();\n }\n\n return runtime;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat.js","sourceRoot":"","sources":["../../../src/react/chat/use-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5D,0EAA0E;AAC1E,MAAM,UAAU,OAAO;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,GAAG,KAAK;QACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,EACF,CAAC,KAAK,EAAE,OAAO,CAAC,CACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"use-chat.js","sourceRoot":"","sources":["../../../src/react/chat/use-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5D,0EAA0E;AAC1E,MAAM,UAAU,OAAO;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,GAAG,KAAK;QACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,EACF,CAAC,KAAK,EAAE,OAAO,CAAC,CACjB,CAAC;AACJ,CAAC","sourcesContent":["import { useMemo } from \"react\";\n\nimport { useChatRuntime, useChatState } from \"./context.js\";\nimport type { ChatCommands, ChatState } from \"./runtime.js\";\n\n/** The chat's state and commands, for what the primitives do not draw. */\nexport function useChat(): ChatState & ChatCommands {\n const runtime = useChatRuntime(\"useChat\");\n const state = useChatState(\"useChat\");\n return useMemo(\n () => ({\n ...state,\n setDraft: runtime.setDraft,\n send: runtime.send,\n stop: runtime.stop,\n answer: runtime.answer,\n resend: runtime.resend,\n loadOlder: runtime.loadOlder,\n loadMoreThreads: runtime.loadMoreThreads,\n choose: runtime.choose,\n openThread: runtime.openThread,\n newThread: runtime.newThread,\n startLink: runtime.startLink,\n }),\n [state, runtime],\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-device-setup.js","sourceRoot":"","sources":["../../../src/react/chat/use-device-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5D;;;GAGG;AACH,MAAM,UAAU,cAAc;IAG5B,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,EACF,CAAC,KAAK,EAAE,OAAO,CAAC,CACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"use-device-setup.js","sourceRoot":"","sources":["../../../src/react/chat/use-device-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5D;;;GAGG;AACH,MAAM,UAAU,cAAc;IAG5B,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,EACF,CAAC,KAAK,EAAE,OAAO,CAAC,CACjB,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useMemo } from \"react\";\n\nimport { useChatRuntime, useChatState } from \"./context.js\";\nimport type { DeviceSetup, DeviceSetupCommands } from \"./runtime.js\";\n\n/**\n * For a UI that explains setting this device up: while it is mounted, the first prompt on a\n * browser that would create a passkey waits in `setup` until the user picks.\n */\nexport function useDeviceSetup(): DeviceSetupCommands & {\n readonly setup: DeviceSetup | undefined;\n} {\n const runtime = useChatRuntime(\"useDeviceSetup\");\n const { setup } = useChatState(\"useDeviceSetup\");\n useEffect(() => runtime.explainSetup(), [runtime]);\n return useMemo(\n () => ({\n setup,\n setUpDevice: runtime.setUpDevice,\n dismissSetup: runtime.dismissSetup,\n }),\n [setup, runtime],\n );\n}\n"]}
@@ -1,10 +1,16 @@
1
1
  import type { ActionError, ActionInput, ActionOutput } from "@parlor/core";
2
- import { type UseMutationOptions, type UseMutationResult, type UseQueryOptions, type UseQueryResult } from "@tanstack/react-query";
2
+ import { type UseMutationOptions, type UseMutationResult, type UseQueryOptions, type UseQueryResult, type UseSuspenseQueryOptions, type UseSuspenseQueryResult } from "@tanstack/react-query";
3
3
  import type { RegisteredActions } from "../register.js";
4
4
  type Actions = RegisteredActions;
5
5
  type Name = keyof Actions & string;
6
6
  export type ActionQueryOptions<K extends Name> = Omit<UseQueryOptions<ActionOutput<Actions[K]>, ActionError>, "queryKey" | "queryFn">;
7
7
  export declare function useActionQuery<K extends Name>(name: K, input: ActionInput<Actions[K]>, options?: ActionQueryOptions<K>): UseQueryResult<ActionOutput<Actions[K]>, ActionError>;
8
+ export type ActionSuspenseQueryOptions<K extends Name> = Omit<UseSuspenseQueryOptions<ActionOutput<Actions[K]>, ActionError>, "queryKey" | "queryFn">;
9
+ /**
10
+ * `useActionQuery` as a TanStack Query `useSuspenseQuery`: `data` is always there. It suspends
11
+ * until the action answers, unless a route `loader` already ran `ensureActionQueryData`.
12
+ */
13
+ export declare function useActionSuspenseQuery<K extends Name>(name: K, input: ActionInput<Actions[K]>, options?: ActionSuspenseQueryOptions<K>): UseSuspenseQueryResult<ActionOutput<Actions[K]>, ActionError>;
8
14
  export type ActionMutationOptions<K extends Name> = Omit<UseMutationOptions<ActionOutput<Actions[K]>, ActionError, ActionInput<Actions[K]>>, "mutationFn">;
9
15
  export declare function useActionMutation<K extends Name>(name: K, options?: ActionMutationOptions<K>): UseMutationResult<ActionOutput<Actions[K]>, ActionError, ActionInput<Actions[K]>>;
10
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EAIpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,KAAK,OAAO,GAAG,iBAAiB,CAAC;AACjC,KAAK,IAAI,GAAG,MAAM,OAAO,GAAG,MAAM,CAAC;AAEnC,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CACnD,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EACtD,UAAU,GAAG,SAAS,CACvB,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,SAAS,IAAI,EAC3C,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAcvD;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CACtD,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAClF,YAAY,CACb,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,IAAI,EAC9C,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAWnF"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAK5B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,KAAK,OAAO,GAAG,iBAAiB,CAAC;AACjC,KAAK,IAAI,GAAG,MAAM,OAAO,GAAG,MAAM,CAAC;AAEnC,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CACnD,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EACtD,UAAU,GAAG,SAAS,CACvB,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,SAAS,IAAI,EAC3C,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAKvD;AAED,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAC3D,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAC9D,UAAU,GAAG,SAAS,CACvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,IAAI,EACnD,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACtC,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAK/D;AAMD,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CACtD,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAClF,YAAY,CACb,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,IAAI,EAC9C,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAWnF"}
@@ -1,22 +1,26 @@
1
- import { hashKey, useMutation, useQuery, useQueryClient, } from "@tanstack/react-query";
2
- import { ACTION_QUERY_PREFIX, actionQueryKey } from "../query-keys.js";
1
+ import { useMutation, useQuery, useQueryClient, useSuspenseQuery, } from "@tanstack/react-query";
2
+ import { ACTION_QUERY_PREFIX } from "../query-keys.js";
3
+ import { actionQueryOptions } from "./action-query.js";
3
4
  import { useFramework } from "./provider.js";
4
- import { actionRetry } from "./retry.js";
5
5
  export function useActionQuery(name, input, options) {
6
- const { client, readTags } = useFramework();
7
- const queryClient = useQueryClient();
8
- const queryKey = actionQueryKey(name, input);
9
6
  return useQuery({
7
+ ...actionQueryOptions(useActionQueryContext(), name, input),
8
+ ...options,
9
+ });
10
+ }
11
+ /**
12
+ * `useActionQuery` as a TanStack Query `useSuspenseQuery`: `data` is always there. It suspends
13
+ * until the action answers, unless a route `loader` already ran `ensureActionQueryData`.
14
+ */
15
+ export function useActionSuspenseQuery(name, input, options) {
16
+ return useSuspenseQuery({
17
+ ...actionQueryOptions(useActionQueryContext(), name, input),
10
18
  ...options,
11
- retry: options?.retry ?? actionRetry(queryClient.getDefaultOptions().queries?.retry),
12
- queryKey,
13
- queryFn: async ({ signal }) => {
14
- const envelope = await client.invoke(name, input, { signal });
15
- readTags.record(hashKey(queryKey), envelope.tags);
16
- return envelope.data;
17
- },
18
19
  });
19
20
  }
21
+ function useActionQueryContext() {
22
+ return { client: useFramework().client, queryClient: useQueryClient() };
23
+ }
20
24
  export function useActionMutation(name, options) {
21
25
  const { client } = useFramework();
22
26
  const queryClient = useQueryClient();
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EAKP,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAUzC,MAAM,UAAU,cAAc,CAC5B,IAAO,EACP,KAA8B,EAC9B,OAA+B;IAE/B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC;QACd,GAAG,OAAO;QACV,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;QACpF,QAAQ;QACR,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9D,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClD,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAC/B,IAAO,EACP,OAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,OAAO,WAAW,CAAC;QACjB,GAAG,OAAO;QACV,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/C,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE;YAC5D,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACvE,MAAM,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,WAAW,EACX,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAA2B,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAU7C,MAAM,UAAU,cAAc,CAC5B,IAAO,EACP,KAA8B,EAC9B,OAA+B;IAE/B,OAAO,QAAQ,CAAC;QACd,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC;QAC3D,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAO,EACP,KAA8B,EAC9B,OAAuC;IAEvC,OAAO,gBAAgB,CAAC;QACtB,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC;QAC3D,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC;AAC1E,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAC/B,IAAO,EACP,OAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,OAAO,WAAW,CAAC;QACjB,GAAG,OAAO;QACV,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/C,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE;YAC5D,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACvE,MAAM,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { ActionError, ActionInput, ActionOutput } from \"@parlor/core\";\nimport {\n type UseMutationOptions,\n type UseMutationResult,\n type UseQueryOptions,\n type UseQueryResult,\n type UseSuspenseQueryOptions,\n type UseSuspenseQueryResult,\n useMutation,\n useQuery,\n useQueryClient,\n useSuspenseQuery,\n} from \"@tanstack/react-query\";\n\nimport { ACTION_QUERY_PREFIX } from \"../query-keys.js\";\nimport type { RegisteredActions } from \"../register.js\";\nimport { type ActionQueryContext, actionQueryOptions } from \"./action-query.js\";\nimport { useFramework } from \"./provider.js\";\n\ntype Actions = RegisteredActions;\ntype Name = keyof Actions & string;\n\nexport type ActionQueryOptions<K extends Name> = Omit<\n UseQueryOptions<ActionOutput<Actions[K]>, ActionError>,\n \"queryKey\" | \"queryFn\"\n>;\n\nexport function useActionQuery<K extends Name>(\n name: K,\n input: ActionInput<Actions[K]>,\n options?: ActionQueryOptions<K>,\n): UseQueryResult<ActionOutput<Actions[K]>, ActionError> {\n return useQuery({\n ...actionQueryOptions(useActionQueryContext(), name, input),\n ...options,\n });\n}\n\nexport type ActionSuspenseQueryOptions<K extends Name> = Omit<\n UseSuspenseQueryOptions<ActionOutput<Actions[K]>, ActionError>,\n \"queryKey\" | \"queryFn\"\n>;\n\n/**\n * `useActionQuery` as a TanStack Query `useSuspenseQuery`: `data` is always there. It suspends\n * until the action answers, unless a route `loader` already ran `ensureActionQueryData`.\n */\nexport function useActionSuspenseQuery<K extends Name>(\n name: K,\n input: ActionInput<Actions[K]>,\n options?: ActionSuspenseQueryOptions<K>,\n): UseSuspenseQueryResult<ActionOutput<Actions[K]>, ActionError> {\n return useSuspenseQuery({\n ...actionQueryOptions(useActionQueryContext(), name, input),\n ...options,\n });\n}\n\nfunction useActionQueryContext(): ActionQueryContext {\n return { client: useFramework().client, queryClient: useQueryClient() };\n}\n\nexport type ActionMutationOptions<K extends Name> = Omit<\n UseMutationOptions<ActionOutput<Actions[K]>, ActionError, ActionInput<Actions[K]>>,\n \"mutationFn\"\n>;\n\nexport function useActionMutation<K extends Name>(\n name: K,\n options?: ActionMutationOptions<K>,\n): UseMutationResult<ActionOutput<Actions[K]>, ActionError, ActionInput<Actions[K]>> {\n const { client } = useFramework();\n const queryClient = useQueryClient();\n return useMutation({\n ...options,\n mutationFn: (input) => client.call(name, input),\n onSuccess: async (data, variables, onMutateResult, context) => {\n await queryClient.invalidateQueries({ queryKey: ACTION_QUERY_PREFIX });\n await options?.onSuccess?.(data, variables, onMutateResult, context);\n },\n });\n}\n"]}
@@ -4,7 +4,7 @@ export * as Chat from "./agent-ui/chat.js";
4
4
  export type { ChatAskChoiceProps, ChatAskFormProps, ChatAskProps, } from "./chat/chat-ask.js";
5
5
  export type { ChatRootProps } from "./chat/chat-root.js";
6
6
  export type { ChatThreadProps } from "./chat/chat-thread.js";
7
- export type { AgentChoice, ChatCommands, ChatState, ChatStatus, ChatWait, ConnectOption, DeviceSetup, DeviceSetupCommands, LinkState, } from "./chat/runtime.js";
7
+ export type { AgentChoice, ChatCommands, ChatState, ChatStatus, ChatUnavailable, ChatWait, ConnectOption, DeviceSetup, DeviceSetupCommands, LinkState, } from "./chat/runtime.js";
8
8
  export { useChat } from "./chat/use-chat.js";
9
9
  export { useDeviceSetup } from "./chat/use-device-setup.js";
10
10
  export { type RemoveDeviceState, useDevices } from "./use-devices.js";
@@ -13,7 +13,8 @@ export type { ChatItem } from "@parlor/chat";
13
13
  export { useAgentActivity } from "./agent-ui/use-agent-activity.js";
14
14
  export { useAgentConfirmations } from "./agent-ui/use-agent-confirmations.js";
15
15
  export { type AgentViewHandle, useAgentView } from "./agent-ui/use-agent-view.js";
16
- export { type ActionMutationOptions, type ActionQueryOptions, useActionMutation, useActionQuery, } from "./hooks.js";
16
+ export { type ActionQueryContext, actionQueryOptions, ensureActionQueryData, } from "./action-query.js";
17
+ export { type ActionMutationOptions, type ActionQueryOptions, type ActionSuspenseQueryOptions, useActionMutation, useActionQuery, useActionSuspenseQuery, } from "./hooks.js";
17
18
  export { FrameworkProvider, type FrameworkProviderProps, useActionClient, useSession, } from "./provider.js";
18
19
  export { type CapabilityState, useCapability } from "./use-capability.js";
19
20
  export { invalidateForEvents, ReadTagRegistry } from "./sync.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,KAAK,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,KAAK,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,eAAe,EACf,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,eAAe,EACf,QAAQ,EACR,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,KAAK,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,KAAK,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,eAAe,EACf,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -6,7 +6,8 @@ export { useLinkDevice } from "./use-link-device.js";
6
6
  export { useAgentActivity } from "./agent-ui/use-agent-activity.js";
7
7
  export { useAgentConfirmations } from "./agent-ui/use-agent-confirmations.js";
8
8
  export { useAgentView } from "./agent-ui/use-agent-view.js";
9
- export { useActionMutation, useActionQuery, } from "./hooks.js";
9
+ export { actionQueryOptions, ensureActionQueryData, } from "./action-query.js";
10
+ export { useActionMutation, useActionQuery, useActionSuspenseQuery, } from "./hooks.js";
10
11
  export { FrameworkProvider, useActionClient, useSession, } from "./provider.js";
11
12
  export { useCapability } from "./use-capability.js";
12
13
  export { invalidateForEvents, ReadTagRegistry } from "./sync.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAmB3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAA0B,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAwB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAwB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAGL,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EAEjB,eAAe,EACf,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAwB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAoB3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAA0B,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAwB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAwB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAEL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EAEjB,eAAe,EACf,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAwB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export type {\n AgentActivity,\n AgentActivityKind,\n AgentOutcome,\n AgentConfirmation,\n} from \"@parlor/agent-ui/client\";\nexport type { AgentActivityState } from \"./agent-ui/activity-state.js\";\nexport * as Chat from \"./agent-ui/chat.js\";\nexport type {\n ChatAskChoiceProps,\n ChatAskFormProps,\n ChatAskProps,\n} from \"./chat/chat-ask.js\";\nexport type { ChatRootProps } from \"./chat/chat-root.js\";\nexport type { ChatThreadProps } from \"./chat/chat-thread.js\";\nexport type {\n AgentChoice,\n ChatCommands,\n ChatState,\n ChatStatus,\n ChatUnavailable,\n ChatWait,\n ConnectOption,\n DeviceSetup,\n DeviceSetupCommands,\n LinkState,\n} from \"./chat/runtime.js\";\nexport { useChat } from \"./chat/use-chat.js\";\nexport { useDeviceSetup } from \"./chat/use-device-setup.js\";\nexport { type RemoveDeviceState, useDevices } from \"./use-devices.js\";\nexport { type LinkDeviceState, useLinkDevice } from \"./use-link-device.js\";\nexport type { ChatItem } from \"@parlor/chat\";\nexport { useAgentActivity } from \"./agent-ui/use-agent-activity.js\";\nexport { useAgentConfirmations } from \"./agent-ui/use-agent-confirmations.js\";\nexport { type AgentViewHandle, useAgentView } from \"./agent-ui/use-agent-view.js\";\nexport {\n type ActionQueryContext,\n actionQueryOptions,\n ensureActionQueryData,\n} from \"./action-query.js\";\nexport {\n type ActionMutationOptions,\n type ActionQueryOptions,\n type ActionSuspenseQueryOptions,\n useActionMutation,\n useActionQuery,\n useActionSuspenseQuery,\n} from \"./hooks.js\";\nexport {\n FrameworkProvider,\n type FrameworkProviderProps,\n useActionClient,\n useSession,\n} from \"./provider.js\";\nexport { type CapabilityState, useCapability } from \"./use-capability.js\";\nexport { invalidateForEvents, ReadTagRegistry } from \"./sync.js\";\n"]}
@@ -6,7 +6,7 @@ import type { ActionClient } from "../action-client.js";
6
6
  import type { RegisteredActions } from "../register.js";
7
7
  import type { FrameworkAuth, SessionSnapshot } from "../session.js";
8
8
  import { type FrameworkSync, SyncBridge } from "./sync-bridge.js";
9
- import { ReadTagRegistry } from "./sync.js";
9
+ import { type ReadTagRegistry } from "./sync.js";
10
10
  interface FrameworkContextValue {
11
11
  readonly client: ActionClient<RegisteredActions>;
12
12
  readonly readTags: ReadTagRegistry;
@@ -17,12 +17,15 @@ interface FrameworkContextValue {
17
17
  }
18
18
  export interface FrameworkProviderProps {
19
19
  readonly client: ActionClient<RegisteredActions>;
20
+ /** Defaults to the router's `context.queryClient`, so loaders and hooks share one cache. */
20
21
  readonly queryClient?: QueryClient | undefined;
21
22
  readonly sync?: boolean | undefined;
22
23
  readonly router?: AnyRouter | undefined;
23
24
  /**
24
- * When the signed-in user changes, cached queries reset and sync reconnects as them. An
25
- * auth client that can also sign (`device`) and pair hosts (`authorizeHost`) gives the chat both.
25
+ * When the signed-in user changes, cached queries reset and sync reconnects as them. Sync
26
+ * waits for a signed-in or `anonymous` session, and after the server refuses it, for the
27
+ * session to change. An auth client that can also sign (`device`) and pair hosts
28
+ * (`authorizeHost`) gives the chat both.
26
29
  */
27
30
  readonly auth?: FrameworkAuth | undefined;
28
31
  readonly children: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/react/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAEL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAEnF,OAAO,EAAE,KAAK,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAuB,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjE,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAID,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAgCD,oFAAoF;AACpF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,WAAW,EACX,IAAW,EACX,MAAM,EACN,IAAI,EACJ,QAAQ,GACT,EAAE,sBAAsB,+BAqDxB;AA2CD,wBAAgB,YAAY,IAAI,qBAAqB,CAIpD;AAED,wBAAgB,eAAe,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAEjE;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,IAAI,eAAe,CAI5C"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/react/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAEL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAEnF,OAAO,EAAE,KAAK,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,WAAW,CAAC;AAEnB,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAID,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACjD,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AA6CD,oFAAoF;AACpF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,WAAW,EACX,IAAW,EACX,MAAM,EACN,IAAI,EACJ,QAAQ,GACT,EAAE,sBAAsB,+BAsDxB;AAgFD,wBAAgB,YAAY,IAAI,qBAAqB,CAIpD;AAED,wBAAgB,eAAe,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAEjE;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,IAAI,eAAe,CAI5C"}