alchemylab-opencode 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NODE_COMPAT.md +184 -0
- package/package.json +112 -0
- package/packages/opencode/migration/20260127222353_familiar_lady_ursula/migration.sql +90 -0
- package/packages/opencode/migration/20260127222353_familiar_lady_ursula/snapshot.json +796 -0
- package/packages/opencode/migration/20260211171708_add_project_commands/migration.sql +1 -0
- package/packages/opencode/migration/20260211171708_add_project_commands/snapshot.json +806 -0
- package/packages/opencode/migration/20260213144116_wakeful_the_professor/migration.sql +11 -0
- package/packages/opencode/migration/20260213144116_wakeful_the_professor/snapshot.json +897 -0
- package/packages/opencode/migration/20260225215848_workspace/migration.sql +7 -0
- package/packages/opencode/migration/20260225215848_workspace/snapshot.json +959 -0
- package/packages/opencode/migration/20260227213759_add_session_workspace_id/migration.sql +2 -0
- package/packages/opencode/migration/20260227213759_add_session_workspace_id/snapshot.json +983 -0
- package/packages/opencode/migration/20260228203230_blue_harpoon/migration.sql +17 -0
- package/packages/opencode/migration/20260228203230_blue_harpoon/snapshot.json +1102 -0
- package/packages/opencode/migration/20260303231226_add_workspace_fields/migration.sql +5 -0
- package/packages/opencode/migration/20260303231226_add_workspace_fields/snapshot.json +1013 -0
- package/packages/opencode/migration/20260309230000_move_org_to_state/migration.sql +3 -0
- package/packages/opencode/migration/20260309230000_move_org_to_state/snapshot.json +1156 -0
- package/packages/opencode/migration/20260312043431_session_message_cursor/migration.sql +4 -0
- package/packages/opencode/migration/20260312043431_session_message_cursor/snapshot.json +1168 -0
- package/packages/opencode/migration/20260323234822_events/migration.sql +13 -0
- package/packages/opencode/migration/20260323234822_events/snapshot.json +1271 -0
- package/packages/opencode/package.json +140 -0
- package/packages/opencode/src/account/account.sql.ts +39 -0
- package/packages/opencode/src/account/index.ts +463 -0
- package/packages/opencode/src/account/repo.ts +163 -0
- package/packages/opencode/src/account/schema.ts +91 -0
- package/packages/opencode/src/acp/README.md +174 -0
- package/packages/opencode/src/acp/agent.ts +1847 -0
- package/packages/opencode/src/acp/session.ts +116 -0
- package/packages/opencode/src/acp/types.ts +24 -0
- package/packages/opencode/src/agent/agent.ts +420 -0
- package/packages/opencode/src/agent/generate.txt +75 -0
- package/packages/opencode/src/agent/prompt/compaction.txt +15 -0
- package/packages/opencode/src/agent/prompt/explore.txt +18 -0
- package/packages/opencode/src/agent/prompt/summary.txt +11 -0
- package/packages/opencode/src/agent/prompt/title.txt +44 -0
- package/packages/opencode/src/auth/index.ts +110 -0
- package/packages/opencode/src/bus/bus-event.ts +40 -0
- package/packages/opencode/src/bus/global.ts +10 -0
- package/packages/opencode/src/bus/index.ts +185 -0
- package/packages/opencode/src/cli/bootstrap.ts +17 -0
- package/packages/opencode/src/cli/cmd/cmd.ts +7 -0
- package/packages/opencode/src/cli/cmd/run.ts +689 -0
- package/packages/opencode/src/cli/cmd/serve.ts +24 -0
- package/packages/opencode/src/cli/cmd/tui/event.ts +49 -0
- package/packages/opencode/src/cli/effect/prompt.ts +25 -0
- package/packages/opencode/src/cli/error.ts +46 -0
- package/packages/opencode/src/cli/heap.ts +59 -0
- package/packages/opencode/src/cli/logo.ts +6 -0
- package/packages/opencode/src/cli/network.ts +60 -0
- package/packages/opencode/src/cli/ui.ts +133 -0
- package/packages/opencode/src/cli/upgrade.ts +31 -0
- package/packages/opencode/src/command/index.ts +195 -0
- package/packages/opencode/src/command/template/initialize.txt +66 -0
- package/packages/opencode/src/command/template/review.txt +101 -0
- package/packages/opencode/src/config/config.ts +1599 -0
- package/packages/opencode/src/config/console-state.ts +15 -0
- package/packages/opencode/src/config/markdown.ts +99 -0
- package/packages/opencode/src/config/paths.ts +167 -0
- package/packages/opencode/src/config/tui-migrate.ts +155 -0
- package/packages/opencode/src/config/tui-schema.ts +37 -0
- package/packages/opencode/src/config/tui.ts +179 -0
- package/packages/opencode/src/control-plane/adaptors/index.ts +20 -0
- package/packages/opencode/src/control-plane/adaptors/worktree.ts +42 -0
- package/packages/opencode/src/control-plane/schema.ts +17 -0
- package/packages/opencode/src/control-plane/sse.ts +66 -0
- package/packages/opencode/src/control-plane/types.ts +32 -0
- package/packages/opencode/src/control-plane/workspace.sql.ts +17 -0
- package/packages/opencode/src/control-plane/workspace.ts +168 -0
- package/packages/opencode/src/effect/cross-spawn-spawner.ts +502 -0
- package/packages/opencode/src/effect/instance-ref.ts +6 -0
- package/packages/opencode/src/effect/instance-registry.ts +12 -0
- package/packages/opencode/src/effect/instance-state.ts +82 -0
- package/packages/opencode/src/effect/run-service.ts +33 -0
- package/packages/opencode/src/effect/runner.ts +216 -0
- package/packages/opencode/src/env/index.ts +28 -0
- package/packages/opencode/src/file/ignore.ts +82 -0
- package/packages/opencode/src/file/index.ts +686 -0
- package/packages/opencode/src/file/protected.ts +59 -0
- package/packages/opencode/src/file/ripgrep.ts +376 -0
- package/packages/opencode/src/file/time.ts +133 -0
- package/packages/opencode/src/file/watcher.ts +173 -0
- package/packages/opencode/src/filesystem/index.ts +236 -0
- package/packages/opencode/src/flag/flag.ts +156 -0
- package/packages/opencode/src/format/formatter.ts +413 -0
- package/packages/opencode/src/format/index.ts +203 -0
- package/packages/opencode/src/git/index.ts +303 -0
- package/packages/opencode/src/global/index.ts +56 -0
- package/packages/opencode/src/id/id.ts +85 -0
- package/packages/opencode/src/ide/index.ts +74 -0
- package/packages/opencode/src/installation/index.ts +355 -0
- package/packages/opencode/src/installation/meta.ts +7 -0
- package/packages/opencode/src/lsp/client.ts +252 -0
- package/packages/opencode/src/lsp/index.ts +558 -0
- package/packages/opencode/src/lsp/language.ts +120 -0
- package/packages/opencode/src/lsp/launch.ts +21 -0
- package/packages/opencode/src/lsp/server.ts +1968 -0
- package/packages/opencode/src/mcp/auth.ts +173 -0
- package/packages/opencode/src/mcp/index.ts +931 -0
- package/packages/opencode/src/mcp/oauth-callback.ts +216 -0
- package/packages/opencode/src/mcp/oauth-provider.ts +185 -0
- package/packages/opencode/src/node-loader.mjs +104 -0
- package/packages/opencode/src/node-preload.mjs +39 -0
- package/packages/opencode/src/node.ts +1 -0
- package/packages/opencode/src/npm/index.ts +188 -0
- package/packages/opencode/src/patch/index.ts +680 -0
- package/packages/opencode/src/permission/arity.ts +163 -0
- package/packages/opencode/src/permission/evaluate.ts +15 -0
- package/packages/opencode/src/permission/index.ts +325 -0
- package/packages/opencode/src/permission/schema.ts +17 -0
- package/packages/opencode/src/plugin/cloudflare.ts +67 -0
- package/packages/opencode/src/plugin/codex.ts +608 -0
- package/packages/opencode/src/plugin/github-copilot/copilot.ts +361 -0
- package/packages/opencode/src/plugin/github-copilot/models.ts +144 -0
- package/packages/opencode/src/plugin/index.ts +299 -0
- package/packages/opencode/src/plugin/install.ts +439 -0
- package/packages/opencode/src/plugin/loader.ts +174 -0
- package/packages/opencode/src/plugin/meta.ts +188 -0
- package/packages/opencode/src/plugin/shared.ts +323 -0
- package/packages/opencode/src/project/bootstrap.ts +31 -0
- package/packages/opencode/src/project/instance.ts +175 -0
- package/packages/opencode/src/project/project.sql.ts +16 -0
- package/packages/opencode/src/project/project.ts +519 -0
- package/packages/opencode/src/project/schema.ts +16 -0
- package/packages/opencode/src/project/state.ts +70 -0
- package/packages/opencode/src/project/vcs.ts +240 -0
- package/packages/opencode/src/provider/auth.ts +253 -0
- package/packages/opencode/src/provider/error.ts +197 -0
- package/packages/opencode/src/provider/models.ts +162 -0
- package/packages/opencode/src/provider/provider.ts +1709 -0
- package/packages/opencode/src/provider/schema.ts +38 -0
- package/packages/opencode/src/provider/sdk/copilot/README.md +5 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +170 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/get-response-metadata.ts +15 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +19 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +64 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +815 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +28 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +44 -0
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +83 -0
- package/packages/opencode/src/provider/sdk/copilot/copilot-provider.ts +100 -0
- package/packages/opencode/src/provider/sdk/copilot/index.ts +2 -0
- package/packages/opencode/src/provider/sdk/copilot/openai-compatible-error.ts +27 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +335 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +22 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-config.ts +18 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-error.ts +22 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +214 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +1769 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +173 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-settings.ts +1 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +87 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/file-search.ts +127 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/image-generation.ts +114 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/local-shell.ts +64 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +103 -0
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search.ts +102 -0
- package/packages/opencode/src/provider/transform.ts +1050 -0
- package/packages/opencode/src/pty/index.ts +397 -0
- package/packages/opencode/src/pty/pty.node.ts +27 -0
- package/packages/opencode/src/pty/pty.ts +25 -0
- package/packages/opencode/src/pty/schema.ts +17 -0
- package/packages/opencode/src/question/index.ts +224 -0
- package/packages/opencode/src/question/schema.ts +17 -0
- package/packages/opencode/src/run.ts +28 -0
- package/packages/opencode/src/serve.ts +45 -0
- package/packages/opencode/src/server/error.ts +36 -0
- package/packages/opencode/src/server/event.ts +7 -0
- package/packages/opencode/src/server/instance.ts +324 -0
- package/packages/opencode/src/server/mdns.ts +60 -0
- package/packages/opencode/src/server/middleware.ts +33 -0
- package/packages/opencode/src/server/projectors.ts +28 -0
- package/packages/opencode/src/server/proxy.ts +131 -0
- package/packages/opencode/src/server/router.ts +105 -0
- package/packages/opencode/src/server/routes/config.ts +92 -0
- package/packages/opencode/src/server/routes/event.ts +83 -0
- package/packages/opencode/src/server/routes/experimental.ts +374 -0
- package/packages/opencode/src/server/routes/file.ts +197 -0
- package/packages/opencode/src/server/routes/global.ts +312 -0
- package/packages/opencode/src/server/routes/mcp.ts +225 -0
- package/packages/opencode/src/server/routes/permission.ts +69 -0
- package/packages/opencode/src/server/routes/project.ts +118 -0
- package/packages/opencode/src/server/routes/provider.ts +171 -0
- package/packages/opencode/src/server/routes/pty.ts +210 -0
- package/packages/opencode/src/server/routes/question.ts +99 -0
- package/packages/opencode/src/server/routes/session.ts +1030 -0
- package/packages/opencode/src/server/routes/tui.ts +379 -0
- package/packages/opencode/src/server/routes/workspace.ts +94 -0
- package/packages/opencode/src/server/server.ts +353 -0
- package/packages/opencode/src/session/compaction.ts +428 -0
- package/packages/opencode/src/session/index.ts +887 -0
- package/packages/opencode/src/session/instruction.ts +258 -0
- package/packages/opencode/src/session/llm.ts +354 -0
- package/packages/opencode/src/session/message-v2.ts +1031 -0
- package/packages/opencode/src/session/message.ts +191 -0
- package/packages/opencode/src/session/overflow.ts +22 -0
- package/packages/opencode/src/session/processor.ts +523 -0
- package/packages/opencode/src/session/projectors.ts +135 -0
- package/packages/opencode/src/session/prompt/anthropic.txt +105 -0
- package/packages/opencode/src/session/prompt/beast.txt +147 -0
- package/packages/opencode/src/session/prompt/build-switch.txt +5 -0
- package/packages/opencode/src/session/prompt/codex.txt +79 -0
- package/packages/opencode/src/session/prompt/copilot-gpt-5.txt +143 -0
- package/packages/opencode/src/session/prompt/default.txt +105 -0
- package/packages/opencode/src/session/prompt/gemini.txt +155 -0
- package/packages/opencode/src/session/prompt/gpt.txt +107 -0
- package/packages/opencode/src/session/prompt/kimi.txt +95 -0
- package/packages/opencode/src/session/prompt/max-steps.txt +16 -0
- package/packages/opencode/src/session/prompt/plan-reminder-anthropic.txt +67 -0
- package/packages/opencode/src/session/prompt/plan.txt +26 -0
- package/packages/opencode/src/session/prompt/trinity.txt +97 -0
- package/packages/opencode/src/session/prompt.ts +1911 -0
- package/packages/opencode/src/session/retry.ts +106 -0
- package/packages/opencode/src/session/revert.ts +176 -0
- package/packages/opencode/src/session/schema.ts +38 -0
- package/packages/opencode/src/session/session.sql.ts +103 -0
- package/packages/opencode/src/session/status.ts +102 -0
- package/packages/opencode/src/session/summary.ts +177 -0
- package/packages/opencode/src/session/system.ts +76 -0
- package/packages/opencode/src/session/todo.ts +95 -0
- package/packages/opencode/src/share/share-next.ts +369 -0
- package/packages/opencode/src/share/share.sql.ts +13 -0
- package/packages/opencode/src/shell/shell.ts +110 -0
- package/packages/opencode/src/skill/discovery.ts +116 -0
- package/packages/opencode/src/skill/index.ts +277 -0
- package/packages/opencode/src/snapshot/index.ts +726 -0
- package/packages/opencode/src/sql.d.ts +4 -0
- package/packages/opencode/src/storage/db.node.ts +8 -0
- package/packages/opencode/src/storage/db.ts +177 -0
- package/packages/opencode/src/storage/json-migration.ts +425 -0
- package/packages/opencode/src/storage/schema.sql.ts +10 -0
- package/packages/opencode/src/storage/schema.ts +5 -0
- package/packages/opencode/src/storage/storage.ts +353 -0
- package/packages/opencode/src/sync/README.md +179 -0
- package/packages/opencode/src/sync/event.sql.ts +16 -0
- package/packages/opencode/src/sync/index.ts +263 -0
- package/packages/opencode/src/sync/schema.ts +14 -0
- package/packages/opencode/src/tool/apply_patch.ts +281 -0
- package/packages/opencode/src/tool/apply_patch.txt +33 -0
- package/packages/opencode/src/tool/bash.ts +496 -0
- package/packages/opencode/src/tool/bash.txt +117 -0
- package/packages/opencode/src/tool/batch.ts +183 -0
- package/packages/opencode/src/tool/batch.txt +24 -0
- package/packages/opencode/src/tool/codesearch.ts +132 -0
- package/packages/opencode/src/tool/codesearch.txt +12 -0
- package/packages/opencode/src/tool/edit.ts +667 -0
- package/packages/opencode/src/tool/edit.txt +10 -0
- package/packages/opencode/src/tool/external-directory.ts +46 -0
- package/packages/opencode/src/tool/glob.ts +78 -0
- package/packages/opencode/src/tool/glob.txt +6 -0
- package/packages/opencode/src/tool/grep.ts +156 -0
- package/packages/opencode/src/tool/grep.txt +8 -0
- package/packages/opencode/src/tool/invalid.ts +17 -0
- package/packages/opencode/src/tool/ls.ts +121 -0
- package/packages/opencode/src/tool/ls.txt +1 -0
- package/packages/opencode/src/tool/lsp.ts +97 -0
- package/packages/opencode/src/tool/lsp.txt +19 -0
- package/packages/opencode/src/tool/multiedit.ts +46 -0
- package/packages/opencode/src/tool/multiedit.txt +41 -0
- package/packages/opencode/src/tool/plan-enter.txt +14 -0
- package/packages/opencode/src/tool/plan-exit.txt +13 -0
- package/packages/opencode/src/tool/plan.ts +131 -0
- package/packages/opencode/src/tool/question.ts +46 -0
- package/packages/opencode/src/tool/question.txt +10 -0
- package/packages/opencode/src/tool/read.ts +332 -0
- package/packages/opencode/src/tool/read.txt +14 -0
- package/packages/opencode/src/tool/registry.ts +265 -0
- package/packages/opencode/src/tool/schema.ts +17 -0
- package/packages/opencode/src/tool/skill.ts +105 -0
- package/packages/opencode/src/tool/task.ts +166 -0
- package/packages/opencode/src/tool/task.txt +60 -0
- package/packages/opencode/src/tool/todo.ts +48 -0
- package/packages/opencode/src/tool/todowrite.txt +167 -0
- package/packages/opencode/src/tool/tool.ts +112 -0
- package/packages/opencode/src/tool/truncate.ts +144 -0
- package/packages/opencode/src/tool/truncation-dir.ts +4 -0
- package/packages/opencode/src/tool/webfetch.ts +206 -0
- package/packages/opencode/src/tool/webfetch.txt +13 -0
- package/packages/opencode/src/tool/websearch.ts +150 -0
- package/packages/opencode/src/tool/websearch.txt +14 -0
- package/packages/opencode/src/tool/write.ts +84 -0
- package/packages/opencode/src/tool/write.txt +8 -0
- package/packages/opencode/src/util/abort.ts +35 -0
- package/packages/opencode/src/util/archive.ts +17 -0
- package/packages/opencode/src/util/color.ts +19 -0
- package/packages/opencode/src/util/context.ts +25 -0
- package/packages/opencode/src/util/data-url.ts +9 -0
- package/packages/opencode/src/util/defer.ts +12 -0
- package/packages/opencode/src/util/effect-http-client.ts +11 -0
- package/packages/opencode/src/util/effect-zod.ts +98 -0
- package/packages/opencode/src/util/error.ts +77 -0
- package/packages/opencode/src/util/filesystem.ts +245 -0
- package/packages/opencode/src/util/flock.ts +333 -0
- package/packages/opencode/src/util/fn.ts +21 -0
- package/packages/opencode/src/util/format.ts +20 -0
- package/packages/opencode/src/util/glob.ts +34 -0
- package/packages/opencode/src/util/hash.ts +7 -0
- package/packages/opencode/src/util/iife.ts +3 -0
- package/packages/opencode/src/util/keybind.ts +103 -0
- package/packages/opencode/src/util/lazy.ts +23 -0
- package/packages/opencode/src/util/locale.ts +81 -0
- package/packages/opencode/src/util/lock.ts +98 -0
- package/packages/opencode/src/util/log.ts +182 -0
- package/packages/opencode/src/util/network.ts +9 -0
- package/packages/opencode/src/util/process.ts +176 -0
- package/packages/opencode/src/util/queue.ts +32 -0
- package/packages/opencode/src/util/record.ts +3 -0
- package/packages/opencode/src/util/rpc.ts +66 -0
- package/packages/opencode/src/util/schema.ts +53 -0
- package/packages/opencode/src/util/scrap.ts +10 -0
- package/packages/opencode/src/util/signal.ts +12 -0
- package/packages/opencode/src/util/timeout.ts +14 -0
- package/packages/opencode/src/util/token.ts +7 -0
- package/packages/opencode/src/util/update-schema.ts +13 -0
- package/packages/opencode/src/util/which.ts +14 -0
- package/packages/opencode/src/util/wildcard.ts +59 -0
- package/packages/opencode/src/worktree/index.ts +612 -0
- package/packages/plugin/package.json +38 -0
- package/packages/plugin/src/example.ts +18 -0
- package/packages/plugin/src/index.ts +282 -0
- package/packages/plugin/src/shell.ts +136 -0
- package/packages/plugin/src/tool.ts +38 -0
- package/packages/plugin/src/tui.ts +508 -0
- package/packages/script/package.json +16 -0
- package/packages/script/src/index.ts +77 -0
- package/packages/sdk/package.json +33 -0
- package/packages/sdk/src/client.ts +55 -0
- package/packages/sdk/src/gen/client/client.gen.ts +212 -0
- package/packages/sdk/src/gen/client/index.ts +25 -0
- package/packages/sdk/src/gen/client/types.gen.ts +222 -0
- package/packages/sdk/src/gen/client/utils.gen.ts +287 -0
- package/packages/sdk/src/gen/client.gen.ts +22 -0
- package/packages/sdk/src/gen/core/auth.gen.ts +41 -0
- package/packages/sdk/src/gen/core/bodySerializer.gen.ts +74 -0
- package/packages/sdk/src/gen/core/params.gen.ts +144 -0
- package/packages/sdk/src/gen/core/pathSerializer.gen.ts +167 -0
- package/packages/sdk/src/gen/core/queryKeySerializer.gen.ts +111 -0
- package/packages/sdk/src/gen/core/serverSentEvents.gen.ts +210 -0
- package/packages/sdk/src/gen/core/types.gen.ts +91 -0
- package/packages/sdk/src/gen/core/utils.gen.ts +109 -0
- package/packages/sdk/src/gen/sdk.gen.ts +1197 -0
- package/packages/sdk/src/gen/types.gen.ts +3904 -0
- package/packages/sdk/src/index.ts +21 -0
- package/packages/sdk/src/process.ts +31 -0
- package/packages/sdk/src/server.ts +134 -0
- package/packages/sdk/src/v2/client.ts +81 -0
- package/packages/sdk/src/v2/gen/client/client.gen.ts +285 -0
- package/packages/sdk/src/v2/gen/client/index.ts +25 -0
- package/packages/sdk/src/v2/gen/client/types.gen.ts +202 -0
- package/packages/sdk/src/v2/gen/client/utils.gen.ts +289 -0
- package/packages/sdk/src/v2/gen/client.gen.ts +18 -0
- package/packages/sdk/src/v2/gen/core/auth.gen.ts +41 -0
- package/packages/sdk/src/v2/gen/core/bodySerializer.gen.ts +82 -0
- package/packages/sdk/src/v2/gen/core/params.gen.ts +169 -0
- package/packages/sdk/src/v2/gen/core/pathSerializer.gen.ts +167 -0
- package/packages/sdk/src/v2/gen/core/queryKeySerializer.gen.ts +111 -0
- package/packages/sdk/src/v2/gen/core/serverSentEvents.gen.ts +239 -0
- package/packages/sdk/src/v2/gen/core/types.gen.ts +86 -0
- package/packages/sdk/src/v2/gen/core/utils.gen.ts +137 -0
- package/packages/sdk/src/v2/gen/sdk.gen.ts +4223 -0
- package/packages/sdk/src/v2/gen/types.gen.ts +5265 -0
- package/packages/sdk/src/v2/index.ts +21 -0
- package/packages/sdk/src/v2/server.ts +134 -0
- package/packages/util/package.json +20 -0
- package/packages/util/src/array.ts +10 -0
- package/packages/util/src/binary.ts +41 -0
- package/packages/util/src/encode.ts +51 -0
- package/packages/util/src/error.ts +54 -0
- package/packages/util/src/fn.ts +11 -0
- package/packages/util/src/identifier.ts +48 -0
- package/packages/util/src/iife.ts +3 -0
- package/packages/util/src/lazy.ts +11 -0
- package/packages/util/src/module.ts +10 -0
- package/packages/util/src/path.ts +37 -0
- package/packages/util/src/retry.ts +41 -0
- package/packages/util/src/slug.ts +74 -0
- package/postinstall.cjs +55 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 opencode
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NODE_COMPAT.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# OpenCode Node.js Compatibility
|
|
2
|
+
|
|
3
|
+
OpenCode serve mode has been patched to run on Node.js 24+ without Bun.
|
|
4
|
+
This document describes what was changed, why, and how to run it.
|
|
5
|
+
|
|
6
|
+
## Quick Start
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
# Requires Node.js 24+
|
|
10
|
+
node --experimental-strip-types --experimental-transform-types \
|
|
11
|
+
--import ./packages/opencode/src/node-preload.mjs \
|
|
12
|
+
packages/opencode/src/serve.ts --port 4096
|
|
13
|
+
|
|
14
|
+
# With per-project data isolation (recommended for alchemylab)
|
|
15
|
+
node --experimental-strip-types --experimental-transform-types \
|
|
16
|
+
--import ./packages/opencode/src/node-preload.mjs \
|
|
17
|
+
packages/opencode/src/serve.ts --port 4096 --data-dir /path/to/project/.alchemy_lab/opencode
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Per-Project Data Isolation
|
|
21
|
+
|
|
22
|
+
By default, OpenCode stores data in `~/.local/share/opencode/`. The `--data-dir` flag
|
|
23
|
+
(or `OPENCODE_DATA_DIR` env var) redirects project-specific data to a custom directory:
|
|
24
|
+
|
|
25
|
+
| Path | Default | With `--data-dir` |
|
|
26
|
+
|------|---------|-------------------|
|
|
27
|
+
| Database | `~/.local/share/opencode/opencode.db` | `<data-dir>/opencode.db` |
|
|
28
|
+
| Auth | `~/.local/share/opencode/auth.json` | `<data-dir>/auth.json` |
|
|
29
|
+
| Plans | `~/.local/share/opencode/plans/` | `<data-dir>/plans/` |
|
|
30
|
+
| State/locks | `~/.local/state/opencode/` | `<data-dir>/state/` |
|
|
31
|
+
| Logs | `~/.local/share/opencode/log/` | `<data-dir>/log/` |
|
|
32
|
+
| Config | `~/.config/opencode/` | `~/.config/opencode/` (unchanged) |
|
|
33
|
+
| Bin cache | `~/.cache/opencode/bin/` | `~/.cache/opencode/bin/` (unchanged) |
|
|
34
|
+
|
|
35
|
+
Config and bin cache stay global so user preferences and downloaded tools are shared.
|
|
36
|
+
|
|
37
|
+
## Why Node.js 24?
|
|
38
|
+
|
|
39
|
+
| Node Version | Status | Issue |
|
|
40
|
+
|--------------|--------|-------|
|
|
41
|
+
| 22 LTS | ❌ | `tsx` injects esbuild `__name` helper that breaks Effect framework |
|
|
42
|
+
| 23 | ❌ | V8 crash in async ESM module evaluation (`AsyncModuleExecutionFulfilled`) |
|
|
43
|
+
| 24 LTS | ✅ | Native `--experimental-strip-types` avoids esbuild entirely |
|
|
44
|
+
| 25+ | ✅ | Should work (untested) |
|
|
45
|
+
|
|
46
|
+
Node 24's native TypeScript stripping means no transpiler is needed. The code runs
|
|
47
|
+
as-is with types stripped at load time. This avoids the `__name` injection that
|
|
48
|
+
`tsx`/`esbuild` add and that Bun provides globally but Node doesn't.
|
|
49
|
+
|
|
50
|
+
## Architecture
|
|
51
|
+
|
|
52
|
+
### Entry Point
|
|
53
|
+
|
|
54
|
+
`src/serve.ts` — A minimal entry point that only imports the server path.
|
|
55
|
+
The main `src/index.ts` eagerly imports TUI/CLI code that depends on Bun-specific
|
|
56
|
+
packages (`bun`, `bun-pty`, `bun:ffi`). The serve entry point sidesteps all of that.
|
|
57
|
+
|
|
58
|
+
### Node Preload (`src/node-preload.mjs`)
|
|
59
|
+
|
|
60
|
+
Loaded via `--import` before any application code. Does two things:
|
|
61
|
+
|
|
62
|
+
1. **Polyfills `globalThis.__name`** — Bun provides this globally (esbuild `--keep-names`
|
|
63
|
+
helper). The Effect framework and other dependencies rely on it.
|
|
64
|
+
2. **Registers the custom ESM loader** via `node:module` `register()`.
|
|
65
|
+
|
|
66
|
+
### Node Loader (`src/node-loader.mjs`)
|
|
67
|
+
|
|
68
|
+
Custom ESM resolve + load hooks that bridge Bun/Node differences:
|
|
69
|
+
|
|
70
|
+
- **Extensionless imports** → tries `.ts`, `.tsx`, `/index.ts`, `/index.tsx`
|
|
71
|
+
- **`.txt` file imports** → reads file and exports as default string (Bun supports this natively)
|
|
72
|
+
- **`bun:sqlite`** → redirected to `node:sqlite`
|
|
73
|
+
- **`bun:ffi`** → stubbed (only used for Windows TUI, not serve)
|
|
74
|
+
- **`bun` / `bun-pty`** → stubbed (only used for TUI/CLI)
|
|
75
|
+
- **`.js` → `.ts` remapping** → for workspace packages where imports use `.js` but source is `.ts`
|
|
76
|
+
- **`@/` and `@tui/` path aliases** → resolved to `src/` and `src/cli/cmd/tui/`
|
|
77
|
+
|
|
78
|
+
## Files Changed
|
|
79
|
+
|
|
80
|
+
### HTTP Server (`src/server/server.ts`)
|
|
81
|
+
- **Already done in dev branch**: Uses `@hono/node-server` with `createAdaptorServer`
|
|
82
|
+
- No Bun-specific code remains
|
|
83
|
+
|
|
84
|
+
### WebSocket Proxy (`src/server/proxy.ts`)
|
|
85
|
+
- **Before**: `import { upgradeWebSocket } from "hono/bun"`
|
|
86
|
+
- **After**: `import { createNodeWebSocket } from "@hono/node-ws"`
|
|
87
|
+
|
|
88
|
+
### Static File Serving (`src/server/instance.ts`)
|
|
89
|
+
- **Before**: `Bun.file(match)` for embedded web UI
|
|
90
|
+
- **After**: `fs.readFileSync(match)` with manual MIME type lookup
|
|
91
|
+
|
|
92
|
+
### Prompt Async Route (`src/server/routes/session.ts`)
|
|
93
|
+
- **Before**: `c.status(204)` + `stream()` — Node's `Response` rejects 204 with body
|
|
94
|
+
- **After**: `c.status(202)` — semantically correct for "accepted for processing"
|
|
95
|
+
|
|
96
|
+
### Database (`src/storage/db.ts`)
|
|
97
|
+
- **Before**: `import { type SQLiteBunDatabase } from "drizzle-orm/bun-sqlite"` and
|
|
98
|
+
`import { migrate } from "drizzle-orm/bun-sqlite/migrator"`
|
|
99
|
+
- **After**: Uses `drizzle-orm/node-sqlite` equivalents
|
|
100
|
+
- **Migration**: `bun-sqlite` migrator accepts raw journal entries; `node-sqlite` migrator
|
|
101
|
+
requires `{ migrationsFolder }` config. Dev mode now passes the folder path.
|
|
102
|
+
|
|
103
|
+
### Database Conditional Import (`package.json`)
|
|
104
|
+
- **Before**: `"#db": { "default": "./src/storage/db.bun.ts" }`
|
|
105
|
+
- **After**: `"#db": { "default": "./src/storage/db.node.ts" }`
|
|
106
|
+
|
|
107
|
+
### File Watcher (`src/file/watcher.ts`)
|
|
108
|
+
- **Before**: `require("@parcel/watcher-...")` — `require` doesn't exist in ESM
|
|
109
|
+
- **After**: `import { createRequire } from "node:module"` then `createRequire(import.meta.url)`
|
|
110
|
+
|
|
111
|
+
### OAuth Servers
|
|
112
|
+
Both `src/mcp/oauth-callback.ts` and `src/plugin/codex.ts`:
|
|
113
|
+
- **Before**: `Bun.serve({ port, fetch() {} })`
|
|
114
|
+
- **After**: `http.createServer()` with manual Request/Response bridging
|
|
115
|
+
|
|
116
|
+
### Lazy Imports (`src/index.ts`)
|
|
117
|
+
These modules use `bun:sqlite` directly and would crash on import:
|
|
118
|
+
- `JsonMigration` — now lazy: `import("./storage/json-migration").catch(() => null)`
|
|
119
|
+
- `DbCommand` — now lazy, removed from yargs command registration
|
|
120
|
+
|
|
121
|
+
## Dependencies Added
|
|
122
|
+
|
|
123
|
+
- `@hono/node-ws` — Node.js WebSocket adapter for Hono (already had `@hono/node-server`)
|
|
124
|
+
|
|
125
|
+
## Session Identity via _meta (Core Fix)
|
|
126
|
+
|
|
127
|
+
Upstream OpenCode's `callTool` does not pass `_meta` on MCP tool calls. This means MCP
|
|
128
|
+
servers cannot know which session a tool call belongs to — a critical problem when MCP
|
|
129
|
+
processes are shared across sessions (which OpenCode does for efficiency).
|
|
130
|
+
|
|
131
|
+
### The Fix
|
|
132
|
+
|
|
133
|
+
- `src/mcp/index.ts`: Added `MCP.currentToolContext` (thread-local context) and modified
|
|
134
|
+
`convertMcpTool()` to include `_meta: { sessionId, messageId }` in every `callTool` request.
|
|
135
|
+
- `src/session/prompt.ts`: Sets `MCP.currentToolContext` from the session's tool execution
|
|
136
|
+
context before each MCP tool call.
|
|
137
|
+
|
|
138
|
+
### Result
|
|
139
|
+
|
|
140
|
+
Every MCP tool call now carries `_meta.sessionId` and `_meta.messageId`. The alchemy MCP
|
|
141
|
+
server uses these directly (via `request.params._meta.sessionId`) instead of expensive HTTP
|
|
142
|
+
discovery. This eliminates session identity races when MCP processes are shared across
|
|
143
|
+
concurrent sessions.
|
|
144
|
+
|
|
145
|
+
### Verified
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
[11:58:36] read_files | _meta-debug {
|
|
149
|
+
"has_meta": true,
|
|
150
|
+
"sessionId": "ses_2986f17c8ffefuXAJN3qDIHzND",
|
|
151
|
+
"messageId": "msg_d67cf04da001EdSMwdFednSJES"
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Known Limitations
|
|
156
|
+
|
|
157
|
+
1. **Plugin CJS loading** — Alchemy plugins compiled as CJS fail with "not a function"
|
|
158
|
+
under Node's ESM import. The IIFE wrapper in `MCPClientConfigurer.ts` handles this
|
|
159
|
+
for Bun/OpenCode; same approach needed for Node.
|
|
160
|
+
|
|
161
|
+
2. **`opencode db` CLI command** — Not available (uses `bun:sqlite` directly). Only
|
|
162
|
+
affects database admin tasks, not serve mode.
|
|
163
|
+
|
|
164
|
+
3. **JSON migration** — Skipped on Node.js (migrates legacy JSON storage to SQLite).
|
|
165
|
+
Only relevant for users upgrading from very old opencode versions.
|
|
166
|
+
|
|
167
|
+
4. **ExperimentalWarning** — Node 24 prints warnings for `strip-types`, `transform-types`,
|
|
168
|
+
and `SQLite`. These are harmless and can be suppressed with `--no-warnings`.
|
|
169
|
+
|
|
170
|
+
## Tested Endpoints
|
|
171
|
+
|
|
172
|
+
All passing on Node.js 24.14.1:
|
|
173
|
+
|
|
174
|
+
- `GET /session` — list sessions
|
|
175
|
+
- `POST /session` — create session
|
|
176
|
+
- `GET /session/:id` — get session
|
|
177
|
+
- `DELETE /session/:id` — delete session
|
|
178
|
+
- `POST /session/:id/prompt_async` — send async prompt
|
|
179
|
+
- `GET /session/:id/message` — get messages
|
|
180
|
+
- `GET /event` — SSE event stream
|
|
181
|
+
- `GET /global/health` — health check
|
|
182
|
+
- `GET /config/providers` — provider configuration
|
|
183
|
+
- `GET /auth/:provider` — auth status
|
|
184
|
+
- `GET /doc` — OpenAPI specification
|
package/package.json
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "alchemylab-opencode",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "OpenCode server runtime for AlchemyLab",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"postinstall": "node postinstall.cjs"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"packages/opencode/src/**",
|
|
12
|
+
"packages/opencode/migration/**",
|
|
13
|
+
"packages/opencode/package.json",
|
|
14
|
+
"packages/plugin/src/**",
|
|
15
|
+
"packages/plugin/package.json",
|
|
16
|
+
"packages/sdk/src/**",
|
|
17
|
+
"packages/sdk/package.json",
|
|
18
|
+
"packages/util/src/**",
|
|
19
|
+
"packages/util/package.json",
|
|
20
|
+
"packages/script/src/**",
|
|
21
|
+
"packages/script/package.json",
|
|
22
|
+
"postinstall.cjs",
|
|
23
|
+
"NODE_COMPAT.md"
|
|
24
|
+
],
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@agentclientprotocol/sdk": "0.16.1",
|
|
27
|
+
"@ai-sdk/amazon-bedrock": "^4.0.91",
|
|
28
|
+
"@ai-sdk/anthropic": "3.0.67",
|
|
29
|
+
"@ai-sdk/azure": "3.0.49",
|
|
30
|
+
"@ai-sdk/cerebras": "2.0.41",
|
|
31
|
+
"@ai-sdk/cohere": "3.0.27",
|
|
32
|
+
"@ai-sdk/deepinfra": "2.0.41",
|
|
33
|
+
"@ai-sdk/gateway": "3.0.80",
|
|
34
|
+
"@ai-sdk/google": "3.0.53",
|
|
35
|
+
"@ai-sdk/google-vertex": "4.0.95",
|
|
36
|
+
"@ai-sdk/groq": "3.0.31",
|
|
37
|
+
"@ai-sdk/mistral": "3.0.27",
|
|
38
|
+
"@ai-sdk/openai": "3.0.48",
|
|
39
|
+
"@ai-sdk/openai-compatible": "2.0.37",
|
|
40
|
+
"@ai-sdk/perplexity": "3.0.26",
|
|
41
|
+
"@ai-sdk/provider": "3.0.8",
|
|
42
|
+
"@ai-sdk/provider-utils": "4.0.23",
|
|
43
|
+
"@ai-sdk/togetherai": "2.0.41",
|
|
44
|
+
"@ai-sdk/vercel": "2.0.39",
|
|
45
|
+
"@ai-sdk/xai": "3.0.75",
|
|
46
|
+
"@aws-sdk/credential-providers": "^3.1025.0",
|
|
47
|
+
"@clack/prompts": "1.0.0-alpha.1",
|
|
48
|
+
"@effect/platform-node": "4.0.0-beta.43",
|
|
49
|
+
"@gitlab/gitlab-ai-provider": "3.6.0",
|
|
50
|
+
"@gitlab/opencode-gitlab-auth": "1.3.3",
|
|
51
|
+
"@hono/node-server": "1.19.11",
|
|
52
|
+
"@hono/node-ws": "1.3.0",
|
|
53
|
+
"@hono/standard-validator": "^0.2.2",
|
|
54
|
+
"@hono/zod-validator": "0.4.2",
|
|
55
|
+
"@lydell/node-pty": "1.2.0-beta.10",
|
|
56
|
+
"@modelcontextprotocol/sdk": "1.27.1",
|
|
57
|
+
"@npmcli/arborist": "9.4.0",
|
|
58
|
+
"@openrouter/ai-sdk-provider": "2.4.2",
|
|
59
|
+
"@parcel/watcher": "2.5.1",
|
|
60
|
+
"@standard-community/standard-json": "^0.3.5",
|
|
61
|
+
"@standard-community/standard-openapi": "^0.2.9",
|
|
62
|
+
"@standard-schema/spec": "^1.1.0",
|
|
63
|
+
"@zip.js/zip.js": "2.7.62",
|
|
64
|
+
"ai": "6.0.149",
|
|
65
|
+
"bonjour-service": "1.3.0",
|
|
66
|
+
"chokidar": "4.0.3",
|
|
67
|
+
"cross-spawn": "7.0.6",
|
|
68
|
+
"decimal.js": "10.5.0",
|
|
69
|
+
"diff": "8.0.2",
|
|
70
|
+
"drizzle-orm": "1.0.0-beta.19-d95b7a4",
|
|
71
|
+
"effect": "4.0.0-beta.43",
|
|
72
|
+
"fuzzysort": "3.1.0",
|
|
73
|
+
"gitlab-ai-provider": "^6.4.1",
|
|
74
|
+
"glob": "13.0.5",
|
|
75
|
+
"google-auth-library": "^10.6.2",
|
|
76
|
+
"gray-matter": "4.0.3",
|
|
77
|
+
"gtoken": "^8.0.0",
|
|
78
|
+
"hono": "4.10.7",
|
|
79
|
+
"hono-openapi": "1.1.2",
|
|
80
|
+
"ignore": "7.0.5",
|
|
81
|
+
"ioredis": "^5.10.1",
|
|
82
|
+
"jsonc-parser": "3.3.1",
|
|
83
|
+
"mime-types": "3.0.2",
|
|
84
|
+
"minimatch": "10.0.3",
|
|
85
|
+
"npm-package-arg": "13.0.2",
|
|
86
|
+
"open": "10.1.2",
|
|
87
|
+
"opencode-gitlab-auth": "2.0.1",
|
|
88
|
+
"opencode-poe-auth": "0.0.1",
|
|
89
|
+
"partial-json": "0.1.7",
|
|
90
|
+
"quansync": "^1.0.0",
|
|
91
|
+
"remeda": "2.26.0",
|
|
92
|
+
"semver": "^7.6.3",
|
|
93
|
+
"turndown": "7.2.0",
|
|
94
|
+
"ulid": "3.0.1",
|
|
95
|
+
"venice-ai-sdk-provider": "2.0.1",
|
|
96
|
+
"vscode-jsonrpc": "8.2.1",
|
|
97
|
+
"web-tree-sitter": "0.25.10",
|
|
98
|
+
"which": "6.0.1",
|
|
99
|
+
"xdg-basedir": "5.1.0",
|
|
100
|
+
"yargs": "18.0.0",
|
|
101
|
+
"zod": "4.1.8",
|
|
102
|
+
"zod-to-json-schema": "3.24.5"
|
|
103
|
+
},
|
|
104
|
+
"trustedDependencies": [
|
|
105
|
+
"esbuild",
|
|
106
|
+
"node-pty",
|
|
107
|
+
"web-tree-sitter"
|
|
108
|
+
],
|
|
109
|
+
"engines": {
|
|
110
|
+
"node": ">=24.0.0"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
CREATE TABLE `project` (
|
|
2
|
+
`id` text PRIMARY KEY,
|
|
3
|
+
`worktree` text NOT NULL,
|
|
4
|
+
`vcs` text,
|
|
5
|
+
`name` text,
|
|
6
|
+
`icon_url` text,
|
|
7
|
+
`icon_color` text,
|
|
8
|
+
`time_created` integer NOT NULL,
|
|
9
|
+
`time_updated` integer NOT NULL,
|
|
10
|
+
`time_initialized` integer,
|
|
11
|
+
`sandboxes` text NOT NULL
|
|
12
|
+
);
|
|
13
|
+
--> statement-breakpoint
|
|
14
|
+
CREATE TABLE `message` (
|
|
15
|
+
`id` text PRIMARY KEY,
|
|
16
|
+
`session_id` text NOT NULL,
|
|
17
|
+
`time_created` integer NOT NULL,
|
|
18
|
+
`time_updated` integer NOT NULL,
|
|
19
|
+
`data` text NOT NULL,
|
|
20
|
+
CONSTRAINT `fk_message_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
|
|
21
|
+
);
|
|
22
|
+
--> statement-breakpoint
|
|
23
|
+
CREATE TABLE `part` (
|
|
24
|
+
`id` text PRIMARY KEY,
|
|
25
|
+
`message_id` text NOT NULL,
|
|
26
|
+
`session_id` text NOT NULL,
|
|
27
|
+
`time_created` integer NOT NULL,
|
|
28
|
+
`time_updated` integer NOT NULL,
|
|
29
|
+
`data` text NOT NULL,
|
|
30
|
+
CONSTRAINT `fk_part_message_id_message_id_fk` FOREIGN KEY (`message_id`) REFERENCES `message`(`id`) ON DELETE CASCADE
|
|
31
|
+
);
|
|
32
|
+
--> statement-breakpoint
|
|
33
|
+
CREATE TABLE `permission` (
|
|
34
|
+
`project_id` text PRIMARY KEY,
|
|
35
|
+
`time_created` integer NOT NULL,
|
|
36
|
+
`time_updated` integer NOT NULL,
|
|
37
|
+
`data` text NOT NULL,
|
|
38
|
+
CONSTRAINT `fk_permission_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE
|
|
39
|
+
);
|
|
40
|
+
--> statement-breakpoint
|
|
41
|
+
CREATE TABLE `session` (
|
|
42
|
+
`id` text PRIMARY KEY,
|
|
43
|
+
`project_id` text NOT NULL,
|
|
44
|
+
`parent_id` text,
|
|
45
|
+
`slug` text NOT NULL,
|
|
46
|
+
`directory` text NOT NULL,
|
|
47
|
+
`title` text NOT NULL,
|
|
48
|
+
`version` text NOT NULL,
|
|
49
|
+
`share_url` text,
|
|
50
|
+
`summary_additions` integer,
|
|
51
|
+
`summary_deletions` integer,
|
|
52
|
+
`summary_files` integer,
|
|
53
|
+
`summary_diffs` text,
|
|
54
|
+
`revert` text,
|
|
55
|
+
`permission` text,
|
|
56
|
+
`time_created` integer NOT NULL,
|
|
57
|
+
`time_updated` integer NOT NULL,
|
|
58
|
+
`time_compacting` integer,
|
|
59
|
+
`time_archived` integer,
|
|
60
|
+
CONSTRAINT `fk_session_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE
|
|
61
|
+
);
|
|
62
|
+
--> statement-breakpoint
|
|
63
|
+
CREATE TABLE `todo` (
|
|
64
|
+
`session_id` text NOT NULL,
|
|
65
|
+
`content` text NOT NULL,
|
|
66
|
+
`status` text NOT NULL,
|
|
67
|
+
`priority` text NOT NULL,
|
|
68
|
+
`position` integer NOT NULL,
|
|
69
|
+
`time_created` integer NOT NULL,
|
|
70
|
+
`time_updated` integer NOT NULL,
|
|
71
|
+
CONSTRAINT `todo_pk` PRIMARY KEY(`session_id`, `position`),
|
|
72
|
+
CONSTRAINT `fk_todo_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
|
|
73
|
+
);
|
|
74
|
+
--> statement-breakpoint
|
|
75
|
+
CREATE TABLE `session_share` (
|
|
76
|
+
`session_id` text PRIMARY KEY,
|
|
77
|
+
`id` text NOT NULL,
|
|
78
|
+
`secret` text NOT NULL,
|
|
79
|
+
`url` text NOT NULL,
|
|
80
|
+
`time_created` integer NOT NULL,
|
|
81
|
+
`time_updated` integer NOT NULL,
|
|
82
|
+
CONSTRAINT `fk_session_share_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
|
|
83
|
+
);
|
|
84
|
+
--> statement-breakpoint
|
|
85
|
+
CREATE INDEX `message_session_idx` ON `message` (`session_id`);--> statement-breakpoint
|
|
86
|
+
CREATE INDEX `part_message_idx` ON `part` (`message_id`);--> statement-breakpoint
|
|
87
|
+
CREATE INDEX `part_session_idx` ON `part` (`session_id`);--> statement-breakpoint
|
|
88
|
+
CREATE INDEX `session_project_idx` ON `session` (`project_id`);--> statement-breakpoint
|
|
89
|
+
CREATE INDEX `session_parent_idx` ON `session` (`parent_id`);--> statement-breakpoint
|
|
90
|
+
CREATE INDEX `todo_session_idx` ON `todo` (`session_id`);
|