@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.
- 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.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.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 +12 -1
- package/dist/react/chat/runtime.d.ts.map +1 -1
- package/dist/react/chat/runtime.js +12 -1
- package/dist/react/chat/runtime.js.map +1 -1
- 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.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":"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,EAKL,KAAK,QAAQ,EAEb,KAAK,WAAW,EAQhB,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAIL,KAAK,GAAG,EAIT,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAS1B,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,mFAAmF;AACnF,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEtD
|
|
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,EAKL,KAAK,QAAQ,EAEb,KAAK,WAAW,EAQhB,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAIL,KAAK,GAAG,EAIT,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAS1B,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,mFAAmF;AACnF,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,SAAS,GACT,aAAa,CAAC;AAElB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,iBAAiB,GAAG,OAAO,CAAC;CAC1E;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,GAC1C;IACE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,gGAAgG;IAChG,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;CACpD;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC,mDAAmD;IACnD,QAAQ,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACvD,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yFAAyF;IACzF,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,qEAAqE;IACrE,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,6DAA6D;IAC7D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,wDAAwD;IACxD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,+EAA+E;IAC/E,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,GAC3D,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iEAAiE;IACjE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/C,oFAAoF;IACpF,SAAS,IAAI,IAAI,CAAC;IAClB,2FAA2F;IAC3F,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,WAAW,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,wDAAwD;IACxD,YAAY,IAAI,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY,EAAE,mBAAmB;IACpE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,GAAG,IAAI,SAAS,CAAC;IACjB,KAAK,IAAI,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,YAAY,IAAI,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,IAAI,CAAC;IAC5D,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACxD,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IACrF,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,GAAG,cAAc,GAAG,YAAY,CAAC,GAAG,SAAS,CAAC;IACjF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,WAAW,wBAAwB,CAAC;AAqEjD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CA64BpE"}
|
|
@@ -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 &&
|
|
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"]}
|
package/dist/react/hooks.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/react/hooks.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ACTION_QUERY_PREFIX
|
|
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();
|
package/dist/react/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
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"]}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -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
|
|
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,
|
|
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"}
|
package/dist/react/index.js
CHANGED
|
@@ -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 {
|
|
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";
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,IAAI,MAAM,oBAAoB,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"]}
|
package/dist/react/provider.d.ts
CHANGED
|
@@ -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.
|
|
25
|
-
*
|
|
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,
|
|
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"}
|