@kortix/sdk 0.9.98
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 +313 -0
- package/dist/files/client.d.ts +96 -0
- package/dist/files/client.d.ts.map +1 -0
- package/dist/files/client.js +346 -0
- package/dist/files/client.js.map +1 -0
- package/dist/files/types.d.ts +82 -0
- package/dist/files/types.d.ts.map +1 -0
- package/dist/files/types.js +6 -0
- package/dist/files/types.js.map +1 -0
- package/dist/index.d.ts +119 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/kortix.d.ts +897 -0
- package/dist/kortix.d.ts.map +1 -0
- package/dist/kortix.js +772 -0
- package/dist/kortix.js.map +1 -0
- package/dist/opencode/client.d.ts +89 -0
- package/dist/opencode/client.d.ts.map +1 -0
- package/dist/opencode/client.js +191 -0
- package/dist/opencode/client.js.map +1 -0
- package/dist/opencode/env.d.ts +13 -0
- package/dist/opencode/env.d.ts.map +1 -0
- package/dist/opencode/env.js +63 -0
- package/dist/opencode/env.js.map +1 -0
- package/dist/opencode/kortix-master.d.ts +487 -0
- package/dist/opencode/kortix-master.d.ts.map +1 -0
- package/dist/opencode/kortix-master.js +313 -0
- package/dist/opencode/kortix-master.js.map +1 -0
- package/dist/opencode/triggers.d.ts +6 -0
- package/dist/opencode/triggers.d.ts.map +1 -0
- package/dist/opencode/triggers.js +34 -0
- package/dist/opencode/triggers.js.map +1 -0
- package/dist/platform/api/errors.d.ts +106 -0
- package/dist/platform/api/errors.d.ts.map +1 -0
- package/dist/platform/api/errors.js +137 -0
- package/dist/platform/api/errors.js.map +1 -0
- package/dist/platform/api-client.d.ts +35 -0
- package/dist/platform/api-client.d.ts.map +1 -0
- package/dist/platform/api-client.js +279 -0
- package/dist/platform/api-client.js.map +1 -0
- package/dist/platform/auth-core.d.ts +60 -0
- package/dist/platform/auth-core.d.ts.map +1 -0
- package/dist/platform/auth-core.js +104 -0
- package/dist/platform/auth-core.js.map +1 -0
- package/dist/platform/auth.d.ts +88 -0
- package/dist/platform/auth.d.ts.map +1 -0
- package/dist/platform/auth.js +161 -0
- package/dist/platform/auth.js.map +1 -0
- package/dist/platform/config-node.d.ts +33 -0
- package/dist/platform/config-node.d.ts.map +1 -0
- package/dist/platform/config-node.js +63 -0
- package/dist/platform/config-node.js.map +1 -0
- package/dist/platform/config.d.ts +77 -0
- package/dist/platform/config.d.ts.map +1 -0
- package/dist/platform/config.js +62 -0
- package/dist/platform/config.js.map +1 -0
- package/dist/platform/feature-flags.d.ts +25 -0
- package/dist/platform/feature-flags.d.ts.map +1 -0
- package/dist/platform/feature-flags.js +114 -0
- package/dist/platform/feature-flags.js.map +1 -0
- package/dist/platform/fresh-sessions.d.ts +4 -0
- package/dist/platform/fresh-sessions.d.ts.map +1 -0
- package/dist/platform/fresh-sessions.js +22 -0
- package/dist/platform/fresh-sessions.js.map +1 -0
- package/dist/platform/instance-routes.d.ts +17 -0
- package/dist/platform/instance-routes.d.ts.map +1 -0
- package/dist/platform/instance-routes.js +105 -0
- package/dist/platform/instance-routes.js.map +1 -0
- package/dist/platform/logger.d.ts +20 -0
- package/dist/platform/logger.d.ts.map +1 -0
- package/dist/platform/logger.js +44 -0
- package/dist/platform/logger.js.map +1 -0
- package/dist/platform/opencode-errors.d.ts +20 -0
- package/dist/platform/opencode-errors.d.ts.map +1 -0
- package/dist/platform/opencode-errors.js +71 -0
- package/dist/platform/opencode-errors.js.map +1 -0
- package/dist/platform/platform-client/backups.d.ts +22 -0
- package/dist/platform/platform-client/backups.d.ts.map +1 -0
- package/dist/platform/platform-client/backups.js +16 -0
- package/dist/platform/platform-client/backups.js.map +1 -0
- package/dist/platform/platform-client/index.d.ts +21 -0
- package/dist/platform/platform-client/index.d.ts.map +1 -0
- package/dist/platform/platform-client/index.js +21 -0
- package/dist/platform/platform-client/index.js.map +1 -0
- package/dist/platform/platform-client/instance-admin.d.ts +67 -0
- package/dist/platform/platform-client/instance-admin.d.ts.map +1 -0
- package/dist/platform/platform-client/instance-admin.js +59 -0
- package/dist/platform/platform-client/instance-admin.js.map +1 -0
- package/dist/platform/platform-client/invites.d.ts +35 -0
- package/dist/platform/platform-client/invites.d.ts.map +1 -0
- package/dist/platform/platform-client/invites.js +25 -0
- package/dist/platform/platform-client/invites.js.map +1 -0
- package/dist/platform/platform-client/lifecycle.d.ts +78 -0
- package/dist/platform/platform-client/lifecycle.d.ts.map +1 -0
- package/dist/platform/platform-client/lifecycle.js +151 -0
- package/dist/platform/platform-client/lifecycle.js.map +1 -0
- package/dist/platform/platform-client/members.d.ts +81 -0
- package/dist/platform/platform-client/members.d.ts.map +1 -0
- package/dist/platform/platform-client/members.js +59 -0
- package/dist/platform/platform-client/members.js.map +1 -0
- package/dist/platform/platform-client/shared.d.ts +44 -0
- package/dist/platform/platform-client/shared.d.ts.map +1 -0
- package/dist/platform/platform-client/shared.js +177 -0
- package/dist/platform/platform-client/shared.js.map +1 -0
- package/dist/platform/platform-client/ssh.d.ts +29 -0
- package/dist/platform/platform-client/ssh.d.ts.map +1 -0
- package/dist/platform/platform-client/ssh.js +14 -0
- package/dist/platform/platform-client/ssh.js.map +1 -0
- package/dist/platform/platform-client/types.d.ts +56 -0
- package/dist/platform/platform-client/types.d.ts.map +1 -0
- package/dist/platform/platform-client/types.js +19 -0
- package/dist/platform/platform-client/types.js.map +1 -0
- package/dist/platform/platform-client/updates.d.ts +117 -0
- package/dist/platform/platform-client/updates.d.ts.map +1 -0
- package/dist/platform/platform-client/updates.js +97 -0
- package/dist/platform/platform-client/updates.js.map +1 -0
- package/dist/platform/platform-client/urls.d.ts +18 -0
- package/dist/platform/platform-client/urls.d.ts.map +1 -0
- package/dist/platform/platform-client/urls.js +31 -0
- package/dist/platform/platform-client/urls.js.map +1 -0
- package/dist/platform/projects-client/access.d.ts +273 -0
- package/dist/platform/projects-client/access.d.ts.map +1 -0
- package/dist/platform/projects-client/access.js +89 -0
- package/dist/platform/projects-client/access.js.map +1 -0
- package/dist/platform/projects-client/accounts.d.ts +184 -0
- package/dist/platform/projects-client/accounts.d.ts.map +1 -0
- package/dist/platform/projects-client/accounts.js +78 -0
- package/dist/platform/projects-client/accounts.js.map +1 -0
- package/dist/platform/projects-client/agent-config.d.ts +58 -0
- package/dist/platform/projects-client/agent-config.d.ts.map +1 -0
- package/dist/platform/projects-client/agent-config.js +9 -0
- package/dist/platform/projects-client/agent-config.js.map +1 -0
- package/dist/platform/projects-client/agent-scope.d.ts +12 -0
- package/dist/platform/projects-client/agent-scope.d.ts.map +1 -0
- package/dist/platform/projects-client/agent-scope.js +6 -0
- package/dist/platform/projects-client/agent-scope.js.map +1 -0
- package/dist/platform/projects-client/apps.d.ts +98 -0
- package/dist/platform/projects-client/apps.d.ts.map +1 -0
- package/dist/platform/projects-client/apps.js +29 -0
- package/dist/platform/projects-client/apps.js.map +1 -0
- package/dist/platform/projects-client/audit.d.ts +85 -0
- package/dist/platform/projects-client/audit.d.ts.map +1 -0
- package/dist/platform/projects-client/audit.js +51 -0
- package/dist/platform/projects-client/audit.js.map +1 -0
- package/dist/platform/projects-client/billing.d.ts +336 -0
- package/dist/platform/projects-client/billing.d.ts.map +1 -0
- package/dist/platform/projects-client/billing.js +260 -0
- package/dist/platform/projects-client/billing.js.map +1 -0
- package/dist/platform/projects-client/change-requests.d.ts +119 -0
- package/dist/platform/projects-client/change-requests.d.ts.map +1 -0
- package/dist/platform/projects-client/change-requests.js +56 -0
- package/dist/platform/projects-client/change-requests.js.map +1 -0
- package/dist/platform/projects-client/channels.d.ts +135 -0
- package/dist/platform/projects-client/channels.d.ts.map +1 -0
- package/dist/platform/projects-client/channels.js +103 -0
- package/dist/platform/projects-client/channels.js.map +1 -0
- package/dist/platform/projects-client/connectors.d.ts +148 -0
- package/dist/platform/projects-client/connectors.d.ts.map +1 -0
- package/dist/platform/projects-client/connectors.js +66 -0
- package/dist/platform/projects-client/connectors.js.map +1 -0
- package/dist/platform/projects-client/files.d.ts +37 -0
- package/dist/platform/projects-client/files.d.ts.map +1 -0
- package/dist/platform/projects-client/files.js +58 -0
- package/dist/platform/projects-client/files.js.map +1 -0
- package/dist/platform/projects-client/gateway.d.ts +177 -0
- package/dist/platform/projects-client/gateway.d.ts.map +1 -0
- package/dist/platform/projects-client/gateway.js +59 -0
- package/dist/platform/projects-client/gateway.js.map +1 -0
- package/dist/platform/projects-client/git-history.d.ts +74 -0
- package/dist/platform/projects-client/git-history.d.ts.map +1 -0
- package/dist/platform/projects-client/git-history.js +40 -0
- package/dist/platform/projects-client/git-history.js.map +1 -0
- package/dist/platform/projects-client/github.d.ts +62 -0
- package/dist/platform/projects-client/github.d.ts.map +1 -0
- package/dist/platform/projects-client/github.js +30 -0
- package/dist/platform/projects-client/github.js.map +1 -0
- package/dist/platform/projects-client/index.d.ts +32 -0
- package/dist/platform/projects-client/index.d.ts.map +1 -0
- package/dist/platform/projects-client/index.js +34 -0
- package/dist/platform/projects-client/index.js.map +1 -0
- package/dist/platform/projects-client/marketplace-catalog.d.ts +76 -0
- package/dist/platform/projects-client/marketplace-catalog.d.ts.map +1 -0
- package/dist/platform/projects-client/marketplace-catalog.js +48 -0
- package/dist/platform/projects-client/marketplace-catalog.js.map +1 -0
- package/dist/platform/projects-client/marketplace.d.ts +80 -0
- package/dist/platform/projects-client/marketplace.d.ts.map +1 -0
- package/dist/platform/projects-client/marketplace.js +52 -0
- package/dist/platform/projects-client/marketplace.js.map +1 -0
- package/dist/platform/projects-client/model-defaults.d.ts +36 -0
- package/dist/platform/projects-client/model-defaults.d.ts.map +1 -0
- package/dist/platform/projects-client/model-defaults.js +16 -0
- package/dist/platform/projects-client/model-defaults.js.map +1 -0
- package/dist/platform/projects-client/policies.d.ts +21 -0
- package/dist/platform/projects-client/policies.d.ts.map +1 -0
- package/dist/platform/projects-client/policies.js +10 -0
- package/dist/platform/projects-client/policies.js.map +1 -0
- package/dist/platform/projects-client/projects.d.ts +235 -0
- package/dist/platform/projects-client/projects.d.ts.map +1 -0
- package/dist/platform/projects-client/projects.js +161 -0
- package/dist/platform/projects-client/projects.js.map +1 -0
- package/dist/platform/projects-client/public-session-shares.d.ts +52 -0
- package/dist/platform/projects-client/public-session-shares.d.ts.map +1 -0
- package/dist/platform/projects-client/public-session-shares.js +54 -0
- package/dist/platform/projects-client/public-session-shares.js.map +1 -0
- package/dist/platform/projects-client/review.d.ts +57 -0
- package/dist/platform/projects-client/review.d.ts.map +1 -0
- package/dist/platform/projects-client/review.js +28 -0
- package/dist/platform/projects-client/review.js.map +1 -0
- package/dist/platform/projects-client/sandbox-shares.d.ts +25 -0
- package/dist/platform/projects-client/sandbox-shares.d.ts.map +1 -0
- package/dist/platform/projects-client/sandbox-shares.js +29 -0
- package/dist/platform/projects-client/sandbox-shares.js.map +1 -0
- package/dist/platform/projects-client/sandbox.d.ts +123 -0
- package/dist/platform/projects-client/sandbox.d.ts.map +1 -0
- package/dist/platform/projects-client/sandbox.js +45 -0
- package/dist/platform/projects-client/sandbox.js.map +1 -0
- package/dist/platform/projects-client/secrets.d.ts +122 -0
- package/dist/platform/projects-client/secrets.d.ts.map +1 -0
- package/dist/platform/projects-client/secrets.js +34 -0
- package/dist/platform/projects-client/secrets.js.map +1 -0
- package/dist/platform/projects-client/session-sandbox.d.ts +61 -0
- package/dist/platform/projects-client/session-sandbox.d.ts.map +1 -0
- package/dist/platform/projects-client/session-sandbox.js +82 -0
- package/dist/platform/projects-client/session-sandbox.js.map +1 -0
- package/dist/platform/projects-client/sessions.d.ts +216 -0
- package/dist/platform/projects-client/sessions.d.ts.map +1 -0
- package/dist/platform/projects-client/sessions.js +74 -0
- package/dist/platform/projects-client/sessions.js.map +1 -0
- package/dist/platform/projects-client/setup-links.d.ts +35 -0
- package/dist/platform/projects-client/setup-links.d.ts.map +1 -0
- package/dist/platform/projects-client/setup-links.js +24 -0
- package/dist/platform/projects-client/setup-links.js.map +1 -0
- package/dist/platform/projects-client/shared.d.ts +66 -0
- package/dist/platform/projects-client/shared.d.ts.map +1 -0
- package/dist/platform/projects-client/shared.js +44 -0
- package/dist/platform/projects-client/shared.js.map +1 -0
- package/dist/platform/projects-client/tokens.d.ts +77 -0
- package/dist/platform/projects-client/tokens.d.ts.map +1 -0
- package/dist/platform/projects-client/tokens.js +43 -0
- package/dist/platform/projects-client/tokens.js.map +1 -0
- package/dist/platform/projects-client/transcription.d.ts +5 -0
- package/dist/platform/projects-client/transcription.d.ts.map +1 -0
- package/dist/platform/projects-client/transcription.js +14 -0
- package/dist/platform/projects-client/transcription.js.map +1 -0
- package/dist/platform/projects-client/triggers.d.ts +102 -0
- package/dist/platform/projects-client/triggers.d.ts.map +1 -0
- package/dist/platform/projects-client/triggers.js +27 -0
- package/dist/platform/projects-client/triggers.js.map +1 -0
- package/dist/platform/session-id.d.ts +9 -0
- package/dist/platform/session-id.d.ts.map +1 -0
- package/dist/platform/session-id.js +23 -0
- package/dist/platform/session-id.js.map +1 -0
- package/dist/platform/storage/managed-storage.d.ts +97 -0
- package/dist/platform/storage/managed-storage.d.ts.map +1 -0
- package/dist/platform/storage/managed-storage.js +271 -0
- package/dist/platform/storage/managed-storage.js.map +1 -0
- package/dist/platform/strings.d.ts +12 -0
- package/dist/platform/strings.d.ts.map +1 -0
- package/dist/platform/strings.js +17 -0
- package/dist/platform/strings.js.map +1 -0
- package/dist/platform/ui.d.ts +11 -0
- package/dist/platform/ui.d.ts.map +1 -0
- package/dist/platform/ui.js +22 -0
- package/dist/platform/ui.js.map +1 -0
- package/dist/react/chat/index.d.ts +3 -0
- package/dist/react/chat/index.d.ts.map +1 -0
- package/dist/react/chat/index.js +7 -0
- package/dist/react/chat/index.js.map +1 -0
- package/dist/react/chat/render-parts.d.ts +39 -0
- package/dist/react/chat/render-parts.d.ts.map +1 -0
- package/dist/react/chat/render-parts.js +34 -0
- package/dist/react/chat/render-parts.js.map +1 -0
- package/dist/react/chat/use-chat-turns.d.ts +19 -0
- package/dist/react/chat/use-chat-turns.d.ts.map +1 -0
- package/dist/react/chat/use-chat-turns.js +27 -0
- package/dist/react/chat/use-chat-turns.js.map +1 -0
- package/dist/react/file-keys.d.ts +18 -0
- package/dist/react/file-keys.d.ts.map +1 -0
- package/dist/react/file-keys.js +18 -0
- package/dist/react/file-keys.js.map +1 -0
- package/dist/react/index.d.ts +12 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +49 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/model-flatten.d.ts +33 -0
- package/dist/react/model-flatten.d.ts.map +1 -0
- package/dist/react/model-flatten.js +59 -0
- package/dist/react/model-flatten.js.map +1 -0
- package/dist/react/opencode.d.ts +43 -0
- package/dist/react/opencode.d.ts.map +1 -0
- package/dist/react/opencode.js +100 -0
- package/dist/react/opencode.js.map +1 -0
- package/dist/react/prefetch-session-start.d.ts +10 -0
- package/dist/react/prefetch-session-start.d.ts.map +1 -0
- package/dist/react/prefetch-session-start.js +17 -0
- package/dist/react/prefetch-session-start.js.map +1 -0
- package/dist/react/provider-refresh.d.ts +7 -0
- package/dist/react/provider-refresh.d.ts.map +1 -0
- package/dist/react/provider-refresh.js +28 -0
- package/dist/react/provider-refresh.js.map +1 -0
- package/dist/react/provider-selection.d.ts +31 -0
- package/dist/react/provider-selection.d.ts.map +1 -0
- package/dist/react/provider-selection.js +135 -0
- package/dist/react/provider-selection.js.map +1 -0
- package/dist/react/route-project.d.ts +7 -0
- package/dist/react/route-project.d.ts.map +1 -0
- package/dist/react/route-project.js +19 -0
- package/dist/react/route-project.js.map +1 -0
- package/dist/react/session-start-stash.d.ts +56 -0
- package/dist/react/session-start-stash.d.ts.map +1 -0
- package/dist/react/session-start-stash.js +202 -0
- package/dist/react/session-start-stash.js.map +1 -0
- package/dist/react/use-canonical-opencode-session.d.ts +35 -0
- package/dist/react/use-canonical-opencode-session.d.ts.map +1 -0
- package/dist/react/use-canonical-opencode-session.js +52 -0
- package/dist/react/use-canonical-opencode-session.js.map +1 -0
- package/dist/react/use-change-requests.d.ts +321 -0
- package/dist/react/use-change-requests.d.ts.map +1 -0
- package/dist/react/use-change-requests.js +43 -0
- package/dist/react/use-change-requests.js.map +1 -0
- package/dist/react/use-current-runtime.d.ts +8 -0
- package/dist/react/use-current-runtime.d.ts.map +1 -0
- package/dist/react/use-current-runtime.js +12 -0
- package/dist/react/use-current-runtime.js.map +1 -0
- package/dist/react/use-gateway-catalog-sync.d.ts +2 -0
- package/dist/react/use-gateway-catalog-sync.d.ts.map +1 -0
- package/dist/react/use-gateway-catalog-sync.js +39 -0
- package/dist/react/use-gateway-catalog-sync.js.map +1 -0
- package/dist/react/use-kortix-master.d.ts +384 -0
- package/dist/react/use-kortix-master.d.ts.map +1 -0
- package/dist/react/use-kortix-master.js +958 -0
- package/dist/react/use-kortix-master.js.map +1 -0
- package/dist/react/use-model-store.d.ts +71 -0
- package/dist/react/use-model-store.d.ts.map +1 -0
- package/dist/react/use-model-store.js +411 -0
- package/dist/react/use-model-store.js.map +1 -0
- package/dist/react/use-opencode-config.d.ts +15 -0
- package/dist/react/use-opencode-config.d.ts.map +1 -0
- package/dist/react/use-opencode-config.js +79 -0
- package/dist/react/use-opencode-config.js.map +1 -0
- package/dist/react/use-opencode-events/diagnostics.d.ts +11 -0
- package/dist/react/use-opencode-events/diagnostics.d.ts.map +1 -0
- package/dist/react/use-opencode-events/diagnostics.js +58 -0
- package/dist/react/use-opencode-events/diagnostics.js.map +1 -0
- package/dist/react/use-opencode-events/handle-event.d.ts +20 -0
- package/dist/react/use-opencode-events/handle-event.d.ts.map +1 -0
- package/dist/react/use-opencode-events/handle-event.js +450 -0
- package/dist/react/use-opencode-events/handle-event.js.map +1 -0
- package/dist/react/use-opencode-events/helpers.d.ts +30 -0
- package/dist/react/use-opencode-events/helpers.d.ts.map +1 -0
- package/dist/react/use-opencode-events/helpers.js +93 -0
- package/dist/react/use-opencode-events/helpers.js.map +1 -0
- package/dist/react/use-opencode-events/index.d.ts +25 -0
- package/dist/react/use-opencode-events/index.d.ts.map +1 -0
- package/dist/react/use-opencode-events/index.js +242 -0
- package/dist/react/use-opencode-events/index.js.map +1 -0
- package/dist/react/use-opencode-events/types.d.ts +10 -0
- package/dist/react/use-opencode-events/types.d.ts.map +1 -0
- package/dist/react/use-opencode-events/types.js +2 -0
- package/dist/react/use-opencode-events/types.js.map +1 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.d.ts +22 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.d.ts.map +1 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.js +158 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.js.map +1 -0
- package/dist/react/use-opencode-local.d.ts +139 -0
- package/dist/react/use-opencode-local.d.ts.map +1 -0
- package/dist/react/use-opencode-local.js +484 -0
- package/dist/react/use-opencode-local.js.map +1 -0
- package/dist/react/use-opencode-mcp.d.ts +34 -0
- package/dist/react/use-opencode-mcp.d.ts.map +1 -0
- package/dist/react/use-opencode-mcp.js +190 -0
- package/dist/react/use-opencode-mcp.js.map +1 -0
- package/dist/react/use-opencode-pty.d.ts +30 -0
- package/dist/react/use-opencode-pty.d.ts.map +1 -0
- package/dist/react/use-opencode-pty.js +126 -0
- package/dist/react/use-opencode-pty.js.map +1 -0
- package/dist/react/use-opencode-sessions/agents.d.ts +14 -0
- package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/agents.js +82 -0
- package/dist/react/use-opencode-sessions/agents.js.map +1 -0
- package/dist/react/use-opencode-sessions/commands.d.ts +8 -0
- package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/commands.js +46 -0
- package/dist/react/use-opencode-sessions/commands.js.map +1 -0
- package/dist/react/use-opencode-sessions/files.d.ts +2 -0
- package/dist/react/use-opencode-sessions/files.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/files.js +181 -0
- package/dist/react/use-opencode-sessions/files.js.map +1 -0
- package/dist/react/use-opencode-sessions/index.d.ts +15 -0
- package/dist/react/use-opencode-sessions/index.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/index.js +21 -0
- package/dist/react/use-opencode-sessions/index.js.map +1 -0
- package/dist/react/use-opencode-sessions/keys.d.ts +94 -0
- package/dist/react/use-opencode-sessions/keys.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/keys.js +39 -0
- package/dist/react/use-opencode-sessions/keys.js.map +1 -0
- package/dist/react/use-opencode-sessions/mcp.d.ts +3 -0
- package/dist/react/use-opencode-sessions/mcp.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/mcp.js +23 -0
- package/dist/react/use-opencode-sessions/mcp.js.map +1 -0
- package/dist/react/use-opencode-sessions/messages.d.ts +75 -0
- package/dist/react/use-opencode-sessions/messages.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/messages.js +319 -0
- package/dist/react/use-opencode-sessions/messages.js.map +1 -0
- package/dist/react/use-opencode-sessions/parts.d.ts +23 -0
- package/dist/react/use-opencode-sessions/parts.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/parts.js +49 -0
- package/dist/react/use-opencode-sessions/parts.js.map +1 -0
- package/dist/react/use-opencode-sessions/permissions.d.ts +17 -0
- package/dist/react/use-opencode-sessions/permissions.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/permissions.js +66 -0
- package/dist/react/use-opencode-sessions/permissions.js.map +1 -0
- package/dist/react/use-opencode-sessions/projects.d.ts +5 -0
- package/dist/react/use-opencode-sessions/projects.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/projects.js +54 -0
- package/dist/react/use-opencode-sessions/projects.js.map +1 -0
- package/dist/react/use-opencode-sessions/providers.d.ts +10 -0
- package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/providers.js +98 -0
- package/dist/react/use-opencode-sessions/providers.js.map +1 -0
- package/dist/react/use-opencode-sessions/sessions.d.ts +35 -0
- package/dist/react/use-opencode-sessions/sessions.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/sessions.js +380 -0
- package/dist/react/use-opencode-sessions/sessions.js.map +1 -0
- package/dist/react/use-opencode-sessions/shared.d.ts +43 -0
- package/dist/react/use-opencode-sessions/shared.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/shared.js +109 -0
- package/dist/react/use-opencode-sessions/shared.js.map +1 -0
- package/dist/react/use-opencode-sessions/sharing.d.ts +4 -0
- package/dist/react/use-opencode-sessions/sharing.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/sharing.js +57 -0
- package/dist/react/use-opencode-sessions/sharing.js.map +1 -0
- package/dist/react/use-opencode-sessions/tools.d.ts +5 -0
- package/dist/react/use-opencode-sessions/tools.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/tools.js +54 -0
- package/dist/react/use-opencode-sessions/tools.js.map +1 -0
- package/dist/react/use-permission-self-heal.d.ts +45 -0
- package/dist/react/use-permission-self-heal.d.ts.map +1 -0
- package/dist/react/use-permission-self-heal.js +144 -0
- package/dist/react/use-permission-self-heal.js.map +1 -0
- package/dist/react/use-project-config.d.ts +11 -0
- package/dist/react/use-project-config.d.ts.map +1 -0
- package/dist/react/use-project-config.js +22 -0
- package/dist/react/use-project-config.js.map +1 -0
- package/dist/react/use-project-models.d.ts +11 -0
- package/dist/react/use-project-models.d.ts.map +1 -0
- package/dist/react/use-project-models.js +25 -0
- package/dist/react/use-project-models.js.map +1 -0
- package/dist/react/use-project-secrets.d.ts +265 -0
- package/dist/react/use-project-secrets.d.ts.map +1 -0
- package/dist/react/use-project-secrets.js +41 -0
- package/dist/react/use-project-secrets.js.map +1 -0
- package/dist/react/use-project-triggers.d.ts +228 -0
- package/dist/react/use-project-triggers.d.ts.map +1 -0
- package/dist/react/use-project-triggers.js +42 -0
- package/dist/react/use-project-triggers.js.map +1 -0
- package/dist/react/use-question-self-heal.d.ts +36 -0
- package/dist/react/use-question-self-heal.d.ts.map +1 -0
- package/dist/react/use-question-self-heal.js +95 -0
- package/dist/react/use-question-self-heal.js.map +1 -0
- package/dist/react/use-runtime-phase.d.ts +9 -0
- package/dist/react/use-runtime-phase.d.ts.map +1 -0
- package/dist/react/use-runtime-phase.js +20 -0
- package/dist/react/use-runtime-phase.js.map +1 -0
- package/dist/react/use-runtime-reconnect.d.ts +90 -0
- package/dist/react/use-runtime-reconnect.d.ts.map +1 -0
- package/dist/react/use-runtime-reconnect.js +234 -0
- package/dist/react/use-runtime-reconnect.js.map +1 -0
- package/dist/react/use-session-picks.d.ts +17 -0
- package/dist/react/use-session-picks.d.ts.map +1 -0
- package/dist/react/use-session-picks.js +36 -0
- package/dist/react/use-session-picks.js.map +1 -0
- package/dist/react/use-session-prefetch.d.ts +18 -0
- package/dist/react/use-session-prefetch.d.ts.map +1 -0
- package/dist/react/use-session-prefetch.js +84 -0
- package/dist/react/use-session-prefetch.js.map +1 -0
- package/dist/react/use-session-send.d.ts +183 -0
- package/dist/react/use-session-send.d.ts.map +1 -0
- package/dist/react/use-session-send.js +287 -0
- package/dist/react/use-session-send.js.map +1 -0
- package/dist/react/use-session-sync.d.ts +24 -0
- package/dist/react/use-session-sync.d.ts.map +1 -0
- package/dist/react/use-session-sync.js +375 -0
- package/dist/react/use-session-sync.js.map +1 -0
- package/dist/react/use-session.d.ts +171 -0
- package/dist/react/use-session.d.ts.map +1 -0
- package/dist/react/use-session.js +396 -0
- package/dist/react/use-session.js.map +1 -0
- package/dist/react/use-visible-agents.d.ts +22 -0
- package/dist/react/use-visible-agents.d.ts.map +1 -0
- package/dist/react/use-visible-agents.js +45 -0
- package/dist/react/use-visible-agents.js.map +1 -0
- package/dist/server.d.ts +55 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +122 -0
- package/dist/server.js.map +1 -0
- package/dist/session/health.d.ts +49 -0
- package/dist/session/health.d.ts.map +1 -0
- package/dist/session/health.js +57 -0
- package/dist/session/health.js.map +1 -0
- package/dist/session/index.d.ts +19 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +19 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/preview.d.ts +24 -0
- package/dist/session/preview.d.ts.map +1 -0
- package/dist/session/preview.js +85 -0
- package/dist/session/preview.js.map +1 -0
- package/dist/session/url.d.ts +160 -0
- package/dist/session/url.d.ts.map +1 -0
- package/dist/session/url.js +522 -0
- package/dist/session/url.js.map +1 -0
- package/dist/state/chat-events.d.ts +141 -0
- package/dist/state/chat-events.d.ts.map +1 -0
- package/dist/state/chat-events.js +135 -0
- package/dist/state/chat-events.js.map +1 -0
- package/dist/state/current-runtime.d.ts +44 -0
- package/dist/state/current-runtime.d.ts.map +1 -0
- package/dist/state/current-runtime.js +44 -0
- package/dist/state/current-runtime.js.map +1 -0
- package/dist/state/diagnostics-store.d.ts +114 -0
- package/dist/state/diagnostics-store.d.ts.map +1 -0
- package/dist/state/diagnostics-store.js +319 -0
- package/dist/state/diagnostics-store.js.map +1 -0
- package/dist/state/event-stream.d.ts +134 -0
- package/dist/state/event-stream.d.ts.map +1 -0
- package/dist/state/event-stream.js +424 -0
- package/dist/state/event-stream.js.map +1 -0
- package/dist/state/idb-sync-cache.d.ts +18 -0
- package/dist/state/idb-sync-cache.d.ts.map +1 -0
- package/dist/state/idb-sync-cache.js +209 -0
- package/dist/state/idb-sync-cache.js.map +1 -0
- package/dist/state/opencode-compaction-store.d.ts +10 -0
- package/dist/state/opencode-compaction-store.d.ts.map +1 -0
- package/dist/state/opencode-compaction-store.js +32 -0
- package/dist/state/opencode-compaction-store.js.map +1 -0
- package/dist/state/opencode-pending-store.d.ts +19 -0
- package/dist/state/opencode-pending-store.d.ts.map +1 -0
- package/dist/state/opencode-pending-store.js +76 -0
- package/dist/state/opencode-pending-store.js.map +1 -0
- package/dist/state/sandbox-connection-store.d.ts +62 -0
- package/dist/state/sandbox-connection-store.d.ts.map +1 -0
- package/dist/state/sandbox-connection-store.js +290 -0
- package/dist/state/sandbox-connection-store.js.map +1 -0
- package/dist/state/server-store/active.d.ts +49 -0
- package/dist/state/server-store/active.d.ts.map +1 -0
- package/dist/state/server-store/active.js +76 -0
- package/dist/state/server-store/active.js.map +1 -0
- package/dist/state/server-store/types.d.ts +12 -0
- package/dist/state/server-store/types.d.ts.map +1 -0
- package/dist/state/server-store/types.js +2 -0
- package/dist/state/server-store/types.js.map +1 -0
- package/dist/state/server-store/url-helpers.d.ts +33 -0
- package/dist/state/server-store/url-helpers.d.ts.map +1 -0
- package/dist/state/server-store/url-helpers.js +55 -0
- package/dist/state/server-store/url-helpers.js.map +1 -0
- package/dist/state/server-store.d.ts +18 -0
- package/dist/state/server-store.d.ts.map +1 -0
- package/dist/state/server-store.js +23 -0
- package/dist/state/server-store.js.map +1 -0
- package/dist/state/session-runtime-registry.d.ts +49 -0
- package/dist/state/session-runtime-registry.d.ts.map +1 -0
- package/dist/state/session-runtime-registry.js +85 -0
- package/dist/state/session-runtime-registry.js.map +1 -0
- package/dist/state/sync-store/ascending-id.d.ts +2 -0
- package/dist/state/sync-store/ascending-id.d.ts.map +1 -0
- package/dist/state/sync-store/ascending-id.js +21 -0
- package/dist/state/sync-store/ascending-id.js.map +1 -0
- package/dist/state/sync-store/binary.d.ts +7 -0
- package/dist/state/sync-store/binary.d.ts.map +1 -0
- package/dist/state/sync-store/binary.js +21 -0
- package/dist/state/sync-store/binary.js.map +1 -0
- package/dist/state/sync-store/stream-cache.d.ts +2 -0
- package/dist/state/sync-store/stream-cache.d.ts.map +1 -0
- package/dist/state/sync-store/stream-cache.js +29 -0
- package/dist/state/sync-store/stream-cache.js.map +1 -0
- package/dist/state/sync-store/types.d.ts +29 -0
- package/dist/state/sync-store/types.d.ts.map +1 -0
- package/dist/state/sync-store/types.js +2 -0
- package/dist/state/sync-store/types.js.map +1 -0
- package/dist/state/sync-store.d.ts +39 -0
- package/dist/state/sync-store.d.ts.map +1 -0
- package/dist/state/sync-store.js +692 -0
- package/dist/state/sync-store.js.map +1 -0
- package/dist/state/tab-store.d.ts +91 -0
- package/dist/state/tab-store.d.ts.map +1 -0
- package/dist/state/tab-store.js +369 -0
- package/dist/state/tab-store.js.map +1 -0
- package/dist/transcript.d.ts +40 -0
- package/dist/transcript.d.ts.map +1 -0
- package/dist/transcript.js +126 -0
- package/dist/transcript.js.map +1 -0
- package/dist/turns/classify.d.ts +166 -0
- package/dist/turns/classify.d.ts.map +1 -0
- package/dist/turns/classify.js +259 -0
- package/dist/turns/classify.js.map +1 -0
- package/dist/turns/errors.d.ts +11 -0
- package/dist/turns/errors.d.ts.map +1 -0
- package/dist/turns/errors.js +85 -0
- package/dist/turns/errors.js.map +1 -0
- package/dist/turns/index.d.ts +264 -0
- package/dist/turns/index.d.ts.map +1 -0
- package/dist/turns/index.js +1243 -0
- package/dist/turns/index.js.map +1 -0
- package/dist/turns/tool-registry.d.ts +33 -0
- package/dist/turns/tool-registry.d.ts.map +1 -0
- package/dist/turns/tool-registry.js +108 -0
- package/dist/turns/tool-registry.js.map +1 -0
- package/dist/turns/types.d.ts +125 -0
- package/dist/turns/types.d.ts.map +1 -0
- package/dist/turns/types.js +12 -0
- package/dist/turns/types.js.map +1 -0
- package/dist/turns/view-model.d.ts +127 -0
- package/dist/turns/view-model.d.ts.map +1 -0
- package/dist/turns/view-model.js +401 -0
- package/dist/turns/view-model.js.map +1 -0
- package/package.json +155 -0
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import { getClient } from "../opencode/client.js";
|
|
4
|
+
import { useSyncStore, } from "../state/sync-store.js";
|
|
5
|
+
import { useSandboxConnectionStore } from "../state/sandbox-connection-store.js";
|
|
6
|
+
import { loadSessionFromIDB, saveSessionToIDB } from "../state/idb-sync-cache.js";
|
|
7
|
+
import { canQueryOpenCodeSession } from "./use-opencode-sessions/index.js";
|
|
8
|
+
const EMPTY_MESSAGES = [];
|
|
9
|
+
const EMPTY_DIFFS = [];
|
|
10
|
+
const EMPTY_TODOS = [];
|
|
11
|
+
const IDLE_STATUS = { type: "idle" };
|
|
12
|
+
const MESSAGE_POLL_INTERVAL_MS = 10_000;
|
|
13
|
+
const NETWORK_REVALIDATE_COOLDOWN_MS = 60_000;
|
|
14
|
+
/**
|
|
15
|
+
* Build MessageWithParts[] with reference caching.
|
|
16
|
+
* Returns the same array reference if nothing relevant changed.
|
|
17
|
+
* This is a module-level cache keyed by sessionId so multiple components
|
|
18
|
+
* using the same sessionId share the cache (e.g. SessionLayout + SessionChat).
|
|
19
|
+
*/
|
|
20
|
+
const MESSAGE_CACHE_MAX = 20;
|
|
21
|
+
const messageCache = new Map();
|
|
22
|
+
const inFlightInitialLoads = new Map();
|
|
23
|
+
const lastNetworkLoadAttemptAt = new Map();
|
|
24
|
+
const pollInFlightSessions = new Set();
|
|
25
|
+
function markNetworkLoadAttempt(sessionId) {
|
|
26
|
+
lastNetworkLoadAttemptAt.delete(sessionId);
|
|
27
|
+
lastNetworkLoadAttemptAt.set(sessionId, Date.now());
|
|
28
|
+
if (lastNetworkLoadAttemptAt.size > MESSAGE_CACHE_MAX) {
|
|
29
|
+
const oldest = lastNetworkLoadAttemptAt.keys().next().value;
|
|
30
|
+
if (oldest)
|
|
31
|
+
lastNetworkLoadAttemptAt.delete(oldest);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function touchMessageCache(sessionId) {
|
|
35
|
+
const entry = messageCache.get(sessionId);
|
|
36
|
+
if (entry) {
|
|
37
|
+
messageCache.delete(sessionId);
|
|
38
|
+
messageCache.set(sessionId, entry);
|
|
39
|
+
}
|
|
40
|
+
if (messageCache.size > MESSAGE_CACHE_MAX) {
|
|
41
|
+
const oldest = messageCache.keys().next().value;
|
|
42
|
+
if (oldest)
|
|
43
|
+
messageCache.delete(oldest);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function buildMessages(sessionId, msgs, parts) {
|
|
47
|
+
if (!msgs || msgs.length === 0)
|
|
48
|
+
return EMPTY_MESSAGES;
|
|
49
|
+
const cached = messageCache.get(sessionId);
|
|
50
|
+
if (cached && cached.msgs === msgs) {
|
|
51
|
+
// Same message array — check if any part arrays changed
|
|
52
|
+
let same = cached.partRefs.length === msgs.length;
|
|
53
|
+
if (same) {
|
|
54
|
+
for (let i = 0; i < msgs.length; i++) {
|
|
55
|
+
if (parts[msgs[i].id] !== cached.partRefs[i]) {
|
|
56
|
+
same = false;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (same)
|
|
62
|
+
return cached.result;
|
|
63
|
+
}
|
|
64
|
+
// Rebuild
|
|
65
|
+
const partRefs = [];
|
|
66
|
+
const result = [];
|
|
67
|
+
for (const info of msgs) {
|
|
68
|
+
const pa = parts[info.id];
|
|
69
|
+
partRefs.push(pa);
|
|
70
|
+
result.push({ info, parts: pa ?? [] });
|
|
71
|
+
}
|
|
72
|
+
messageCache.set(sessionId, { msgs, partRefs, result });
|
|
73
|
+
touchMessageCache(sessionId);
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Single hook that provides all session data from the sync store.
|
|
78
|
+
* Replaces: useOpenCodeMessages + useOpenCodeSessionStatusStore + useOpenCodePendingStore
|
|
79
|
+
*
|
|
80
|
+
* On first access, fetches messages from the server and populates the store.
|
|
81
|
+
* After that, SSE events keep the store updated in real time.
|
|
82
|
+
*/
|
|
83
|
+
export function useSessionSync(sessionId) {
|
|
84
|
+
const fetchedRef = useRef(null);
|
|
85
|
+
const runtimeHealthy = useSandboxConnectionStore((s) => s.healthy === true);
|
|
86
|
+
// Fetch messages on first access (or session change).
|
|
87
|
+
// On failure, retries with backoff (500ms, 1s, 2s) up to 3 times.
|
|
88
|
+
// Without retry, a transient failure (server not ready on page refresh)
|
|
89
|
+
// permanently prevents messages from loading because fetchedRef blocks re-fetch.
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
if (!canQueryOpenCodeSession(sessionId))
|
|
92
|
+
return;
|
|
93
|
+
// Guard against duplicate concurrent fetches for the same session.
|
|
94
|
+
if (fetchedRef.current === sessionId)
|
|
95
|
+
return;
|
|
96
|
+
fetchedRef.current = sessionId;
|
|
97
|
+
// NOTE: We intentionally do NOT skip the fetch when the store already
|
|
98
|
+
// has messages from SSE. SSE only delivers events from the connection
|
|
99
|
+
// point forward — it doesn't replay history. If the agent is actively
|
|
100
|
+
// streaming when the user navigates to a session, SSE stub messages
|
|
101
|
+
// would be the only messages in the store, missing the full thread
|
|
102
|
+
// history. Always fetch and let hydrate() merge safely.
|
|
103
|
+
let cancelled = false;
|
|
104
|
+
// Phase 2: Hydrate from IndexedDB cache FIRST for instant display.
|
|
105
|
+
// Server fetch still runs in background to revalidate.
|
|
106
|
+
const hydrateFromCache = async () => {
|
|
107
|
+
const existing = useSyncStore.getState().messages[sessionId];
|
|
108
|
+
if (existing && existing.length > 0)
|
|
109
|
+
return;
|
|
110
|
+
try {
|
|
111
|
+
const cached = await loadSessionFromIDB(sessionId);
|
|
112
|
+
if (cancelled)
|
|
113
|
+
return;
|
|
114
|
+
if (cached && cached.messages.length > 0) {
|
|
115
|
+
const current = useSyncStore.getState().messages[sessionId];
|
|
116
|
+
if (!current || current.length === 0) {
|
|
117
|
+
useSyncStore.getState().hydrate(sessionId, cached.messages.map((info) => ({
|
|
118
|
+
info,
|
|
119
|
+
parts: cached.parts[info.id] ?? [],
|
|
120
|
+
})));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// IDB unavailable — fall through to network fetch
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
hydrateFromCache();
|
|
129
|
+
if (!runtimeHealthy) {
|
|
130
|
+
fetchedRef.current = null;
|
|
131
|
+
return () => {
|
|
132
|
+
cancelled = true;
|
|
133
|
+
messageCache.delete(sessionId);
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const existingMessages = useSyncStore.getState().messages[sessionId];
|
|
137
|
+
const lastNetworkLoad = lastNetworkLoadAttemptAt.get(sessionId) ?? 0;
|
|
138
|
+
if (existingMessages &&
|
|
139
|
+
existingMessages.length > 0 &&
|
|
140
|
+
Date.now() - lastNetworkLoad < NETWORK_REVALIDATE_COOLDOWN_MS) {
|
|
141
|
+
return () => {
|
|
142
|
+
cancelled = true;
|
|
143
|
+
fetchedRef.current = null;
|
|
144
|
+
messageCache.delete(sessionId);
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
// IMPORTANT: do NOT short-circuit hydrate on `cancelled`. The
|
|
148
|
+
// store is keyed by sessionID — writing into it is always safe
|
|
149
|
+
// even if this effect's component has unmounted. Strict Mode
|
|
150
|
+
// fires effect → cleanup (cancelled=true) → effect, and the
|
|
151
|
+
// in-flight dedup map below would otherwise drop the only fetch
|
|
152
|
+
// because the cancelled first run bails before hydrating.
|
|
153
|
+
const fetchWithRetry = async (attempt = 0) => {
|
|
154
|
+
try {
|
|
155
|
+
const res = await getClient().session.messages({
|
|
156
|
+
sessionID: sessionId,
|
|
157
|
+
});
|
|
158
|
+
const data = res.data ?? [];
|
|
159
|
+
if (data.length === 0) {
|
|
160
|
+
const freshState = useSyncStore.getState();
|
|
161
|
+
const existingMsgs = freshState.messages[sessionId];
|
|
162
|
+
if (existingMsgs && existingMsgs.length > 0) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Mark session as loaded (empty) immediately so
|
|
166
|
+
// isLoading becomes false — no extra round-trip.
|
|
167
|
+
// If the session is busy (agent running), SSE events
|
|
168
|
+
// will deliver messages as they arrive.
|
|
169
|
+
freshState.clearSession(sessionId);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (res.data) {
|
|
173
|
+
useSyncStore.getState().hydrate(sessionId, res.data);
|
|
174
|
+
// Persist to IDB for next cold load
|
|
175
|
+
const state = useSyncStore.getState();
|
|
176
|
+
const msgs = state.messages[sessionId] ?? [];
|
|
177
|
+
if (msgs.length > 0) {
|
|
178
|
+
saveSessionToIDB(sessionId, msgs, state.parts);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Stop retrying ONLY if the effect has been torn down
|
|
184
|
+
// (no live consumer wants this data anymore). Don't gate
|
|
185
|
+
// the success-path hydrate on `cancelled` — see comment
|
|
186
|
+
// above the function.
|
|
187
|
+
if (cancelled)
|
|
188
|
+
return;
|
|
189
|
+
if (attempt < 3) {
|
|
190
|
+
const delay = 500 * 2 ** attempt;
|
|
191
|
+
setTimeout(() => fetchWithRetry(attempt + 1), delay);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
// All retries exhausted — unblock the UI by marking
|
|
195
|
+
// the session as loaded (empty). Without this,
|
|
196
|
+
// isLoading stays true forever on cold boot when the
|
|
197
|
+
// sandbox isn't ready yet.
|
|
198
|
+
fetchedRef.current = null;
|
|
199
|
+
const state = useSyncStore.getState();
|
|
200
|
+
if (!(sessionId in state.messages)) {
|
|
201
|
+
state.clearSession(sessionId);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
const startFetch = () => {
|
|
207
|
+
const loadPromise = fetchWithRetry().finally(() => {
|
|
208
|
+
markNetworkLoadAttempt(sessionId);
|
|
209
|
+
inFlightInitialLoads.delete(sessionId);
|
|
210
|
+
});
|
|
211
|
+
inFlightInitialLoads.set(sessionId, loadPromise);
|
|
212
|
+
return loadPromise;
|
|
213
|
+
};
|
|
214
|
+
const existingLoad = inFlightInitialLoads.get(sessionId);
|
|
215
|
+
if (existingLoad) {
|
|
216
|
+
// A prior mount fired the fetch. In Strict Mode that prior run
|
|
217
|
+
// may have been cancelled mid-flight and skipped hydrate.
|
|
218
|
+
// Await it, then verify the store actually has data — re-fire
|
|
219
|
+
// if it doesn't.
|
|
220
|
+
existingLoad
|
|
221
|
+
.catch(() => {
|
|
222
|
+
// Error handling is already performed by the owner.
|
|
223
|
+
})
|
|
224
|
+
.then(() => {
|
|
225
|
+
if (cancelled)
|
|
226
|
+
return;
|
|
227
|
+
const after = useSyncStore.getState().messages[sessionId];
|
|
228
|
+
if (after === undefined && !inFlightInitialLoads.has(sessionId)) {
|
|
229
|
+
startFetch();
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
startFetch();
|
|
235
|
+
}
|
|
236
|
+
return () => {
|
|
237
|
+
cancelled = true;
|
|
238
|
+
// Allow a future real remount/navigation to fetch again while still
|
|
239
|
+
// relying on the module-level in-flight map to dedupe Strict Mode.
|
|
240
|
+
fetchedRef.current = null;
|
|
241
|
+
// Evict stale cache entry to prevent unbounded memory growth
|
|
242
|
+
messageCache.delete(sessionId);
|
|
243
|
+
};
|
|
244
|
+
}, [sessionId, runtimeHealthy]);
|
|
245
|
+
// ── Polling fallback ──
|
|
246
|
+
// When the session is busy, SSE should deliver streaming events. But if
|
|
247
|
+
// SSE is broken (502, ERR_QUIC_PROTOCOL_ERROR, etc.), no events arrive
|
|
248
|
+
// and the UI is stuck on "Considering next steps..." forever. As a
|
|
249
|
+
// fallback, poll for messages while the session is busy.
|
|
250
|
+
// The poll stops as soon as the session goes idle or the component unmounts.
|
|
251
|
+
const pollTimerRef = useRef(null);
|
|
252
|
+
const lastPartCountRef = useRef(0);
|
|
253
|
+
const pollInFlightRef = useRef(false);
|
|
254
|
+
useEffect(() => {
|
|
255
|
+
if (!sessionId)
|
|
256
|
+
return;
|
|
257
|
+
if (!runtimeHealthy) {
|
|
258
|
+
if (pollTimerRef.current) {
|
|
259
|
+
clearInterval(pollTimerRef.current);
|
|
260
|
+
pollTimerRef.current = null;
|
|
261
|
+
}
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const state = useSyncStore.getState();
|
|
265
|
+
const currentStatus = state.sessionStatus[sessionId];
|
|
266
|
+
const isBusyNow = currentStatus?.type === "busy" || currentStatus?.type === "retry";
|
|
267
|
+
if (isBusyNow) {
|
|
268
|
+
// Start polling if not already active
|
|
269
|
+
if (!pollTimerRef.current) {
|
|
270
|
+
// Track part count to detect SSE liveness — if parts are
|
|
271
|
+
// growing between polls, SSE is working and we skip the fetch.
|
|
272
|
+
const countParts = () => {
|
|
273
|
+
const s = useSyncStore.getState();
|
|
274
|
+
const msgs = s.messages[sessionId] ?? [];
|
|
275
|
+
let count = 0;
|
|
276
|
+
for (const m of msgs) {
|
|
277
|
+
const parts = s.parts[m.id];
|
|
278
|
+
if (parts)
|
|
279
|
+
count += parts.length;
|
|
280
|
+
}
|
|
281
|
+
return count;
|
|
282
|
+
};
|
|
283
|
+
lastPartCountRef.current = countParts();
|
|
284
|
+
pollTimerRef.current = setInterval(async () => {
|
|
285
|
+
const s = useSyncStore.getState();
|
|
286
|
+
const st = s.sessionStatus[sessionId];
|
|
287
|
+
if (st?.type !== "busy" && st?.type !== "retry") {
|
|
288
|
+
// Session went idle — stop polling
|
|
289
|
+
if (pollTimerRef.current) {
|
|
290
|
+
clearInterval(pollTimerRef.current);
|
|
291
|
+
pollTimerRef.current = null;
|
|
292
|
+
}
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
// Skip fetch if SSE is delivering data (part count grew)
|
|
296
|
+
const currentCount = countParts();
|
|
297
|
+
if (currentCount > lastPartCountRef.current) {
|
|
298
|
+
lastPartCountRef.current = currentCount;
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (pollInFlightRef.current || pollInFlightSessions.has(sessionId))
|
|
302
|
+
return;
|
|
303
|
+
// SSE appears stalled — fetch messages AND session status
|
|
304
|
+
pollInFlightRef.current = true;
|
|
305
|
+
pollInFlightSessions.add(sessionId);
|
|
306
|
+
try {
|
|
307
|
+
const [msgRes, statusRes] = await Promise.all([
|
|
308
|
+
getClient().session.messages({ sessionID: sessionId }),
|
|
309
|
+
getClient().session.status().catch(() => null),
|
|
310
|
+
]);
|
|
311
|
+
if (msgRes.data) {
|
|
312
|
+
useSyncStore.getState().hydrate(sessionId, msgRes.data);
|
|
313
|
+
}
|
|
314
|
+
// Update session status from server — without this,
|
|
315
|
+
// a dead SSE means session.idle never arrives and the
|
|
316
|
+
// UI stays stuck on "busy" forever.
|
|
317
|
+
if (statusRes?.data) {
|
|
318
|
+
const statuses = statusRes.data;
|
|
319
|
+
const serverStatus = statuses[sessionId];
|
|
320
|
+
if (serverStatus) {
|
|
321
|
+
useSyncStore.getState().setStatus(sessionId, serverStatus);
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
// Session not in busy statuses map → it's idle
|
|
325
|
+
useSyncStore.getState().setStatus(sessionId, { type: "idle" });
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
// Silently ignore — will retry on next interval
|
|
331
|
+
}
|
|
332
|
+
finally {
|
|
333
|
+
pollInFlightRef.current = false;
|
|
334
|
+
pollInFlightSessions.delete(sessionId);
|
|
335
|
+
lastPartCountRef.current = countParts();
|
|
336
|
+
}
|
|
337
|
+
}, MESSAGE_POLL_INTERVAL_MS);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
// Session is idle — stop polling
|
|
342
|
+
if (pollTimerRef.current) {
|
|
343
|
+
clearInterval(pollTimerRef.current);
|
|
344
|
+
pollTimerRef.current = null;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
// Cleanup polling on unmount
|
|
349
|
+
useEffect(() => {
|
|
350
|
+
return () => {
|
|
351
|
+
if (pollTimerRef.current) {
|
|
352
|
+
clearInterval(pollTimerRef.current);
|
|
353
|
+
pollTimerRef.current = null;
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
}, []);
|
|
357
|
+
// Single selector that derives MessageWithParts[] with reference caching.
|
|
358
|
+
// The buildMessages function returns the same array reference if nothing
|
|
359
|
+
// relevant to this session changed — preventing unnecessary re-renders.
|
|
360
|
+
const messages = useSyncStore((s) => buildMessages(sessionId, s.messages[sessionId], s.parts));
|
|
361
|
+
const status = useSyncStore((s) => s.sessionStatus[sessionId] ?? IDLE_STATUS);
|
|
362
|
+
const diffs = useSyncStore((s) => s.diffs[sessionId]);
|
|
363
|
+
const todos = useSyncStore((s) => s.todos[sessionId]);
|
|
364
|
+
const isBusy = status?.type === "busy" || status?.type === "retry";
|
|
365
|
+
const isLoading = !useSyncStore((s) => sessionId in s.messages);
|
|
366
|
+
return {
|
|
367
|
+
messages,
|
|
368
|
+
status,
|
|
369
|
+
isBusy,
|
|
370
|
+
isLoading,
|
|
371
|
+
diffs: diffs ?? EMPTY_DIFFS,
|
|
372
|
+
todos: todos ?? EMPTY_TODOS,
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=use-session-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-sync.js","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { BillingError } from '../platform/api/errors.js';
|
|
2
|
+
import type { ModelKey } from './use-model-store.js';
|
|
3
|
+
/** Coarse session lifecycle for the host's top-level gating. */
|
|
4
|
+
export type SessionPhase = 'starting' | 'ready' | 'error';
|
|
5
|
+
/**
|
|
6
|
+
* Whether the `/start` poll should retry. A 404 on a freshly-minted session is
|
|
7
|
+
* the optimistic create-vs-start race (the create POST hasn't landed yet), so
|
|
8
|
+
* retry it for the grace window; a 404 on any other (non-fresh) session is a
|
|
9
|
+
* genuinely-missing/no-access session and is terminal at once. Other terminal
|
|
10
|
+
* SessionStartErrors never retry; transient transport failures retry a few times.
|
|
11
|
+
*/
|
|
12
|
+
export declare function shouldRetrySessionStart(failureCount: number, error: unknown, sessionId: string): boolean;
|
|
13
|
+
/** Discriminant for `KortixSendError` — what kind of failure interrupted a send. */
|
|
14
|
+
export type KortixSendErrorKind = 'billing' | 'runtime-not-ready' | 'runtime-error';
|
|
15
|
+
/** Typed failure surfaced by `send` (via `sendError`) and thrown by
|
|
16
|
+
* `answerQuestion`/`rejectQuestion`/`answerPermission`. */
|
|
17
|
+
export interface KortixSendError {
|
|
18
|
+
kind: KortixSendErrorKind;
|
|
19
|
+
/** Human-readable message, already formatted for display. */
|
|
20
|
+
message: string;
|
|
21
|
+
/** Present when `kind === 'billing'` — the parsed 402 detail. */
|
|
22
|
+
billing?: BillingError;
|
|
23
|
+
/** The original thrown value, for callers that want more detail. */
|
|
24
|
+
cause: unknown;
|
|
25
|
+
}
|
|
26
|
+
/** Classify a thrown/rejected error from a send or a permission/question reply
|
|
27
|
+
* into a `KortixSendError`. Pure — safe to unit test without a runtime. */
|
|
28
|
+
export declare function classifySendError(error: unknown): KortixSendError;
|
|
29
|
+
/** The optimistic-send + last-error state `send` drives. Modeled as a small
|
|
30
|
+
* reducer-ish pair of pure helpers so the transition logic is unit-testable
|
|
31
|
+
* without rendering the hook. */
|
|
32
|
+
export interface SendState {
|
|
33
|
+
/** Pending optimistic message text, or null. */
|
|
34
|
+
pending: string | null;
|
|
35
|
+
/** Last send failure, or null. Reset on every new `send` call. */
|
|
36
|
+
sendError: KortixSendError | null;
|
|
37
|
+
}
|
|
38
|
+
/** New state when a send is kicked off — always clears any previous error. */
|
|
39
|
+
export declare function sendStateOnStart(text: string): SendState;
|
|
40
|
+
/** New state when a send fails — drops the optimistic message and classifies
|
|
41
|
+
* the error. */
|
|
42
|
+
export declare function sendStateOnError(error: unknown): SendState;
|
|
43
|
+
/**
|
|
44
|
+
* Answer an agent question through the session's runtime and drop it from
|
|
45
|
+
* local pending state — but only once the server has actually accepted the
|
|
46
|
+
* reply. On failure the question stays pending and a `KortixSendError` is
|
|
47
|
+
* thrown.
|
|
48
|
+
*/
|
|
49
|
+
export declare function answerQuestion(requestId: string, answers: string[][]): Promise<void>;
|
|
50
|
+
/** Reject an agent question through the session's runtime (see `answerQuestion`). */
|
|
51
|
+
export declare function rejectQuestion(requestId: string): Promise<void>;
|
|
52
|
+
/** Answer an agent permission request through the session's runtime (see `answerQuestion`). */
|
|
53
|
+
export declare function answerPermission(requestId: string, reply: 'once' | 'always' | 'reject', message?: string): Promise<void>;
|
|
54
|
+
export interface UseSessionOptions {
|
|
55
|
+
/** Long-poll budget (ms) the client requests on `/start`; the server clamps it. */
|
|
56
|
+
waitMs?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Replay a stashed first message (prompt + model + agent from the "new session"
|
|
59
|
+
* screen) once the runtime is ready and the thread is empty. Default true. Hosts
|
|
60
|
+
* with their own first-message hand-off (e.g. apps/web) set this false.
|
|
61
|
+
*/
|
|
62
|
+
replayStartStash?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Gate the whole hook (the /start poll + switch + SSE). Default true. Set false
|
|
65
|
+
* to hold off until a precondition is met (e.g. a billing gate resolves) — mirrors
|
|
66
|
+
* a query `enabled` flag.
|
|
67
|
+
*/
|
|
68
|
+
enabled?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Mount the chat-consumption engine — `useSessionSync` (messages/status/diffs/
|
|
71
|
+
* todos, including its 10s busy-poll SSE-stall fallback) and `useQuestionSelfHeal`
|
|
72
|
+
* (the 2s missed-`question.asked` self-heal poll) — on top of the boot/lifecycle
|
|
73
|
+
* machinery every host needs. Default true.
|
|
74
|
+
*
|
|
75
|
+
* Set this false when the host mounts its OWN chat surface for the same
|
|
76
|
+
* `(projectId, sessionId)` (e.g. apps/web's `SessionChat`, which has its own
|
|
77
|
+
* `useSessionSync` + `useQuestionSelfHeal`): with two callers of `useSession`
|
|
78
|
+
* alive for the same session — this hook (for boot/lifecycle) and the host's
|
|
79
|
+
* chat component — leaving it `true` would double-mount both pollers, running
|
|
80
|
+
* the question self-heal poll twice and the busy-poll fallback at ~2x cadence
|
|
81
|
+
* for no benefit, since nothing reads this hook's chat fields anyway.
|
|
82
|
+
*
|
|
83
|
+
* When `false`: `messages`/`diffs`/`todos` are empty arrays, `status` is the
|
|
84
|
+
* idle status, `isBusy`/`isLoading` are `false`, `questions`/`permissions` stay
|
|
85
|
+
* live (populated by SSE via the still-active event stream, just without the
|
|
86
|
+
* self-heal poll backstop), and `replayStartStash` is force-disabled (it reads
|
|
87
|
+
* the now-empty chat state, so it would never fire correctly). Everything the
|
|
88
|
+
* boot/lifecycle fields need — `start`/`switch`/`runtimePhase`/`sandbox`/`stage`/
|
|
89
|
+
* `opencodeSessionId` — is unaffected.
|
|
90
|
+
*/
|
|
91
|
+
chatEngine?: boolean;
|
|
92
|
+
}
|
|
93
|
+
export declare function useSession(projectId: string, sessionId: string, options?: UseSessionOptions): {
|
|
94
|
+
projectId: string;
|
|
95
|
+
sessionId: string;
|
|
96
|
+
/** Canonical OpenCode root id, or null while resolving. */
|
|
97
|
+
opencodeSessionId: string | null;
|
|
98
|
+
messages: import("../state/sync-store.js").MessageWithParts[];
|
|
99
|
+
status: import("@opencode-ai/sdk/v2/types").SessionStatus;
|
|
100
|
+
questions: import("@opencode-ai/sdk/v2/types").QuestionRequest[];
|
|
101
|
+
permissions: import("@opencode-ai/sdk/v2/types").PermissionRequest[];
|
|
102
|
+
diffs: (Omit<import("@opencode-ai/sdk/v2/types").SnapshotFileDiff, "patch"> & {
|
|
103
|
+
patch?: string;
|
|
104
|
+
before?: string;
|
|
105
|
+
after?: string;
|
|
106
|
+
})[];
|
|
107
|
+
todos: import("@opencode-ai/sdk/v2/types").Todo[];
|
|
108
|
+
phase: SessionPhase;
|
|
109
|
+
/** Raw /start stage (provisioning|starting|ready|stopped|failed), for boot UI. */
|
|
110
|
+
stage: import("../platform/projects-client/index.js").SessionStartStage | null;
|
|
111
|
+
/** The serialized session_sandboxes row from /start (status, metadata, ids), or null. */
|
|
112
|
+
sandbox: import("../platform/projects-client/index.js").ProjectSessionSandbox | null;
|
|
113
|
+
/** True once the runtime is switched in and ready (equivalent to phase==='ready'). */
|
|
114
|
+
switched: boolean;
|
|
115
|
+
/** Whether polling /start again can still make progress (false = terminal). */
|
|
116
|
+
retriable: boolean;
|
|
117
|
+
/** Terminal /start failure, for hosts to render instead of spinning forever. */
|
|
118
|
+
startError: import("../platform/projects-client/index.js").SessionStartError | null;
|
|
119
|
+
/** Granular boot phase (connecting|booting|ready|unreachable) for detailed UI. */
|
|
120
|
+
runtimePhase: import("./use-runtime-phase.js").RuntimePhase;
|
|
121
|
+
isBusy: boolean;
|
|
122
|
+
isLoading: boolean;
|
|
123
|
+
isError: boolean;
|
|
124
|
+
/** Whether there are open interactive prompts (questions/permissions). */
|
|
125
|
+
hasPending: boolean;
|
|
126
|
+
/** Latest /start reason (e.g. 'runtime_waking'), surfaced for boot/error UI. */
|
|
127
|
+
reason: string | null;
|
|
128
|
+
/** Pending optimistic message text, or null. */
|
|
129
|
+
pending: string | null;
|
|
130
|
+
/** True while the current `send` mutation is in flight. */
|
|
131
|
+
isSending: boolean;
|
|
132
|
+
/** Last `send` failure, typed (billing / runtime-not-ready / runtime-error),
|
|
133
|
+
* or null. Reset on every new `send` call. */
|
|
134
|
+
sendError: KortixSendError | null;
|
|
135
|
+
models: import("./model-flatten.js").FlatModel[];
|
|
136
|
+
agents: import("@opencode-ai/sdk/v2/types").Agent[];
|
|
137
|
+
defaultAgent: string | null;
|
|
138
|
+
commands: {
|
|
139
|
+
name: string;
|
|
140
|
+
path: string;
|
|
141
|
+
description: string | null;
|
|
142
|
+
}[];
|
|
143
|
+
picks: import("./use-session-picks.js").SessionPicks;
|
|
144
|
+
send: (text: string, override?: {
|
|
145
|
+
model?: ModelKey | null;
|
|
146
|
+
agent?: string | null;
|
|
147
|
+
variant?: string | null;
|
|
148
|
+
}) => void;
|
|
149
|
+
cancel: () => void;
|
|
150
|
+
runCommand: (command: string, args: string) => void;
|
|
151
|
+
/** Answer an agent question through the server and drop it from pending
|
|
152
|
+
* state on success; throws a `KortixSendError` and leaves it pending on
|
|
153
|
+
* failure. */
|
|
154
|
+
answerQuestion: typeof answerQuestion;
|
|
155
|
+
/** Reject an agent question through the server (see `answerQuestion`). */
|
|
156
|
+
rejectQuestion: typeof rejectQuestion;
|
|
157
|
+
/** Answer an agent permission request through the server (see `answerQuestion`). */
|
|
158
|
+
answerPermission: typeof answerPermission;
|
|
159
|
+
/** @deprecated Drops the question from local state WITHOUT replying to the
|
|
160
|
+
* server — the agent run stays blocked waiting on it. Use `answerQuestion`
|
|
161
|
+
* / `rejectQuestion` instead. */
|
|
162
|
+
removeQuestion: (requestId: string) => void;
|
|
163
|
+
/** @deprecated Drops the permission request from local state WITHOUT
|
|
164
|
+
* replying to the server — the agent run stays blocked waiting on it. Use
|
|
165
|
+
* `answerPermission` instead. */
|
|
166
|
+
removePermission: (requestId: string) => void;
|
|
167
|
+
/** Force a re-poll of /start (e.g. a Retry button on the boot screen). */
|
|
168
|
+
retry: () => void;
|
|
169
|
+
};
|
|
170
|
+
export type UseSessionResult = ReturnType<typeof useSession>;
|
|
171
|
+
//# sourceMappingURL=use-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session.d.ts","sourceRoot":"","sources":["../../src/react/use-session.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAIzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAkBlD,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;AAQD,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,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC;CAChB;AASD;2EAC2E;AAC3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAqBjE;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;AAID,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAExD;AAED;gBACgB;AAChB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAE1D;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;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAeD,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB;;;IA6M7B,2DAA2D;;;;;;;;;;;;;IAa3D,kFAAkF;;IAElF,yFAAyF;;IAEzF,sFAAsF;;IAEtF,+EAA+E;;IAE/E,gFAAgF;;IAEhF,kFAAkF;;;;;IAKlF,0EAA0E;;IAE1E,gFAAgF;;IAEhF,gDAAgD;;IAEhD,2DAA2D;;IAE3D;kDAC8C;;;;;;;;;;;iBApGxC,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;;0BAwB3D,MAAM,QAAQ,MAAM;IAyF/C;;kBAEc;;IAEd,0EAA0E;;IAE1E,oFAAoF;;IAEpF;;qCAEiC;;IAEjC;;qCAEiC;;IAEjC,0EAA0E;;EAK7E;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC"}
|