@kortix/sdk 0.12.3 → 0.12.5
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 +58 -15
- package/dist/browser/session-sync/session-transcript-cache.d.ts +17 -0
- package/dist/browser/session-sync/session-transcript-cache.d.ts.map +1 -1
- package/dist/browser/session-sync/session-transcript-cache.js +14 -2
- package/dist/browser/session-sync/session-transcript-cache.js.map +1 -1
- package/dist/browser/stores/sync-store.d.ts +86 -2
- package/dist/browser/stores/sync-store.d.ts.map +1 -1
- package/dist/browser/stores/sync-store.js +386 -33
- package/dist/browser/stores/sync-store.js.map +1 -1
- package/dist/core/client/kortix.d.ts +57 -54
- package/dist/core/client/kortix.d.ts.map +1 -1
- package/dist/core/client/kortix.js +40 -21
- package/dist/core/client/kortix.js.map +1 -1
- package/dist/core/http/api-client.d.ts +19 -1
- package/dist/core/http/api-client.d.ts.map +1 -1
- package/dist/core/http/api-client.js +39 -6
- package/dist/core/http/api-client.js.map +1 -1
- package/dist/core/http/auth.d.ts.map +1 -1
- package/dist/core/http/auth.js +6 -4
- package/dist/core/http/auth.js.map +1 -1
- package/dist/core/http/config.d.ts +4 -0
- package/dist/core/http/config.d.ts.map +1 -1
- package/dist/core/http/config.js.map +1 -1
- package/dist/core/rest/platform-client/host-boundary.js +2 -2
- package/dist/core/rest/platform-client/host-boundary.js.map +1 -1
- package/dist/core/rest/projects-client/access.d.ts +3 -3
- package/dist/core/rest/projects-client/access.d.ts.map +1 -1
- package/dist/core/rest/projects-client/agent-config.d.ts +1 -1
- package/dist/core/rest/projects-client/agent-config.d.ts.map +1 -1
- package/dist/core/rest/projects-client/audit.js +1 -1
- package/dist/core/rest/projects-client/audit.js.map +1 -1
- package/dist/core/rest/projects-client/billing.d.ts +7 -0
- package/dist/core/rest/projects-client/billing.d.ts.map +1 -1
- package/dist/core/rest/projects-client/billing.js.map +1 -1
- package/dist/core/rest/projects-client/channels.d.ts +7 -6
- package/dist/core/rest/projects-client/channels.d.ts.map +1 -1
- package/dist/core/rest/projects-client/channels.js +12 -2
- package/dist/core/rest/projects-client/channels.js.map +1 -1
- package/dist/core/rest/projects-client/connectors.d.ts +128 -98
- package/dist/core/rest/projects-client/connectors.d.ts.map +1 -1
- package/dist/core/rest/projects-client/connectors.js +199 -119
- package/dist/core/rest/projects-client/connectors.js.map +1 -1
- package/dist/core/rest/projects-client/files.d.ts.map +1 -1
- package/dist/core/rest/projects-client/files.js +7 -1
- package/dist/core/rest/projects-client/files.js.map +1 -1
- package/dist/core/rest/projects-client/policies.js +3 -3
- package/dist/core/rest/projects-client/policies.js.map +1 -1
- package/dist/core/rest/projects-client/projects.d.ts +46 -0
- package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
- package/dist/core/rest/projects-client/projects.js +12 -0
- package/dist/core/rest/projects-client/projects.js.map +1 -1
- package/dist/core/rest/projects-client/secrets.d.ts +55 -3
- package/dist/core/rest/projects-client/secrets.d.ts.map +1 -1
- package/dist/core/rest/projects-client/secrets.js +14 -4
- package/dist/core/rest/projects-client/secrets.js.map +1 -1
- package/dist/core/rest/projects-client/sessions.d.ts +8 -16
- package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
- package/dist/core/rest/projects-client/sessions.js +1 -1
- package/dist/core/rest/projects-client/sessions.js.map +1 -1
- package/dist/core/session/index.d.ts +1 -0
- package/dist/core/session/index.d.ts.map +1 -1
- package/dist/core/session/index.js +1 -0
- package/dist/core/session/index.js.map +1 -1
- package/dist/core/session/preview-probe.d.ts +76 -0
- package/dist/core/session/preview-probe.d.ts.map +1 -0
- package/dist/core/session/preview-probe.js +97 -0
- package/dist/core/session/preview-probe.js.map +1 -0
- package/dist/core/turns/classify.js +1 -1
- package/dist/core/turns/errors.js +1 -1
- package/dist/core/turns/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/kortix.esm.min.js +19 -19
- package/dist/kortix.global.js +19 -19
- package/dist/platform/auth-core.d.ts +2 -1
- package/dist/platform/auth-core.d.ts.map +1 -1
- package/dist/platform/auth-core.js +10 -1
- package/dist/platform/auth-core.js.map +1 -1
- package/dist/react/use-opencode-sessions/messages.d.ts +19 -3
- package/dist/react/use-opencode-sessions/messages.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/messages.js +28 -55
- package/dist/react/use-opencode-sessions/messages.js.map +1 -1
- package/dist/react/use-project-secrets.d.ts +24 -0
- package/dist/react/use-project-secrets.d.ts.map +1 -1
- package/dist/react/use-session-sync.d.ts +1 -2
- package/dist/react/use-session-sync.d.ts.map +1 -1
- package/dist/react/use-session-sync.js +17 -40
- package/dist/react/use-session-sync.js.map +1 -1
- package/dist/react/use-session.d.ts.map +1 -1
- package/dist/react/use-session.js +18 -16
- package/dist/react/use-session.js.map +1 -1
- package/package.json +2 -2
|
@@ -18,6 +18,7 @@ export interface TokenRetryOptions {
|
|
|
18
18
|
baseDelayMs?: number;
|
|
19
19
|
invalidateBetweenAttempts?: boolean;
|
|
20
20
|
}
|
|
21
|
+
export declare function normalizeClientSource(value?: string): string | null;
|
|
21
22
|
/**
|
|
22
23
|
* Retry `getToken` up to `attempts` times (default 1 = no retry) until it
|
|
23
24
|
* returns a truthy token, waiting `baseDelayMs` between attempts. When
|
|
@@ -49,7 +50,7 @@ export declare function withDefaultTimeout(input: RequestInfo | URL, init: Reque
|
|
|
49
50
|
* Build a Headers object from request input + init, injecting the auth token
|
|
50
51
|
* as a Bearer Authorization header (unless one is already present).
|
|
51
52
|
*/
|
|
52
|
-
export declare function buildAuthHeaders(input: RequestInfo | URL, init?: RequestInit, token?: string | null): Headers;
|
|
53
|
+
export declare function buildAuthHeaders(input: RequestInfo | URL, init?: RequestInit, token?: string | null, clientSource?: string): Headers;
|
|
53
54
|
/**
|
|
54
55
|
* The synthetic 401 returned when no token is available — safe for all
|
|
55
56
|
* callers including the OpenCode SDK, which expects fetch() semantics
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-core.d.ts","sourceRoot":"","sources":["../../src/platform/auth-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACpC;AAMD;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AAED,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,GAAG,OAAO,CAGpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,SAAS,GAAE,MAAiC,GAC1C,WAAW,GAAG,SAAS,CAUzB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"auth-core.d.ts","sourceRoot":"","sources":["../../src/platform/auth-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACpC;AAID,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnE;AAMD;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AAED,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,GAAG,OAAO,CAGpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,SAAS,GAAE,MAAiC,GAC1C,WAAW,GAAG,SAAS,CAUzB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,YAAY,CAAC,EAAE,MAAM,GACnB,OAAO,CAeT;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,IAAI,QAAQ,CAK3D"}
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
* so `auth-core.test.ts` always tests the genuine article, and `auth.ts` stays
|
|
13
13
|
* a thin delegating shell whose behavior is pinned here.
|
|
14
14
|
*/
|
|
15
|
+
const CLIENT_SOURCES = new Set(['api', 'cli', 'mobile', 'web']);
|
|
16
|
+
export function normalizeClientSource(value) {
|
|
17
|
+
const normalized = value?.trim().toLowerCase();
|
|
18
|
+
return normalized && CLIENT_SOURCES.has(normalized) ? normalized : null;
|
|
19
|
+
}
|
|
15
20
|
function delay(ms) {
|
|
16
21
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
17
22
|
}
|
|
@@ -77,7 +82,7 @@ export function withDefaultTimeout(input, init, timeoutMs = DEFAULT_FETCH_TIMEOU
|
|
|
77
82
|
* Build a Headers object from request input + init, injecting the auth token
|
|
78
83
|
* as a Bearer Authorization header (unless one is already present).
|
|
79
84
|
*/
|
|
80
|
-
export function buildAuthHeaders(input, init, token) {
|
|
85
|
+
export function buildAuthHeaders(input, init, token, clientSource) {
|
|
81
86
|
const headers = new Headers(input instanceof Request ? input.headers : undefined);
|
|
82
87
|
if (init?.headers) {
|
|
83
88
|
new Headers(init.headers).forEach((value, key) => {
|
|
@@ -87,6 +92,10 @@ export function buildAuthHeaders(input, init, token) {
|
|
|
87
92
|
if (token && !headers.has('Authorization')) {
|
|
88
93
|
headers.set('Authorization', `Bearer ${token}`);
|
|
89
94
|
}
|
|
95
|
+
const normalizedClientSource = normalizeClientSource(clientSource);
|
|
96
|
+
if (normalizedClientSource && !headers.has('X-Kortix-Client')) {
|
|
97
|
+
headers.set('X-Kortix-Client', normalizedClientSource);
|
|
98
|
+
}
|
|
90
99
|
return headers;
|
|
91
100
|
}
|
|
92
101
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-core.js","sourceRoot":"","sources":["../../src/platform/auth-core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-core.js","sourceRoot":"","sources":["../../src/platform/auth-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PromptPart, SendMessageOptions } from './keys.js';
|
|
2
2
|
/** Pull a human-readable message out of any error/response-error shape. */
|
|
3
3
|
export declare function extractSendErrorMessage(error: unknown): string;
|
|
4
4
|
/**
|
|
@@ -22,13 +22,29 @@ export declare function isTransientSendStatus(status: number | undefined): boole
|
|
|
22
22
|
* The returned delay precedes attempt `attempt + 1`.
|
|
23
23
|
*/
|
|
24
24
|
export declare function getSendRetryDelayMs(attempt: number, status: number | undefined, error: unknown): number | null;
|
|
25
|
+
/**
|
|
26
|
+
* Get messages for a session.
|
|
27
|
+
*
|
|
28
|
+
* CONSOLIDATED: Now reads from the Zustand sync store (single source of truth)
|
|
29
|
+
* instead of making its own independent React Query fetch. The sync store is
|
|
30
|
+
* populated by useSessionSync on mount and kept live by SSE events.
|
|
31
|
+
*
|
|
32
|
+
* Previously this was an independent React Query hook with its own queryFn that
|
|
33
|
+
* called client.session.messages() — duplicating the exact same fetch that
|
|
34
|
+
* useSessionSync already makes. This caused 2x /session/{id}/message requests
|
|
35
|
+
* on every session navigation.
|
|
36
|
+
*
|
|
37
|
+
* Returns a shape compatible with the old UseQueryResult<MessageWithParts[]>
|
|
38
|
+
* for backward compatibility with consumers (session-layout, tool-renderers,
|
|
39
|
+
* snapshot-dialog, session-diff-viewer).
|
|
40
|
+
*/
|
|
25
41
|
export declare function useOpenCodeMessages(sessionId: string): {
|
|
26
|
-
data: MessageWithParts[] | undefined;
|
|
42
|
+
data: import("../../internal/sync-store.js").MessageWithParts[] | undefined;
|
|
27
43
|
isLoading: boolean;
|
|
28
44
|
isError: boolean;
|
|
29
45
|
error: null;
|
|
30
46
|
refetch: () => Promise<{
|
|
31
|
-
data: MessageWithParts[];
|
|
47
|
+
data: import("../../internal/sync-store.js").MessageWithParts[];
|
|
32
48
|
}>;
|
|
33
49
|
};
|
|
34
50
|
export declare function ascendingId(prefix?: 'msg' | 'prt'): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/messages.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/messages.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAiC7D,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAgB9D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEzE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,IAAI,CAef;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;;;;;;EAsCpD;AAaD,wBAAgB,WAAW,CAAC,MAAM,GAAE,KAAK,GAAG,KAAa,GAAG,MAAM,CAajE;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;6CAE6C;AAC7C,MAAM,WAAW,wBAAyB,SAAQ,KAAK;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,GACV,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DzC;AAED,wBAAgB,sBAAsB,qGAErC;AAED,wBAAgB,uBAAuB,oFA4BtC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useMutation } from '@tanstack/react-query';
|
|
3
|
+
import { useEffect } from 'react';
|
|
3
4
|
import { getClient } from '../../core/runtime/client.js';
|
|
4
5
|
import { logger } from '../../core/http/logger.js';
|
|
5
6
|
import { useSyncStore } from '../../browser/stores/sync-store.js';
|
|
6
|
-
import { unwrap } from './shared.js';
|
|
7
|
+
import { canQueryOpenCodeSession, unwrap } from './shared.js';
|
|
7
8
|
// ============================================================================
|
|
8
9
|
// Send retry policy — ported from apps/web's `opencode-send-retry.ts` so every
|
|
9
10
|
// host that sends a prompt through `promptOpenCodeMessage` inherits it, not
|
|
@@ -115,61 +116,33 @@ export function getSendRetryDelayMs(attempt, status, error) {
|
|
|
115
116
|
* for backward compatibility with consumers (session-layout, tool-renderers,
|
|
116
117
|
* snapshot-dialog, session-diff-viewer).
|
|
117
118
|
*/
|
|
118
|
-
/**
|
|
119
|
-
* Message cache for useOpenCodeMessages — prevents creating new array references
|
|
120
|
-
* on every render. Same pattern as buildMessages() in use-session-sync.ts.
|
|
121
|
-
* Without this, the Zustand selector returns a new array from .map() on every
|
|
122
|
-
* call, breaking useSyncExternalStore's Object.is check → infinite re-render.
|
|
123
|
-
*/
|
|
124
|
-
const MSG_HOOK_CACHE_MAX = 20;
|
|
125
|
-
const msgHookCache = new Map();
|
|
126
|
-
function touchMsgHookCache(sessionId) {
|
|
127
|
-
const entry = msgHookCache.get(sessionId);
|
|
128
|
-
if (entry) {
|
|
129
|
-
msgHookCache.delete(sessionId);
|
|
130
|
-
msgHookCache.set(sessionId, entry);
|
|
131
|
-
}
|
|
132
|
-
if (msgHookCache.size > MSG_HOOK_CACHE_MAX) {
|
|
133
|
-
const oldest = msgHookCache.keys().next().value;
|
|
134
|
-
if (oldest)
|
|
135
|
-
msgHookCache.delete(oldest);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
const EMPTY_MSGS = [];
|
|
139
|
-
function buildMsgsForHook(sessionId, msgs, parts) {
|
|
140
|
-
if (!msgs || msgs.length === 0)
|
|
141
|
-
return EMPTY_MSGS;
|
|
142
|
-
const cached = msgHookCache.get(sessionId);
|
|
143
|
-
if (cached && cached.msgs === msgs) {
|
|
144
|
-
let same = cached.partRefs.length === msgs.length;
|
|
145
|
-
if (same) {
|
|
146
|
-
for (let i = 0; i < msgs.length; i++) {
|
|
147
|
-
if (parts[msgs[i].id] !== cached.partRefs[i]) {
|
|
148
|
-
same = false;
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (same)
|
|
154
|
-
return cached.result;
|
|
155
|
-
}
|
|
156
|
-
const partRefs = [];
|
|
157
|
-
const result = [];
|
|
158
|
-
for (const info of msgs) {
|
|
159
|
-
const pa = parts[info.id];
|
|
160
|
-
partRefs.push(pa);
|
|
161
|
-
result.push({ info, parts: pa ?? [] });
|
|
162
|
-
}
|
|
163
|
-
msgHookCache.set(sessionId, { msgs, partRefs, result });
|
|
164
|
-
touchMsgHookCache(sessionId);
|
|
165
|
-
return result;
|
|
166
|
-
}
|
|
167
119
|
export function useOpenCodeMessages(sessionId) {
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
|
|
120
|
+
// Hold this session's transcript for as long as this hook is mounted.
|
|
121
|
+
//
|
|
122
|
+
// Not optional bookkeeping: the store frees a session once its last consumer
|
|
123
|
+
// is gone, and this hook has consumers that are NOT the session view — a
|
|
124
|
+
// parent transcript previews a spawned child session through it (task-tool,
|
|
125
|
+
// session-spawn-tool). A child the user had opened directly, and has since
|
|
126
|
+
// navigated away from, is otherwise a legitimate eviction candidate while
|
|
127
|
+
// that preview is still on screen; those previews have no re-hydrate path of
|
|
128
|
+
// their own, so they would simply go empty.
|
|
129
|
+
//
|
|
130
|
+
// Guarded exactly like use-session-sync.ts. Callers pass Kortix route ids
|
|
131
|
+
// here as well as OpenCode ids — a booting session renders this hook with the
|
|
132
|
+
// project-session UUID — and those can never hold runtime data. Retaining one
|
|
133
|
+
// would park a permanently empty id in the detach window on unmount, spending
|
|
134
|
+
// a slot and evicting a real transcript one navigation early.
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
if (!canQueryOpenCodeSession(sessionId))
|
|
137
|
+
return;
|
|
138
|
+
return useSyncStore.getState().retainSession(sessionId);
|
|
139
|
+
}, [sessionId]);
|
|
140
|
+
// Select via the store's shared, referentially-stable join. getMessages()
|
|
141
|
+
// rebuilds via .map() on every call, which breaks useSyncExternalStore's
|
|
142
|
+
// Object.is check → infinite re-render. This hook used to keep its own copy
|
|
143
|
+
// of that memo, which meant an evicted session stayed reachable through it;
|
|
144
|
+
// the store owns the memo now, beside the eviction that invalidates it.
|
|
145
|
+
const messages = useSyncStore((s) => s.buildSessionMessages(sessionId, s.messages[sessionId], s.parts));
|
|
173
146
|
const isLoading = !useSyncStore((s) => sessionId in s.messages);
|
|
174
147
|
return {
|
|
175
148
|
data: messages.length > 0 ? messages : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/messages.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,10 @@ export declare function useProjectSecrets(projectId: string | null | undefined):
|
|
|
13
13
|
upsert: import("@tanstack/react-query").UseMutationResult<import("../index.js").ProjectSecret, Error, {
|
|
14
14
|
name: string;
|
|
15
15
|
identifier?: string;
|
|
16
|
+
consumer?: import("../index.js").SecretConsumer | null;
|
|
17
|
+
strategy?: import("../index.js").SecretDeliveryStrategy;
|
|
18
|
+
egress_policy?: import("../index.js").SecretEgressPolicy;
|
|
19
|
+
handle_prefix?: string;
|
|
16
20
|
value?: string;
|
|
17
21
|
}, unknown>;
|
|
18
22
|
remove: import("@tanstack/react-query").UseMutationResult<{
|
|
@@ -55,6 +59,10 @@ export declare function useProjectSecrets(projectId: string | null | undefined):
|
|
|
55
59
|
upsert: import("@tanstack/react-query").UseMutationResult<import("../index.js").ProjectSecret, Error, {
|
|
56
60
|
name: string;
|
|
57
61
|
identifier?: string;
|
|
62
|
+
consumer?: import("../index.js").SecretConsumer | null;
|
|
63
|
+
strategy?: import("../index.js").SecretDeliveryStrategy;
|
|
64
|
+
egress_policy?: import("../index.js").SecretEgressPolicy;
|
|
65
|
+
handle_prefix?: string;
|
|
58
66
|
value?: string;
|
|
59
67
|
}, unknown>;
|
|
60
68
|
remove: import("@tanstack/react-query").UseMutationResult<{
|
|
@@ -97,6 +105,10 @@ export declare function useProjectSecrets(projectId: string | null | undefined):
|
|
|
97
105
|
upsert: import("@tanstack/react-query").UseMutationResult<import("../index.js").ProjectSecret, Error, {
|
|
98
106
|
name: string;
|
|
99
107
|
identifier?: string;
|
|
108
|
+
consumer?: import("../index.js").SecretConsumer | null;
|
|
109
|
+
strategy?: import("../index.js").SecretDeliveryStrategy;
|
|
110
|
+
egress_policy?: import("../index.js").SecretEgressPolicy;
|
|
111
|
+
handle_prefix?: string;
|
|
100
112
|
value?: string;
|
|
101
113
|
}, unknown>;
|
|
102
114
|
remove: import("@tanstack/react-query").UseMutationResult<{
|
|
@@ -139,6 +151,10 @@ export declare function useProjectSecrets(projectId: string | null | undefined):
|
|
|
139
151
|
upsert: import("@tanstack/react-query").UseMutationResult<import("../index.js").ProjectSecret, Error, {
|
|
140
152
|
name: string;
|
|
141
153
|
identifier?: string;
|
|
154
|
+
consumer?: import("../index.js").SecretConsumer | null;
|
|
155
|
+
strategy?: import("../index.js").SecretDeliveryStrategy;
|
|
156
|
+
egress_policy?: import("../index.js").SecretEgressPolicy;
|
|
157
|
+
handle_prefix?: string;
|
|
142
158
|
value?: string;
|
|
143
159
|
}, unknown>;
|
|
144
160
|
remove: import("@tanstack/react-query").UseMutationResult<{
|
|
@@ -181,6 +197,10 @@ export declare function useProjectSecrets(projectId: string | null | undefined):
|
|
|
181
197
|
upsert: import("@tanstack/react-query").UseMutationResult<import("../index.js").ProjectSecret, Error, {
|
|
182
198
|
name: string;
|
|
183
199
|
identifier?: string;
|
|
200
|
+
consumer?: import("../index.js").SecretConsumer | null;
|
|
201
|
+
strategy?: import("../index.js").SecretDeliveryStrategy;
|
|
202
|
+
egress_policy?: import("../index.js").SecretEgressPolicy;
|
|
203
|
+
handle_prefix?: string;
|
|
184
204
|
value?: string;
|
|
185
205
|
}, unknown>;
|
|
186
206
|
remove: import("@tanstack/react-query").UseMutationResult<{
|
|
@@ -223,6 +243,10 @@ export declare function useProjectSecrets(projectId: string | null | undefined):
|
|
|
223
243
|
upsert: import("@tanstack/react-query").UseMutationResult<import("../index.js").ProjectSecret, Error, {
|
|
224
244
|
name: string;
|
|
225
245
|
identifier?: string;
|
|
246
|
+
consumer?: import("../index.js").SecretConsumer | null;
|
|
247
|
+
strategy?: import("../index.js").SecretDeliveryStrategy;
|
|
248
|
+
egress_policy?: import("../index.js").SecretEgressPolicy;
|
|
249
|
+
handle_prefix?: string;
|
|
226
250
|
value?: string;
|
|
227
251
|
}, unknown>;
|
|
228
252
|
remove: import("@tanstack/react-query").UseMutationResult<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-project-secrets.d.ts","sourceRoot":"","sources":["../../src/react/use-project-secrets.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,wBAAwB,EAExB,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAC;AAEtC;;qCAEqC;AACrC,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,GAAG,IAAI,GAAG,SAAS,4DAC7B,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS
|
|
1
|
+
{"version":3,"file":"use-project-secrets.d.ts","sourceRoot":"","sources":["../../src/react/use-project-secrets.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,wBAAwB,EAExB,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAC;AAEtC;;qCAEqC;AACrC,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,GAAG,IAAI,GAAG,SAAS,4DAC7B,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;;;;;;;;;;;;;;cAwBvC,MAAM;eAAS,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA7D,MAAM;eAAS,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA7D,MAAM;eAAS,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA7D,MAAM;eAAS,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA7D,MAAM;eAAS,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA7D,MAAM;eAAS,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3F"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { SessionStatus, Todo } from '@opencode-ai/sdk/v2/client';
|
|
2
2
|
import { loadSessionTranscriptMessages } from '../browser/session-sync/session-sync-registry.js';
|
|
3
|
-
import { type MessageWithParts } from '../browser/stores/sync-store.js';
|
|
4
3
|
export { loadSessionTranscriptMessages };
|
|
5
4
|
type FileDiff = Omit<import('@opencode-ai/sdk/v2/client').SnapshotFileDiff, 'patch'> & {
|
|
6
5
|
patch?: string;
|
|
@@ -24,7 +23,7 @@ interface UseSessionSyncOptions {
|
|
|
24
23
|
networkEnabled?: boolean;
|
|
25
24
|
}
|
|
26
25
|
export declare function useSessionSync(sessionId: string, options?: UseSessionSyncOptions): {
|
|
27
|
-
messages: MessageWithParts[];
|
|
26
|
+
messages: import("../internal/sync-store.js").MessageWithParts[];
|
|
28
27
|
status: SessionStatus;
|
|
29
28
|
freshness: import("../core/session-sync/session-sync-controller.js").SessionSyncFreshness;
|
|
30
29
|
isBusy: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-session-sync.d.ts","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"use-session-sync.d.ts","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAQtE,OAAO,EAEL,6BAA6B,EAG9B,MAAM,+CAA+C,CAAC;AAYvD,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAEzC,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,4BAA4B,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAOF;;;GAGG;AACH,UAAU,qBAAqB;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;;;;;;;;;;;EA+IpF"}
|
|
@@ -8,44 +8,10 @@ import { useSyncStore } from '../browser/stores/sync-store.js';
|
|
|
8
8
|
import { useCurrentRuntime } from './use-current-runtime.js';
|
|
9
9
|
import { canQueryOpenCodeSession } from './use-opencode-sessions/index.js';
|
|
10
10
|
export { loadSessionTranscriptMessages };
|
|
11
|
-
const EMPTY_MESSAGES = [];
|
|
12
11
|
const EMPTY_DIFFS = [];
|
|
13
12
|
const EMPTY_TODOS = [];
|
|
14
13
|
const IDLE_STATUS = { type: 'idle' };
|
|
15
14
|
const BUSY_STATUS = { type: 'busy' };
|
|
16
|
-
const MESSAGE_CACHE_MAX = 20;
|
|
17
|
-
const messageCache = new Map();
|
|
18
|
-
function touchMessageCache(sessionId) {
|
|
19
|
-
const entry = messageCache.get(sessionId);
|
|
20
|
-
if (entry) {
|
|
21
|
-
messageCache.delete(sessionId);
|
|
22
|
-
messageCache.set(sessionId, entry);
|
|
23
|
-
}
|
|
24
|
-
if (messageCache.size > MESSAGE_CACHE_MAX) {
|
|
25
|
-
const oldest = messageCache.keys().next().value;
|
|
26
|
-
if (oldest)
|
|
27
|
-
messageCache.delete(oldest);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function buildMessages(sessionId, msgs, parts) {
|
|
31
|
-
if (!msgs || msgs.length === 0)
|
|
32
|
-
return EMPTY_MESSAGES;
|
|
33
|
-
const cached = messageCache.get(sessionId);
|
|
34
|
-
if (cached && cached.msgs === msgs) {
|
|
35
|
-
const same = cached.partRefs.length === msgs.length &&
|
|
36
|
-
msgs.every((message, index) => Object.is(parts[message.id], cached.partRefs[index]));
|
|
37
|
-
if (same)
|
|
38
|
-
return cached.result;
|
|
39
|
-
}
|
|
40
|
-
const partRefs = msgs.map((message) => parts[message.id]);
|
|
41
|
-
const result = msgs.map((info) => ({
|
|
42
|
-
info,
|
|
43
|
-
parts: parts[info.id] ?? [],
|
|
44
|
-
}));
|
|
45
|
-
messageCache.set(sessionId, { msgs, partRefs, result });
|
|
46
|
-
touchMessageCache(sessionId);
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
15
|
export function useSessionSync(sessionId, options = {}) {
|
|
50
16
|
const { kortixSessionScope, networkEnabled = true } = options;
|
|
51
17
|
const runtimeHealthy = useSandboxConnectionStore((state) => state.healthy === true);
|
|
@@ -56,6 +22,20 @@ export function useSessionSync(sessionId, options = {}) {
|
|
|
56
22
|
const readableSessionId = cacheBelongsToAnotherRuntime ? '' : sessionId;
|
|
57
23
|
const controller = getSessionSyncController(sessionId, undefined, runtimeScope);
|
|
58
24
|
const sync = useSyncExternalStore(controller.subscribe, controller.getSnapshot, controller.getSnapshot);
|
|
25
|
+
// Reference-count the mounted consumers of this session's transcript so the
|
|
26
|
+
// store can free it once the last one is gone — without this, every session
|
|
27
|
+
// opened in the tab stays resident for the tab's lifetime.
|
|
28
|
+
//
|
|
29
|
+
// Deliberately NOT folded into the `retainSessionSyncController` call below.
|
|
30
|
+
// That hold is also gated on `networkEnabled` + `runtimeHealthy`, and a
|
|
31
|
+
// session read while its sandbox is still booting is precisely the case the
|
|
32
|
+
// disk paint exists for: eviction there would blank the transcript the user
|
|
33
|
+
// is looking at. Consumers are consumers whether or not the runtime is up.
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (!canQueryOpenCodeSession(sessionId))
|
|
36
|
+
return;
|
|
37
|
+
return useSyncStore.getState().retainSession(sessionId);
|
|
38
|
+
}, [sessionId]);
|
|
59
39
|
useEffect(() => {
|
|
60
40
|
if (!canQueryOpenCodeSession(sessionId) || !cacheOwnerScope)
|
|
61
41
|
return;
|
|
@@ -65,7 +45,6 @@ export function useSessionSync(sessionId, options = {}) {
|
|
|
65
45
|
}
|
|
66
46
|
resetSessionSyncControllersForSession(sessionId, runtimeScope === 'none' ? undefined : runtimeScope);
|
|
67
47
|
useSyncStore.getState().clearSession(sessionId);
|
|
68
|
-
messageCache.delete(sessionId);
|
|
69
48
|
}, [cacheOwnerScope, runtimeScope, sessionId]);
|
|
70
49
|
// Paint from disk FIRST, and deliberately without waiting on `runtimeHealthy`.
|
|
71
50
|
// The transcript is settled history; gating it on a woken sandbox is what made
|
|
@@ -83,6 +62,7 @@ export function useSessionSync(sessionId, options = {}) {
|
|
|
83
62
|
const store = useSyncStore.getState();
|
|
84
63
|
if (!shouldHydrateFromCache({
|
|
85
64
|
storeHasSession: sessionId in store.messages,
|
|
65
|
+
storeSessionWasEvicted: store.wasTranscriptEvicted(sessionId),
|
|
86
66
|
cachedMessageCount: cached.messages.length,
|
|
87
67
|
})) {
|
|
88
68
|
return;
|
|
@@ -104,10 +84,7 @@ export function useSessionSync(sessionId, options = {}) {
|
|
|
104
84
|
// Cached messages render immediately. Revalidate one bounded tail so
|
|
105
85
|
// events produced while this route was inactive are not skipped.
|
|
106
86
|
void controller.reconcile('initial');
|
|
107
|
-
return
|
|
108
|
-
release();
|
|
109
|
-
messageCache.delete(sessionId);
|
|
110
|
-
};
|
|
87
|
+
return release;
|
|
111
88
|
}, [controller, networkEnabled, runtimeHealthy, runtimeScope, sessionId]);
|
|
112
89
|
// Mirror the tail back to disk as it changes, so the NEXT open of this session
|
|
113
90
|
// has something to paint. Subscribing to the store (rather than reacting to
|
|
@@ -131,7 +108,7 @@ export function useSessionSync(sessionId, options = {}) {
|
|
|
131
108
|
persist(useSyncStore.getState());
|
|
132
109
|
return useSyncStore.subscribe(persist);
|
|
133
110
|
}, [kortixSessionScope, sessionId]);
|
|
134
|
-
const messages = useSyncStore((state) =>
|
|
111
|
+
const messages = useSyncStore((state) => state.buildSessionMessages(readableSessionId, state.messages[readableSessionId], state.parts));
|
|
135
112
|
const runtimeStatus = useSyncStore((state) => state.sessionStatus[readableSessionId] ?? IDLE_STATUS);
|
|
136
113
|
const status = sync.isPromptObservedBusy && runtimeStatus.type === 'idle' ? BUSY_STATUS : runtimeStatus;
|
|
137
114
|
const diffs = useSyncStore((state) => state.diffs[readableSessionId]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-session-sync.js","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qCAAqC,EACrC,2BAA2B,GAC5B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,
|
|
1
|
+
{"version":3,"file":"use-session-sync.js","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qCAAqC,EACrC,2BAA2B,GAC5B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAQzC,MAAM,WAAW,GAAe,EAAE,CAAC;AACnC,MAAM,WAAW,GAAW,EAAE,CAAC;AAC/B,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;AACtD,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;AAmBtD,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,UAAiC,EAAE;IACnF,MAAM,EAAE,kBAAkB,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC9D,MAAM,cAAc,GAAG,yBAAyB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;IAC7E,MAAM,eAAe,GAAG,6BAA6B,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACxF,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,4BAA4B,GAChC,CAAC,CAAC,SAAS,IAAI,+BAA+B,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAChF,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,UAAU,GAAG,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,oBAAoB,CAC/B,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,WAAW,CACvB,CAAC;IAEF,4EAA4E;IAC5E,4EAA4E;IAC5E,2DAA2D;IAC3D,EAAE;IACF,6EAA6E;IAC7E,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;YAAE,OAAO;QAChD,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QACpE,MAAM,KAAK,GAAG,0BAA0B,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,kBAAkB,EAAE,eAAe,CAAC,EAAE,CAAC;YAChF,OAAO;QACT,CAAC;QACD,qCAAqC,CACnC,SAAS,EACT,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CACnD,CAAC;QACF,YAAY,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IAE/C,+EAA+E;IAC/E,+EAA+E;IAC/E,2EAA2E;IAC3E,+EAA+E;IAC/E,gFAAgF;IAChF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;YAAE,OAAO;QAChD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;YACzE,IAAI,SAAS,IAAI,CAAC,MAAM;gBAAE,OAAO;YACjC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,IACE,CAAC,sBAAsB,CAAC;gBACtB,eAAe,EAAE,SAAS,IAAI,KAAK,CAAC,QAAQ;gBAC5C,sBAAsB,EAAE,KAAK,CAAC,oBAAoB,CAAC,SAAS,CAAC;gBAC7D,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;aAC3C,CAAC,EACF,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,IACE,CAAC,cAAc;YACf,CAAC,uBAAuB,CAAC,SAAS,CAAC;YACnC,CAAC,cAAc;YACf,YAAY,KAAK,MAAM;YAEvB,OAAO;QACT,qCAAqC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,2BAA2B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACrE,qEAAqE;QACrE,iEAAiE;QACjE,KAAK,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1E,+EAA+E;IAC/E,4EAA4E;IAC5E,8EAA8E;IAC9E,yEAAyE;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;YAAE,OAAO;QAChD,IAAI,YAAqB,CAAC;QAC1B,IAAI,SAAkB,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,KAAoC,EAAE,EAAE;YACvD,yEAAyE;YACzE,sEAAsE;YACtE,qDAAqD;YACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,YAAY,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO;YACpF,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACzC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,KAAK,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,OAAO,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpC,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,CACtC,KAAK,CAAC,oBAAoB,CACxB,iBAAiB,EACjB,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EACjC,KAAK,CAAC,KAAK,CACZ,CACF,CAAC;IAEF,MAAM,aAAa,GAAG,YAAY,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,WAAW,CAChD,CAAC;IACnB,MAAM,MAAM,GACV,IAAI,CAAC,oBAAoB,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAC3F,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAA2B,CAAC;IAChG,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAuB,CAAC;IAE5F,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;IACjE,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEhF,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,CAAC,cAAc,IAAI,cAAc,IAAI,MAAM,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;IAEzD,OAAO;QACL,QAAQ;QACR,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM;QACN,SAAS;QACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,KAAK,EAAE,KAAK,IAAI,WAAW;QAC3B,KAAK,EAAE,KAAK,IAAI,WAAW;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-session.d.ts","sourceRoot":"","sources":["../../src/react/use-session.ts"],"names":[],"mappings":"AA4CA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAqB,MAAM,yBAAyB,CAAC;AAK1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAYlD,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAGjC,gEAAgE;AAChE,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAQ1D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAKT;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,GAAG,KAAK,CAMhB;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;sCACZ;QACvB,KAAK,EAAE;YACL,KAAK,EAAE,OAAO,CAAC;YACf,IAAI,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;SAC7C,CAAC;KACH;;CAEO,CAAC;AAQX,oFAAoF;AACpF,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,WAAW,GACX,mBAAmB,GACnB,eAAe,CAAC;AAEpB,wEAAwE;AACxE,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,sBAAsB,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5C;AAED;2DAC2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACxC;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"use-session.d.ts","sourceRoot":"","sources":["../../src/react/use-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -149,36 +149,38 @@ function errorBodyMessage(error) {
|
|
|
149
149
|
return null;
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
152
|
-
* The
|
|
152
|
+
* The connectors a `CONNECTOR_CONNECTION_REQUIRED` refusal names, or
|
|
153
153
|
* null when this is not that refusal.
|
|
154
154
|
*
|
|
155
155
|
* Keyed on the CODE, never on the message: the prose is for humans and changes.
|
|
156
|
-
* A refusal that names no
|
|
156
|
+
* A refusal that names no connection still returns null — a connector prompt that
|
|
157
157
|
* cannot say which connector is worse than the generic error it replaced.
|
|
158
158
|
*/
|
|
159
|
-
function
|
|
159
|
+
function connectorRefusalConnections(error) {
|
|
160
160
|
const body = errorBody(error);
|
|
161
|
-
if (body?.code !== '
|
|
161
|
+
if (body?.code !== 'CONNECTOR_CONNECTION_REQUIRED')
|
|
162
162
|
return null;
|
|
163
|
-
const listed = [body.
|
|
164
|
-
const
|
|
163
|
+
const listed = [body.connector_connections, body.connectorConnections].find(Array.isArray);
|
|
164
|
+
const connections = [];
|
|
165
165
|
for (const entry of listed ?? []) {
|
|
166
166
|
if (!entry || typeof entry !== 'object')
|
|
167
167
|
continue;
|
|
168
|
-
const
|
|
169
|
-
const strategy =
|
|
170
|
-
if (typeof
|
|
168
|
+
const connection = entry;
|
|
169
|
+
const strategy = connection.authorization_strategy ?? connection.authorizationStrategy;
|
|
170
|
+
if (typeof connection.id !== 'string' || typeof connection.slug !== 'string')
|
|
171
171
|
continue;
|
|
172
172
|
if (strategy !== 'project' && strategy !== 'user')
|
|
173
173
|
continue;
|
|
174
|
-
|
|
175
|
-
id:
|
|
176
|
-
slug:
|
|
177
|
-
name: typeof
|
|
174
|
+
connections.push({
|
|
175
|
+
id: connection.id,
|
|
176
|
+
slug: connection.slug,
|
|
177
|
+
name: typeof connection.name === 'string' && connection.name
|
|
178
|
+
? connection.name
|
|
179
|
+
: connection.slug,
|
|
178
180
|
authorization_strategy: strategy,
|
|
179
181
|
});
|
|
180
182
|
}
|
|
181
|
-
return
|
|
183
|
+
return connections.length > 0 ? connections : null;
|
|
182
184
|
}
|
|
183
185
|
/** Classify a thrown/rejected error from a send or a permission/question reply
|
|
184
186
|
* into a `KortixSendError`. Pure — safe to unit test without a runtime. */
|
|
@@ -196,12 +198,12 @@ export function classifySendError(error) {
|
|
|
196
198
|
if (parsed instanceof BillingError) {
|
|
197
199
|
return { kind: 'billing', message: parsed.message, billing: parsed, cause: error };
|
|
198
200
|
}
|
|
199
|
-
const connectors =
|
|
201
|
+
const connectors = connectorRefusalConnections(error);
|
|
200
202
|
if (connectors) {
|
|
201
203
|
return {
|
|
202
204
|
kind: 'connector',
|
|
203
205
|
message: errorBodyMessage(error) ??
|
|
204
|
-
'Connect the required
|
|
206
|
+
'Connect the required connectors before continuing this session.',
|
|
205
207
|
connectors,
|
|
206
208
|
cause: error,
|
|
207
209
|
};
|