@thevinci/web 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/README.md +197 -0
- package/bin/cli-entry.js +55 -0
- package/bin/cli-output.js +145 -0
- package/bin/cli.js +4887 -0
- package/bin/cli.test.js +64 -0
- package/dist/apple-touch-icon-120x120.png +0 -0
- package/dist/apple-touch-icon-152x152.png +0 -0
- package/dist/apple-touch-icon-167x167.png +0 -0
- package/dist/apple-touch-icon-180x180.png +0 -0
- package/dist/apple-touch-icon.png +0 -0
- package/dist/apple-touch-icon.svg +528 -0
- package/dist/assets/JsonTreeView-CSm9OzXG.js +1 -0
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/assets/MarkdownRendererImpl-DensKOLc.js +6 -0
- package/dist/assets/MultiRunWindow-Bo7THayo.js +1 -0
- package/dist/assets/OnboardingScreen-BDqmzTVR.js +2 -0
- package/dist/assets/SettingsWindow-coz__Ykw.js +1 -0
- package/dist/assets/TerminalView-DrZ-i3Dr.js +1 -0
- package/dist/assets/ToolOutputDialog-Eglzslt3.js +16 -0
- package/dist/assets/es-4o9ciP61.js +15 -0
- package/dist/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/dist/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/dist/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- package/dist/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/dist/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
- package/dist/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
- package/dist/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/dist/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/dist/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/dist/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/dist/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/dist/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/dist/assets/index-DLTDToSP.css +1 -0
- package/dist/assets/index-DgiFEKGN.js +1 -0
- package/dist/assets/ko-B20imCHE.js +15 -0
- package/dist/assets/main-BV3KOtdA.css +1 -0
- package/dist/assets/main-CDKJj0sH.js +226 -0
- package/dist/assets/main-LC-PSNVM.js +2 -0
- package/dist/assets/miniChat-CQUiG_cr.js +2 -0
- package/dist/assets/modelPrefsAutoSave-Dm799vzR.js +6986 -0
- package/dist/assets/pl-DQJ7LSzj.js +15 -0
- package/dist/assets/pt-BR-OmjHUz9y.js +15 -0
- package/dist/assets/renderElectronMiniChatApp-CARbeW0G.js +2 -0
- package/dist/assets/uk-BNFxOlO4.js +15 -0
- package/dist/assets/vendor--DBfsbEis.css +1 -0
- package/dist/assets/vendor-.bun-B9l0ZNi2.js +4094 -0
- package/dist/assets/wasm-CG6Dc4jp.js +1 -0
- package/dist/assets/wasmSttWorker-Dtlxac_K.js +1 -0
- package/dist/assets/wasmSttWorker-oo7Dm_jy.js +1806 -0
- package/dist/assets/worker-CbT6TVo7.js +155 -0
- package/dist/assets/zh-CN-C6T-Ac7F.js +15 -0
- package/dist/favicon-16.png +0 -0
- package/dist/favicon-32.png +0 -0
- package/dist/favicon.png +0 -0
- package/dist/favicon.svg +528 -0
- package/dist/index.html +607 -0
- package/dist/logo-dark-192x192.png +0 -0
- package/dist/logo-dark-512x512.png +0 -0
- package/dist/logo-dark-512x512.svg +528 -0
- package/dist/logo-light-192x192.png +0 -0
- package/dist/logo-light-512x512.png +0 -0
- package/dist/logo-light-512x512.svg +528 -0
- package/dist/mini-chat.html +16 -0
- package/dist/pwa-192.png +0 -0
- package/dist/pwa-512.png +0 -0
- package/dist/pwa-maskable-192.png +0 -0
- package/dist/pwa-maskable-512.png +0 -0
- package/dist/site.webmanifest +21 -0
- package/dist/sw.js +1 -0
- package/package.json +118 -0
- package/public/apple-touch-icon-120x120.png +0 -0
- package/public/apple-touch-icon-152x152.png +0 -0
- package/public/apple-touch-icon-167x167.png +0 -0
- package/public/apple-touch-icon-180x180.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/apple-touch-icon.svg +528 -0
- package/public/favicon-16.png +0 -0
- package/public/favicon-32.png +0 -0
- package/public/favicon.png +0 -0
- package/public/favicon.svg +528 -0
- package/public/logo-dark-192x192.png +0 -0
- package/public/logo-dark-512x512.png +0 -0
- package/public/logo-dark-512x512.svg +528 -0
- package/public/logo-light-192x192.png +0 -0
- package/public/logo-light-512x512.png +0 -0
- package/public/logo-light-512x512.svg +528 -0
- package/public/pwa-192.png +0 -0
- package/public/pwa-512.png +0 -0
- package/public/pwa-maskable-192.png +0 -0
- package/public/pwa-maskable-512.png +0 -0
- package/public/site.webmanifest +21 -0
- package/server/TERMINAL_WS_PROTOCOL.md +48 -0
- package/server/index.d.ts +39 -0
- package/server/index.js +1311 -0
- package/server/lib/cloudflare-tunnel.js +650 -0
- package/server/lib/event-stream/DOCUMENTATION.md +61 -0
- package/server/lib/event-stream/directory-ws-bridge.js +185 -0
- package/server/lib/event-stream/global-hub.js +158 -0
- package/server/lib/event-stream/global-hub.test.js +140 -0
- package/server/lib/event-stream/global-ws-bridge.js +206 -0
- package/server/lib/event-stream/index.js +25 -0
- package/server/lib/event-stream/protocol.js +131 -0
- package/server/lib/event-stream/protocol.test.js +182 -0
- package/server/lib/event-stream/runtime.js +180 -0
- package/server/lib/event-stream/runtime.test.js +512 -0
- package/server/lib/event-stream/upstream-reader.js +226 -0
- package/server/lib/event-stream/upstream-reader.test.js +276 -0
- package/server/lib/fs/DOCUMENTATION.md +36 -0
- package/server/lib/fs/routes.js +1040 -0
- package/server/lib/fs/search.js +238 -0
- package/server/lib/git/DOCUMENTATION.md +152 -0
- package/server/lib/git/credentials.js +74 -0
- package/server/lib/git/identity-storage.js +112 -0
- package/server/lib/git/index.js +6 -0
- package/server/lib/git/routes.js +972 -0
- package/server/lib/git/service.js +3432 -0
- package/server/lib/git/service.test.js +39 -0
- package/server/lib/github/DOCUMENTATION.md +171 -0
- package/server/lib/github/auth.js +307 -0
- package/server/lib/github/device-flow.js +50 -0
- package/server/lib/github/index.js +24 -0
- package/server/lib/github/octokit.js +10 -0
- package/server/lib/github/pr-status.js +519 -0
- package/server/lib/github/repo/fork-detection.js +102 -0
- package/server/lib/github/repo/index.js +55 -0
- package/server/lib/github/routes.js +1560 -0
- package/server/lib/magic-prompts/routes.js +63 -0
- package/server/lib/magic-prompts/runtime.js +119 -0
- package/server/lib/notifications/DOCUMENTATION.md +122 -0
- package/server/lib/notifications/emitter-runtime.js +102 -0
- package/server/lib/notifications/index.js +4 -0
- package/server/lib/notifications/message.js +52 -0
- package/server/lib/notifications/message.test.js +34 -0
- package/server/lib/notifications/push-runtime.js +304 -0
- package/server/lib/notifications/routes.js +315 -0
- package/server/lib/notifications/runtime.js +566 -0
- package/server/lib/notifications/template-runtime.js +349 -0
- package/server/lib/notifications/template-runtime.test.js +26 -0
- package/server/lib/opencode/DOCUMENTATION.md +362 -0
- package/server/lib/opencode/agents.js +634 -0
- package/server/lib/opencode/auth-state-runtime.js +88 -0
- package/server/lib/opencode/auth.js +83 -0
- package/server/lib/opencode/bootstrap-runtime.js +131 -0
- package/server/lib/opencode/cli-entry-runtime.js +43 -0
- package/server/lib/opencode/cli-options.js +128 -0
- package/server/lib/opencode/commands.js +339 -0
- package/server/lib/opencode/config-entity-routes.js +370 -0
- package/server/lib/opencode/core-routes.js +500 -0
- package/server/lib/opencode/core-routes.test.js +26 -0
- package/server/lib/opencode/env-config.js +74 -0
- package/server/lib/opencode/env-keys.js +68 -0
- package/server/lib/opencode/env-runtime.js +1162 -0
- package/server/lib/opencode/env-runtime.test.js +116 -0
- package/server/lib/opencode/feature-routes-runtime.js +244 -0
- package/server/lib/opencode/hmr-state-runtime.js +85 -0
- package/server/lib/opencode/index.js +66 -0
- package/server/lib/opencode/lifecycle.js +1019 -0
- package/server/lib/opencode/lifecycle.test.js +240 -0
- package/server/lib/opencode/mcp.js +278 -0
- package/server/lib/opencode/network-runtime.js +104 -0
- package/server/lib/opencode/network-runtime.test.js +37 -0
- package/server/lib/opencode/opencode-resolution-runtime.js +71 -0
- package/server/lib/opencode/path-utils.js +100 -0
- package/server/lib/opencode/path-utils.test.js +71 -0
- package/server/lib/opencode/project-directory-runtime.js +124 -0
- package/server/lib/opencode/project-icon-routes.js +399 -0
- package/server/lib/opencode/project-icon-routes.test.js +107 -0
- package/server/lib/opencode/providers.js +96 -0
- package/server/lib/opencode/proxy.js +445 -0
- package/server/lib/opencode/pwa-manifest-routes.js +257 -0
- package/server/lib/opencode/pwa-manifest-routes.test.js +133 -0
- package/server/lib/opencode/routes.js +541 -0
- package/server/lib/opencode/server-startup-runtime.js +156 -0
- package/server/lib/opencode/server-utils-runtime.js +168 -0
- package/server/lib/opencode/server-utils-runtime.test.js +135 -0
- package/server/lib/opencode/session-runtime.js +356 -0
- package/server/lib/opencode/session-runtime.test.js +151 -0
- package/server/lib/opencode/settings-helpers.js +770 -0
- package/server/lib/opencode/settings-helpers.test.js +109 -0
- package/server/lib/opencode/settings-normalization-runtime.js +428 -0
- package/server/lib/opencode/settings-runtime.js +826 -0
- package/server/lib/opencode/settings-runtime.test.js +85 -0
- package/server/lib/opencode/shared.js +615 -0
- package/server/lib/opencode/shutdown-runtime.js +139 -0
- package/server/lib/opencode/shutdown-runtime.test.js +58 -0
- package/server/lib/opencode/skill-routes.js +701 -0
- package/server/lib/opencode/skills.js +548 -0
- package/server/lib/opencode/startup-pipeline-runtime.js +130 -0
- package/server/lib/opencode/static-routes-runtime.js +65 -0
- package/server/lib/opencode/theme-runtime.js +167 -0
- package/server/lib/opencode/tunnel-auth.js +591 -0
- package/server/lib/opencode/tunnel-wiring-runtime.js +94 -0
- package/server/lib/opencode/vinci-routes.js +76 -0
- package/server/lib/opencode/watcher.js +115 -0
- package/server/lib/opencode/watcher.test.js +239 -0
- package/server/lib/preview/proxy-runtime.js +1333 -0
- package/server/lib/preview/proxy-runtime.test.js +144 -0
- package/server/lib/projects/project-config.js +567 -0
- package/server/lib/projects/project-config.test.js +175 -0
- package/server/lib/projects/project-id.js +13 -0
- package/server/lib/quota/DOCUMENTATION.md +58 -0
- package/server/lib/quota/index.js +25 -0
- package/server/lib/quota/providers/claude.js +107 -0
- package/server/lib/quota/providers/codex.js +113 -0
- package/server/lib/quota/providers/copilot.js +165 -0
- package/server/lib/quota/providers/google/api.js +92 -0
- package/server/lib/quota/providers/google/auth.js +108 -0
- package/server/lib/quota/providers/google/index.js +124 -0
- package/server/lib/quota/providers/google/transforms.js +109 -0
- package/server/lib/quota/providers/index.js +168 -0
- package/server/lib/quota/providers/interface.js +55 -0
- package/server/lib/quota/providers/kimi.js +108 -0
- package/server/lib/quota/providers/minimax-cn-coding-plan.js +140 -0
- package/server/lib/quota/providers/minimax-coding-plan.js +139 -0
- package/server/lib/quota/providers/nanogpt.js +124 -0
- package/server/lib/quota/providers/ollama-cloud.js +112 -0
- package/server/lib/quota/providers/openai.js +91 -0
- package/server/lib/quota/providers/openrouter.js +92 -0
- package/server/lib/quota/providers/zai.js +91 -0
- package/server/lib/quota/providers/zhipuai-coding-plan.js +133 -0
- package/server/lib/quota/providers/zhipuai.js +114 -0
- package/server/lib/quota/routes.js +27 -0
- package/server/lib/quota/utils/auth.js +50 -0
- package/server/lib/quota/utils/formatters.js +85 -0
- package/server/lib/quota/utils/formatters.test.js +54 -0
- package/server/lib/quota/utils/index.js +10 -0
- package/server/lib/quota/utils/transformers.js +55 -0
- package/server/lib/scheduled-tasks/DOCUMENTATION.md +44 -0
- package/server/lib/scheduled-tasks/routes.js +235 -0
- package/server/lib/scheduled-tasks/runtime.js +773 -0
- package/server/lib/scheduled-tasks/runtime.test.js +100 -0
- package/server/lib/security/request-security.js +115 -0
- package/server/lib/session-folders/routes.js +63 -0
- package/server/lib/session-folders/routes.test.js +102 -0
- package/server/lib/skills-catalog/DOCUMENTATION.md +178 -0
- package/server/lib/skills-catalog/cache.js +29 -0
- package/server/lib/skills-catalog/clawdhub/api.js +158 -0
- package/server/lib/skills-catalog/clawdhub/index.js +30 -0
- package/server/lib/skills-catalog/clawdhub/install.js +238 -0
- package/server/lib/skills-catalog/clawdhub/scan.js +113 -0
- package/server/lib/skills-catalog/curated-sources.js +21 -0
- package/server/lib/skills-catalog/git.js +77 -0
- package/server/lib/skills-catalog/index.js +42 -0
- package/server/lib/skills-catalog/install.js +294 -0
- package/server/lib/skills-catalog/scan.js +221 -0
- package/server/lib/skills-catalog/source.js +87 -0
- package/server/lib/terminal/DOCUMENTATION.md +76 -0
- package/server/lib/terminal/index.js +31 -0
- package/server/lib/terminal/output-replay-buffer.js +78 -0
- package/server/lib/terminal/output-replay-buffer.test.js +75 -0
- package/server/lib/terminal/runtime.js +850 -0
- package/server/lib/terminal/runtime.test.js +96 -0
- package/server/lib/terminal/terminal-ws-protocol.js +68 -0
- package/server/lib/terminal/terminal-ws-protocol.test.js +145 -0
- package/server/lib/text/DOCUMENTATION.md +35 -0
- package/server/lib/text/summarization.js +138 -0
- package/server/lib/text/summarization.test.js +34 -0
- package/server/lib/tts/DOCUMENTATION.md +146 -0
- package/server/lib/tts/base-url.js +62 -0
- package/server/lib/tts/capability-runtime.js +31 -0
- package/server/lib/tts/index.js +19 -0
- package/server/lib/tts/routes.js +261 -0
- package/server/lib/tts/routes.test.js +53 -0
- package/server/lib/tts/service.js +178 -0
- package/server/lib/tts/stt.js +75 -0
- package/server/lib/tunnels/DOCUMENTATION.md +18 -0
- package/server/lib/tunnels/index.js +166 -0
- package/server/lib/tunnels/managed-config.js +201 -0
- package/server/lib/tunnels/providers/cloudflare.js +260 -0
- package/server/lib/tunnels/registry.js +51 -0
- package/server/lib/tunnels/routes.js +605 -0
- package/server/lib/tunnels/types.js +219 -0
- package/server/lib/ui-auth/DOCUMENTATION.md +38 -0
- package/server/lib/ui-auth/ui-auth.js +673 -0
- package/server/lib/ui-auth/ui-passkeys.js +545 -0
- package/server/opencode-proxy.test.js +151 -0
- package/server/proxy-headers.js +61 -0
- package/server/proxy-headers.test.js +58 -0
- package/server/sse-routes.test.js +152 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# OpenCode Module Documentation
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
This module provides OpenCode server integration utilities for the web server runtime, including configuration management and provider authentication.
|
|
5
|
+
|
|
6
|
+
## Entrypoints and structure
|
|
7
|
+
- `packages/web/server/lib/opencode/index.js`: public entrypoint (currently baseline placeholder).
|
|
8
|
+
- `packages/web/server/lib/opencode/auth.js`: provider authentication file operations.
|
|
9
|
+
- `packages/web/server/lib/opencode/auth-state-runtime.js`: managed OpenCode server auth password/header runtime.
|
|
10
|
+
- `packages/web/server/lib/opencode/cli-options.js`: CLI/environment option parsing for server startup arguments.
|
|
11
|
+
- `packages/web/server/lib/opencode/cli-entry-runtime.js`: CLI entrypoint runtime that detects direct execution, parses CLI options, and starts server bootstrap.
|
|
12
|
+
- `packages/web/server/lib/opencode/routes.js`: OpenCode/provider settings and auth-related route registration.
|
|
13
|
+
- `packages/web/server/lib/opencode/lifecycle.js`: OpenCode process lifecycle runtime (startup, restart, readiness, health monitoring).
|
|
14
|
+
- `packages/web/server/lib/opencode/env-runtime.js`: OpenCode CLI/binary resolution and shell environment runtime.
|
|
15
|
+
- `packages/web/server/lib/opencode/env-config.js`: OpenCode-related environment variable parsing and validation (host/port/hostname).
|
|
16
|
+
- `packages/web/server/lib/opencode/hmr-state-runtime.js`: HMR-persistent runtime state initialization, auth-state bootstrap, and HMR sync helpers.
|
|
17
|
+
- `packages/web/server/lib/opencode/bootstrap-runtime.js`: base app bootstrap runtime for status/auth/tts/notification/Vinci route wiring.
|
|
18
|
+
- `packages/web/server/lib/opencode/network-runtime.js`: OpenCode URL construction, health-probe readiness checks, and API prefix runtime.
|
|
19
|
+
- `packages/web/server/lib/opencode/project-directory-runtime.js`: request-scoped and settings-backed project directory resolution/validation runtime.
|
|
20
|
+
- `packages/web/server/lib/opencode/config-entity-routes.js`: route registration for agent/command/MCP config orchestration and reload semantics.
|
|
21
|
+
- `packages/web/server/lib/opencode/cli-options.js`: CLI/environment option parsing for server startup arguments.
|
|
22
|
+
- `packages/web/server/lib/opencode/core-routes.js`: server status/system routes, auth/access guard routes, and settings utility route registration.
|
|
23
|
+
- `packages/web/server/lib/opencode/shutdown-runtime.js`: graceful shutdown orchestration runtime for watcher/session/terminal/process/server teardown.
|
|
24
|
+
- `packages/web/server/lib/opencode/server-startup-runtime.js`: server listen/startup tunnel flow and process/signal handler orchestration runtime.
|
|
25
|
+
- `packages/web/server/lib/opencode/static-routes-runtime.js`: static asset/SPA fallback route registration and manifest route wiring.
|
|
26
|
+
- `packages/web/server/lib/opencode/feature-routes-runtime.js`: feature route composition runtime for dynamic import-backed config/skill/provider route registration.
|
|
27
|
+
- `packages/web/server/lib/opencode/opencode-resolution-runtime.js`: OpenCode binary resolution snapshot runtime for settings routes and diagnostics.
|
|
28
|
+
- `packages/web/server/lib/opencode/tunnel-wiring-runtime.js`: tunnel service/routes composition runtime and active-port wiring for main server startup.
|
|
29
|
+
- `packages/web/server/lib/opencode/startup-pipeline-runtime.js`: server startup tail orchestration runtime for terminal/proxy/static/start-listen flow.
|
|
30
|
+
- `packages/web/server/lib/opencode/server-utils-runtime.js`: shared server runtime utilities for OpenCode proxy wiring, OpenCode port/readiness helpers, and snapshot fetchers.
|
|
31
|
+
- `packages/web/server/lib/opencode/vinci-routes.js`: Vinci update and models metadata route registration.
|
|
32
|
+
- `packages/web/server/lib/opencode/pwa-manifest-routes.js`: PWA manifest route registration with recent-session shortcut resolution and short-lived caching.
|
|
33
|
+
- `packages/web/server/lib/opencode/project-icon-routes.js`: project icon upload/read/discovery route registration and icon storage orchestration.
|
|
34
|
+
- `packages/web/server/lib/opencode/skill-routes.js`: route registration for skill config CRUD, supporting files, and skills catalog scan/install flows.
|
|
35
|
+
- `packages/web/server/lib/opencode/settings-runtime.js`: Settings persistence runtime (disk IO, migrations, normalization, project validation, and persisted update serialization).
|
|
36
|
+
- `packages/web/server/lib/opencode/settings-helpers.js`: Settings payload sanitization/format helpers runtime for response shaping and persisted merge prep.
|
|
37
|
+
- `packages/web/server/lib/opencode/settings-normalization-runtime.js`: path/settings/tunnel normalization and sanitization helpers runtime used by settings/routes/config wiring.
|
|
38
|
+
- `packages/web/server/lib/opencode/theme-runtime.js`: custom theme JSON validation and theme directory loading runtime for settings utility routes.
|
|
39
|
+
- `packages/web/server/lib/opencode/proxy.js`: OpenCode API/SSE forwarding and readiness-gate route registration.
|
|
40
|
+
- `packages/web/server/lib/opencode/session-runtime.js`: session status/attention/activity runtime for OpenCode SSE events.
|
|
41
|
+
- `packages/web/server/lib/opencode/watcher.js`: global SSE watcher runtime for push/session event fanout.
|
|
42
|
+
- `packages/web/server/lib/opencode/shared.js`: shared utilities for config, markdown, skills, and git helpers.
|
|
43
|
+
- `packages/web/server/lib/ui-auth/ui-auth.js`: UI session authentication runtime (outside OpenCode module).
|
|
44
|
+
- `packages/web/server/lib/ui-auth/ui-passkeys.js`: UI passkey storage and WebAuthn registration/authentication helpers (outside OpenCode module).
|
|
45
|
+
|
|
46
|
+
## Public exports (auth.js)
|
|
47
|
+
- `readAuthFile()`: Reads and parses `~/.local/share/opencode/auth.json`.
|
|
48
|
+
- `writeAuthFile(auth)`: Writes auth file with automatic backup.
|
|
49
|
+
- `removeProviderAuth(providerId)`: Removes a provider's auth entry.
|
|
50
|
+
- `getProviderAuth(providerId)`: Returns auth for a specific provider or null.
|
|
51
|
+
- `listProviderAuths()`: Returns list of provider IDs with configured auth.
|
|
52
|
+
- `AUTH_FILE`: Auth file path constant.
|
|
53
|
+
- `OPENCODE_DATA_DIR`: OpenCode data directory path constant.
|
|
54
|
+
|
|
55
|
+
## Public exports (shared.js)
|
|
56
|
+
- `OPENCODE_CONFIG_DIR`, `AGENT_DIR`, `COMMAND_DIR`, `SKILL_DIR`, `CONFIG_FILE`, `CUSTOM_CONFIG_FILE`: Path constants.
|
|
57
|
+
- `AGENT_SCOPE`, `COMMAND_SCOPE`, `SKILL_SCOPE`: Scope constants with USER and PROJECT values.
|
|
58
|
+
- `ensureDirs()`: Creates required OpenCode directories.
|
|
59
|
+
- `parseMdFile(filePath)`, `writeMdFile(filePath, frontmatter, body)`: Markdown file operations with YAML frontmatter.
|
|
60
|
+
- `getConfigPaths(workingDirectory)`, `readConfigLayers(workingDirectory)`, `readConfig(workingDirectory)`: Config file operations with layer merging (user, project, custom).
|
|
61
|
+
- `writeConfig(config, filePath)`: Writes config with automatic backup.
|
|
62
|
+
- `getJsonEntrySource(layers, sectionKey, entryName)`: Resolves which config layer provides an entry.
|
|
63
|
+
- `getJsonWriteTarget(layers, preferredScope)`: Determines write target for config updates.
|
|
64
|
+
- `getAncestors(startDir, stopDir)`, `findWorktreeRoot(startDir)`: Git worktree helpers.
|
|
65
|
+
- `isPromptFileReference(value)`, `resolvePromptFilePath(reference)`, `writePromptFile(filePath, content)`: Prompt file reference handling.
|
|
66
|
+
- `walkSkillMdFiles(rootDir)`: Recursively finds all SKILL.md files.
|
|
67
|
+
- `addSkillFromMdFile(skillsMap, skillMdPath, scope, source)`: Parses and indexes a skill file.
|
|
68
|
+
- `resolveSkillSearchDirectories(workingDirectory)`: Returns skill search path order (config, project, home, custom).
|
|
69
|
+
- `listSkillSupportingFiles(skillDir)`, `readSkillSupportingFile(skillDir, relativePath)`, `writeSkillSupportingFile(skillDir, relativePath, content)`, `deleteSkillSupportingFile(skillDir, relativePath)`: Skill supporting file management.
|
|
70
|
+
|
|
71
|
+
## Public exports (routes.js)
|
|
72
|
+
- `registerOpenCodeRoutes(app, dependencies)`: Registers OpenCode-owned HTTP routes and internal module runtime:
|
|
73
|
+
- `GET /api/config/settings`
|
|
74
|
+
- `PUT /api/config/settings`
|
|
75
|
+
- `GET /api/config/opencode-resolution`
|
|
76
|
+
- `POST /api/opencode/directory`
|
|
77
|
+
- `GET /api/provider/:providerId/source`
|
|
78
|
+
- `DELETE /api/provider/:providerId/auth`
|
|
79
|
+
- Owns lazy auth library loading for provider auth checks/removal.
|
|
80
|
+
- Keeps route behavior independent from composition root; `index.js` now supplies dependencies only.
|
|
81
|
+
|
|
82
|
+
## Public exports (session-runtime.js)
|
|
83
|
+
- `createSessionRuntime({ writeSseEvent, getNotificationClients, broadcastEvent? })`: creates runtime-owned state machine and APIs for session status.
|
|
84
|
+
- Returned API:
|
|
85
|
+
- `processOpenCodeSsePayload(payload)`
|
|
86
|
+
- `getSessionActivitySnapshot()`
|
|
87
|
+
- `getSessionStateSnapshot()`
|
|
88
|
+
- `getSessionAttentionSnapshot()`
|
|
89
|
+
- `getSessionState(sessionId)`
|
|
90
|
+
- `getSessionAttentionState(sessionId)`
|
|
91
|
+
- `markSessionViewed(sessionId, clientId)`
|
|
92
|
+
- `markSessionUnviewed(sessionId, clientId)`
|
|
93
|
+
- `markUserMessageSent(sessionId)`
|
|
94
|
+
- `resetAllSessionActivityToIdle()`
|
|
95
|
+
- `dispose()`
|
|
96
|
+
|
|
97
|
+
## Public exports (lifecycle.js)
|
|
98
|
+
- `createOpenCodeLifecycleRuntime(dependencies)`: creates lifecycle runtime for managed/external OpenCode process orchestration.
|
|
99
|
+
- Returned API:
|
|
100
|
+
- `startOpenCode()`
|
|
101
|
+
- `restartOpenCode()`
|
|
102
|
+
- `waitForOpenCodeReady(timeoutMs?, intervalMs?)`
|
|
103
|
+
- `waitForAgentPresence(agentName, timeoutMs?, intervalMs?)`
|
|
104
|
+
- `refreshOpenCodeAfterConfigChange(reason, options?)`
|
|
105
|
+
- `bootstrapOpenCodeAtStartup()`
|
|
106
|
+
- `startHealthMonitoring(healthCheckIntervalMs)`
|
|
107
|
+
- `waitForPortRelease(port, timeoutMs, hostname?)`
|
|
108
|
+
- `killProcessOnPort(port)`
|
|
109
|
+
|
|
110
|
+
## Public exports (env-runtime.js)
|
|
111
|
+
- `createOpenCodeEnvRuntime(dependencies)`: creates runtime that owns OpenCode CLI environment and binary discovery state.
|
|
112
|
+
- Returned API:
|
|
113
|
+
- `applyLoginShellEnvSnapshot()`
|
|
114
|
+
- `getLoginShellEnvSnapshot()`
|
|
115
|
+
- `ensureOpencodeCliEnv()`
|
|
116
|
+
- `applyOpencodeBinaryFromSettings()`
|
|
117
|
+
- `resolveOpencodeCliPath()`
|
|
118
|
+
- `resolveManagedOpenCodeLaunchSpec(opencodePath)`: resolves the effective managed OpenCode launch target, unwrapping Windows package-manager shims to a direct native binary or explicit runtime+script when possible.
|
|
119
|
+
- `resolveGitBinaryForSpawn()`
|
|
120
|
+
- `resolveWslExecutablePath()`
|
|
121
|
+
- `buildWslExecArgs(execArgs, distroOverride?)`
|
|
122
|
+
- `isExecutable(filePath)`
|
|
123
|
+
- `searchPathFor(binaryName)`
|
|
124
|
+
- `clearResolvedOpenCodeBinary()`
|
|
125
|
+
|
|
126
|
+
## Public exports (env-config.js)
|
|
127
|
+
- `resolveOpenCodeEnvConfig(options?)`: resolves and validates OpenCode host/port/hostname environment configuration.
|
|
128
|
+
- Returned object fields:
|
|
129
|
+
- `configuredOpenCodePort`
|
|
130
|
+
- `configuredOpenCodeHost`
|
|
131
|
+
- `effectivePort`
|
|
132
|
+
- `configuredOpenCodeHostname`
|
|
133
|
+
|
|
134
|
+
## Public exports (hmr-state-runtime.js)
|
|
135
|
+
- `createHmrStateRuntime(dependencies)`: creates runtime for HMR state container initialization and runtime<->HMR state synchronization.
|
|
136
|
+
- Returned API:
|
|
137
|
+
- `getOrCreateHmrState()`
|
|
138
|
+
- `ensureUserProvidedOpenCodePassword(hmrState)`
|
|
139
|
+
- `getUserProvidedOpenCodePassword(hmrState)`
|
|
140
|
+
- `resolveOpenCodeAuthFromState({ hmrState, userProvidedOpenCodePassword })`
|
|
141
|
+
- `syncStateFromRuntime(hmrState, runtime)`
|
|
142
|
+
- `restoreRuntimeFromState({ hmrState, userProvidedOpenCodePassword })`
|
|
143
|
+
|
|
144
|
+
## Public exports (bootstrap-runtime.js)
|
|
145
|
+
- `createBootstrapRuntime(dependencies)`: creates runtime for base app route bootstrap and UI auth controller initialization.
|
|
146
|
+
- Returned API:
|
|
147
|
+
- `setupBaseRoutes(app, options)`
|
|
148
|
+
|
|
149
|
+
## Public exports (network-runtime.js)
|
|
150
|
+
- `createOpenCodeNetworkRuntime(dependencies)`: creates runtime for OpenCode network and URL concerns.
|
|
151
|
+
- Returned API:
|
|
152
|
+
- `waitForReady(url, timeoutMs?)`
|
|
153
|
+
- `normalizeApiPrefix(prefix)`
|
|
154
|
+
- `setDetectedOpenCodeApiPrefix()`
|
|
155
|
+
- `buildOpenCodeUrl(path, prefixOverride?)`
|
|
156
|
+
- `ensureOpenCodeApiPrefix()`
|
|
157
|
+
- `scheduleOpenCodeApiDetection()`
|
|
158
|
+
|
|
159
|
+
## Public exports (settings-runtime.js)
|
|
160
|
+
- `createSettingsRuntime(dependencies)`: creates settings lifecycle runtime for read/migrate/persist concerns.
|
|
161
|
+
- Returned API:
|
|
162
|
+
- `readSettingsFromDisk()`
|
|
163
|
+
- `readSettingsFromDiskMigrated()`
|
|
164
|
+
- `writeSettingsToDisk(settings)`
|
|
165
|
+
- `persistSettings(changes)`
|
|
166
|
+
|
|
167
|
+
## Public exports (settings-helpers.js)
|
|
168
|
+
- `createSettingsHelpers(dependencies)`: creates settings helper runtime for settings request/response shaping.
|
|
169
|
+
- Returned API:
|
|
170
|
+
- `normalizePwaAppName(value, fallback?)`
|
|
171
|
+
- `sanitizeSettingsUpdate(payload)`
|
|
172
|
+
- `mergePersistedSettings(current, changes)`
|
|
173
|
+
- `formatSettingsResponse(settings)`
|
|
174
|
+
|
|
175
|
+
## Public exports (settings-normalization-runtime.js)
|
|
176
|
+
- `createSettingsNormalizationRuntime(dependencies)`: creates normalization/sanitization runtime for shared settings and tunnel helper logic.
|
|
177
|
+
- Returned API:
|
|
178
|
+
- `normalizeDirectoryPath(value)`
|
|
179
|
+
- `normalizePathForPersistence(value)`
|
|
180
|
+
- `normalizeSettingsPaths(input)`
|
|
181
|
+
- `normalizeTunnelBootstrapTtlMs(value)`
|
|
182
|
+
- `normalizeTunnelSessionTtlMs(value)`
|
|
183
|
+
- `normalizeManagedRemoteTunnelHostname(value)`
|
|
184
|
+
- `normalizeManagedRemoteTunnelPresets(value)`
|
|
185
|
+
- `normalizeManagedRemoteTunnelPresetTokens(value)`
|
|
186
|
+
- `isUnsafeSkillRelativePath(value)`
|
|
187
|
+
- `sanitizeTypographySizesPartial(input)`
|
|
188
|
+
- `normalizeStringArray(input)`
|
|
189
|
+
- `sanitizeModelRefs(input, limit)`
|
|
190
|
+
- `sanitizeSkillCatalogs(input)`
|
|
191
|
+
- `sanitizeProjects(input)`
|
|
192
|
+
|
|
193
|
+
## Public exports (theme-runtime.js)
|
|
194
|
+
- `createThemeRuntime(dependencies)`: creates custom theme runtime for on-disk theme discovery and JSON normalization/validation.
|
|
195
|
+
- Returned API:
|
|
196
|
+
- `normalizeThemeJson(raw)`
|
|
197
|
+
- `readCustomThemesFromDisk()`
|
|
198
|
+
|
|
199
|
+
## Public exports (project-directory-runtime.js)
|
|
200
|
+
- `createProjectDirectoryRuntime(dependencies)`: creates runtime for request/project directory candidate normalization and validation.
|
|
201
|
+
- Returned API:
|
|
202
|
+
- `resolveDirectoryCandidate(value)`
|
|
203
|
+
- `validateDirectoryPath(candidate)`
|
|
204
|
+
- `resolveProjectDirectory(req)`
|
|
205
|
+
- `resolveOptionalProjectDirectory(req)`
|
|
206
|
+
|
|
207
|
+
## Public exports (config-entity-routes.js)
|
|
208
|
+
- `registerConfigEntityRoutes(app, dependencies)`: registers configuration entity routes:
|
|
209
|
+
- Agents: `/api/config/agents/:name` and `/api/config/agents/:name/config`
|
|
210
|
+
- Commands: `/api/config/commands/:name`
|
|
211
|
+
- MCP servers: `/api/config/mcp` and `/api/config/mcp/:name`
|
|
212
|
+
|
|
213
|
+
## Public exports (auth-state-runtime.js)
|
|
214
|
+
- `createOpenCodeAuthStateRuntime(dependencies)`: creates runtime for managed OpenCode auth password state and request headers.
|
|
215
|
+
- Returned API:
|
|
216
|
+
- `getOpenCodeAuthHeaders()`
|
|
217
|
+
- `isOpenCodeConnectionSecure()`
|
|
218
|
+
- `ensureLocalOpenCodeServerPassword(options?)`
|
|
219
|
+
|
|
220
|
+
## Public exports (core-routes.js)
|
|
221
|
+
- `registerServerStatusRoutes(app, dependencies)`: registers status/system endpoints:
|
|
222
|
+
- `GET /health`
|
|
223
|
+
- `POST /api/system/shutdown`
|
|
224
|
+
- `GET /api/system/info`
|
|
225
|
+
- `registerAuthAndAccessRoutes(app, dependencies)`: registers browser auth/session exchange and API access middleware:
|
|
226
|
+
- `GET /auth/session`
|
|
227
|
+
- `POST /auth/session`
|
|
228
|
+
- `GET /auth/passkey/status`
|
|
229
|
+
- `POST /auth/passkey/authenticate/options`
|
|
230
|
+
- `POST /auth/passkey/authenticate/verify`
|
|
231
|
+
- `POST /auth/passkey/register/options`
|
|
232
|
+
- `POST /auth/passkey/register/verify`
|
|
233
|
+
- `GET /api/passkeys`
|
|
234
|
+
- `DELETE /api/passkeys/:id`
|
|
235
|
+
- `POST /api/auth/reset`
|
|
236
|
+
- `GET /connect`
|
|
237
|
+
- `app.use('/api', ...)` auth/tunnel guard
|
|
238
|
+
- `registerSettingsUtilityRoutes(app, dependencies)`: registers small settings utility endpoints:
|
|
239
|
+
- `GET /api/config/themes`
|
|
240
|
+
- `POST /api/config/reload`
|
|
241
|
+
- `registerCommonRequestMiddleware(app, dependencies)`: registers shared request middleware stack:
|
|
242
|
+
- conditional JSON body parser behavior for `/api/*` vs non-API requests
|
|
243
|
+
- URL-encoded parser setup
|
|
244
|
+
- request logging middleware
|
|
245
|
+
|
|
246
|
+
## Public exports (cli-options.js)
|
|
247
|
+
- `parseServeCliOptions(options)`: parses serve CLI flags and environment-derived defaults:
|
|
248
|
+
- Port/host/ui-password
|
|
249
|
+
- Tunnel provider/mode/config/token/hostname
|
|
250
|
+
- Legacy `--tunnel` shorthand normalization
|
|
251
|
+
|
|
252
|
+
## Public exports (cli-entry-runtime.js)
|
|
253
|
+
- `runCliEntryIfMain(dependencies)`: detects direct CLI execution and runs server startup with parsed CLI options.
|
|
254
|
+
|
|
255
|
+
## Public exports (server-utils-runtime.js)
|
|
256
|
+
- `createServerUtilsRuntime(dependencies)`: creates server utility runtime for OpenCode orchestration helpers.
|
|
257
|
+
- Returned API:
|
|
258
|
+
- `setOpenCodePort(port)`
|
|
259
|
+
- `waitForOpenCodePort(timeoutMs?)`
|
|
260
|
+
- `buildAugmentedPath()`
|
|
261
|
+
- `parseSseDataPayload(block)`
|
|
262
|
+
- `fetchAgentsSnapshot()`
|
|
263
|
+
- `fetchProvidersSnapshot()`
|
|
264
|
+
- `fetchModelsSnapshot()`
|
|
265
|
+
- `setupProxy(app)`
|
|
266
|
+
|
|
267
|
+
## Public exports (shutdown-runtime.js)
|
|
268
|
+
- `createGracefulShutdownRuntime(dependencies)`: creates graceful shutdown runtime for managed OpenCode and web server teardown sequencing.
|
|
269
|
+
- Returned API:
|
|
270
|
+
- `gracefulShutdown(options?)`
|
|
271
|
+
|
|
272
|
+
## Public exports (server-startup-runtime.js)
|
|
273
|
+
- `createServerStartupRuntime(dependencies)`: creates runtime for server bind/startup tunnel and process handler wiring.
|
|
274
|
+
- Returned API:
|
|
275
|
+
- `resolveBindHost(host)`
|
|
276
|
+
- `startListeningAndMaybeTunnel(options)`
|
|
277
|
+
- `attachProcessHandlers(options)`
|
|
278
|
+
|
|
279
|
+
## Public exports (static-routes-runtime.js)
|
|
280
|
+
- `createStaticRoutesRuntime(dependencies)`: creates runtime for static dist resolution and static route registration.
|
|
281
|
+
- Returned API:
|
|
282
|
+
- `registerStaticRoutes(app)`
|
|
283
|
+
|
|
284
|
+
## Public exports (feature-routes-runtime.js)
|
|
285
|
+
- `createFeatureRoutesRuntime(dependencies)`: creates runtime for main feature route registration orchestration.
|
|
286
|
+
- Returned API:
|
|
287
|
+
- `registerRoutes(app, routeDependencies)`
|
|
288
|
+
|
|
289
|
+
## Public exports (opencode-resolution-runtime.js)
|
|
290
|
+
- `createOpenCodeResolutionRuntime(dependencies)`: creates runtime for OpenCode binary/source snapshot resolution.
|
|
291
|
+
- Returned API:
|
|
292
|
+
- `getOpenCodeResolutionSnapshot(settings)`: returns configured/resolved OpenCode binary details plus effective managed-launch fields (`launchBinary`, `launchArgs`, `launchWrapperType`) when applicable.
|
|
293
|
+
|
|
294
|
+
## Public exports (tunnel-wiring-runtime.js)
|
|
295
|
+
- `createTunnelWiringRuntime(dependencies)`: creates runtime for tunnel service construction and tunnel route registration.
|
|
296
|
+
- Returned API:
|
|
297
|
+
- `initialize(app, initialPort)`
|
|
298
|
+
|
|
299
|
+
## Public exports (startup-pipeline-runtime.js)
|
|
300
|
+
- `createStartupPipelineRuntime(dependencies)`: creates runtime for terminal wiring, proxy/bootstrap scheduling, static route registration, and server startup/listen flow.
|
|
301
|
+
- Returned API:
|
|
302
|
+
- `run(options)`
|
|
303
|
+
|
|
304
|
+
## Public exports (vinci-routes.js)
|
|
305
|
+
- `registerVinciRoutes(app, dependencies)`: registers Vinci endpoints:
|
|
306
|
+
- `GET /api/vinci/update-check`
|
|
307
|
+
- `POST /api/vinci/update-install`
|
|
308
|
+
- `GET /api/vinci/models-metadata`
|
|
309
|
+
- `GET /api/zen/models`
|
|
310
|
+
|
|
311
|
+
## Public exports (pwa-manifest-routes.js)
|
|
312
|
+
- `registerPwaManifestRoute(app, dependencies)`: registers PWA manifest endpoint with dynamic app-name resolution and recent-session shortcuts:
|
|
313
|
+
- `GET /manifest.webmanifest`
|
|
314
|
+
|
|
315
|
+
## Public exports (project-icon-routes.js)
|
|
316
|
+
- `registerProjectIconRoutes(app, dependencies)`: registers project icon routes and owns icon storage/discovery flow:
|
|
317
|
+
- `GET /api/projects/:projectId/icon`
|
|
318
|
+
- `PUT /api/projects/:projectId/icon`
|
|
319
|
+
- `DELETE /api/projects/:projectId/icon`
|
|
320
|
+
- `POST /api/projects/:projectId/icon/discover`
|
|
321
|
+
|
|
322
|
+
## Public exports (skill-routes.js)
|
|
323
|
+
- `registerSkillRoutes(app, dependencies)`: registers skills-related routes:
|
|
324
|
+
- Skills config CRUD and metadata under `/api/config/skills*`
|
|
325
|
+
- Skills catalog listing/source pagination, scan, and install routes
|
|
326
|
+
- Supporting skill file read/write/delete routes
|
|
327
|
+
|
|
328
|
+
## Public exports (proxy.js)
|
|
329
|
+
- `registerOpenCodeProxy(app, dependencies)`: registers OpenCode proxy routes and middleware.
|
|
330
|
+
- Owns:
|
|
331
|
+
- SSE forwarders: `GET /api/global/event`, `GET /api/event`
|
|
332
|
+
- Session message forwarder: `POST /api/session/:sessionId/message`
|
|
333
|
+
- Generic `/api/*` forwarding with hop-by-hop header filtering
|
|
334
|
+
- Windows `/session` merge fallback path behavior
|
|
335
|
+
- OpenCode readiness gate for proxied `/api` requests
|
|
336
|
+
|
|
337
|
+
## Public exports (watcher.js)
|
|
338
|
+
- `createOpenCodeWatcherRuntime(dependencies)`: creates global event watcher runtime backed by the shared upstream SSE reader.
|
|
339
|
+
- Returned API:
|
|
340
|
+
- `start()`
|
|
341
|
+
- `stop()`
|
|
342
|
+
- Behavior:
|
|
343
|
+
- Waits for OpenCode readiness before attaching the watcher.
|
|
344
|
+
- In production wiring, subscribes to the shared global message-stream hub instead of opening its own `/global/event` connection.
|
|
345
|
+
- Can still create its own `/global/event` reader when no shared hub is provided, which keeps module tests and isolated reuse simple.
|
|
346
|
+
- Reuses event-stream parsing, `Last-Event-ID`, stall timeout, and reconnect behavior.
|
|
347
|
+
- Forwards unwrapped global event payloads into notification/session side effects.
|
|
348
|
+
|
|
349
|
+
## Storage and configuration
|
|
350
|
+
- Provider auth: `~/.local/share/opencode/auth.json`.
|
|
351
|
+
- User config: `~/.config/opencode/opencode.json`.
|
|
352
|
+
- Project config: `<workingDirectory>/.opencode/opencode.json` or `opencode.json`.
|
|
353
|
+
- Custom config: `OPENCODE_CONFIG` env var path.
|
|
354
|
+
- Rate limit config: `VINCI_RATE_LIMIT_MAX_ATTEMPTS`, `VINCI_RATE_LIMIT_NO_IP_MAX_ATTEMPTS` env vars.
|
|
355
|
+
|
|
356
|
+
## Notes for contributors
|
|
357
|
+
- This module serves as foundation for OpenCode-related server utilities.
|
|
358
|
+
- Route ownership moved to module-level `routes.js`; `index.js` wires dependencies only.
|
|
359
|
+
- All file writes include automatic backup before modification.
|
|
360
|
+
- Config merging follows priority: custom > project > user.
|
|
361
|
+
- UI auth uses scrypt for password hashing with constant-time comparison.
|
|
362
|
+
- Tunnel auth treats `host.docker.internal` as local-only when the socket remote IP is private/loopback.
|