@kortix/sdk 0.10.16 → 0.12.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 +114 -62
- package/dist/browser/cache/idb-sync-cache-key.d.ts +2 -0
- package/dist/browser/cache/idb-sync-cache-key.d.ts.map +1 -0
- package/dist/browser/cache/idb-sync-cache-key.js +7 -0
- package/dist/browser/cache/idb-sync-cache-key.js.map +1 -0
- package/dist/browser/cache/idb-sync-cache.d.ts +3 -3
- package/dist/browser/cache/idb-sync-cache.d.ts.map +1 -1
- package/dist/browser/cache/idb-sync-cache.js +49 -26
- package/dist/browser/cache/idb-sync-cache.js.map +1 -1
- package/dist/browser/session-sync/session-cache-ownership.d.ts +36 -0
- package/dist/browser/session-sync/session-cache-ownership.d.ts.map +1 -0
- package/dist/browser/session-sync/session-cache-ownership.js +66 -0
- package/dist/browser/session-sync/session-cache-ownership.js.map +1 -0
- package/dist/browser/session-sync/session-sync-registry.d.ts +9 -4
- package/dist/browser/session-sync/session-sync-registry.d.ts.map +1 -1
- package/dist/browser/session-sync/session-sync-registry.js +111 -29
- package/dist/browser/session-sync/session-sync-registry.js.map +1 -1
- package/dist/browser/session-sync/session-transcript-cache.d.ts +55 -0
- package/dist/browser/session-sync/session-transcript-cache.d.ts.map +1 -0
- package/dist/browser/session-sync/session-transcript-cache.js +69 -0
- package/dist/browser/session-sync/session-transcript-cache.js.map +1 -0
- package/dist/core/client/kortix.d.ts +198 -24
- package/dist/core/client/kortix.d.ts.map +1 -1
- package/dist/core/client/kortix.js +112 -20
- package/dist/core/client/kortix.js.map +1 -1
- package/dist/core/http/api-client.d.ts.map +1 -1
- package/dist/core/http/api-client.js +48 -68
- package/dist/core/http/api-client.js.map +1 -1
- package/dist/core/rest/platform-client/host-boundary.d.ts +121 -0
- package/dist/core/rest/platform-client/host-boundary.d.ts.map +1 -0
- package/dist/core/rest/platform-client/host-boundary.js +243 -0
- package/dist/core/rest/platform-client/host-boundary.js.map +1 -0
- package/dist/core/rest/platform-client/index.d.ts +1 -0
- package/dist/core/rest/platform-client/index.d.ts.map +1 -1
- package/dist/core/rest/platform-client/index.js +1 -0
- package/dist/core/rest/platform-client/index.js.map +1 -1
- package/dist/core/rest/projects-client/access.d.ts +1 -2
- package/dist/core/rest/projects-client/access.d.ts.map +1 -1
- package/dist/core/rest/projects-client/access.js +9 -6
- package/dist/core/rest/projects-client/access.js.map +1 -1
- package/dist/core/rest/projects-client/account-lifecycle.d.ts +22 -0
- package/dist/core/rest/projects-client/account-lifecycle.d.ts.map +1 -0
- package/dist/core/rest/projects-client/account-lifecycle.js +26 -0
- package/dist/core/rest/projects-client/account-lifecycle.js.map +1 -0
- package/dist/core/rest/projects-client/admin-providers.d.ts +10 -0
- package/dist/core/rest/projects-client/admin-providers.d.ts.map +1 -0
- package/dist/core/rest/projects-client/admin-providers.js +34 -0
- package/dist/core/rest/projects-client/admin-providers.js.map +1 -0
- package/dist/core/rest/projects-client/agent-config.d.ts +17 -2
- package/dist/core/rest/projects-client/agent-config.d.ts.map +1 -1
- package/dist/core/rest/projects-client/agent-config.js +43 -2
- package/dist/core/rest/projects-client/agent-config.js.map +1 -1
- package/dist/core/rest/projects-client/agent-scope.d.ts +4 -0
- package/dist/core/rest/projects-client/agent-scope.d.ts.map +1 -1
- package/dist/core/rest/projects-client/agent-scope.js +34 -1
- package/dist/core/rest/projects-client/agent-scope.js.map +1 -1
- package/dist/core/rest/projects-client/audit.d.ts +34 -0
- package/dist/core/rest/projects-client/audit.d.ts.map +1 -1
- package/dist/core/rest/projects-client/audit.js +49 -4
- package/dist/core/rest/projects-client/audit.js.map +1 -1
- package/dist/core/rest/projects-client/billing.d.ts +101 -0
- package/dist/core/rest/projects-client/billing.d.ts.map +1 -1
- package/dist/core/rest/projects-client/billing.js +42 -0
- package/dist/core/rest/projects-client/billing.js.map +1 -1
- package/dist/core/rest/projects-client/channels.d.ts +8 -27
- package/dist/core/rest/projects-client/channels.d.ts.map +1 -1
- package/dist/core/rest/projects-client/channels.js +12 -23
- package/dist/core/rest/projects-client/channels.js.map +1 -1
- package/dist/core/rest/projects-client/connectors.d.ts +234 -24
- package/dist/core/rest/projects-client/connectors.d.ts.map +1 -1
- package/dist/core/rest/projects-client/connectors.js +114 -15
- package/dist/core/rest/projects-client/connectors.js.map +1 -1
- package/dist/core/rest/projects-client/gateway.d.ts +1 -0
- package/dist/core/rest/projects-client/gateway.d.ts.map +1 -1
- package/dist/core/rest/projects-client/gateway.js.map +1 -1
- package/dist/core/rest/projects-client/iam.d.ts +509 -0
- package/dist/core/rest/projects-client/iam.d.ts.map +1 -0
- package/dist/core/rest/projects-client/iam.js +301 -0
- package/dist/core/rest/projects-client/iam.js.map +1 -0
- package/dist/core/rest/projects-client/index.d.ts +7 -0
- package/dist/core/rest/projects-client/index.d.ts.map +1 -1
- package/dist/core/rest/projects-client/index.js +7 -0
- package/dist/core/rest/projects-client/index.js.map +1 -1
- package/dist/core/rest/projects-client/marketplace-catalog.d.ts +9 -2
- package/dist/core/rest/projects-client/marketplace-catalog.d.ts.map +1 -1
- package/dist/core/rest/projects-client/marketplace-catalog.js +7 -0
- package/dist/core/rest/projects-client/marketplace-catalog.js.map +1 -1
- package/dist/core/rest/projects-client/policies.d.ts +18 -0
- package/dist/core/rest/projects-client/policies.d.ts.map +1 -1
- package/dist/core/rest/projects-client/policies.js.map +1 -1
- package/dist/core/rest/projects-client/presentations.d.ts +12 -0
- package/dist/core/rest/projects-client/presentations.d.ts.map +1 -0
- package/dist/core/rest/projects-client/presentations.js +9 -0
- package/dist/core/rest/projects-client/presentations.js.map +1 -0
- package/dist/core/rest/projects-client/projects.d.ts +62 -10
- package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
- package/dist/core/rest/projects-client/projects.js +14 -7
- package/dist/core/rest/projects-client/projects.js.map +1 -1
- package/dist/core/rest/projects-client/public-voice-join.d.ts +59 -0
- package/dist/core/rest/projects-client/public-voice-join.d.ts.map +1 -0
- package/dist/core/rest/projects-client/public-voice-join.js +64 -0
- package/dist/core/rest/projects-client/public-voice-join.js.map +1 -0
- package/dist/core/rest/projects-client/referrals.d.ts +53 -0
- package/dist/core/rest/projects-client/referrals.d.ts.map +1 -0
- package/dist/core/rest/projects-client/referrals.js +27 -0
- package/dist/core/rest/projects-client/referrals.js.map +1 -0
- package/dist/core/rest/projects-client/sandbox.d.ts +50 -0
- package/dist/core/rest/projects-client/sandbox.d.ts.map +1 -1
- package/dist/core/rest/projects-client/sandbox.js.map +1 -1
- package/dist/core/rest/projects-client/session-costs.d.ts +102 -0
- package/dist/core/rest/projects-client/session-costs.d.ts.map +1 -0
- package/dist/core/rest/projects-client/session-costs.js +25 -0
- package/dist/core/rest/projects-client/session-costs.js.map +1 -0
- package/dist/core/rest/projects-client/session-sandbox.d.ts.map +1 -1
- package/dist/core/rest/projects-client/session-sandbox.js +1 -0
- package/dist/core/rest/projects-client/session-sandbox.js.map +1 -1
- package/dist/core/rest/projects-client/sessions.d.ts +143 -18
- package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
- package/dist/core/rest/projects-client/sessions.js +43 -1
- package/dist/core/rest/projects-client/sessions.js.map +1 -1
- package/dist/core/rest/projects-client/setup-links.d.ts +37 -0
- package/dist/core/rest/projects-client/setup-links.d.ts.map +1 -1
- package/dist/core/rest/projects-client/setup-links.js +11 -0
- package/dist/core/rest/projects-client/setup-links.js.map +1 -1
- package/dist/core/session/index.d.ts +2 -0
- package/dist/core/session/index.d.ts.map +1 -1
- package/dist/core/session/index.js +2 -0
- package/dist/core/session/index.js.map +1 -1
- package/dist/core/session/presentation.d.ts +12 -0
- package/dist/core/session/presentation.d.ts.map +1 -0
- package/dist/core/session/presentation.js +70 -0
- package/dist/core/session/presentation.js.map +1 -0
- package/dist/core/session/preview-auth.d.ts +32 -0
- package/dist/core/session/preview-auth.d.ts.map +1 -0
- package/dist/core/session/preview-auth.js +53 -0
- package/dist/core/session/preview-auth.js.map +1 -0
- package/dist/core/session/rewind.d.ts +18 -0
- package/dist/core/session/rewind.d.ts.map +1 -0
- package/dist/core/session/rewind.js +17 -0
- package/dist/core/session/rewind.js.map +1 -0
- package/dist/core/session/server-store/url-helpers.d.ts.map +1 -1
- package/dist/core/session/server-store/url-helpers.js +5 -3
- package/dist/core/session/server-store/url-helpers.js.map +1 -1
- package/dist/core/session/url.d.ts +43 -0
- package/dist/core/session/url.d.ts.map +1 -1
- package/dist/core/session/url.js +81 -0
- package/dist/core/session/url.js.map +1 -1
- package/dist/core/session-sync/session-sync-controller.d.ts +40 -1
- package/dist/core/session-sync/session-sync-controller.d.ts.map +1 -1
- package/dist/core/session-sync/session-sync-controller.js +161 -6
- package/dist/core/session-sync/session-sync-controller.js.map +1 -1
- package/dist/core/stream/fetch-sse.d.ts +23 -0
- package/dist/core/stream/fetch-sse.d.ts.map +1 -0
- package/dist/core/stream/fetch-sse.js +119 -0
- package/dist/core/stream/fetch-sse.js.map +1 -0
- package/dist/core/turns/state.d.ts.map +1 -1
- package/dist/core/turns/state.js +11 -4
- package/dist/core/turns/state.js.map +1 -1
- package/dist/core/turns/types.d.ts +6 -0
- package/dist/core/turns/types.d.ts.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/kortix.esm.min.js +19 -16
- package/dist/kortix.global.js +19 -16
- package/dist/node/server.d.ts +14 -0
- package/dist/node/server.d.ts.map +1 -1
- package/dist/node/server.js +42 -0
- package/dist/node/server.js.map +1 -1
- package/dist/react/agent-selection-scope.d.ts +8 -0
- package/dist/react/agent-selection-scope.d.ts.map +1 -0
- package/dist/react/agent-selection-scope.js +4 -0
- package/dist/react/agent-selection-scope.js.map +1 -0
- package/dist/react/index.d.ts +12 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +12 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/initial-session-pin.d.ts +8 -0
- package/dist/react/initial-session-pin.d.ts.map +1 -0
- package/dist/react/initial-session-pin.js +4 -0
- package/dist/react/initial-session-pin.js.map +1 -0
- package/dist/react/model-flatten.d.ts +8 -0
- package/dist/react/model-flatten.d.ts.map +1 -1
- package/dist/react/model-flatten.js +1 -0
- package/dist/react/model-flatten.js.map +1 -1
- package/dist/react/opencode.d.ts +25 -2
- package/dist/react/opencode.d.ts.map +1 -1
- package/dist/react/opencode.js +24 -1
- package/dist/react/opencode.js.map +1 -1
- package/dist/react/provider-selection.d.ts +1 -0
- package/dist/react/provider-selection.d.ts.map +1 -1
- package/dist/react/provider-selection.js +22 -0
- package/dist/react/provider-selection.js.map +1 -1
- package/dist/react/run-pty-command.d.ts +5 -0
- package/dist/react/run-pty-command.d.ts.map +1 -0
- package/dist/react/run-pty-command.js +42 -0
- package/dist/react/run-pty-command.js.map +1 -0
- package/dist/react/runtime-actions.d.ts +51 -0
- package/dist/react/runtime-actions.d.ts.map +1 -0
- package/dist/react/runtime-actions.js +105 -0
- package/dist/react/runtime-actions.js.map +1 -0
- package/dist/react/session-agent-name-guard.d.ts +16 -0
- package/dist/react/session-agent-name-guard.d.ts.map +1 -0
- package/dist/react/session-agent-name-guard.js +22 -0
- package/dist/react/session-agent-name-guard.js.map +1 -0
- package/dist/react/session-title-sync.d.ts +23 -0
- package/dist/react/session-title-sync.d.ts.map +1 -0
- package/dist/react/session-title-sync.js +85 -0
- package/dist/react/session-title-sync.js.map +1 -0
- package/dist/react/use-admin-accounts.d.ts +122 -0
- package/dist/react/use-admin-accounts.d.ts.map +1 -0
- package/dist/react/use-admin-accounts.js +146 -0
- package/dist/react/use-admin-accounts.js.map +1 -0
- package/dist/react/use-admin-analytics.d.ts +332 -0
- package/dist/react/use-admin-analytics.d.ts.map +1 -0
- package/dist/react/use-admin-analytics.js +518 -0
- package/dist/react/use-admin-analytics.js.map +1 -0
- package/dist/react/use-admin-billing.d.ts +27 -0
- package/dist/react/use-admin-billing.d.ts.map +1 -0
- package/dist/react/use-admin-billing.js +61 -0
- package/dist/react/use-admin-billing.js.map +1 -0
- package/dist/react/use-admin-feedback.d.ts +119 -0
- package/dist/react/use-admin-feedback.d.ts.map +1 -0
- package/dist/react/use-admin-feedback.js +148 -0
- package/dist/react/use-admin-feedback.js.map +1 -0
- package/dist/react/use-admin-sandboxes.d.ts +157 -0
- package/dist/react/use-admin-sandboxes.d.ts.map +1 -0
- package/dist/react/use-admin-sandboxes.js +145 -0
- package/dist/react/use-admin-sandboxes.js.map +1 -0
- package/dist/react/use-authenticated-preview-url.d.ts +24 -0
- package/dist/react/use-authenticated-preview-url.d.ts.map +1 -0
- package/dist/react/use-authenticated-preview-url.js +137 -0
- package/dist/react/use-authenticated-preview-url.js.map +1 -0
- package/dist/react/use-canonical-opencode-session.d.ts +4 -0
- package/dist/react/use-canonical-opencode-session.d.ts.map +1 -1
- package/dist/react/use-canonical-opencode-session.js +9 -4
- package/dist/react/use-canonical-opencode-session.js.map +1 -1
- package/dist/react/use-model-defaults.d.ts +22 -0
- package/dist/react/use-model-defaults.d.ts.map +1 -0
- package/dist/react/use-model-defaults.js +104 -0
- package/dist/react/use-model-defaults.js.map +1 -0
- package/dist/react/use-model-store.d.ts +6 -14
- package/dist/react/use-model-store.d.ts.map +1 -1
- package/dist/react/use-model-store.js +41 -52
- package/dist/react/use-model-store.js.map +1 -1
- package/dist/react/use-opencode-events/handle-event.d.ts.map +1 -1
- package/dist/react/use-opencode-events/handle-event.js +103 -41
- package/dist/react/use-opencode-events/handle-event.js.map +1 -1
- package/dist/react/use-opencode-events/index.d.ts +3 -1
- package/dist/react/use-opencode-events/index.d.ts.map +1 -1
- package/dist/react/use-opencode-events/index.js +6 -2
- package/dist/react/use-opencode-events/index.js.map +1 -1
- package/dist/react/use-opencode-local.d.ts.map +1 -1
- package/dist/react/use-opencode-local.js +10 -1
- package/dist/react/use-opencode-local.js.map +1 -1
- package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/agents.js +5 -3
- package/dist/react/use-opencode-sessions/agents.js.map +1 -1
- package/dist/react/use-opencode-sessions/commands.d.ts +7 -2
- package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/commands.js +13 -9
- package/dist/react/use-opencode-sessions/commands.js.map +1 -1
- package/dist/react/use-opencode-sessions/keys.d.ts +3 -1
- package/dist/react/use-opencode-sessions/keys.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/keys.js +2 -0
- package/dist/react/use-opencode-sessions/keys.js.map +1 -1
- package/dist/react/use-opencode-sessions/provider-load-plan.d.ts +6 -0
- package/dist/react/use-opencode-sessions/provider-load-plan.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/provider-load-plan.js +4 -0
- package/dist/react/use-opencode-sessions/provider-load-plan.js.map +1 -0
- package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/providers.js +39 -27
- package/dist/react/use-opencode-sessions/providers.js.map +1 -1
- package/dist/react/use-opencode-sessions/sessions.d.ts +1 -1
- package/dist/react/use-opencode-sessions/sessions.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/sessions.js +18 -9
- package/dist/react/use-opencode-sessions/sessions.js.map +1 -1
- package/dist/react/use-opencode-sessions/shared.d.ts +3 -2
- package/dist/react/use-opencode-sessions/shared.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/shared.js +6 -3
- package/dist/react/use-opencode-sessions/shared.js.map +1 -1
- package/dist/react/use-opencode-sessions/sharing.js +2 -2
- package/dist/react/use-opencode-sessions/sharing.js.map +1 -1
- package/dist/react/use-ops-overview.d.ts +64 -0
- package/dist/react/use-ops-overview.d.ts.map +1 -0
- package/dist/react/use-ops-overview.js +16 -0
- package/dist/react/use-ops-overview.js.map +1 -0
- package/dist/react/use-session-model-selection.d.ts +15 -0
- package/dist/react/use-session-model-selection.d.ts.map +1 -0
- package/dist/react/use-session-model-selection.js +27 -0
- package/dist/react/use-session-model-selection.js.map +1 -0
- package/dist/react/use-session-sync.d.ts +13 -1
- package/dist/react/use-session-sync.d.ts.map +1 -1
- package/dist/react/use-session-sync.js +87 -17
- package/dist/react/use-session-sync.js.map +1 -1
- package/dist/react/use-session.d.ts +72 -1
- package/dist/react/use-session.d.ts.map +1 -1
- package/dist/react/use-session.js +222 -32
- package/dist/react/use-session.js.map +1 -1
- package/dist/react/use-system-status.d.ts +39 -0
- package/dist/react/use-system-status.d.ts.map +1 -0
- package/dist/react/use-system-status.js +68 -0
- package/dist/react/use-system-status.js.map +1 -0
- package/dist/react/use-teams-installations.d.ts +36 -0
- package/dist/react/use-teams-installations.d.ts.map +1 -0
- package/dist/react/use-teams-installations.js +94 -0
- package/dist/react/use-teams-installations.js.map +1 -0
- package/dist/react/use-tunnel.d.ts +120 -0
- package/dist/react/use-tunnel.d.ts.map +1 -0
- package/dist/react/use-tunnel.js +268 -0
- package/dist/react/use-tunnel.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type OpenCodeLocal, type UseOpenCodeLocalOptions } from './use-opencode-local.js';
|
|
2
|
+
import { type UseModelDefaults } from './use-model-defaults.js';
|
|
3
|
+
export interface SessionModelSelection extends OpenCodeLocal {
|
|
4
|
+
model: OpenCodeLocal['model'] & {
|
|
5
|
+
defaults: UseModelDefaults;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Project-aware model and agent selection.
|
|
10
|
+
*
|
|
11
|
+
* The SDK owns the server default and free-tier resolution. Hosts supply only
|
|
12
|
+
* the runtime capabilities and optional explicit overrides.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useSessionModelSelection(options: UseOpenCodeLocalOptions): SessionModelSelection;
|
|
15
|
+
//# sourceMappingURL=use-session-model-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-model-selection.d.ts","sourceRoot":"","sources":["../../src/react/use-session-model-selection.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG;QAC9B,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,uBAAuB,GAC/B,qBAAqB,CAiBvB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useOpenCodeLocal, } from './use-opencode-local.js';
|
|
3
|
+
import { useModelDefaults, } from './use-model-defaults.js';
|
|
4
|
+
import { useKortixRouteProjectId } from './route-project.js';
|
|
5
|
+
/**
|
|
6
|
+
* Project-aware model and agent selection.
|
|
7
|
+
*
|
|
8
|
+
* The SDK owns the server default and free-tier resolution. Hosts supply only
|
|
9
|
+
* the runtime capabilities and optional explicit overrides.
|
|
10
|
+
*/
|
|
11
|
+
export function useSessionModelSelection(options) {
|
|
12
|
+
const projectId = useKortixRouteProjectId();
|
|
13
|
+
const defaults = useModelDefaults(projectId);
|
|
14
|
+
const base = useOpenCodeLocal({
|
|
15
|
+
...options,
|
|
16
|
+
freeTier: options.freeTier ?? defaults.freeTier,
|
|
17
|
+
resolveServerDefault: options.resolveServerDefault ?? defaults.resolveDefaultFor,
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
...base,
|
|
21
|
+
model: {
|
|
22
|
+
...base.model,
|
|
23
|
+
defaults,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=use-session-model-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-model-selection.js","sourceRoot":"","sources":["../../src/react/use-session-model-selection.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EACL,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAQ1D;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAgC;IAEhC,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QAC/C,oBAAoB,EAClB,OAAO,CAAC,oBAAoB,IAAI,QAAQ,CAAC,iBAAiB;KAC7D,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE;YACL,GAAG,IAAI,CAAC,KAAK;YACb,QAAQ;SACT;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -11,7 +11,19 @@ type FileDiff = Omit<import('@opencode-ai/sdk/v2/client').SnapshotFileDiff, 'pat
|
|
|
11
11
|
* Returns the current session tail and explicit history-loading state.
|
|
12
12
|
* Network synchronization lives in the framework-free SessionSyncController.
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
interface UseSessionSyncOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Stable Kortix `(projectId, sessionId)` scope for disk transcript ownership.
|
|
17
|
+
* This prevents equal OpenCode ids in different sandboxes from sharing data.
|
|
18
|
+
*/
|
|
19
|
+
kortixSessionScope?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Allow live REST reconciliation against the current runtime.
|
|
22
|
+
* Set false while `/start` has not switched this Kortix session's sandbox.
|
|
23
|
+
*/
|
|
24
|
+
networkEnabled?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare function useSessionSync(sessionId: string, options?: UseSessionSyncOptions): {
|
|
15
27
|
messages: MessageWithParts[];
|
|
16
28
|
status: SessionStatus;
|
|
17
29
|
freshness: import("../core/session-sync/session-sync-controller.js").SessionSyncFreshness;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-session-sync.d.ts","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,aAAa,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-session-sync.d.ts","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,aAAa,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAQrF,OAAO,EAEL,6BAA6B,EAG9B,MAAM,+CAA+C,CAAC;AAQvD,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,8BAA8B,CAAC;AAInF,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;AAsDF;;;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;;;;;;;;;;;EAgIpF"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useEffect, useSyncExternalStore } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { claimSessionCacheOwnership, getSessionCacheOwnership, resolveSessionCacheOwnerScope, sessionCacheOwnerScopesConflict, } from '../browser/session-sync/session-cache-ownership.js';
|
|
4
|
+
import { getSessionSyncController, loadSessionTranscriptMessages, resetSessionSyncControllersForSession, retainSessionSyncController, } from '../browser/session-sync/session-sync-registry.js';
|
|
5
|
+
import { readCachedTranscript, shouldHydrateFromCache, toHydrateEntries, writeCachedTranscript, } from '../browser/session-sync/session-transcript-cache.js';
|
|
4
6
|
import { useSandboxConnectionStore } from '../browser/stores/sandbox-connection-store.js';
|
|
5
7
|
import { useSyncStore } from '../browser/stores/sync-store.js';
|
|
8
|
+
import { useCurrentRuntime } from './use-current-runtime.js';
|
|
6
9
|
import { canQueryOpenCodeSession } from './use-opencode-sessions/index.js';
|
|
7
10
|
export { loadSessionTranscriptMessages };
|
|
8
11
|
const EMPTY_MESSAGES = [];
|
|
9
12
|
const EMPTY_DIFFS = [];
|
|
10
13
|
const EMPTY_TODOS = [];
|
|
11
14
|
const IDLE_STATUS = { type: 'idle' };
|
|
15
|
+
const BUSY_STATUS = { type: 'busy' };
|
|
12
16
|
const MESSAGE_CACHE_MAX = 20;
|
|
13
17
|
const messageCache = new Map();
|
|
14
18
|
function touchMessageCache(sessionId) {
|
|
@@ -42,18 +46,61 @@ function buildMessages(sessionId, msgs, parts) {
|
|
|
42
46
|
touchMessageCache(sessionId);
|
|
43
47
|
return result;
|
|
44
48
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* Network synchronization lives in the framework-free SessionSyncController.
|
|
48
|
-
*/
|
|
49
|
-
export function useSessionSync(sessionId) {
|
|
49
|
+
export function useSessionSync(sessionId, options = {}) {
|
|
50
|
+
const { kortixSessionScope, networkEnabled = true } = options;
|
|
50
51
|
const runtimeHealthy = useSandboxConnectionStore((state) => state.healthy === true);
|
|
51
|
-
const
|
|
52
|
+
const runtimeScope = useCurrentRuntime((state) => state.sandboxId) ?? 'none';
|
|
53
|
+
const cacheOwnerScope = resolveSessionCacheOwnerScope(runtimeScope, kortixSessionScope);
|
|
54
|
+
const currentOwner = getSessionCacheOwnership(sessionId);
|
|
55
|
+
const cacheBelongsToAnotherRuntime = !!sessionId && sessionCacheOwnerScopesConflict(currentOwner, cacheOwnerScope);
|
|
56
|
+
const readableSessionId = cacheBelongsToAnotherRuntime ? '' : sessionId;
|
|
57
|
+
const controller = getSessionSyncController(sessionId, undefined, runtimeScope);
|
|
52
58
|
const sync = useSyncExternalStore(controller.subscribe, controller.getSnapshot, controller.getSnapshot);
|
|
53
59
|
useEffect(() => {
|
|
54
|
-
if (!canQueryOpenCodeSession(sessionId) || !
|
|
60
|
+
if (!canQueryOpenCodeSession(sessionId) || !cacheOwnerScope)
|
|
55
61
|
return;
|
|
56
|
-
const
|
|
62
|
+
const claim = claimSessionCacheOwnership(sessionId, cacheOwnerScope);
|
|
63
|
+
if (!sessionCacheOwnerScopesConflict(claim.previousOwnerScope, cacheOwnerScope)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
resetSessionSyncControllersForSession(sessionId, runtimeScope === 'none' ? undefined : runtimeScope);
|
|
67
|
+
useSyncStore.getState().clearSession(sessionId);
|
|
68
|
+
messageCache.delete(sessionId);
|
|
69
|
+
}, [cacheOwnerScope, runtimeScope, sessionId]);
|
|
70
|
+
// Paint from disk FIRST, and deliberately without waiting on `runtimeHealthy`.
|
|
71
|
+
// The transcript is settled history; gating it on a woken sandbox is what made
|
|
72
|
+
// opening a hibernated session a blank screen for the length of a VM boot.
|
|
73
|
+
// `shouldHydrateFromCache` keeps this strictly additive — the moment the store
|
|
74
|
+
// holds anything for this session, live data owns it and the cache stands down.
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (!canQueryOpenCodeSession(sessionId))
|
|
77
|
+
return;
|
|
78
|
+
let cancelled = false;
|
|
79
|
+
void (async () => {
|
|
80
|
+
const cached = await readCachedTranscript(sessionId, kortixSessionScope);
|
|
81
|
+
if (cancelled || !cached)
|
|
82
|
+
return;
|
|
83
|
+
const store = useSyncStore.getState();
|
|
84
|
+
if (!shouldHydrateFromCache({
|
|
85
|
+
storeHasSession: sessionId in store.messages,
|
|
86
|
+
cachedMessageCount: cached.messages.length,
|
|
87
|
+
})) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
store.hydrate(sessionId, toHydrateEntries(cached));
|
|
91
|
+
})();
|
|
92
|
+
return () => {
|
|
93
|
+
cancelled = true;
|
|
94
|
+
};
|
|
95
|
+
}, [kortixSessionScope, sessionId]);
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
if (!networkEnabled ||
|
|
98
|
+
!canQueryOpenCodeSession(sessionId) ||
|
|
99
|
+
!runtimeHealthy ||
|
|
100
|
+
runtimeScope === 'none')
|
|
101
|
+
return;
|
|
102
|
+
resetSessionSyncControllersForSession(sessionId, runtimeScope);
|
|
103
|
+
const release = retainSessionSyncController(sessionId, runtimeScope);
|
|
57
104
|
// Cached messages render immediately. Revalidate one bounded tail so
|
|
58
105
|
// events produced while this route was inactive are not skipped.
|
|
59
106
|
void controller.reconcile('initial');
|
|
@@ -61,16 +108,39 @@ export function useSessionSync(sessionId) {
|
|
|
61
108
|
release();
|
|
62
109
|
messageCache.delete(sessionId);
|
|
63
110
|
};
|
|
64
|
-
}, [controller, runtimeHealthy, sessionId]);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
111
|
+
}, [controller, networkEnabled, runtimeHealthy, runtimeScope, sessionId]);
|
|
112
|
+
// Mirror the tail back to disk as it changes, so the NEXT open of this session
|
|
113
|
+
// has something to paint. Subscribing to the store (rather than reacting to
|
|
114
|
+
// rendered output) also captures SSE updates that arrive while the transcript
|
|
115
|
+
// is scrolled out of view. The IDB layer batches these on its own timer.
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
if (!canQueryOpenCodeSession(sessionId))
|
|
118
|
+
return;
|
|
119
|
+
let lastMessages;
|
|
120
|
+
let lastParts;
|
|
121
|
+
const persist = (state) => {
|
|
122
|
+
// The store is shared by every session and also carries status/todos, so
|
|
123
|
+
// most notifications are irrelevant here. Compare the two slices this
|
|
124
|
+
// cache actually mirrors before rebuilding anything.
|
|
125
|
+
if (state.messages[sessionId] === lastMessages && state.parts === lastParts)
|
|
126
|
+
return;
|
|
127
|
+
lastMessages = state.messages[sessionId];
|
|
128
|
+
lastParts = state.parts;
|
|
129
|
+
void writeCachedTranscript(state, sessionId, kortixSessionScope);
|
|
130
|
+
};
|
|
131
|
+
persist(useSyncStore.getState());
|
|
132
|
+
return useSyncStore.subscribe(persist);
|
|
133
|
+
}, [kortixSessionScope, sessionId]);
|
|
134
|
+
const messages = useSyncStore((state) => buildMessages(readableSessionId, state.messages[readableSessionId], state.parts));
|
|
135
|
+
const runtimeStatus = useSyncStore((state) => state.sessionStatus[readableSessionId] ?? IDLE_STATUS);
|
|
136
|
+
const status = sync.isPromptObservedBusy && runtimeStatus.type === 'idle' ? BUSY_STATUS : runtimeStatus;
|
|
137
|
+
const diffs = useSyncStore((state) => state.diffs[readableSessionId]);
|
|
138
|
+
const todos = useSyncStore((state) => state.todos[readableSessionId]);
|
|
69
139
|
const isBusy = status.type === 'busy' || status.type === 'retry';
|
|
70
|
-
const isLoading = !useSyncStore((state) =>
|
|
140
|
+
const isLoading = !useSyncStore((state) => readableSessionId in state.messages);
|
|
71
141
|
useEffect(() => {
|
|
72
|
-
controller.setBusy(runtimeHealthy && isBusy);
|
|
73
|
-
}, [controller, isBusy, runtimeHealthy]);
|
|
142
|
+
controller.setBusy(networkEnabled && runtimeHealthy && isBusy);
|
|
143
|
+
}, [controller, isBusy, networkEnabled, runtimeHealthy]);
|
|
74
144
|
return {
|
|
75
145
|
messages,
|
|
76
146
|
status,
|
|
@@ -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,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAyB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAQzC,MAAM,cAAc,GAAuB,EAAE,CAAC;AAC9C,MAAM,WAAW,GAAe,EAAE,CAAC;AACnC,MAAM,WAAW,GAAW,EAAE,CAAC;AAC/B,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;AACtD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAOzB,CAAC;AAEJ,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,KAAK,EAAE,CAAC;QACV,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAChD,IAAI,MAAM;YAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,SAAiB,EACjB,IAA2B,EAC3B,KAA6B;IAE7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAEtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GACR,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YACtC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;QACJ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;KAC5B,CAAC,CAAC,CAAC;IACJ,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;
|
|
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,EAAyB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAQzC,MAAM,cAAc,GAAuB,EAAE,CAAC;AAC9C,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;AACtD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAOzB,CAAC;AAEJ,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,KAAK,EAAE,CAAC;QACV,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAChD,IAAI,MAAM;YAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,SAAiB,EACjB,IAA2B,EAC3B,KAA6B;IAE7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAEtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GACR,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YACtC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;QACJ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;KAC5B,CAAC,CAAC,CAAC;IACJ,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAmBD,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,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;QAChD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,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,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,GAAG,EAAE;YACV,OAAO,EAAE,CAAC;YACV,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,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,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CACjF,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,5 +1,7 @@
|
|
|
1
|
+
import { type SessionStartResult } from '../core/rest/projects-client/index.js';
|
|
1
2
|
import { BillingError } from '../core/http/api/errors.js';
|
|
2
3
|
import type { ModelKey } from './use-model-store.js';
|
|
4
|
+
import { type PromptPart } from './use-opencode-sessions/index.js';
|
|
3
5
|
/** Coarse session lifecycle for the host's top-level gating. */
|
|
4
6
|
export type SessionPhase = 'starting' | 'ready' | 'error';
|
|
5
7
|
/**
|
|
@@ -10,6 +12,32 @@ export type SessionPhase = 'starting' | 'ready' | 'error';
|
|
|
10
12
|
* SessionStartErrors never retry; transient transport failures retry a few times.
|
|
11
13
|
*/
|
|
12
14
|
export declare function shouldRetrySessionStart(failureCount: number, error: unknown, sessionId: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Gap between `/start` polls. The server long-polls each tick, so this is the
|
|
17
|
+
* pause between holds, not the latency to observe `ready`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const SESSION_START_POLL_MS = 1500;
|
|
20
|
+
/**
|
|
21
|
+
* Should the `/start` boot poll fire again, given the last tick's outcome?
|
|
22
|
+
* `false` = stop: a terminal stage, or a terminal client error that no amount
|
|
23
|
+
* of polling can fix. Everything else keeps polling — including a `null`
|
|
24
|
+
* payload from a transient transport failure, since the box is still coming up.
|
|
25
|
+
*/
|
|
26
|
+
export declare function shouldPollSessionStart(error: unknown, data: SessionStartResult | null | undefined): number | false;
|
|
27
|
+
/**
|
|
28
|
+
* TanStack Query pauses interval fetches while the document is hidden unless
|
|
29
|
+
* this option is true. Session readiness must continue because it gates the
|
|
30
|
+
* runtime switch, event stream, and queued-prompt replay.
|
|
31
|
+
*/
|
|
32
|
+
export declare const SESSION_START_POLL_OPTIONS: {
|
|
33
|
+
readonly refetchInterval: (query: {
|
|
34
|
+
state: {
|
|
35
|
+
error: unknown;
|
|
36
|
+
data: SessionStartResult | null | undefined;
|
|
37
|
+
};
|
|
38
|
+
}) => number | false;
|
|
39
|
+
readonly refetchIntervalInBackground: true;
|
|
40
|
+
};
|
|
13
41
|
/** Discriminant for `KortixSendError` — what kind of failure interrupted a send. */
|
|
14
42
|
export type KortixSendErrorKind = 'billing' | 'runtime-not-ready' | 'runtime-error';
|
|
15
43
|
/** Typed failure surfaced by `send` (via `sendError`) and thrown by
|
|
@@ -48,11 +76,29 @@ export interface SendState {
|
|
|
48
76
|
/** Last send failure, or null. Reset on every new `send` call. */
|
|
49
77
|
sendError: KortixSendError | null;
|
|
50
78
|
}
|
|
79
|
+
export interface SessionCommandOptions {
|
|
80
|
+
agent?: string | null;
|
|
81
|
+
model?: ModelKey | null;
|
|
82
|
+
variant?: string | null;
|
|
83
|
+
}
|
|
84
|
+
export declare function buildSessionCommandInput(sessionId: string, command: string, args: string, options?: SessionCommandOptions): {
|
|
85
|
+
variant?: string | undefined;
|
|
86
|
+
model?: string | undefined;
|
|
87
|
+
agent?: string | undefined;
|
|
88
|
+
sessionId: string;
|
|
89
|
+
command: string;
|
|
90
|
+
args: string;
|
|
91
|
+
};
|
|
51
92
|
/** New state when a send is kicked off — always clears any previous error. */
|
|
52
93
|
export declare function sendStateOnStart(text: string): SendState;
|
|
53
94
|
/** New state when a send fails — drops the optimistic message and classifies
|
|
54
95
|
* the error. */
|
|
55
96
|
export declare function sendStateOnError(error: unknown): SendState;
|
|
97
|
+
export declare function beginRestPromptObservation(sessionId: string, runtimeScope?: string): void;
|
|
98
|
+
export declare function endRestPromptObservation(sessionId: string, runtimeScope?: string): void;
|
|
99
|
+
export declare function sendRestPromptWithObservation(sessionId: string, runtimeScope: string | undefined, sendPrompt: () => Promise<void>): Promise<void>;
|
|
100
|
+
export declare function rewindOpenCodeSession(sessionId: string, messageId: string): Promise<void>;
|
|
101
|
+
export declare function restoreOpenCodeSessionRewind(sessionId: string): Promise<void>;
|
|
56
102
|
/**
|
|
57
103
|
* Answer an agent question through the session's runtime and drop it from
|
|
58
104
|
* local pending state — but only once the server has actually accepted the
|
|
@@ -79,6 +125,11 @@ export interface UseSessionOptions {
|
|
|
79
125
|
* a query `enabled` flag.
|
|
80
126
|
*/
|
|
81
127
|
enabled?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* A server-authorized OpenCode session pin associated with this Kortix
|
|
130
|
+
* session. The `/start` response remains authoritative.
|
|
131
|
+
*/
|
|
132
|
+
initialOpenCodeSessionId?: string | null;
|
|
82
133
|
/**
|
|
83
134
|
* Mount the chat-consumption engine — `useSessionSync` (messages/status/diffs/
|
|
84
135
|
* todos, including its 10s busy-poll SSE-stall fallback) and `useQuestionSelfHeal`
|
|
@@ -108,6 +159,11 @@ export declare function useSession(projectId: string, sessionId: string, options
|
|
|
108
159
|
sessionId: string;
|
|
109
160
|
/** Canonical OpenCode root id, or null while resolving. */
|
|
110
161
|
opencodeSessionId: string | null;
|
|
162
|
+
runtimeTransport: "rest";
|
|
163
|
+
runtimeSessions: import("@opencode-ai/sdk/v2/types").Session[];
|
|
164
|
+
runtimeSessionsLoading: boolean;
|
|
165
|
+
runtimeSessionsListed: boolean;
|
|
166
|
+
runtimeError: unknown;
|
|
111
167
|
messages: import("../internal/sync-store.js").MessageWithParts[];
|
|
112
168
|
status: import("@opencode-ai/sdk/v2/types").SessionStatus;
|
|
113
169
|
questions: import("@opencode-ai/sdk/v2/types").QuestionRequest[];
|
|
@@ -118,6 +174,9 @@ export declare function useSession(projectId: string, sessionId: string, options
|
|
|
118
174
|
after?: string;
|
|
119
175
|
})[];
|
|
120
176
|
todos: import("@opencode-ai/sdk/v2/types").Todo[];
|
|
177
|
+
hasOlder: boolean;
|
|
178
|
+
isLoadingOlder: boolean;
|
|
179
|
+
loadOlder: () => Promise<void>;
|
|
121
180
|
phase: SessionPhase;
|
|
122
181
|
/** Raw /start stage (provisioning|starting|ready|stopped|failed), for boot UI. */
|
|
123
182
|
stage: import("../index.js").SessionStartStage | null;
|
|
@@ -132,6 +191,7 @@ export declare function useSession(projectId: string, sessionId: string, options
|
|
|
132
191
|
/** Granular boot phase (connecting|booting|ready|unreachable) for detailed UI. */
|
|
133
192
|
runtimePhase: import("./use-runtime-phase.js").RuntimePhase;
|
|
134
193
|
isBusy: boolean;
|
|
194
|
+
isCompacting: boolean;
|
|
135
195
|
isLoading: boolean;
|
|
136
196
|
isError: boolean;
|
|
137
197
|
/** Whether there are open interactive prompts (questions/permissions). */
|
|
@@ -145,6 +205,9 @@ export declare function useSession(projectId: string, sessionId: string, options
|
|
|
145
205
|
/** Last `send` failure, typed (billing / runtime-not-ready / runtime-error),
|
|
146
206
|
* or null. Reset on every new `send` call. */
|
|
147
207
|
sendError: KortixSendError | null;
|
|
208
|
+
rewindMessageId: string | null;
|
|
209
|
+
rewindPending: boolean;
|
|
210
|
+
rewindError: KortixSendError | null;
|
|
148
211
|
models: import("./model-flatten.js").FlatModel[];
|
|
149
212
|
agents: import("@opencode-ai/sdk/v2/types").Agent[];
|
|
150
213
|
defaultAgent: string | null;
|
|
@@ -159,8 +222,16 @@ export declare function useSession(projectId: string, sessionId: string, options
|
|
|
159
222
|
agent?: string | null;
|
|
160
223
|
variant?: string | null;
|
|
161
224
|
}) => void;
|
|
225
|
+
sendParts: (parts: PromptPart[], override?: {
|
|
226
|
+
model?: ModelKey | null;
|
|
227
|
+
agent?: string | null;
|
|
228
|
+
variant?: string | null;
|
|
229
|
+
directory?: string | null;
|
|
230
|
+
}) => Promise<void>;
|
|
231
|
+
rewind: (messageId: string) => Promise<void>;
|
|
232
|
+
restoreRewind: () => Promise<void>;
|
|
162
233
|
cancel: () => void;
|
|
163
|
-
runCommand: (command: string, args: string) => void
|
|
234
|
+
runCommand: (command: string, args: string, options?: SessionCommandOptions) => Promise<void>;
|
|
164
235
|
/** Answer an agent question through the server and drop it from pending
|
|
165
236
|
* state on success; throws a `KortixSendError` and leaves it pending on
|
|
166
237
|
* failure. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-session.d.ts","sourceRoot":"","sources":["../../src/react/use-session.ts"],"names":[],"mappings":"
|
|
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,GAAG,SAAS,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAEpF;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;;;;;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;AASD;2EAC2E;AAC3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAuCjE;AAED;;iCAEiC;AACjC,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kEAAkE;IAClE,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B;;;;;;;EAUpC;AAID,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAExD;AAED;gBACgB;AAChB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAE1D;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAGzF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAGvF;AAED,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/F;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AASD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1F;AAED,qFAAqF;AACrF,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrE;AAED,+FAA+F;AAC/F,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EACnC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkBD,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB;;;IAuU7B,2DAA2D;;;;;;;;;;;;;;;;;;;;;IAqB3D,kFAAkF;;IAElF,yFAAyF;;IAEzF,sFAAsF;;IAEtF,+EAA+E;;IAE/E,gFAAgF;;IAEhF,kFAAkF;;;;;;IAMlF,0EAA0E;;IAE1E,gFAAgF;;IAEhF,gDAAgD;;IAEhD,2DAA2D;;IAE3D;kDAC8C;;;;;;;;;;;;;;iBAhJxC,MAAM,aACD;QAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;uBAjC/E,UAAU,EAAE,aACR;QACT,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,KACA,OAAO,CAAC,IAAI,CAAC;wBAgDiB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;yBAoBvB,OAAO,CAAC,IAAI,CAAC;;0BA9BlC,MAAM,QACT,MAAM,YACH,qBAAqB,KAC7B,OAAO,CAAC,IAAI,CAAC;IAoJd;;kBAEc;;IAEd,0EAA0E;;IAE1E,oFAAoF;;IAEpF;;qCAEiC;;IAEjC;;qCAEiC;;IAEjC,0EAA0E;;EAK7E;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC"}
|