@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,109 @@
|
|
|
1
|
+
import { ScopedCache } from '../../platform/storage/managed-storage.js';
|
|
2
|
+
import { getCurrentRuntimeSandboxId } from '../../state/current-runtime.js';
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Query Keys
|
|
5
|
+
// ============================================================================
|
|
6
|
+
/**
|
|
7
|
+
* Active sandbox/server id, used to scope per-sandbox caches.
|
|
8
|
+
*
|
|
9
|
+
* Each project session is its OWN sandbox (session_id == sandbox_id), but the
|
|
10
|
+
* OpenCode SDK client + caches are global. Without scoping, switching from
|
|
11
|
+
* session A to B would show A's data under B — which is why the code used to
|
|
12
|
+
* NUKE the entire opencode cache on every switch. That nuke is exactly what
|
|
13
|
+
* made returning to an already-open session "reload".
|
|
14
|
+
*
|
|
15
|
+
* By appending the server id to per-sandbox cache keys, every sandbox's data
|
|
16
|
+
* coexists in the cache, so returning to a warm session is instant and we no
|
|
17
|
+
* longer need to tear anything down. Appended at the END so existing prefix
|
|
18
|
+
* matches (e.g. invalidate `['opencode','sessions']`) still hit.
|
|
19
|
+
*
|
|
20
|
+
* `session(id)` / `messages(id)` stay global: opencode session ids are unique
|
|
21
|
+
* per sandbox, so they never collide across sandboxes.
|
|
22
|
+
*/
|
|
23
|
+
export function activeServerKey() {
|
|
24
|
+
try {
|
|
25
|
+
return getCurrentRuntimeSandboxId() ?? 'none';
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return 'none';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// ============================================================================
|
|
32
|
+
// Helper: unwrap SDK response (data / error)
|
|
33
|
+
// ============================================================================
|
|
34
|
+
export function unwrap(result) {
|
|
35
|
+
if (result.error) {
|
|
36
|
+
const err = result.error;
|
|
37
|
+
const status = result.response?.status;
|
|
38
|
+
// Try to extract the most specific error message from the SDK response.
|
|
39
|
+
// `error` is genuinely `unknown` here — its shape varies by which SDK
|
|
40
|
+
// call produced it (typed error unions differ per endpoint) — so this
|
|
41
|
+
// duck-types defensively instead of assuming a shape.
|
|
42
|
+
const errRec = err && typeof err === 'object' ? err : undefined;
|
|
43
|
+
const dataRec = errRec?.data && typeof errRec.data === 'object' ? errRec.data : undefined;
|
|
44
|
+
const msg = dataRec?.message ||
|
|
45
|
+
errRec?.message ||
|
|
46
|
+
errRec?.error ||
|
|
47
|
+
(typeof err === 'string' ? err : null) ||
|
|
48
|
+
(typeof err === 'object' ? JSON.stringify(err) : null) ||
|
|
49
|
+
(status ? `Server returned ${status}` : 'SDK request failed');
|
|
50
|
+
throw new Error(String(msg));
|
|
51
|
+
}
|
|
52
|
+
return result.data;
|
|
53
|
+
}
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// Session Hooks
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// localStorage placeholder caches are per-sandbox too — scope by active server
|
|
58
|
+
// id so re-opening a warm session paints its OWN last data, never the previous
|
|
59
|
+
// sandbox's. Scoping lives in the helpers so every call site inherits it.
|
|
60
|
+
//
|
|
61
|
+
// These are backed by ScopedCache, which caps each family to its N
|
|
62
|
+
// most-recently-used scopes. That cap is the whole point: the default scope is
|
|
63
|
+
// the EPHEMERAL per-sandbox server id, so without a cap every new session would
|
|
64
|
+
// leak a fresh `kortix_cache_*:<serverId>` blob forever and eventually blow the
|
|
65
|
+
// localStorage quota (which then crashes whatever store writes next). The cache
|
|
66
|
+
// is disposable — a miss just refetches — so small caps are safe.
|
|
67
|
+
export const LS_SESSIONS = 'kortix_cache_sessions';
|
|
68
|
+
export const LS_AGENTS = 'kortix_cache_agents';
|
|
69
|
+
export const LS_COMMANDS = 'kortix_cache_commands';
|
|
70
|
+
export const LS_PROVIDERS = 'kortix_cache_providers';
|
|
71
|
+
// Session/command lists are keyed per ephemeral sandbox — keep only the few
|
|
72
|
+
// most-recent sandboxes warm. Agents are keyed per directory (+ global), which
|
|
73
|
+
// is a small, stable space, so it gets more headroom. Providers are global.
|
|
74
|
+
const sessionsCache = new ScopedCache(LS_SESSIONS, 4);
|
|
75
|
+
const agentsCache = new ScopedCache(LS_AGENTS, 8);
|
|
76
|
+
const commandsCache = new ScopedCache(LS_COMMANDS, 4);
|
|
77
|
+
const providersCache = new ScopedCache(LS_PROVIDERS, 2);
|
|
78
|
+
const cacheByFamily = {
|
|
79
|
+
[LS_SESSIONS]: sessionsCache,
|
|
80
|
+
[LS_AGENTS]: agentsCache,
|
|
81
|
+
[LS_COMMANDS]: commandsCache,
|
|
82
|
+
[LS_PROVIDERS]: providersCache,
|
|
83
|
+
};
|
|
84
|
+
export function getLSCache(family, scope) {
|
|
85
|
+
return cacheByFamily[family]?.get(scope ?? activeServerKey());
|
|
86
|
+
}
|
|
87
|
+
export function setLSCache(family, value, scope) {
|
|
88
|
+
cacheByFamily[family]?.set(scope ?? activeServerKey(), value);
|
|
89
|
+
}
|
|
90
|
+
const PROJECT_SESSION_UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
91
|
+
export function canQueryOpenCodeSession(sessionId) {
|
|
92
|
+
return !!sessionId && !PROJECT_SESSION_UUID_RE.test(sessionId);
|
|
93
|
+
}
|
|
94
|
+
export function clearProjectProviderCache(projectId) {
|
|
95
|
+
providersCache.remove(`proj:${projectId}:native`);
|
|
96
|
+
providersCache.remove(`proj:${projectId}:gateway`);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Stable cache scope for data that does NOT vary per sandbox. The default
|
|
100
|
+
* scope is the ephemeral per-sandbox server id, which is correct for
|
|
101
|
+
* session-specific data (session lists collide across sandboxes) but wrong for
|
|
102
|
+
* platform/project-level data like the model list and the agent roster: those
|
|
103
|
+
* are identical across every sandbox, yet a per-server key guarantees a cache
|
|
104
|
+
* MISS on every brand-new session (new sandbox → new server id → never seen).
|
|
105
|
+
* Keying them here instead lets a fresh session paint its pickers from cache on
|
|
106
|
+
* the first frame, before the sandbox is even up — killing the visible pop-in.
|
|
107
|
+
*/
|
|
108
|
+
export const CACHE_SCOPE_GLOBAL = 'global';
|
|
109
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAQzE,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,OAAO,0BAA0B,EAAE,IAAI,MAAM,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,6CAA6C;AAC7C,+EAA+E;AAE/E,MAAM,UAAU,MAAM,CAAI,MAA0D;IAClF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAI,MAAM,CAAC,QAAiC,EAAE,MAAM,CAAC;QACjE,wEAAwE;QACxE,sEAAsE;QACtE,sEAAsE;QACtE,sDAAsD;QACtD,MAAM,MAAM,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAE,GAA+B,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,OAAO,GACX,MAAM,EAAE,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,IAAgC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,MAAM,GAAG,GACP,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK;YACb,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACtC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,IAAS,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,EAAE;AACF,mEAAmE;AACnE,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAErD,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,aAAa,GAAG,IAAI,WAAW,CAAY,WAAW,EAAE,CAAC,CAAC,CAAC;AACjE,MAAM,WAAW,GAAG,IAAI,WAAW,CAAU,SAAS,EAAE,CAAC,CAAC,CAAC;AAC3D,MAAM,aAAa,GAAG,IAAI,WAAW,CAAY,WAAW,EAAE,CAAC,CAAC,CAAC;AACjE,MAAM,cAAc,GAAG,IAAI,WAAW,CAA0B,YAAY,EAAE,CAAC,CAAC,CAAC;AAEjF,MAAM,aAAa,GAAyC;IAC1D,CAAC,WAAW,CAAC,EAAE,aAAa;IAC5B,CAAC,SAAS,CAAC,EAAE,WAAW;IACxB,CAAC,WAAW,CAAC,EAAE,aAAa;IAC5B,CAAC,YAAY,CAAC,EAAE,cAAc;CAC/B,CAAC;AAEF,MAAM,UAAU,UAAU,CAAI,MAAc,EAAE,KAAc;IAC1D,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,eAAe,EAAE,CAAkB,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,KAAc,EAAE,KAAc;IACvE,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,eAAe,EAAE,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,uBAAuB,GAC3B,4EAA4E,CAAC;AAE/E,MAAM,UAAU,uBAAuB,CAAC,SAAoC;IAC1E,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,cAAc,CAAC,MAAM,CAAC,QAAQ,SAAS,SAAS,CAAC,CAAC;IAClD,cAAc,CAAC,MAAM,CAAC,QAAQ,SAAS,UAAU,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Session } from '@opencode-ai/sdk/v2/client';
|
|
2
|
+
export declare function useShareSession(): import("@tanstack/react-query").UseMutationResult<Session, Error, string, unknown>;
|
|
3
|
+
export declare function useUnshareSession(): import("@tanstack/react-query").UseMutationResult<Session, Error, string, unknown>;
|
|
4
|
+
//# sourceMappingURL=sharing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharing.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/sharing.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAQ1D,wBAAgB,eAAe,uFAsB9B;AAED,wBAAgB,iBAAiB,uFAsBhC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
3
|
+
import { getClient } from '../../opencode/client.js';
|
|
4
|
+
import { opencodeKeys } from './keys.js';
|
|
5
|
+
import { unwrap } from './shared.js';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Share / Unshare Hooks
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export function useShareSession() {
|
|
10
|
+
const queryClient = useQueryClient();
|
|
11
|
+
return useMutation({
|
|
12
|
+
mutationFn: async (sessionId) => {
|
|
13
|
+
const client = getClient();
|
|
14
|
+
const result = await client.session.share({ sessionID: sessionId });
|
|
15
|
+
return unwrap(result);
|
|
16
|
+
},
|
|
17
|
+
onSuccess: (updatedSession) => {
|
|
18
|
+
// Surgically update cache with share info
|
|
19
|
+
queryClient.setQueryData(opencodeKeys.session(updatedSession.id), updatedSession);
|
|
20
|
+
queryClient.setQueryData(opencodeKeys.sessions(), (old) => {
|
|
21
|
+
if (!old)
|
|
22
|
+
return old;
|
|
23
|
+
const idx = old.findIndex((s) => s.id === updatedSession.id);
|
|
24
|
+
if (idx < 0)
|
|
25
|
+
return old;
|
|
26
|
+
const next = [...old];
|
|
27
|
+
next[idx] = updatedSession;
|
|
28
|
+
return next;
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function useUnshareSession() {
|
|
34
|
+
const queryClient = useQueryClient();
|
|
35
|
+
return useMutation({
|
|
36
|
+
mutationFn: async (sessionId) => {
|
|
37
|
+
const client = getClient();
|
|
38
|
+
const result = await client.session.unshare({ sessionID: sessionId });
|
|
39
|
+
return unwrap(result);
|
|
40
|
+
},
|
|
41
|
+
onSuccess: (updatedSession) => {
|
|
42
|
+
// Surgically update cache with unshare info
|
|
43
|
+
queryClient.setQueryData(opencodeKeys.session(updatedSession.id), updatedSession);
|
|
44
|
+
queryClient.setQueryData(opencodeKeys.sessions(), (old) => {
|
|
45
|
+
if (!old)
|
|
46
|
+
return old;
|
|
47
|
+
const idx = old.findIndex((s) => s.id === updatedSession.id);
|
|
48
|
+
if (idx < 0)
|
|
49
|
+
return old;
|
|
50
|
+
const next = [...old];
|
|
51
|
+
next[idx] = updatedSession;
|
|
52
|
+
return next;
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=sharing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharing.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/sharing.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,UAAU,eAAe;IAC7B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,MAAM,CAAY,CAAC;QACnC,CAAC;QACD,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE;YAC5B,0CAA0C;YAC1C,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;YAClF,WAAW,CAAC,YAAY,CAAY,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBACnE,IAAI,CAAC,GAAG;oBAAE,OAAO,GAAG,CAAC;gBACrB,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC;gBAC7D,IAAI,GAAG,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;gBACxB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC,MAAM,CAAY,CAAC;QACnC,CAAC;QACD,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE;YAC5B,4CAA4C;YAC5C,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;YAClF,WAAW,CAAC,YAAY,CAAY,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBACnE,IAAI,CAAC,GAAG;oBAAE,OAAO,GAAG,CAAC;gBACrB,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC;gBAC7D,IAAI,GAAG,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;gBACxB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Skill, ToolListItem } from './keys.js';
|
|
2
|
+
export declare function useOpenCodeToolIds(): import("@tanstack/react-query").UseQueryResult<NoInfer<string[]>, Error>;
|
|
3
|
+
export declare function useOpenCodeTools(providerID: string, modelID: string): import("@tanstack/react-query").UseQueryResult<NoInfer<ToolListItem[]>, Error>;
|
|
4
|
+
export declare function useOpenCodeSkills(): import("@tanstack/react-query").UseQueryResult<NoInfer<Skill[]>, Error>;
|
|
5
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAOlD,wBAAgB,kBAAkB,6EAajC;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kFAanE;AAMD,wBAAgB,iBAAiB,4EAahC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useQuery } from '@tanstack/react-query';
|
|
3
|
+
import { getClient } from '../../opencode/client.js';
|
|
4
|
+
import { opencodeKeys, useOpenCodeRuntimeReady } from './keys.js';
|
|
5
|
+
import { unwrap } from './shared.js';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Tool Hooks
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export function useOpenCodeToolIds() {
|
|
10
|
+
const runtimeReady = useOpenCodeRuntimeReady();
|
|
11
|
+
return useQuery({
|
|
12
|
+
queryKey: opencodeKeys.toolIds(),
|
|
13
|
+
queryFn: async () => {
|
|
14
|
+
const client = getClient();
|
|
15
|
+
const result = await client.tool.ids();
|
|
16
|
+
return unwrap(result);
|
|
17
|
+
},
|
|
18
|
+
enabled: runtimeReady,
|
|
19
|
+
staleTime: Infinity,
|
|
20
|
+
gcTime: 10 * 60 * 1000,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function useOpenCodeTools(providerID, modelID) {
|
|
24
|
+
const runtimeReady = useOpenCodeRuntimeReady();
|
|
25
|
+
return useQuery({
|
|
26
|
+
queryKey: opencodeKeys.tools(providerID, modelID),
|
|
27
|
+
queryFn: async () => {
|
|
28
|
+
const client = getClient();
|
|
29
|
+
const result = await client.tool.list({ provider: providerID, model: modelID });
|
|
30
|
+
return unwrap(result);
|
|
31
|
+
},
|
|
32
|
+
enabled: runtimeReady && !!providerID && !!modelID,
|
|
33
|
+
staleTime: Infinity,
|
|
34
|
+
gcTime: 10 * 60 * 1000,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Skill Hooks
|
|
39
|
+
// ============================================================================
|
|
40
|
+
export function useOpenCodeSkills() {
|
|
41
|
+
const runtimeReady = useOpenCodeRuntimeReady();
|
|
42
|
+
return useQuery({
|
|
43
|
+
queryKey: opencodeKeys.skills(),
|
|
44
|
+
queryFn: async () => {
|
|
45
|
+
const client = getClient();
|
|
46
|
+
const result = await client.app.skills();
|
|
47
|
+
return unwrap(result);
|
|
48
|
+
},
|
|
49
|
+
enabled: runtimeReady,
|
|
50
|
+
staleTime: Infinity,
|
|
51
|
+
gcTime: 10 * 60 * 1000,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/tools.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,OAAO,QAAQ,CAAW;QACxB,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE;QAChC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;KACvB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,OAAe;IAClE,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,OAAO,QAAQ,CAAiB;QAC9B,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;QACjD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAChF,OAAO,MAAM,CAAC,MAAM,CAAmB,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO;QAClD,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;KACvB,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,OAAO,QAAQ,CAAU;QACvB,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE;QAC/B,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC,MAAM,CAAY,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { MessageWithPartsLike } from '../turns/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Classify tool parts that could be blocked on an unanswered permission ask.
|
|
4
|
+
* Unlike questions (their own `question` tool), a permission can gate ANY tool
|
|
5
|
+
* (bash, edit, write, …), so the signal is fuzzier — two shapes qualify:
|
|
6
|
+
*
|
|
7
|
+
* - `pending` with non-empty input: args are fully streamed but execution never
|
|
8
|
+
* started. Transiently true for every tool for a frame or two, durably true
|
|
9
|
+
* for one blocked on a permission ask. (`pending` with EMPTY input is the
|
|
10
|
+
* known "session ended abruptly" stale shape — ignored.)
|
|
11
|
+
* - `running` for a long time: covers opencode versions/tools where a blocked
|
|
12
|
+
* part reports `running`. Fuzzy on purpose — a long bash command looks the
|
|
13
|
+
* same — so callers poll this shape on a much slower cadence.
|
|
14
|
+
*
|
|
15
|
+
* Returns which shapes are present so the hook can pick a poll cadence.
|
|
16
|
+
*/
|
|
17
|
+
export declare function findPermissionBlockedCandidate(messages: MessageWithPartsLike[] | undefined, now: number): {
|
|
18
|
+
pendingWithInput: boolean;
|
|
19
|
+
staleRunning: boolean;
|
|
20
|
+
};
|
|
21
|
+
/** True when any non-question tool part is still running/pending — the cheap
|
|
22
|
+
* render-time gate that keeps the poll effect mounted at all. */
|
|
23
|
+
export declare function hasActiveNonQuestionTool(messages: MessageWithPartsLike[] | undefined): boolean;
|
|
24
|
+
export interface UsePermissionSelfHealOptions {
|
|
25
|
+
/** Gate the whole poll — e.g. only while this session's tab/view is active.
|
|
26
|
+
* Default true. */
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Self-heals a missed `permission.asked` SSE event — the permission twin of
|
|
31
|
+
* `useQuestionSelfHeal`, closing the gap where a dropped frame leaves the agent
|
|
32
|
+
* silently blocked on an ask the user never sees (the "have to type `continue`
|
|
33
|
+
* to unwedge it" failure).
|
|
34
|
+
*
|
|
35
|
+
* Because a permission can gate any tool, the trigger is fuzzier than the
|
|
36
|
+
* question hook's, so the cadence is shape-dependent (see
|
|
37
|
+
* `findPermissionBlockedCandidate`): a `pending`-with-input part re-checks
|
|
38
|
+
* `permission.list()` every ~2s like the question hook; a merely long-`running`
|
|
39
|
+
* part — which a legitimate slow bash command also produces — is probed at most
|
|
40
|
+
* every 15s so an active session never gets hammered. The poll stops the moment
|
|
41
|
+
* a pending permission shows up (from this poll or the SSE event finally
|
|
42
|
+
* arriving) or the tool part settles.
|
|
43
|
+
*/
|
|
44
|
+
export declare function usePermissionSelfHeal(sessionId: string, messages: MessageWithPartsLike[] | undefined, options?: UsePermissionSelfHealOptions): void;
|
|
45
|
+
//# sourceMappingURL=use-permission-self-heal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-permission-self-heal.d.ts","sourceRoot":"","sources":["../../src/react/use-permission-self-heal.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAgB,MAAM,gBAAgB,CAAC;AAMzE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,oBAAoB,EAAE,GAAG,SAAS,EAC5C,GAAG,EAAE,MAAM,GACV;IAAE,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAyBtD;AAED;iEACiE;AACjE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,SAAS,GAAG,OAAO,CAW9F;AAED,MAAM,WAAW,4BAA4B;IAC3C;uBACmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB,EAAE,GAAG,SAAS,EAC5C,OAAO,GAAE,4BAAiC,GACzC,IAAI,CAiEN"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import { getClient } from '../opencode/client.js';
|
|
4
|
+
import { useOpenCodePendingStore } from '../state/opencode-pending-store.js';
|
|
5
|
+
/** A tool stuck in `running` this long with nothing pending is suspicious —
|
|
6
|
+
* long enough that ordinary tool startup never trips it. */
|
|
7
|
+
const STALE_RUNNING_MS = 10_000;
|
|
8
|
+
/**
|
|
9
|
+
* Classify tool parts that could be blocked on an unanswered permission ask.
|
|
10
|
+
* Unlike questions (their own `question` tool), a permission can gate ANY tool
|
|
11
|
+
* (bash, edit, write, …), so the signal is fuzzier — two shapes qualify:
|
|
12
|
+
*
|
|
13
|
+
* - `pending` with non-empty input: args are fully streamed but execution never
|
|
14
|
+
* started. Transiently true for every tool for a frame or two, durably true
|
|
15
|
+
* for one blocked on a permission ask. (`pending` with EMPTY input is the
|
|
16
|
+
* known "session ended abruptly" stale shape — ignored.)
|
|
17
|
+
* - `running` for a long time: covers opencode versions/tools where a blocked
|
|
18
|
+
* part reports `running`. Fuzzy on purpose — a long bash command looks the
|
|
19
|
+
* same — so callers poll this shape on a much slower cadence.
|
|
20
|
+
*
|
|
21
|
+
* Returns which shapes are present so the hook can pick a poll cadence.
|
|
22
|
+
*/
|
|
23
|
+
export function findPermissionBlockedCandidate(messages, now) {
|
|
24
|
+
let pendingWithInput = false;
|
|
25
|
+
let staleRunning = false;
|
|
26
|
+
if (!messages)
|
|
27
|
+
return { pendingWithInput, staleRunning };
|
|
28
|
+
for (const m of messages) {
|
|
29
|
+
if (m.info.role !== 'assistant')
|
|
30
|
+
continue;
|
|
31
|
+
for (const p of m.parts) {
|
|
32
|
+
if (p.type !== 'tool')
|
|
33
|
+
continue;
|
|
34
|
+
const tool = p;
|
|
35
|
+
// Questions have their own self-heal (`useQuestionSelfHeal`).
|
|
36
|
+
if (tool.tool === 'question')
|
|
37
|
+
continue;
|
|
38
|
+
const state = tool.state;
|
|
39
|
+
if (state.status === 'pending' && Object.keys(state.input ?? {}).length > 0) {
|
|
40
|
+
pendingWithInput = true;
|
|
41
|
+
}
|
|
42
|
+
else if (state.status === 'running') {
|
|
43
|
+
const start = state.time?.start;
|
|
44
|
+
if (typeof start === 'number' && now - start > STALE_RUNNING_MS)
|
|
45
|
+
staleRunning = true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return { pendingWithInput, staleRunning };
|
|
50
|
+
}
|
|
51
|
+
/** True when any non-question tool part is still running/pending — the cheap
|
|
52
|
+
* render-time gate that keeps the poll effect mounted at all. */
|
|
53
|
+
export function hasActiveNonQuestionTool(messages) {
|
|
54
|
+
if (!messages)
|
|
55
|
+
return false;
|
|
56
|
+
return messages.some((m) => {
|
|
57
|
+
if (m.info.role !== 'assistant')
|
|
58
|
+
return false;
|
|
59
|
+
return m.parts.some((p) => {
|
|
60
|
+
if (p.type !== 'tool')
|
|
61
|
+
return false;
|
|
62
|
+
const tool = p;
|
|
63
|
+
if (tool.tool === 'question')
|
|
64
|
+
return false;
|
|
65
|
+
return tool.state.status === 'running' || tool.state.status === 'pending';
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Self-heals a missed `permission.asked` SSE event — the permission twin of
|
|
71
|
+
* `useQuestionSelfHeal`, closing the gap where a dropped frame leaves the agent
|
|
72
|
+
* silently blocked on an ask the user never sees (the "have to type `continue`
|
|
73
|
+
* to unwedge it" failure).
|
|
74
|
+
*
|
|
75
|
+
* Because a permission can gate any tool, the trigger is fuzzier than the
|
|
76
|
+
* question hook's, so the cadence is shape-dependent (see
|
|
77
|
+
* `findPermissionBlockedCandidate`): a `pending`-with-input part re-checks
|
|
78
|
+
* `permission.list()` every ~2s like the question hook; a merely long-`running`
|
|
79
|
+
* part — which a legitimate slow bash command also produces — is probed at most
|
|
80
|
+
* every 15s so an active session never gets hammered. The poll stops the moment
|
|
81
|
+
* a pending permission shows up (from this poll or the SSE event finally
|
|
82
|
+
* arriving) or the tool part settles.
|
|
83
|
+
*/
|
|
84
|
+
export function usePermissionSelfHeal(sessionId, messages, options = {}) {
|
|
85
|
+
const { enabled = true } = options;
|
|
86
|
+
const addPermission = useOpenCodePendingStore((s) => s.addPermission);
|
|
87
|
+
const pendingCount = useOpenCodePendingStore((s) => Object.values(s.permissions).filter((p) => p.sessionID === sessionId).length);
|
|
88
|
+
const active = useMemo(() => hasActiveNonQuestionTool(messages), [messages]);
|
|
89
|
+
const messagesRef = useRef(messages);
|
|
90
|
+
messagesRef.current = messages;
|
|
91
|
+
const inFlightRef = useRef(false);
|
|
92
|
+
const lastAtRef = useRef(0);
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
if (!enabled || !active || pendingCount > 0)
|
|
95
|
+
return;
|
|
96
|
+
let cancelled = false;
|
|
97
|
+
const hydrate = () => {
|
|
98
|
+
if (inFlightRef.current || cancelled)
|
|
99
|
+
return;
|
|
100
|
+
const now = Date.now();
|
|
101
|
+
// Evaluate the blocked-candidate shapes at poll time, not render time —
|
|
102
|
+
// a part silently aging past the stale threshold produces no re-render.
|
|
103
|
+
const { pendingWithInput, staleRunning } = findPermissionBlockedCandidate(messagesRef.current, now);
|
|
104
|
+
if (!pendingWithInput && !staleRunning)
|
|
105
|
+
return;
|
|
106
|
+
const minGap = pendingWithInput ? 1_500 : 15_000;
|
|
107
|
+
if (now - lastAtRef.current < minGap)
|
|
108
|
+
return;
|
|
109
|
+
// Acquire the client lazily: during the sandbox-loading window
|
|
110
|
+
// getClient() throws "Server URL not ready". Skip this tick and let the
|
|
111
|
+
// interval retry once the runtime URL is pinned — never throw here.
|
|
112
|
+
let client;
|
|
113
|
+
try {
|
|
114
|
+
client = getClient();
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
inFlightRef.current = true;
|
|
120
|
+
lastAtRef.current = now;
|
|
121
|
+
void client.permission
|
|
122
|
+
.list()
|
|
123
|
+
.then((res) => {
|
|
124
|
+
if (!res.data || cancelled)
|
|
125
|
+
return;
|
|
126
|
+
res.data.forEach((p) => {
|
|
127
|
+
if (!p?.id)
|
|
128
|
+
return;
|
|
129
|
+
addPermission(p);
|
|
130
|
+
});
|
|
131
|
+
})
|
|
132
|
+
.finally(() => {
|
|
133
|
+
inFlightRef.current = false;
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
hydrate();
|
|
137
|
+
const timer = setInterval(hydrate, 2_000);
|
|
138
|
+
return () => {
|
|
139
|
+
cancelled = true;
|
|
140
|
+
clearInterval(timer);
|
|
141
|
+
};
|
|
142
|
+
}, [enabled, active, pendingCount, addPermission]);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=use-permission-self-heal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-permission-self-heal.js","sourceRoot":"","sources":["../../src/react/use-permission-self-heal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ProjectConfigSummary } from '../platform/projects-client/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Server-side project config — the single source of truth for everything a user
|
|
4
|
+
* selects AROUND a session: agents, commands, skills, the default agent, and env
|
|
5
|
+
* requirements. Fetched from the Kortix server (project detail), so it works
|
|
6
|
+
* before any sandbox runtime exists. This is the canonical home for the
|
|
7
|
+
* "capabilities, not runtime state" split — `useVisibleAgents({ projectId })`
|
|
8
|
+
* and `useProjectModels(projectId)` are the per-surface siblings.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useProjectConfig(projectId: string | null | undefined): ProjectConfigSummary | undefined;
|
|
11
|
+
//# sourceMappingURL=use-project-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-project-config.d.ts","sourceRoot":"","sources":["../../src/react/use-project-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,oBAAoB,EAAoB,MAAM,6BAA6B,CAAC;AAE1F;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,oBAAoB,GAAG,SAAS,CASlC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useQuery } from '@tanstack/react-query';
|
|
3
|
+
import { getProjectDetail } from '../platform/projects-client/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Server-side project config — the single source of truth for everything a user
|
|
6
|
+
* selects AROUND a session: agents, commands, skills, the default agent, and env
|
|
7
|
+
* requirements. Fetched from the Kortix server (project detail), so it works
|
|
8
|
+
* before any sandbox runtime exists. This is the canonical home for the
|
|
9
|
+
* "capabilities, not runtime state" split — `useVisibleAgents({ projectId })`
|
|
10
|
+
* and `useProjectModels(projectId)` are the per-surface siblings.
|
|
11
|
+
*/
|
|
12
|
+
export function useProjectConfig(projectId) {
|
|
13
|
+
const { data } = useQuery({
|
|
14
|
+
queryKey: ['project-config', projectId],
|
|
15
|
+
queryFn: async () => (await getProjectDetail(projectId)).config,
|
|
16
|
+
enabled: !!projectId,
|
|
17
|
+
staleTime: 30_000,
|
|
18
|
+
retry: false,
|
|
19
|
+
});
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=use-project-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-project-config.js","sourceRoot":"","sources":["../../src/react/use-project-config.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAA6B,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE1F;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAoC;IAEpC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QACxB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC;QACvC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,gBAAgB,CAAC,SAAmB,CAAC,CAAC,CAAC,MAAM;QACzE,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type FlatModel } from './model-flatten.js';
|
|
2
|
+
/**
|
|
3
|
+
* Server-side model list for a project — the model parallel to
|
|
4
|
+
* `useVisibleAgents({ projectId })`. Reads the project's gateway catalog
|
|
5
|
+
* (`GET /projects/:id/llm-catalog`) and flattens it to `FlatModel[]` with correct
|
|
6
|
+
* provider/model ids. Works BEFORE any sandbox runtime exists, so a "new session"
|
|
7
|
+
* screen can show + pre-select a model, and the in-session picker shares the same
|
|
8
|
+
* source — no runtime round-trip, no gateway-vs-BYOK key guessing.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useProjectModels(projectId: string | null | undefined): FlatModel[];
|
|
11
|
+
//# sourceMappingURL=use-project-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-project-models.d.ts","sourceRoot":"","sources":["../../src/react/use-project-models.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAGhE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,EAAE,CASlF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useQuery } from '@tanstack/react-query';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { getProjectLlmCatalog } from '../platform/projects-client/index.js';
|
|
5
|
+
import { flattenModels } from './model-flatten.js';
|
|
6
|
+
import { projectLlmCatalogToProviderList } from './provider-selection.js';
|
|
7
|
+
/**
|
|
8
|
+
* Server-side model list for a project — the model parallel to
|
|
9
|
+
* `useVisibleAgents({ projectId })`. Reads the project's gateway catalog
|
|
10
|
+
* (`GET /projects/:id/llm-catalog`) and flattens it to `FlatModel[]` with correct
|
|
11
|
+
* provider/model ids. Works BEFORE any sandbox runtime exists, so a "new session"
|
|
12
|
+
* screen can show + pre-select a model, and the in-session picker shares the same
|
|
13
|
+
* source — no runtime round-trip, no gateway-vs-BYOK key guessing.
|
|
14
|
+
*/
|
|
15
|
+
export function useProjectModels(projectId) {
|
|
16
|
+
const { data } = useQuery({
|
|
17
|
+
queryKey: ['project-llm-catalog', projectId],
|
|
18
|
+
queryFn: () => getProjectLlmCatalog(projectId),
|
|
19
|
+
enabled: !!projectId,
|
|
20
|
+
staleTime: 30_000,
|
|
21
|
+
retry: false,
|
|
22
|
+
});
|
|
23
|
+
return useMemo(() => (data ? flattenModels(projectLlmCatalogToProviderList(data)) : []), [data]);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=use-project-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-project-models.js","sourceRoot":"","sources":["../../src/react/use-project-models.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAkB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAoC;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QACxB,QAAQ,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC;QAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,SAAmB,CAAC;QACxD,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACnG,CAAC"}
|