@parlor/client 0.1.0 → 0.3.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.
- package/README.md +2 -0
- package/dist/action-client.d.ts +2 -0
- package/dist/action-client.d.ts.map +1 -1
- package/dist/action-client.js +13 -4
- package/dist/action-client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin-client.js.map +1 -1
- package/dist/query-keys.js.map +1 -1
- package/dist/react/action-query.d.ts +26 -0
- package/dist/react/action-query.d.ts.map +1 -0
- package/dist/react/action-query.js +33 -0
- package/dist/react/action-query.js.map +1 -0
- package/dist/react/agent-ui/activity-state.js.map +1 -1
- package/dist/react/agent-ui/chat-activity.js.map +1 -1
- package/dist/react/agent-ui/chat-confirm.js.map +1 -1
- package/dist/react/agent-ui/chat.js.map +1 -1
- package/dist/react/agent-ui/dev.js.map +1 -1
- package/dist/react/agent-ui/runtime.js.map +1 -1
- package/dist/react/agent-ui/use-agent-activity.js.map +1 -1
- package/dist/react/agent-ui/use-agent-confirmations.js.map +1 -1
- package/dist/react/agent-ui/use-agent-view.js.map +1 -1
- package/dist/react/chat/ask-fields.js.map +1 -1
- package/dist/react/chat/chat-ask.d.ts +3 -2
- package/dist/react/chat/chat-ask.d.ts.map +1 -1
- package/dist/react/chat/chat-ask.js +3 -2
- package/dist/react/chat/chat-ask.js.map +1 -1
- package/dist/react/chat/chat-composer.d.ts.map +1 -1
- package/dist/react/chat/chat-composer.js +1 -1
- package/dist/react/chat/chat-composer.js.map +1 -1
- package/dist/react/chat/chat-root.js.map +1 -1
- package/dist/react/chat/chat-thread.js.map +1 -1
- package/dist/react/chat/context.js.map +1 -1
- package/dist/react/chat/create.js.map +1 -1
- package/dist/react/chat/open-turns.js.map +1 -1
- package/dist/react/chat/runtime.d.ts +29 -4
- package/dist/react/chat/runtime.d.ts.map +1 -1
- package/dist/react/chat/runtime.js +82 -11
- package/dist/react/chat/runtime.js.map +1 -1
- package/dist/react/chat/use-chat.d.ts.map +1 -1
- package/dist/react/chat/use-chat.js +2 -0
- package/dist/react/chat/use-chat.js.map +1 -1
- package/dist/react/chat/use-device-setup.js.map +1 -1
- package/dist/react/hooks.d.ts +7 -1
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/hooks.js +17 -13
- package/dist/react/hooks.js.map +1 -1
- package/dist/react/index.d.ts +3 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/provider.d.ts +6 -3
- package/dist/react/provider.d.ts.map +1 -1
- package/dist/react/provider.js +61 -11
- package/dist/react/provider.js.map +1 -1
- package/dist/react/retry.js.map +1 -1
- package/dist/react/sync-bridge.d.ts +4 -1
- package/dist/react/sync-bridge.d.ts.map +1 -1
- package/dist/react/sync-bridge.js.map +1 -1
- package/dist/react/sync.d.ts +41 -2
- package/dist/react/sync.d.ts.map +1 -1
- package/dist/react/sync.js +127 -9
- package/dist/react/sync.js.map +1 -1
- package/dist/react/use-capability.js.map +1 -1
- package/dist/react/use-devices.js.map +1 -1
- package/dist/react/use-link-device.js.map +1 -1
- package/dist/register.js.map +1 -1
- package/dist/router/errors.d.ts +13 -0
- package/dist/router/errors.d.ts.map +1 -0
- package/dist/router/errors.js +16 -0
- package/dist/router/errors.js.map +1 -0
- package/dist/router/index.d.ts +4 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +4 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/mount.d.ts +22 -0
- package/dist/router/mount.d.ts.map +1 -0
- package/dist/router/mount.js +27 -0
- package/dist/router/mount.js.map +1 -0
- package/dist/router/router.d.ts +29 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/router.js +44 -0
- package/dist/router/router.js.map +1 -0
- package/dist/session.d.ts +7 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js.map +1 -1
- package/dist/ssr/index.d.ts +2 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +2 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/render.d.ts +18 -0
- package/dist/ssr/render.d.ts.map +1 -0
- package/dist/ssr/render.js +96 -0
- package/dist/ssr/render.js.map +1 -0
- package/package.json +15 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-turns.js","sourceRoot":"","sources":["../../../src/react/chat/open-turns.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"open-turns.js","sourceRoot":"","sources":["../../../src/react/chat/open-turns.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n applyFrame as applyToItems,\n type ChatFrame,\n type LoggedItem,\n type OpenItem,\n type OpenTurn,\n type TurnStatus,\n} from \"@parlor/chat\";\nimport type { TurnId } from \"@parlor/core\";\n\nexport interface OpenTurns {\n readonly turns: ReadonlyMap<TurnId, OpenTurn>;\n}\n\nexport const NO_OPEN_TURNS: OpenTurns = { turns: new Map() };\n\nexport function applyFrame(open: OpenTurns, frame: ChatFrame): OpenTurns {\n if (frame.type === \"settled\") return open;\n const turn = open.turns.get(frame.turnId);\n const applied = applyToItems(turn?.items ?? [], frame);\n if (!applied) return open;\n const next = new Map(open.turns);\n next.set(frame.turnId, {\n turnId: frame.turnId,\n threadId: frame.threadId,\n items: [...applied.items],\n });\n return { turns: next };\n}\n\nexport function mergeSnapshot(open: OpenTurns, snapshot: readonly OpenTurn[]): OpenTurns {\n const turns = new Map<TurnId, OpenTurn>(snapshot.map((turn) => [turn.turnId, turn]));\n for (const [turnId, local] of open.turns) {\n const remote = turns.get(turnId);\n if (!remote) {\n turns.set(turnId, local);\n continue;\n }\n const longer = (item: OpenItem): OpenItem => {\n const mine = local.items.find((candidate) => candidate.id === item.id);\n return mine &&\n \"text\" in mine &&\n \"text\" in item &&\n mine.text.length > item.text.length\n ? mine\n : item;\n };\n const known = new Set(remote.items.map((item) => item.id));\n turns.set(turnId, {\n ...remote,\n items: [\n ...remote.items.map(longer),\n ...local.items.filter((i) => !known.has(i.id)),\n ],\n });\n }\n return { turns };\n}\n\nexport function pruneOpen(\n open: OpenTurns,\n durable: ReadonlyMap<string, LoggedItem>,\n statuses: readonly TurnStatus[],\n): OpenTurns {\n const over = new Set(\n statuses\n .filter((s) => s.state !== \"queued\" && s.state !== \"running\")\n .map((s) => s.turnId),\n );\n const turns = new Map<TurnId, OpenTurn>();\n for (const [turnId, turn] of open.turns) {\n if (over.has(turnId)) continue;\n const items = turn.items.filter((item) => !durable.has(item.id));\n if (items.length > 0) turns.set(turnId, { ...turn, items });\n }\n return { turns };\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { AgentConfirmation, AgentUiClient } from "@parlor/agent-ui/client";
|
|
2
2
|
import type { CapabilityHandle, LocalAgentHost } from "@parlor/capabilities";
|
|
3
|
-
import { type ChatItem, type HostSummary, type ThreadSummary } from "@parlor/chat";
|
|
3
|
+
import { type AgentOption, type AgentUsage, type ChatItem, type HostSummary, type ThreadSummary } from "@parlor/chat";
|
|
4
4
|
import type { ChatUserActionMap } from "@parlor/chat/server";
|
|
5
5
|
import { type Tag } from "@parlor/core";
|
|
6
6
|
import type { ClientChannel } from "@parlor/sync";
|
|
7
7
|
import type { PluginClient } from "../../plugin-client.js";
|
|
8
|
-
import type { DeviceLinker, DeviceSource, HostAuthorizer } from "../../session.js";
|
|
8
|
+
import type { ComputerDisconnector, DeviceLinker, DeviceSource, HostAuthorizer } from "../../session.js";
|
|
9
9
|
/** One agent the user can talk to; `key` is `<hostId>/<agentId>`. */
|
|
10
10
|
export interface AgentChoice {
|
|
11
11
|
readonly key: string;
|
|
@@ -14,6 +14,16 @@ export interface AgentChoice {
|
|
|
14
14
|
readonly online: boolean;
|
|
15
15
|
readonly ready: boolean;
|
|
16
16
|
readonly problem: string | undefined;
|
|
17
|
+
/** What a prompt to this agent may choose, such as its model; empty until it has said. */
|
|
18
|
+
readonly options: readonly AgentChoiceOption[];
|
|
19
|
+
/** The account's allowance, as the agent last reported it. */
|
|
20
|
+
readonly usage: AgentUsage | undefined;
|
|
21
|
+
/** The name this agent knows the app by outside the sidebar, when the user let it use the app there. */
|
|
22
|
+
readonly outsideName: string | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface AgentChoiceOption extends AgentOption {
|
|
25
|
+
/** The value the next prompt runs with: this device's choice, or the agent's own. */
|
|
26
|
+
readonly selected: string;
|
|
17
27
|
}
|
|
18
28
|
/** How this client adds a computer, decided by the `localAgentHost` capability. */
|
|
19
29
|
export type ConnectOption = {
|
|
@@ -26,9 +36,18 @@ export type ConnectOption = {
|
|
|
26
36
|
/**
|
|
27
37
|
* `waiting`: a prompt waits for a computer, which `ChatState.wait` names: one that must
|
|
28
38
|
* still approve this device, or one that is offline while the prompt queues.
|
|
29
|
-
* `unavailable`: this backend has no chat,
|
|
39
|
+
* `unavailable`: this backend has no chat, this user may not use it, or the first read
|
|
40
|
+
* failed and is being retried; `ChatState.unavailable` says which.
|
|
30
41
|
*/
|
|
31
42
|
export type ChatStatus = "loading" | "idle" | "sending" | "waiting" | "running" | "unavailable";
|
|
43
|
+
/**
|
|
44
|
+
* Why chat is `unavailable`: `forbidden` when the app's chat `access` refuses this user,
|
|
45
|
+
* so the agent should not show at all; `not_found` when the server has no chat;
|
|
46
|
+
* `unauthenticated` when nobody is signed in; `error` while a failed read is retried.
|
|
47
|
+
*/
|
|
48
|
+
export interface ChatUnavailable {
|
|
49
|
+
readonly reason: "forbidden" | "not_found" | "unauthenticated" | "error";
|
|
50
|
+
}
|
|
32
51
|
export interface ChatWait {
|
|
33
52
|
readonly reason: "offline" | "approval";
|
|
34
53
|
readonly hostId: string;
|
|
@@ -69,6 +88,8 @@ export interface ChatState {
|
|
|
69
88
|
readonly status: ChatStatus;
|
|
70
89
|
/** Set exactly while `status` is `waiting`; approval wins when both reasons hold. */
|
|
71
90
|
readonly wait: ChatWait | undefined;
|
|
91
|
+
/** Set exactly while `status` is `unavailable`. */
|
|
92
|
+
readonly unavailable: ChatUnavailable | undefined;
|
|
72
93
|
readonly thread: ThreadSummary | undefined;
|
|
73
94
|
readonly threads: readonly ThreadSummary[];
|
|
74
95
|
/** Older threads exist past `threads`; `loadMoreThreads` reads them. */
|
|
@@ -107,6 +128,10 @@ export interface ChatCommands {
|
|
|
107
128
|
/** A `presence` ask triggers the OS prompt first; a `computer` ask refuses. */
|
|
108
129
|
answer(askId: string, choice: string, values?: Readonly<Record<string, string | number | boolean>>): Promise<void>;
|
|
109
130
|
choose(agentKey: string): void;
|
|
131
|
+
/** Chooses a value of the chosen agent's option for this device's next prompts to it. */
|
|
132
|
+
setOption(optionId: string, value: string): void;
|
|
133
|
+
/** Disconnects a computer: its agents leave the sidebar and stop using the app outside it. */
|
|
134
|
+
disconnect(hostId: string): Promise<void>;
|
|
110
135
|
/** `undefined` opens the most recent thread, if there is one. */
|
|
111
136
|
openThread(threadId: string | undefined): void;
|
|
112
137
|
/** Starts a blank thread; it exists on the server once the first prompt is sent. */
|
|
@@ -146,7 +171,7 @@ export interface ChatRuntimeDeps {
|
|
|
146
171
|
readonly transport: () => "sse" | "poll" | undefined;
|
|
147
172
|
readonly onNegotiated: (listener: (transport: "sse" | "poll") => void) => () => void;
|
|
148
173
|
readonly isHidden?: (() => boolean) | undefined;
|
|
149
|
-
readonly auth: Partial<DeviceSource & HostAuthorizer & DeviceLinker> | undefined;
|
|
174
|
+
readonly auth: Partial<DeviceSource & HostAuthorizer & DeviceLinker & ComputerDisconnector> | undefined;
|
|
150
175
|
readonly localHost: Promise<CapabilityHandle<LocalAgentHost>>;
|
|
151
176
|
readonly threadId: string | undefined;
|
|
152
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/react/chat/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,
|
|
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;
|
|
@@ -58,6 +64,7 @@ export function createChatRuntime(deps) {
|
|
|
58
64
|
let draft = "";
|
|
59
65
|
let failure;
|
|
60
66
|
let chosen;
|
|
67
|
+
let optionChoices = readOptionChoices();
|
|
61
68
|
let sending = false;
|
|
62
69
|
let pendingSend;
|
|
63
70
|
let startedNew = false;
|
|
@@ -73,6 +80,7 @@ export function createChatRuntime(deps) {
|
|
|
73
80
|
let dirty = false;
|
|
74
81
|
const staleReads = new Set();
|
|
75
82
|
let unfixable = false;
|
|
83
|
+
let unavailable;
|
|
76
84
|
let retryTimer;
|
|
77
85
|
let retryDelay = READ_RETRY_BASE_MS;
|
|
78
86
|
let lastPing;
|
|
@@ -114,14 +122,27 @@ export function createChatRuntime(deps) {
|
|
|
114
122
|
return undefined;
|
|
115
123
|
return refusedLast(hostId, deviceId) ? 0 : due - PRESENCE_MARGIN_MS;
|
|
116
124
|
};
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
+
/** This device's choices for `agentKey` that its agent still offers. */
|
|
126
|
+
const chosenOptions = (agentKey, options) => Object.fromEntries(Object.entries(optionChoices[agentKey] ?? {}).filter(([id, value]) => options.some((option) => option.id === id && option.values.some((candidate) => candidate.id === value))));
|
|
127
|
+
const choices = () => hosts.flatMap((host) => host.agents.map((agent) => {
|
|
128
|
+
const key = `${host.id}/${agent.id}`;
|
|
129
|
+
const offered = agent.options ?? [];
|
|
130
|
+
const picked = chosenOptions(key, offered);
|
|
131
|
+
return {
|
|
132
|
+
key,
|
|
133
|
+
name: agent.name,
|
|
134
|
+
hostName: host.name,
|
|
135
|
+
online: host.online,
|
|
136
|
+
ready: agent.ready,
|
|
137
|
+
problem: agent.problem,
|
|
138
|
+
options: offered.map((option) => ({
|
|
139
|
+
...option,
|
|
140
|
+
selected: picked[option.id] ?? option.current,
|
|
141
|
+
})),
|
|
142
|
+
usage: agent.usage,
|
|
143
|
+
outsideName: agent.outsideName,
|
|
144
|
+
};
|
|
145
|
+
}));
|
|
125
146
|
const waitOn = (reason, hostId) => ({
|
|
126
147
|
reason,
|
|
127
148
|
hostId,
|
|
@@ -187,6 +208,7 @@ export function createChatRuntime(deps) {
|
|
|
187
208
|
return {
|
|
188
209
|
status,
|
|
189
210
|
wait,
|
|
211
|
+
unavailable: loaded === "failed" ? unavailable : undefined,
|
|
190
212
|
thread,
|
|
191
213
|
threads: [
|
|
192
214
|
...threads,
|
|
@@ -469,6 +491,10 @@ export function createChatRuntime(deps) {
|
|
|
469
491
|
try {
|
|
470
492
|
await reporting(async () => {
|
|
471
493
|
const agent = { hostId: asId("host", hostId), agentId };
|
|
494
|
+
const offered = hosts
|
|
495
|
+
.find((host) => host.id === hostId)
|
|
496
|
+
?.agents.find((candidate) => candidate.id === agentId)?.options;
|
|
497
|
+
const options = chosenOptions(agentKey, offered ?? []);
|
|
472
498
|
const signed = deps.auth?.device
|
|
473
499
|
? await signPrompt({
|
|
474
500
|
threadId: attempt.threadId,
|
|
@@ -482,7 +508,12 @@ export function createChatRuntime(deps) {
|
|
|
482
508
|
turnId: attempt.turnId,
|
|
483
509
|
itemId: attempt.itemId,
|
|
484
510
|
clientId: deps.clientId,
|
|
485
|
-
prompt: {
|
|
511
|
+
prompt: {
|
|
512
|
+
text: attempt.text,
|
|
513
|
+
agent,
|
|
514
|
+
...(signed ? { signed } : {}),
|
|
515
|
+
...(Object.keys(options).length > 0 ? { options } : {}),
|
|
516
|
+
},
|
|
486
517
|
});
|
|
487
518
|
settle();
|
|
488
519
|
if (epoch !== generation)
|
|
@@ -655,7 +686,7 @@ export function createChatRuntime(deps) {
|
|
|
655
686
|
};
|
|
656
687
|
await whenSetUp(() => reporting(async () => {
|
|
657
688
|
const found = deps.auth?.device ? await deviceOf() : undefined;
|
|
658
|
-
if (ask.approval === "presence" && !found) {
|
|
689
|
+
if ((ask.approval === "presence" || ask.approval === "device") && !found) {
|
|
659
690
|
throw new NeedsDevice("This question needs a device that can confirm it is you.");
|
|
660
691
|
}
|
|
661
692
|
const signed = await found?.signAnswer(toSign, {
|
|
@@ -758,6 +789,25 @@ export function createChatRuntime(deps) {
|
|
|
758
789
|
chosen = agentKey;
|
|
759
790
|
emit();
|
|
760
791
|
},
|
|
792
|
+
async disconnect(hostId) {
|
|
793
|
+
if (!deps.auth?.disconnectComputer) {
|
|
794
|
+
throw new Error("This app cannot disconnect computers.");
|
|
795
|
+
}
|
|
796
|
+
await deps.auth.disconnectComputer(hostId);
|
|
797
|
+
await refreshHosts();
|
|
798
|
+
emit();
|
|
799
|
+
},
|
|
800
|
+
setOption(optionId, value) {
|
|
801
|
+
const agentKey = state.agent?.key;
|
|
802
|
+
if (agentKey === undefined)
|
|
803
|
+
return;
|
|
804
|
+
optionChoices = {
|
|
805
|
+
...optionChoices,
|
|
806
|
+
[agentKey]: { ...optionChoices[agentKey], [optionId]: value },
|
|
807
|
+
};
|
|
808
|
+
writeOptionChoices(optionChoices);
|
|
809
|
+
emit();
|
|
810
|
+
},
|
|
761
811
|
openThread(target) {
|
|
762
812
|
switchTo(target === undefined ? undefined : asId("thread", target), false);
|
|
763
813
|
},
|
|
@@ -829,6 +879,7 @@ export function createChatRuntime(deps) {
|
|
|
829
879
|
announceActivity();
|
|
830
880
|
});
|
|
831
881
|
const offConfirmations = agentUi.confirmations.subscribe(emit);
|
|
882
|
+
const offLink = deps.auth?.subscribeLink?.(() => void refreshLink());
|
|
832
883
|
emit();
|
|
833
884
|
announceActivity();
|
|
834
885
|
void initial();
|
|
@@ -846,6 +897,7 @@ export function createChatRuntime(deps) {
|
|
|
846
897
|
offResume();
|
|
847
898
|
offNegotiated();
|
|
848
899
|
offConfirmations();
|
|
900
|
+
offLink?.();
|
|
849
901
|
stopWatching?.();
|
|
850
902
|
stopWatching = undefined;
|
|
851
903
|
watched = undefined;
|
|
@@ -873,8 +925,10 @@ export function createChatRuntime(deps) {
|
|
|
873
925
|
return;
|
|
874
926
|
lastPing = now;
|
|
875
927
|
calls.call("userActive", {}).catch((error) => {
|
|
876
|
-
if (error instanceof ActionError &&
|
|
928
|
+
if (error instanceof ActionError &&
|
|
929
|
+
(error.code === "not_found" || error.code === "forbidden")) {
|
|
877
930
|
pingRefused = true;
|
|
931
|
+
}
|
|
878
932
|
});
|
|
879
933
|
}
|
|
880
934
|
async function loadFirst() {
|
|
@@ -885,6 +939,7 @@ export function createChatRuntime(deps) {
|
|
|
885
939
|
catch (error) {
|
|
886
940
|
if (running) {
|
|
887
941
|
loaded = "failed";
|
|
942
|
+
unavailable = { reason: unavailableBecause(error) };
|
|
888
943
|
unfixable = !retryable(error);
|
|
889
944
|
if (!unfixable)
|
|
890
945
|
scheduleRetry();
|
|
@@ -925,4 +980,20 @@ export function createChatRuntime(deps) {
|
|
|
925
980
|
}
|
|
926
981
|
return runtime;
|
|
927
982
|
}
|
|
983
|
+
const OPTION_CHOICES_KEY = "parlor:agent-options";
|
|
984
|
+
function readOptionChoices() {
|
|
985
|
+
try {
|
|
986
|
+
const stored = JSON.parse(globalThis.localStorage?.getItem(OPTION_CHOICES_KEY) ?? "{}");
|
|
987
|
+
return stored && typeof stored === "object" ? stored : {};
|
|
988
|
+
}
|
|
989
|
+
catch {
|
|
990
|
+
return {};
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
function writeOptionChoices(choices) {
|
|
994
|
+
try {
|
|
995
|
+
globalThis.localStorage?.setItem(OPTION_CHOICES_KEY, JSON.stringify(choices));
|
|
996
|
+
}
|
|
997
|
+
catch { }
|
|
998
|
+
}
|
|
928
999
|
//# sourceMappingURL=runtime.js.map
|
|
@@ -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 type AgentOption,\n type AgentUsage,\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 ComputerDisconnector,\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 /** What a prompt to this agent may choose, such as its model; empty until it has said. */\n readonly options: readonly AgentChoiceOption[];\n /** The account's allowance, as the agent last reported it. */\n readonly usage: AgentUsage | undefined;\n /** The name this agent knows the app by outside the sidebar, when the user let it use the app there. */\n readonly outsideName: string | undefined;\n}\n\nexport interface AgentChoiceOption extends AgentOption {\n /** The value the next prompt runs with: this device's choice, or the agent's own. */\n readonly selected: string;\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 /** Chooses a value of the chosen agent's option for this device's next prompts to it. */\n setOption(optionId: string, value: string): void;\n /** Disconnects a computer: its agents leave the sidebar and stop using the app outside it. */\n disconnect(hostId: string): Promise<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:\n | Partial<DeviceSource & HostAuthorizer & DeviceLinker & ComputerDisconnector>\n | 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 optionChoices = readOptionChoices();\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 /** This device's choices for `agentKey` that its agent still offers. */\n const chosenOptions = (\n agentKey: string,\n options: readonly AgentOption[],\n ): Record<string, string> =>\n Object.fromEntries(\n Object.entries(optionChoices[agentKey] ?? {}).filter(([id, value]) =>\n options.some(\n (option) =>\n option.id === id && option.values.some((candidate) => candidate.id === value),\n ),\n ),\n );\n\n const choices = (): AgentChoice[] =>\n hosts.flatMap((host) =>\n host.agents.map((agent) => {\n const key = `${host.id}/${agent.id}`;\n const offered = agent.options ?? [];\n const picked = chosenOptions(key, offered);\n return {\n key,\n name: agent.name,\n hostName: host.name,\n online: host.online,\n ready: agent.ready,\n problem: agent.problem,\n options: offered.map((option) => ({\n ...option,\n selected: picked[option.id] ?? option.current,\n })),\n usage: agent.usage,\n outsideName: agent.outsideName,\n };\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 offered = hosts\n .find((host) => host.id === hostId)\n ?.agents.find((candidate) => candidate.id === agentId)?.options;\n const options = chosenOptions(agentKey, offered ?? []);\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: {\n text: attempt.text,\n agent,\n ...(signed ? { signed } : {}),\n ...(Object.keys(options).length > 0 ? { options } : {}),\n },\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\" || ask.approval === \"device\") && !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 async disconnect(hostId) {\n if (!deps.auth?.disconnectComputer) {\n throw new Error(\"This app cannot disconnect computers.\");\n }\n await deps.auth.disconnectComputer(hostId);\n await refreshHosts();\n emit();\n },\n setOption(optionId, value) {\n const agentKey = state.agent?.key;\n if (agentKey === undefined) return;\n optionChoices = {\n ...optionChoices,\n [agentKey]: { ...optionChoices[agentKey], [optionId]: value },\n };\n writeOptionChoices(optionChoices);\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 const offLink = deps.auth?.subscribeLink?.(() => void refreshLink());\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 offLink?.();\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\nconst OPTION_CHOICES_KEY = \"parlor:agent-options\";\n\ntype OptionChoices = Readonly<Record<string, Readonly<Record<string, string>>>>;\n\nfunction readOptionChoices(): OptionChoices {\n try {\n const stored: unknown = JSON.parse(\n globalThis.localStorage?.getItem(OPTION_CHOICES_KEY) ?? \"{}\",\n );\n return stored && typeof stored === \"object\" ? (stored as OptionChoices) : {};\n } catch {\n return {};\n }\n}\n\nfunction writeOptionChoices(choices: OptionChoices): void {\n try {\n globalThis.localStorage?.setItem(OPTION_CHOICES_KEY, JSON.stringify(choices));\n } catch {}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../../../src/react/chat/use-chat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5D,0EAA0E;AAC1E,wBAAgB,OAAO,IAAI,SAAS,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../../../src/react/chat/use-chat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5D,0EAA0E;AAC1E,wBAAgB,OAAO,IAAI,SAAS,GAAG,YAAY,CAsBlD"}
|
|
@@ -14,6 +14,8 @@ export function useChat() {
|
|
|
14
14
|
loadOlder: runtime.loadOlder,
|
|
15
15
|
loadMoreThreads: runtime.loadMoreThreads,
|
|
16
16
|
choose: runtime.choose,
|
|
17
|
+
setOption: runtime.setOption,
|
|
18
|
+
disconnect: runtime.disconnect,
|
|
17
19
|
openThread: runtime.openThread,
|
|
18
20
|
newThread: runtime.newThread,
|
|
19
21
|
startLink: runtime.startLink,
|
|
@@ -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,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,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 setOption: runtime.setOption,\n disconnect: runtime.disconnect,\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"]}
|