@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,319 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
|
3
|
+
import { getClient } from '../../opencode/client.js';
|
|
4
|
+
import { logger } from '../../platform/logger.js';
|
|
5
|
+
import { useSyncStore } from '../../state/sync-store.js';
|
|
6
|
+
import { unwrap } from './shared.js';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Send retry policy — ported from apps/web's `opencode-send-retry.ts` so every
|
|
9
|
+
// host that sends a prompt through `promptOpenCodeMessage` inherits it, not
|
|
10
|
+
// just apps/web.
|
|
11
|
+
//
|
|
12
|
+
// Two failure shapes flow through here:
|
|
13
|
+
// 1. A thrown error (transport failure — the request never completed). No
|
|
14
|
+
// HTTP status is available.
|
|
15
|
+
// 2. A resolved SDK response carrying `{ error, response }` (the SDK resolves
|
|
16
|
+
// rather than rejects on HTTP errors). `response.status` is the status.
|
|
17
|
+
//
|
|
18
|
+
// A freshly-created session points at a sandbox that may still be booting. The
|
|
19
|
+
// proxy comes up before opencode's binary binds its port, so it answers with a
|
|
20
|
+
// `503 "opencode not ready"` for a few seconds. That is a boot signal, not a
|
|
21
|
+
// real failure — retrying across the full boot window lets the first prompt
|
|
22
|
+
// land instead of flashing an "opencode not ready" error banner the user can't
|
|
23
|
+
// act on.
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/** Generic transient blips (server restart, tunnel hiccup): short, snappy. */
|
|
26
|
+
const TRANSIENT_BACKOFF_MS = [400, 1000, 2000];
|
|
27
|
+
/**
|
|
28
|
+
* Boot/wake window — covers a sandbox binding its opencode port, whether that's
|
|
29
|
+
* a cold first-session boot OR a wake from auto-stop (sandbox resume + opencode
|
|
30
|
+
* rebind, which is slower). Stretched to ~30s so the prompt lands instead of the
|
|
31
|
+
* client giving up and reverting a message that actually ran once the box woke.
|
|
32
|
+
*/
|
|
33
|
+
const BOOT_BACKOFF_MS = [400, 800, 1500, 2500, 4000, 4000, 4000, 4000, 4000, 4000];
|
|
34
|
+
/** Pull a human-readable message out of any error/response-error shape. */
|
|
35
|
+
export function extractSendErrorMessage(error) {
|
|
36
|
+
if (!error)
|
|
37
|
+
return '';
|
|
38
|
+
if (typeof error === 'string')
|
|
39
|
+
return error;
|
|
40
|
+
if (error instanceof Error)
|
|
41
|
+
return error.message;
|
|
42
|
+
if (typeof error === 'object') {
|
|
43
|
+
const err = error;
|
|
44
|
+
const root = err.data ?? err;
|
|
45
|
+
const msg = root.message || err.message || root.error || err.error;
|
|
46
|
+
if (typeof msg === 'string')
|
|
47
|
+
return msg;
|
|
48
|
+
try {
|
|
49
|
+
return JSON.stringify(err);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return String(error);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The sandbox proxy returns `503 "opencode not ready"` while opencode's binary
|
|
59
|
+
* is still booting inside a freshly-created sandbox — or while a sandbox is
|
|
60
|
+
* waking from auto-stop and rebinding its port. Match the common "not ready /
|
|
61
|
+
* waking / booting / provisioning" shapes, not just the exact string.
|
|
62
|
+
*/
|
|
63
|
+
export function isOpenCodeNotReadyError(error) {
|
|
64
|
+
return /opencode not ready|not ready|not yet ready|waking|booting|still booting|provision/i.test(extractSendErrorMessage(error));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A status the server might recover from on its own: no status (thrown
|
|
68
|
+
* transport error), any 5xx, or a 408/429 backpressure signal. A 4xx is a real
|
|
69
|
+
* client error (bad request / auth / unknown model) and is never retried.
|
|
70
|
+
*/
|
|
71
|
+
export function isTransientSendStatus(status) {
|
|
72
|
+
return status === undefined || status >= 500 || status === 408 || status === 429;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Delay (ms) to wait before the next send attempt, or `null` when the send
|
|
76
|
+
* should stop retrying and surface the error.
|
|
77
|
+
*
|
|
78
|
+
* @param attempt 1-based index of the attempt that just failed (1 = first send).
|
|
79
|
+
* The returned delay precedes attempt `attempt + 1`.
|
|
80
|
+
*/
|
|
81
|
+
export function getSendRetryDelayMs(attempt, status, error) {
|
|
82
|
+
// A 503 from our sandbox proxy ALWAYS means "sandbox/opencode not ready" — a
|
|
83
|
+
// cold boot or a wake from auto-stop — so give it the full boot/wake window,
|
|
84
|
+
// not the short transient one, even when the error body didn't carry a tidy
|
|
85
|
+
// message. Giving up early here is exactly what reverted a prompt that then
|
|
86
|
+
// landed once the box finished waking.
|
|
87
|
+
const isBoot = status === 503 || isOpenCodeNotReadyError(error);
|
|
88
|
+
const schedule = isBoot
|
|
89
|
+
? BOOT_BACKOFF_MS
|
|
90
|
+
: isTransientSendStatus(status)
|
|
91
|
+
? TRANSIENT_BACKOFF_MS
|
|
92
|
+
: null;
|
|
93
|
+
if (!schedule)
|
|
94
|
+
return null;
|
|
95
|
+
if (attempt < 1 || attempt > schedule.length)
|
|
96
|
+
return null;
|
|
97
|
+
return schedule[attempt - 1];
|
|
98
|
+
}
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Messages
|
|
101
|
+
// ============================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Get messages for a session.
|
|
104
|
+
*
|
|
105
|
+
* CONSOLIDATED: Now reads from the Zustand sync store (single source of truth)
|
|
106
|
+
* instead of making its own independent React Query fetch. The sync store is
|
|
107
|
+
* populated by useSessionSync on mount and kept live by SSE events.
|
|
108
|
+
*
|
|
109
|
+
* Previously this was an independent React Query hook with its own queryFn that
|
|
110
|
+
* called client.session.messages() — duplicating the exact same fetch that
|
|
111
|
+
* useSessionSync already makes. This caused 2x /session/{id}/message requests
|
|
112
|
+
* on every session navigation.
|
|
113
|
+
*
|
|
114
|
+
* Returns a shape compatible with the old UseQueryResult<MessageWithParts[]>
|
|
115
|
+
* for backward compatibility with consumers (session-layout, tool-renderers,
|
|
116
|
+
* snapshot-dialog, session-diff-viewer).
|
|
117
|
+
*/
|
|
118
|
+
/**
|
|
119
|
+
* Message cache for useOpenCodeMessages — prevents creating new array references
|
|
120
|
+
* on every render. Same pattern as buildMessages() in use-session-sync.ts.
|
|
121
|
+
* Without this, the Zustand selector returns a new array from .map() on every
|
|
122
|
+
* call, breaking useSyncExternalStore's Object.is check → infinite re-render.
|
|
123
|
+
*/
|
|
124
|
+
const MSG_HOOK_CACHE_MAX = 20;
|
|
125
|
+
const msgHookCache = new Map();
|
|
126
|
+
function touchMsgHookCache(sessionId) {
|
|
127
|
+
const entry = msgHookCache.get(sessionId);
|
|
128
|
+
if (entry) {
|
|
129
|
+
msgHookCache.delete(sessionId);
|
|
130
|
+
msgHookCache.set(sessionId, entry);
|
|
131
|
+
}
|
|
132
|
+
if (msgHookCache.size > MSG_HOOK_CACHE_MAX) {
|
|
133
|
+
const oldest = msgHookCache.keys().next().value;
|
|
134
|
+
if (oldest)
|
|
135
|
+
msgHookCache.delete(oldest);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const EMPTY_MSGS = [];
|
|
139
|
+
function buildMsgsForHook(sessionId, msgs, parts) {
|
|
140
|
+
if (!msgs || msgs.length === 0)
|
|
141
|
+
return EMPTY_MSGS;
|
|
142
|
+
const cached = msgHookCache.get(sessionId);
|
|
143
|
+
if (cached && cached.msgs === msgs) {
|
|
144
|
+
let same = cached.partRefs.length === msgs.length;
|
|
145
|
+
if (same) {
|
|
146
|
+
for (let i = 0; i < msgs.length; i++) {
|
|
147
|
+
if (parts[msgs[i].id] !== cached.partRefs[i]) {
|
|
148
|
+
same = false;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (same)
|
|
154
|
+
return cached.result;
|
|
155
|
+
}
|
|
156
|
+
const partRefs = [];
|
|
157
|
+
const result = [];
|
|
158
|
+
for (const info of msgs) {
|
|
159
|
+
const pa = parts[info.id];
|
|
160
|
+
partRefs.push(pa);
|
|
161
|
+
result.push({ info, parts: pa ?? [] });
|
|
162
|
+
}
|
|
163
|
+
msgHookCache.set(sessionId, { msgs, partRefs, result });
|
|
164
|
+
touchMsgHookCache(sessionId);
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
export function useOpenCodeMessages(sessionId) {
|
|
168
|
+
// Select via a referentially-stable selector that uses an external cache.
|
|
169
|
+
// getMessages() in the store creates new arrays via .map() on every call,
|
|
170
|
+
// which breaks useSyncExternalStore → infinite loop. buildMsgsForHook()
|
|
171
|
+
// returns the same reference if nothing changed for this session.
|
|
172
|
+
const messages = useSyncStore((s) => buildMsgsForHook(sessionId, s.messages[sessionId], s.parts));
|
|
173
|
+
const isLoading = !useSyncStore((s) => sessionId in s.messages);
|
|
174
|
+
return {
|
|
175
|
+
data: messages.length > 0 ? messages : undefined,
|
|
176
|
+
isLoading,
|
|
177
|
+
isError: false,
|
|
178
|
+
error: null,
|
|
179
|
+
refetch: async () => ({ data: messages }),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// ============================================================================
|
|
183
|
+
// Prompt / Abort Hooks
|
|
184
|
+
// ============================================================================
|
|
185
|
+
/**
|
|
186
|
+
* Generate a monotonic ascending ID compatible with the server's Identifier.ascending().
|
|
187
|
+
* Server format: prefix + "_" + 12-char hex timestamp + 14-char random base62 = prefix_<26 chars>
|
|
188
|
+
* Server validates: z.string().startsWith("msg") for messages, "prt" for parts.
|
|
189
|
+
*/
|
|
190
|
+
let lastIdTimestamp = 0;
|
|
191
|
+
let idCounter = 0;
|
|
192
|
+
export function ascendingId(prefix = 'msg') {
|
|
193
|
+
const now = Date.now();
|
|
194
|
+
if (now !== lastIdTimestamp) {
|
|
195
|
+
lastIdTimestamp = now;
|
|
196
|
+
idCounter = 0;
|
|
197
|
+
}
|
|
198
|
+
idCounter++;
|
|
199
|
+
const encoded = BigInt(now) * BigInt(0x1000) + BigInt(idCounter);
|
|
200
|
+
const hex = encoded.toString(16).padStart(12, '0').slice(0, 12);
|
|
201
|
+
const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
202
|
+
let rand = '';
|
|
203
|
+
for (let i = 0; i < 14; i++)
|
|
204
|
+
rand += chars[Math.floor(Math.random() * 62)];
|
|
205
|
+
return `${prefix}_${hex}${rand}`;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Send a prompt to a session via `session.promptAsync()` — the server accepts
|
|
209
|
+
* the prompt and returns immediately (204); the actual turn streams back over
|
|
210
|
+
* SSE into the sync store. Callers must NOT await this for the turn to finish,
|
|
211
|
+
* only for the server's accept/reject of the prompt itself.
|
|
212
|
+
*
|
|
213
|
+
* Retries transient failures (a thrown transport error, or a 5xx/408/429
|
|
214
|
+
* response) with backoff — see the retry policy above. The sandbox proxy's
|
|
215
|
+
* `503 "opencode not ready"` boot signal gets the full ~30s boot/wake window so
|
|
216
|
+
* the very first prompt against a cold or waking sandbox lands on its own
|
|
217
|
+
* instead of surfacing an error the user can't act on. A real 4xx (bad
|
|
218
|
+
* request / auth / unknown model) is never retried.
|
|
219
|
+
*
|
|
220
|
+
* `getClient()` is resolved INSIDE the retry loop (not once up front) so its
|
|
221
|
+
* own "Server URL not ready" throw — the runtime url not pinned yet, which a
|
|
222
|
+
* brand-new session's very first prompt can race — gets the same boot-window
|
|
223
|
+
* retry treatment instead of propagating instantly with zero retries.
|
|
224
|
+
*
|
|
225
|
+
* Extracted from `useSendOpenCodeMessage`'s mutationFn so it's a plain async
|
|
226
|
+
* function callable — and unit-testable — without a mutation/hook context.
|
|
227
|
+
*/
|
|
228
|
+
export async function promptOpenCodeMessage({ sessionId, parts, options, messageID, }) {
|
|
229
|
+
const mappedParts = parts.map((p) => {
|
|
230
|
+
if (p.type === 'file')
|
|
231
|
+
return { type: 'file', mime: p.mime, url: p.url, filename: p.filename, source: p.source };
|
|
232
|
+
if (p.type === 'agent')
|
|
233
|
+
return { type: 'agent', name: p.name, source: p.source };
|
|
234
|
+
return { type: 'text', text: p.text };
|
|
235
|
+
});
|
|
236
|
+
const payload = {
|
|
237
|
+
sessionID: sessionId,
|
|
238
|
+
parts: mappedParts,
|
|
239
|
+
...(messageID && { messageID }),
|
|
240
|
+
...(options?.directory && { directory: options.directory }),
|
|
241
|
+
...(options?.model && { model: options.model }),
|
|
242
|
+
...(options?.agent && { agent: options.agent }),
|
|
243
|
+
...(options?.variant && { variant: options.variant }),
|
|
244
|
+
};
|
|
245
|
+
for (let attempt = 1;; attempt++) {
|
|
246
|
+
let status;
|
|
247
|
+
let error;
|
|
248
|
+
try {
|
|
249
|
+
// Resolve the client INSIDE the retry loop, not once before it. During
|
|
250
|
+
// the sandbox-loading window `getClient()` throws "Server URL not
|
|
251
|
+
// ready" (see opencode/client.ts) — that's a boot-phase condition
|
|
252
|
+
// exactly like the proxy's 503 "opencode not ready" below, so it must
|
|
253
|
+
// participate in the SAME boot/wake retry window rather than propagate
|
|
254
|
+
// instantly with zero retries. A brand-new session's very first prompt
|
|
255
|
+
// can race the runtime url being pinned; without this the send throws
|
|
256
|
+
// before a single retry and the prompt is dropped.
|
|
257
|
+
const client = getClient();
|
|
258
|
+
// The SDK resolves (not rejects) on HTTP errors, returning
|
|
259
|
+
// { error, response } instead of throwing.
|
|
260
|
+
const result = await client.session.promptAsync(payload);
|
|
261
|
+
if (!result?.error)
|
|
262
|
+
return; // 204 — server accepted the prompt.
|
|
263
|
+
error = result.error;
|
|
264
|
+
status = result.response?.status;
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
error = err; // thrown = transport failure (no status) OR getClient() not-ready.
|
|
268
|
+
}
|
|
269
|
+
const delay = getSendRetryDelayMs(attempt, status, error);
|
|
270
|
+
if (delay === null) {
|
|
271
|
+
const err = error && typeof error === 'object' ? error : undefined;
|
|
272
|
+
const errData = err?.data && typeof err.data === 'object' ? err.data : undefined;
|
|
273
|
+
const message = errData?.message || err?.message || 'Failed to send message';
|
|
274
|
+
const wrapped = new Error(typeof message === 'string' ? message : 'Failed to send message');
|
|
275
|
+
if (status) {
|
|
276
|
+
wrapped.status = status;
|
|
277
|
+
wrapped.response = { status };
|
|
278
|
+
}
|
|
279
|
+
wrapped.data = err?.data ?? err;
|
|
280
|
+
throw wrapped;
|
|
281
|
+
}
|
|
282
|
+
logger.warn('promptOpenCodeMessage retrying send', { sessionId, attempt, status });
|
|
283
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
export function useSendOpenCodeMessage() {
|
|
287
|
+
return useMutation({ mutationFn: promptOpenCodeMessage });
|
|
288
|
+
}
|
|
289
|
+
export function useAbortOpenCodeSession() {
|
|
290
|
+
return useMutation({
|
|
291
|
+
mutationFn: async (sessionId) => {
|
|
292
|
+
const client = getClient();
|
|
293
|
+
const result = await client.session.abort({ sessionID: sessionId });
|
|
294
|
+
unwrap(result);
|
|
295
|
+
// After abort succeeds, the SSE stream should deliver session.idle event.
|
|
296
|
+
// If the UI stays stuck, it means the SSE event wasn't received/processed.
|
|
297
|
+
// The optimistic idle status we set in handleStop should handle this, but
|
|
298
|
+
// if for some reason the abort HTTP call returned but SSE didn't update,
|
|
299
|
+
// we force-refresh the session status from the server.
|
|
300
|
+
try {
|
|
301
|
+
const statusResult = await client.session.status();
|
|
302
|
+
const statuses = statusResult.data;
|
|
303
|
+
const serverStatus = statuses?.[sessionId];
|
|
304
|
+
if (serverStatus && serverStatus.type !== 'idle') {
|
|
305
|
+
// Server still thinks we're busy - update the store with server's view
|
|
306
|
+
// This can happen if SSE events were missed
|
|
307
|
+
useSyncStore.getState().setStatus(sessionId, serverStatus);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
// Non-critical — SSE will eventually deliver the correct status
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
retry: 2,
|
|
315
|
+
retryDelay: 300,
|
|
316
|
+
onError: () => { },
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Part } from '@opencode-ai/sdk/v2/client';
|
|
2
|
+
/**
|
|
3
|
+
* Update a message part (e.g. edit text content).
|
|
4
|
+
* Uses `client.part.update()` — available in SDK v2.
|
|
5
|
+
* SSE `message.part.updated` events handle cache updates automatically.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useUpdatePart(): import("@tanstack/react-query").UseMutationResult<Part, Error, {
|
|
8
|
+
sessionId: string;
|
|
9
|
+
messageId: string;
|
|
10
|
+
partId: string;
|
|
11
|
+
part: Partial<Part>;
|
|
12
|
+
}, unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* Delete a message part.
|
|
15
|
+
* Uses `client.part.delete()` — available in SDK v2.
|
|
16
|
+
* SSE `message.part.removed` events handle cache updates automatically.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useDeletePart(): import("@tanstack/react-query").UseMutationResult<boolean, Error, {
|
|
19
|
+
sessionId: string;
|
|
20
|
+
messageId: string;
|
|
21
|
+
partId: string;
|
|
22
|
+
}, unknown>;
|
|
23
|
+
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/parts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAOvD;;;;GAIG;AACH,wBAAgB,aAAa;eAQZ,MAAM;eACN,MAAM;YACT,MAAM;UACR,OAAO,CAAC,IAAI,CAAC;YAcxB;AAED;;;;GAIG;AACH,wBAAgB,aAAa;eAOZ,MAAM;eACN,MAAM;YACT,MAAM;YAanB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
|
3
|
+
import { getClient } from '../../opencode/client.js';
|
|
4
|
+
import { unwrap } from './shared.js';
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Part Edit / Delete Hooks
|
|
7
|
+
// ============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Update a message part (e.g. edit text content).
|
|
10
|
+
* Uses `client.part.update()` — available in SDK v2.
|
|
11
|
+
* SSE `message.part.updated` events handle cache updates automatically.
|
|
12
|
+
*/
|
|
13
|
+
export function useUpdatePart() {
|
|
14
|
+
return useMutation({
|
|
15
|
+
mutationFn: async ({ sessionId, messageId, partId, part, }) => {
|
|
16
|
+
const client = getClient();
|
|
17
|
+
const result = await client.part.update({
|
|
18
|
+
sessionID: sessionId,
|
|
19
|
+
messageID: messageId,
|
|
20
|
+
partID: partId,
|
|
21
|
+
part: part,
|
|
22
|
+
});
|
|
23
|
+
return unwrap(result);
|
|
24
|
+
},
|
|
25
|
+
// SSE message.part.updated handles cache updates via sync store.
|
|
26
|
+
// No onSuccess needed — eliminates unnecessary message refetch.
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Delete a message part.
|
|
31
|
+
* Uses `client.part.delete()` — available in SDK v2.
|
|
32
|
+
* SSE `message.part.removed` events handle cache updates automatically.
|
|
33
|
+
*/
|
|
34
|
+
export function useDeletePart() {
|
|
35
|
+
return useMutation({
|
|
36
|
+
mutationFn: async ({ sessionId, messageId, partId, }) => {
|
|
37
|
+
const client = getClient();
|
|
38
|
+
const result = await client.part.delete({
|
|
39
|
+
sessionID: sessionId,
|
|
40
|
+
messageID: messageId,
|
|
41
|
+
partID: partId,
|
|
42
|
+
});
|
|
43
|
+
return unwrap(result);
|
|
44
|
+
},
|
|
45
|
+
// SSE message.part.removed handles cache updates via sync store.
|
|
46
|
+
// No onSuccess needed — eliminates unnecessary message refetch.
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/parts.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EACjB,SAAS,EACT,SAAS,EACT,MAAM,EACN,IAAI,GAML,EAAE,EAAE;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAY;aACnB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAS,CAAC;QAChC,CAAC;QACD,iEAAiE;QACjE,gEAAgE;KACjE,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EACjB,SAAS,EACT,SAAS,EACT,MAAM,GAKP,EAAE,EAAE;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,iEAAiE;QACjE,gEAAgE;KACjE,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function replyToPermission(requestId: string, reply: 'once' | 'always' | 'reject', message?: string): Promise<void>;
|
|
2
|
+
/**
|
|
3
|
+
* "Allow everything for the rest of this session": writes a blanket allow
|
|
4
|
+
* ruleset onto the opencode SESSION (the same per-session ledger an `always`
|
|
5
|
+
* reply appends to), so subsequent asks are answered server-side — the grant
|
|
6
|
+
* survives the tab closing, unlike a client-side auto-approver. Strictly
|
|
7
|
+
* broader than any rules the session accumulated before, so replacing them
|
|
8
|
+
* is safe. Pair with replying `once` to the currently-pending request(s);
|
|
9
|
+
* this only stops FUTURE asks.
|
|
10
|
+
*/
|
|
11
|
+
export declare function allowAllPermissionsForSession(sessionID: string): Promise<void>;
|
|
12
|
+
/** Undo `allowAllPermissionsForSession`: clear the session ruleset so the
|
|
13
|
+
* project/config permission rules apply again. */
|
|
14
|
+
export declare function resetSessionPermissions(sessionID: string): Promise<void>;
|
|
15
|
+
export declare function replyToQuestion(requestId: string, answers: string[][]): Promise<void>;
|
|
16
|
+
export declare function rejectQuestion(requestId: string): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/permissions.ts"],"names":[],"mappings":"AAQA,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EACnC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAIf;AAgBD;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpF;AAED;kDACkD;AAClD,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9E;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3F;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { getClient } from '../../opencode/client.js';
|
|
2
|
+
import { unwrap } from './shared.js';
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Permission & Question Reply (direct SDK calls, not hooks)
|
|
5
|
+
// ============================================================================
|
|
6
|
+
export async function replyToPermission(requestId, reply, message) {
|
|
7
|
+
const client = getClient();
|
|
8
|
+
const result = await client.permission.reply({ requestID: requestId, reply, message });
|
|
9
|
+
unwrap(result);
|
|
10
|
+
}
|
|
11
|
+
/** The permission types opencode gates today (mirrors the web's
|
|
12
|
+
* PERMISSION_LABELS keys). Enumerated explicitly IN ADDITION to the `*`
|
|
13
|
+
* wildcard rule so "allow all" holds even if the runtime's rule matcher treats
|
|
14
|
+
* the permission NAME as an exact key rather than a glob. */
|
|
15
|
+
const KNOWN_PERMISSION_TYPES = [
|
|
16
|
+
'bash',
|
|
17
|
+
'edit',
|
|
18
|
+
'write',
|
|
19
|
+
'read',
|
|
20
|
+
'webfetch',
|
|
21
|
+
'mcp',
|
|
22
|
+
'doom_loop',
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* "Allow everything for the rest of this session": writes a blanket allow
|
|
26
|
+
* ruleset onto the opencode SESSION (the same per-session ledger an `always`
|
|
27
|
+
* reply appends to), so subsequent asks are answered server-side — the grant
|
|
28
|
+
* survives the tab closing, unlike a client-side auto-approver. Strictly
|
|
29
|
+
* broader than any rules the session accumulated before, so replacing them
|
|
30
|
+
* is safe. Pair with replying `once` to the currently-pending request(s);
|
|
31
|
+
* this only stops FUTURE asks.
|
|
32
|
+
*/
|
|
33
|
+
export async function allowAllPermissionsForSession(sessionID) {
|
|
34
|
+
const client = getClient();
|
|
35
|
+
const ruleset = [
|
|
36
|
+
{ permission: '*', pattern: '*', action: 'allow' },
|
|
37
|
+
...KNOWN_PERMISSION_TYPES.map((permission) => ({
|
|
38
|
+
permission,
|
|
39
|
+
pattern: '*',
|
|
40
|
+
action: 'allow',
|
|
41
|
+
})),
|
|
42
|
+
];
|
|
43
|
+
const result = await client.session.update({ sessionID, permission: ruleset });
|
|
44
|
+
unwrap(result);
|
|
45
|
+
}
|
|
46
|
+
/** Undo `allowAllPermissionsForSession`: clear the session ruleset so the
|
|
47
|
+
* project/config permission rules apply again. */
|
|
48
|
+
export async function resetSessionPermissions(sessionID) {
|
|
49
|
+
const client = getClient();
|
|
50
|
+
const result = await client.session.update({ sessionID, permission: [] });
|
|
51
|
+
unwrap(result);
|
|
52
|
+
}
|
|
53
|
+
export async function replyToQuestion(requestId, answers) {
|
|
54
|
+
const client = getClient();
|
|
55
|
+
const result = await client.question.reply({ requestID: requestId, answers });
|
|
56
|
+
unwrap(result);
|
|
57
|
+
}
|
|
58
|
+
export async function rejectQuestion(requestId) {
|
|
59
|
+
const client = getClient();
|
|
60
|
+
const result = await client.question.reject({ requestID: requestId });
|
|
61
|
+
unwrap(result);
|
|
62
|
+
}
|
|
63
|
+
// useSessionPolling was removed — SSE reconnects within <3s making 2s HTTP
|
|
64
|
+
// polling redundant. All session status + message updates are driven by SSE
|
|
65
|
+
// events via the sync store. See SSE-FIRST-MIGRATION-PLAN.md Phase 1d.
|
|
66
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,+EAA+E;AAC/E,4DAA4D;AAC5D,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,KAAmC,EACnC,OAAgB;IAEhB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED;;;6DAG6D;AAC7D,MAAM,sBAAsB,GAAG;IAC7B,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,KAAK;IACL,WAAW;CACH,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,SAAiB;IACnE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAsB;QACjC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAClD,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC7C,UAAU;YACV,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,OAAgB;SACzB,CAAC,CAAC;KACJ,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED;kDACkD;AAClD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,SAAiB;IAC7D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,OAAmB;IAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,MAAM,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACtE,MAAM,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,2EAA2E;AAC3E,4EAA4E;AAC5E,uEAAuE"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Project, Path as PathInfo } from '@opencode-ai/sdk/v2/client';
|
|
2
|
+
export declare function useOpenCodeProjects(): import("@tanstack/react-query").UseQueryResult<NoInfer<Project[]>, Error>;
|
|
3
|
+
export declare function useOpenCodeCurrentProject(): import("@tanstack/react-query").UseQueryResult<NoInfer<Project>, Error>;
|
|
4
|
+
export declare function useOpenCodePathInfo(): import("@tanstack/react-query").UseQueryResult<NoInfer<PathInfo>, Error>;
|
|
5
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/projects.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAQ5E,wBAAgB,mBAAmB,8EAalC;AAED,wBAAgB,yBAAyB,4EAaxC;AAMD,wBAAgB,mBAAmB,6EAalC"}
|
|
@@ -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
|
+
// Project Hooks
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export function useOpenCodeProjects() {
|
|
10
|
+
const runtimeReady = useOpenCodeRuntimeReady();
|
|
11
|
+
return useQuery({
|
|
12
|
+
queryKey: opencodeKeys.projects(),
|
|
13
|
+
queryFn: async () => {
|
|
14
|
+
const client = getClient();
|
|
15
|
+
const result = await client.project.list();
|
|
16
|
+
return unwrap(result);
|
|
17
|
+
},
|
|
18
|
+
enabled: runtimeReady,
|
|
19
|
+
staleTime: Infinity,
|
|
20
|
+
gcTime: 5 * 60 * 1000,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function useOpenCodeCurrentProject() {
|
|
24
|
+
const runtimeReady = useOpenCodeRuntimeReady();
|
|
25
|
+
return useQuery({
|
|
26
|
+
queryKey: opencodeKeys.currentProject(),
|
|
27
|
+
queryFn: async () => {
|
|
28
|
+
const client = getClient();
|
|
29
|
+
const result = await client.project.current();
|
|
30
|
+
return unwrap(result);
|
|
31
|
+
},
|
|
32
|
+
enabled: runtimeReady,
|
|
33
|
+
staleTime: Infinity,
|
|
34
|
+
gcTime: 5 * 60 * 1000,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Path Info Hook
|
|
39
|
+
// ============================================================================
|
|
40
|
+
export function useOpenCodePathInfo() {
|
|
41
|
+
const runtimeReady = useOpenCodeRuntimeReady();
|
|
42
|
+
return useQuery({
|
|
43
|
+
queryKey: opencodeKeys.pathInfo(),
|
|
44
|
+
queryFn: async () => {
|
|
45
|
+
const client = getClient();
|
|
46
|
+
const result = await client.path.get();
|
|
47
|
+
return unwrap(result);
|
|
48
|
+
},
|
|
49
|
+
enabled: runtimeReady,
|
|
50
|
+
staleTime: Infinity,
|
|
51
|
+
gcTime: 10 * 60 * 1000,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/projects.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,UAAU,mBAAmB;IACjC,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,OAAO,QAAQ,CAAY;QACzB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE;QACjC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,OAAO,QAAQ,CAAU;QACvB,QAAQ,EAAE,YAAY,CAAC,cAAc,EAAE;QACvC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;KACtB,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,UAAU,mBAAmB;IACjC,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,OAAO,QAAQ,CAAW;QACxB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE;QACjC,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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GATEWAY_PROVIDER_IDS } from '../provider-selection.js';
|
|
2
|
+
export { GATEWAY_PROVIDER_IDS };
|
|
3
|
+
export declare function useOpenCodeProviders(): import("@tanstack/react-query").UseQueryResult<NoInfer<{
|
|
4
|
+
all: Array<import("@opencode-ai/sdk/v2/types").Provider>;
|
|
5
|
+
default: {
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
};
|
|
8
|
+
connected: Array<string>;
|
|
9
|
+
}>, Error>;
|
|
10
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/providers.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,oBAAoB,EAMrB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,wBAAgB,oBAAoB;;;;;;WA4FnC"}
|