@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 { create } from 'zustand';
|
|
3
|
+
import { persist } from 'zustand/middleware';
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Path matching helpers
|
|
6
|
+
// ============================================================================
|
|
7
|
+
/**
|
|
8
|
+
* Find diagnostics for a file using flexible path matching.
|
|
9
|
+
*
|
|
10
|
+
* LSP servers store diagnostics keyed by absolute sandbox paths (e.g.
|
|
11
|
+
* `/workspace/desktop/express-crud-app/src/server.js`), but the frontend
|
|
12
|
+
* uses project-relative paths (e.g. `src/server.js`). This function
|
|
13
|
+
* handles the mismatch by:
|
|
14
|
+
*
|
|
15
|
+
* 1. Exact match (covers relative-to-relative)
|
|
16
|
+
* 2. The store key ends with `/<relativePath>` (abs→rel match)
|
|
17
|
+
* 3. The lookup path ends with `/<storeKey>` (rel→abs, unlikely but safe)
|
|
18
|
+
*/
|
|
19
|
+
export function findDiagnosticsForFile(byFile, filePath) {
|
|
20
|
+
// 1. Exact match
|
|
21
|
+
if (byFile[filePath])
|
|
22
|
+
return byFile[filePath];
|
|
23
|
+
// Normalise: strip leading slashes and any `file://` prefix for comparison
|
|
24
|
+
const cleanPath = filePath.replace(/^file:\/\//, '').replace(/^\/+/, '');
|
|
25
|
+
// 2. Store key ends with the relative path
|
|
26
|
+
for (const key of Object.keys(byFile)) {
|
|
27
|
+
const cleanKey = key.replace(/^file:\/\//, '').replace(/^\/+/, '');
|
|
28
|
+
// Exact after normalisation
|
|
29
|
+
if (cleanKey === cleanPath)
|
|
30
|
+
return byFile[key];
|
|
31
|
+
// Store key is absolute, lookup path is relative
|
|
32
|
+
if (cleanKey.endsWith('/' + cleanPath))
|
|
33
|
+
return byFile[key];
|
|
34
|
+
// Lookup path is absolute, store key is relative (rare)
|
|
35
|
+
if (cleanPath.endsWith('/' + cleanKey))
|
|
36
|
+
return byFile[key];
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build a map from relative file path → { errors, warnings } by iterating
|
|
42
|
+
* the diagnostics store. Uses the last N segments of each store key so that
|
|
43
|
+
* both `sidebar-explorer` (uses `node.path` which is relative) and
|
|
44
|
+
* `file-browser` can compute diagnostic counts.
|
|
45
|
+
*
|
|
46
|
+
* Returns a map where keys are every possible suffix of the store keys
|
|
47
|
+
* (e.g. for `/workspace/project/src/app.ts` it includes entries for
|
|
48
|
+
* `src/app.ts`, `project/src/app.ts`, `app.ts`, etc.) This is O(totalKeys * avgDepth)
|
|
49
|
+
* but in practice the number of files with diagnostics is small.
|
|
50
|
+
*/
|
|
51
|
+
export function buildDiagnosticCountsMap(byFile) {
|
|
52
|
+
const map = {};
|
|
53
|
+
for (const [key, diags] of Object.entries(byFile)) {
|
|
54
|
+
if (!diags || diags.length === 0)
|
|
55
|
+
continue;
|
|
56
|
+
let errors = 0;
|
|
57
|
+
let warnings = 0;
|
|
58
|
+
for (const d of diags) {
|
|
59
|
+
if (d.severity === 1)
|
|
60
|
+
errors++;
|
|
61
|
+
else if (d.severity === 2)
|
|
62
|
+
warnings++;
|
|
63
|
+
}
|
|
64
|
+
if (errors === 0 && warnings === 0)
|
|
65
|
+
continue;
|
|
66
|
+
const counts = { errors, warnings };
|
|
67
|
+
// Register under every suffix of the path so both absolute and
|
|
68
|
+
// relative lookups work.
|
|
69
|
+
const cleanKey = key.replace(/^file:\/\//, '');
|
|
70
|
+
const parts = cleanKey.split('/').filter(Boolean);
|
|
71
|
+
// Full path (with leading slash removed)
|
|
72
|
+
map[parts.join('/')] = counts;
|
|
73
|
+
// Also register with leading slash for absolute lookups
|
|
74
|
+
if (cleanKey.startsWith('/')) {
|
|
75
|
+
map[cleanKey] = counts;
|
|
76
|
+
}
|
|
77
|
+
// Progressive suffixes: src/app.ts, app.ts
|
|
78
|
+
for (let i = 1; i < parts.length; i++) {
|
|
79
|
+
const suffix = parts.slice(i).join('/');
|
|
80
|
+
// Don't overwrite — first match (longest key) wins
|
|
81
|
+
if (!map[suffix]) {
|
|
82
|
+
map[suffix] = counts;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return map;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Extract the relative filename from a diagnostic's file path.
|
|
90
|
+
* Used by the diagnostics panel to show short names.
|
|
91
|
+
*/
|
|
92
|
+
export function getRelativePath(absPath) {
|
|
93
|
+
const clean = absPath.replace(/^file:\/\//, '');
|
|
94
|
+
// If it looks absolute, try common sandbox prefixes
|
|
95
|
+
if (clean.startsWith('/')) {
|
|
96
|
+
// Strip /workspace/desktop/.../ or /home/user/project/.../ patterns
|
|
97
|
+
// Strategy: find the deepest "project root" heuristic and strip it
|
|
98
|
+
// Common patterns: /workspace/X/Y/ where Y is the project
|
|
99
|
+
const parts = clean.split('/').filter(Boolean);
|
|
100
|
+
// Look for common project markers going from right to left
|
|
101
|
+
for (let i = 0; i < parts.length; i++) {
|
|
102
|
+
if (['src', 'lib', 'app', 'pages', 'components', 'public', 'test', 'tests', 'pkg', 'cmd', 'internal'].includes(parts[i])) {
|
|
103
|
+
return parts.slice(i).join('/');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// If no marker found, take the last 3 segments max
|
|
107
|
+
if (parts.length > 3) {
|
|
108
|
+
return parts.slice(-3).join('/');
|
|
109
|
+
}
|
|
110
|
+
return parts.join('/');
|
|
111
|
+
}
|
|
112
|
+
return clean;
|
|
113
|
+
}
|
|
114
|
+
// ============================================================================
|
|
115
|
+
// Parse diagnostics from tool output text
|
|
116
|
+
// ============================================================================
|
|
117
|
+
/**
|
|
118
|
+
* Parse diagnostics from OpenCode tool output text.
|
|
119
|
+
*
|
|
120
|
+
* The Go backend embeds diagnostics as plain text in `<file_diagnostics>`
|
|
121
|
+
* and `<project_diagnostics>` XML tags within the tool result. Each line
|
|
122
|
+
* follows the format:
|
|
123
|
+
*
|
|
124
|
+
* Severity: /path/to/file.ts:line:col [source][code] (tags) message
|
|
125
|
+
*
|
|
126
|
+
* Examples:
|
|
127
|
+
* Error: /workspace/src/server.js:4:1 [typescript] Cannot find module './utils/nonexistent'
|
|
128
|
+
* Warn: /workspace/src/server.js:5:7 [typescript][6133] (unnecessary) 'unused_import' is declared but never read
|
|
129
|
+
*/
|
|
130
|
+
export function parseDiagnosticsFromToolOutput(output) {
|
|
131
|
+
const result = {};
|
|
132
|
+
// Extract content from both tag types
|
|
133
|
+
const tagPattern = /<(?:file_diagnostics|project_diagnostics)>([\s\S]*?)<\/(?:file_diagnostics|project_diagnostics)>/g;
|
|
134
|
+
let tagMatch;
|
|
135
|
+
const allLines = [];
|
|
136
|
+
while ((tagMatch = tagPattern.exec(output)) !== null) {
|
|
137
|
+
const content = tagMatch[1].trim();
|
|
138
|
+
if (content) {
|
|
139
|
+
for (const line of content.split('\n')) {
|
|
140
|
+
const trimmed = line.trim();
|
|
141
|
+
if (trimmed && !trimmed.startsWith('...')) {
|
|
142
|
+
allLines.push(trimmed);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (allLines.length === 0)
|
|
148
|
+
return result;
|
|
149
|
+
// Parse each diagnostic line
|
|
150
|
+
// Format: Severity: /path/to/file:line:col [source][code] (tags) message
|
|
151
|
+
const linePattern = /^(Error|Warn|Info|Hint):\s+(.+?):(\d+):(\d+)\s+\[([^\]]*)\](.*)$/;
|
|
152
|
+
for (const line of allLines) {
|
|
153
|
+
const match = linePattern.exec(line);
|
|
154
|
+
if (!match)
|
|
155
|
+
continue;
|
|
156
|
+
const [, severityStr, filePath, lineStr, colStr, source, rest] = match;
|
|
157
|
+
const severity = severityStr === 'Error' ? 1 :
|
|
158
|
+
severityStr === 'Warn' ? 2 :
|
|
159
|
+
severityStr === 'Hint' ? 4 : 3;
|
|
160
|
+
// Parse optional [code] and message from the rest
|
|
161
|
+
// rest might be: [6133] (unnecessary) message text
|
|
162
|
+
// or: message text
|
|
163
|
+
let message = rest.trim();
|
|
164
|
+
// Strip optional [code] prefix
|
|
165
|
+
message = message.replace(/^\[\w+\]\s*/, '');
|
|
166
|
+
// Strip optional (tags) prefix
|
|
167
|
+
message = message.replace(/^\([^)]*\)\s*/, '');
|
|
168
|
+
const lineNum = parseInt(lineStr, 10) - 1; // Convert to 0-indexed
|
|
169
|
+
const colNum = parseInt(colStr, 10) - 1;
|
|
170
|
+
const diag = {
|
|
171
|
+
file: filePath,
|
|
172
|
+
line: Math.max(0, lineNum),
|
|
173
|
+
column: Math.max(0, colNum),
|
|
174
|
+
severity,
|
|
175
|
+
message: message || `${severityStr} at ${lineStr}:${colStr}`,
|
|
176
|
+
source: source || undefined,
|
|
177
|
+
};
|
|
178
|
+
if (!result[filePath]) {
|
|
179
|
+
result[filePath] = [];
|
|
180
|
+
}
|
|
181
|
+
result[filePath].push(diag);
|
|
182
|
+
}
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// Helpers
|
|
187
|
+
// ============================================================================
|
|
188
|
+
function normalizeRawDiagnostic(file, raw) {
|
|
189
|
+
const line = raw.range?.start?.line ?? raw.line ?? 0;
|
|
190
|
+
const column = raw.range?.start?.character ?? raw.column ?? raw.character ?? 0;
|
|
191
|
+
const endLine = raw.range?.end?.line ?? raw.endLine;
|
|
192
|
+
const endColumn = raw.range?.end?.character ?? raw.endColumn;
|
|
193
|
+
const severity = (raw.severity ?? 1);
|
|
194
|
+
return {
|
|
195
|
+
file,
|
|
196
|
+
line,
|
|
197
|
+
column,
|
|
198
|
+
endLine,
|
|
199
|
+
endColumn,
|
|
200
|
+
severity,
|
|
201
|
+
message: raw.message,
|
|
202
|
+
source: raw.source,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
// ============================================================================
|
|
206
|
+
// Store
|
|
207
|
+
// ============================================================================
|
|
208
|
+
export const useDiagnosticsStore = create()(persist((set, get) => ({
|
|
209
|
+
byFile: {},
|
|
210
|
+
setFileDiagnostics: (file, diagnostics) => set((state) => ({
|
|
211
|
+
byFile: {
|
|
212
|
+
...state.byFile,
|
|
213
|
+
[file]: diagnostics,
|
|
214
|
+
},
|
|
215
|
+
})),
|
|
216
|
+
setFromLspEvent: (diagnosticsByFile) => set((state) => {
|
|
217
|
+
const next = { ...state.byFile };
|
|
218
|
+
for (const [file, rawDiags] of Object.entries(diagnosticsByFile)) {
|
|
219
|
+
if (!Array.isArray(rawDiags))
|
|
220
|
+
continue;
|
|
221
|
+
const normalized = rawDiags.map((d) => normalizeRawDiagnostic(file, d));
|
|
222
|
+
if (normalized.length === 0) {
|
|
223
|
+
delete next[file];
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
next[file] = normalized;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return { byFile: next };
|
|
230
|
+
}),
|
|
231
|
+
clearFile: (file) => set((state) => {
|
|
232
|
+
const { [file]: _, ...rest } = state.byFile;
|
|
233
|
+
return { byFile: rest };
|
|
234
|
+
}),
|
|
235
|
+
clearAll: () => set({ byFile: {} }),
|
|
236
|
+
getErrorCount: () => {
|
|
237
|
+
const { byFile } = get();
|
|
238
|
+
let count = 0;
|
|
239
|
+
for (const diags of Object.values(byFile)) {
|
|
240
|
+
for (const d of diags) {
|
|
241
|
+
if (d.severity === 1)
|
|
242
|
+
count++;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return count;
|
|
246
|
+
},
|
|
247
|
+
getWarningCount: () => {
|
|
248
|
+
const { byFile } = get();
|
|
249
|
+
let count = 0;
|
|
250
|
+
for (const diags of Object.values(byFile)) {
|
|
251
|
+
for (const d of diags) {
|
|
252
|
+
if (d.severity === 2)
|
|
253
|
+
count++;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return count;
|
|
257
|
+
},
|
|
258
|
+
getAllDiagnostics: () => {
|
|
259
|
+
const { byFile } = get();
|
|
260
|
+
const all = [];
|
|
261
|
+
for (const diags of Object.values(byFile)) {
|
|
262
|
+
all.push(...diags);
|
|
263
|
+
}
|
|
264
|
+
// Sort: errors first, then warnings, then by file, then by line
|
|
265
|
+
all.sort((a, b) => {
|
|
266
|
+
if (a.severity !== b.severity)
|
|
267
|
+
return a.severity - b.severity;
|
|
268
|
+
if (a.file !== b.file)
|
|
269
|
+
return a.file.localeCompare(b.file);
|
|
270
|
+
return a.line - b.line;
|
|
271
|
+
});
|
|
272
|
+
return all;
|
|
273
|
+
},
|
|
274
|
+
}), {
|
|
275
|
+
name: 'kortix-diagnostics',
|
|
276
|
+
storage: {
|
|
277
|
+
// Guarded with try/catch (not just `typeof window`): React Native sets a
|
|
278
|
+
// global `window` shim but has no `sessionStorage`, so a bare reference
|
|
279
|
+
// throws a ReferenceError there. Degrading to "diagnostics didn't
|
|
280
|
+
// persist" is fine; crashing the store is not.
|
|
281
|
+
getItem: (name) => {
|
|
282
|
+
try {
|
|
283
|
+
if (typeof window === 'undefined' || typeof sessionStorage === 'undefined')
|
|
284
|
+
return null;
|
|
285
|
+
const str = sessionStorage.getItem(name);
|
|
286
|
+
return str ? JSON.parse(str) : null;
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
setItem: (name, value) => {
|
|
293
|
+
try {
|
|
294
|
+
if (typeof window === 'undefined' || typeof sessionStorage === 'undefined')
|
|
295
|
+
return;
|
|
296
|
+
sessionStorage.setItem(name, JSON.stringify(value));
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
/* ignore — quota or unavailable storage */
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
removeItem: (name) => {
|
|
303
|
+
try {
|
|
304
|
+
if (typeof window === 'undefined' || typeof sessionStorage === 'undefined')
|
|
305
|
+
return;
|
|
306
|
+
sessionStorage.removeItem(name);
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
/* ignore */
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
},
|
|
313
|
+
partialize: (state) => ({ byFile: state.byFile }),
|
|
314
|
+
}));
|
|
315
|
+
// Expose on window for console debugging
|
|
316
|
+
if (typeof window !== 'undefined') {
|
|
317
|
+
window.__diagStore = useDiagnosticsStore;
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=diagnostics-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics-store.js","sourceRoot":"","sources":["../../src/state/diagnostics-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-free SSE event-stream machine, extracted verbatim (same constants,
|
|
3
|
+
* same branch order, same semantics) from the connect/reconnect loop that used
|
|
4
|
+
* to live inline inside `react/use-opencode-events/index.ts`'s `useEffect`.
|
|
5
|
+
*
|
|
6
|
+
* Zero imports of `react`, `react-query`, or any `react/*` module — this file
|
|
7
|
+
* can run in any JS host (a worker, a CLI, a non-React UI). Everything that
|
|
8
|
+
* depended on React Query in the original hook (cache writes, toasts, ref
|
|
9
|
+
* lookups) stays in the React wrapper and reaches this module only through the
|
|
10
|
+
* injected `onEvent` / `onGapRehydrate` callbacks.
|
|
11
|
+
*
|
|
12
|
+
* Owns: connecting to the opencode SSE endpoint (with a connect timeout), the
|
|
13
|
+
* idle heartbeat watchdog, event coalescing + 16ms flush batching, gap
|
|
14
|
+
* detection on reconnect, the exponential-backoff reconnect loop (fast 250ms
|
|
15
|
+
* resume after an eventful stream, capped exponential backoff otherwise), and
|
|
16
|
+
* the give-up "parked" terminal state for streams pointed at dead sandboxes
|
|
17
|
+
* (see `maxConsecutiveHardFailures`/`onParked`).
|
|
18
|
+
*/
|
|
19
|
+
import type { Event as OpenCodeSdkEvent } from '@opencode-ai/sdk/v2/client';
|
|
20
|
+
/**
|
|
21
|
+
* The event union this stream dispatches. Re-exported (unchanged shape) from
|
|
22
|
+
* `react/use-opencode-events/types.ts` so existing importers keep working —
|
|
23
|
+
* this module is now the canonical definition.
|
|
24
|
+
*/
|
|
25
|
+
export type OpenCodeEvent = OpenCodeSdkEvent | {
|
|
26
|
+
id: string;
|
|
27
|
+
type: 'lsp.client.diagnostics';
|
|
28
|
+
properties: {
|
|
29
|
+
serverID: string;
|
|
30
|
+
path: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/** The minimal slice of `OpencodeClient` this machine actually calls. */
|
|
34
|
+
export interface EventStreamClient {
|
|
35
|
+
global: {
|
|
36
|
+
event: (opts: {
|
|
37
|
+
signal: AbortSignal;
|
|
38
|
+
sseDefaultRetryDelay?: number;
|
|
39
|
+
sseMaxRetryDelay?: number;
|
|
40
|
+
}) => Promise<{
|
|
41
|
+
stream: AsyncIterable<unknown>;
|
|
42
|
+
}>;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** A timer handle — opaque, only ever round-tripped through `setTimeout`/`clearTimeout`. */
|
|
46
|
+
export type EventStreamTimerHandle = ReturnType<typeof setTimeout>;
|
|
47
|
+
/** Injectable clock/timer seam — defaults to the real globals. Lets tests
|
|
48
|
+
* drive the reconnect/backoff/heartbeat/coalescing timing deterministically
|
|
49
|
+
* (a manual fake clock) instead of depending on real wall-clock delays. */
|
|
50
|
+
export interface EventStreamTimers {
|
|
51
|
+
now: () => number;
|
|
52
|
+
setTimeout: (handler: () => void, timeoutMs?: number) => EventStreamTimerHandle;
|
|
53
|
+
clearTimeout: (handle: EventStreamTimerHandle | undefined) => void;
|
|
54
|
+
}
|
|
55
|
+
export interface OpenEventStreamOptions {
|
|
56
|
+
/** The opencode client to stream events from (same client the rest of the
|
|
57
|
+
* SDK obtains via `getClient()`). */
|
|
58
|
+
client: EventStreamClient;
|
|
59
|
+
/** Called once per event, in dispatch order, after coalescing/flush. A
|
|
60
|
+
* throw here is caught and logged — one bad handler must never break the
|
|
61
|
+
* stream or crash the host. */
|
|
62
|
+
onEvent: (event: OpenCodeEvent) => void;
|
|
63
|
+
/** Called when a reconnect follows a stream gap > 5s, with the gap size in
|
|
64
|
+
* ms. Lets the host re-hydrate anything it fears went stale (e.g. replay
|
|
65
|
+
* messages for busy sessions) — the machine itself holds no host state to
|
|
66
|
+
* re-hydrate. */
|
|
67
|
+
onGapRehydrate?: (gapMs: number) => void;
|
|
68
|
+
/** External signal that also stops the stream when aborted (in addition to
|
|
69
|
+
* calling `close()` on the returned handle). Optional — most hosts just use
|
|
70
|
+
* `close()`. */
|
|
71
|
+
signal?: AbortSignal;
|
|
72
|
+
/**
|
|
73
|
+
* Max time to wait for the initial `client.global.event()` call to resolve
|
|
74
|
+
* before treating the attempt as hung, aborting it, and retrying through the
|
|
75
|
+
* normal reconnect/backoff path. Guards against a black-holed proxy that
|
|
76
|
+
* swallows the connect request silently (no error, no data, no close) —
|
|
77
|
+
* the heartbeat watchdog can't help here since it only starts AFTER connect
|
|
78
|
+
* resolves. Defaults to 20s.
|
|
79
|
+
*/
|
|
80
|
+
connectTimeoutMs?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Max quiet time on an ESTABLISHED stream before the heartbeat watchdog
|
|
83
|
+
* declares it dead, aborts it, and reconnects. Defaults to 60s — see the
|
|
84
|
+
* `HEARTBEAT_MS` comment for why it must stay well above any real idle gap
|
|
85
|
+
* until the server ships keepalive frames.
|
|
86
|
+
*/
|
|
87
|
+
heartbeatTimeoutMs?: number;
|
|
88
|
+
/**
|
|
89
|
+
* Give-up threshold: after this many CONSECUTIVE hard failures (attempts
|
|
90
|
+
* that never delivered a single event and died to an HTTP-level error or
|
|
91
|
+
* within 2s — the signature of a dead/archived sandbox whose proxy 503s
|
|
92
|
+
* every connect), the stream stops retrying and parks (see `onParked`).
|
|
93
|
+
* Any attempt that delivers an event, or that fails slowly without an HTTP
|
|
94
|
+
* status (e.g. a connect-timeout on a black-holed proxy), resets the
|
|
95
|
+
* counter. Defaults to 8 — combined with exponential backoff (1s → 30s
|
|
96
|
+
* cap) that spreads the give-up over roughly two minutes.
|
|
97
|
+
*/
|
|
98
|
+
maxConsecutiveHardFailures?: number;
|
|
99
|
+
/**
|
|
100
|
+
* Fired ONCE if the stream parks (gives up) after
|
|
101
|
+
* `maxConsecutiveHardFailures` consecutive hard failures. A parked stream
|
|
102
|
+
* is TERMINAL for this handle: no further connect attempts are made, and
|
|
103
|
+
* there is no resume — the host should treat the runtime as gone (drop the
|
|
104
|
+
* stream, surface UI) and, if it believes the sandbox is back, open a
|
|
105
|
+
* fresh stream with a new `openEventStream()` call. `close()` on a parked
|
|
106
|
+
* handle stays safe/idempotent.
|
|
107
|
+
*/
|
|
108
|
+
onParked?: (reason: EventStreamParkedInfo) => void;
|
|
109
|
+
/** Test-only clock/timer override. Defaults to real `Date.now`/`setTimeout`. */
|
|
110
|
+
timers?: EventStreamTimers;
|
|
111
|
+
}
|
|
112
|
+
/** Payload for {@link OpenEventStreamOptions.onParked}. */
|
|
113
|
+
export interface EventStreamParkedInfo {
|
|
114
|
+
/** How many consecutive hard failures triggered the park. */
|
|
115
|
+
consecutiveFailures: number;
|
|
116
|
+
/** The error from the final failed attempt (null if it ended without one). */
|
|
117
|
+
lastError: unknown;
|
|
118
|
+
}
|
|
119
|
+
export interface EventStreamHandle {
|
|
120
|
+
/** Aborts the in-flight connection (if any), stops all reconnect/backoff
|
|
121
|
+
* activity, and clears the pending coalescing flush. Idempotent — safe to
|
|
122
|
+
* call on a stream that has already parked (see `onParked`). */
|
|
123
|
+
close: () => void;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Connects to the opencode SSE event stream and keeps it alive: heartbeat
|
|
127
|
+
* watchdog, event coalescing + batched flush, gap-triggered rehydrate signal,
|
|
128
|
+
* and exponential-backoff reconnect. Framework-free — safe to call from any
|
|
129
|
+
* host (the React wrapper calls this once per effect run; a non-React host can
|
|
130
|
+
* call it directly).
|
|
131
|
+
*/
|
|
132
|
+
export declare function openEventStream(opts: OpenEventStreamOptions): EventStreamHandle;
|
|
133
|
+
export { heartbeatGapEvent, narrowChatEvent, type KortixChatEvent, type KortixChatEventConnection, type KortixChatEventHeartbeatGap, type KortixChatEventMessageRemoved, type KortixChatEventMessageUpdated, type KortixChatEventPartRemoved, type KortixChatEventPartUpdated, type KortixChatEventPermissionAsked, type KortixChatEventPermissionReplied, type KortixChatEventQuestionAnswered, type KortixChatEventQuestionAsked, type KortixChatEventSessionError, type KortixChatEventSessionIdle, type KortixChatEventSessionStatus, type KortixChatEventTodoUpdated, type KortixChatQuestionInfo, type KortixChatQuestionOption, type KortixChatToolRef, } from './chat-events.js';
|
|
134
|
+
//# sourceMappingURL=event-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-stream.d.ts","sourceRoot":"","sources":["../../src/state/event-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAI5E;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB;IACE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,wBAAwB,CAAC;IAC/B,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEN,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,IAAI,EAAE;YACZ,MAAM,EAAE,WAAW,CAAC;YACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;SAAE,CAAC,CAAC;KACnD,CAAC;CACH;AAED,4FAA4F;AAC5F,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnE;;4EAE4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAChF,YAAY,EAAE,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,KAAK,IAAI,CAAC;CACpE;AAQD,MAAM,WAAW,sBAAsB;IACrC;0CACsC;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;oCAEgC;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC;;;sBAGkB;IAClB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;qBAEiB;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;OASG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnD,gFAAgF;IAChF,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC;;qEAEiE;IACjE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAsED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,iBAAiB,CAyU/E;AAOD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC"}
|