@jait/gateway 0.1.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/bin/jait.mjs +144 -0
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +73 -0
- package/dist/config.js.map +1 -0
- package/dist/db/connection.d.ts +37 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +85 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +4 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +24 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +312 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/schema.d.ts +2253 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +195 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/foundation.d.ts +26 -0
- package/dist/foundation.d.ts.map +1 -0
- package/dist/foundation.js +15 -0
- package/dist/foundation.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +413 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/uuidv7.d.ts +10 -0
- package/dist/lib/uuidv7.d.ts.map +1 -0
- package/dist/lib/uuidv7.js +33 -0
- package/dist/lib/uuidv7.js.map +1 -0
- package/dist/memory/contracts.d.ts +42 -0
- package/dist/memory/contracts.d.ts.map +1 -0
- package/dist/memory/contracts.js +2 -0
- package/dist/memory/contracts.js.map +1 -0
- package/dist/memory/embeddings.d.ts +4 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +26 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/service.d.ts +17 -0
- package/dist/memory/service.d.ts.map +1 -0
- package/dist/memory/service.js +82 -0
- package/dist/memory/service.js.map +1 -0
- package/dist/memory/sqlite-backend.d.ts +11 -0
- package/dist/memory/sqlite-backend.d.ts.map +1 -0
- package/dist/memory/sqlite-backend.js +68 -0
- package/dist/memory/sqlite-backend.js.map +1 -0
- package/dist/plugins/contracts.d.ts +11 -0
- package/dist/plugins/contracts.d.ts.map +1 -0
- package/dist/plugins/contracts.js +2 -0
- package/dist/plugins/contracts.js.map +1 -0
- package/dist/providers/claude-code-provider.d.ts +39 -0
- package/dist/providers/claude-code-provider.d.ts.map +1 -0
- package/dist/providers/claude-code-provider.js +322 -0
- package/dist/providers/claude-code-provider.js.map +1 -0
- package/dist/providers/codex-provider.d.ts +51 -0
- package/dist/providers/codex-provider.d.ts.map +1 -0
- package/dist/providers/codex-provider.js +826 -0
- package/dist/providers/codex-provider.js.map +1 -0
- package/dist/providers/contracts.d.ts +167 -0
- package/dist/providers/contracts.d.ts.map +1 -0
- package/dist/providers/contracts.js +13 -0
- package/dist/providers/contracts.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +5 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/jait-provider.d.ts +23 -0
- package/dist/providers/jait-provider.d.ts.map +1 -0
- package/dist/providers/jait-provider.js +67 -0
- package/dist/providers/jait-provider.js.map +1 -0
- package/dist/providers/registry.d.ts +39 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +64 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/pty-broker-client.d.ts +46 -0
- package/dist/pty-broker-client.d.ts.map +1 -0
- package/dist/pty-broker-client.js +142 -0
- package/dist/pty-broker-client.js.map +1 -0
- package/dist/routes/auth.d.ts +6 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +236 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/chat.d.ts +32 -0
- package/dist/routes/chat.d.ts.map +1 -0
- package/dist/routes/chat.js +1503 -0
- package/dist/routes/chat.js.map +1 -0
- package/dist/routes/consent.d.ts +10 -0
- package/dist/routes/consent.d.ts.map +1 -0
- package/dist/routes/consent.js +127 -0
- package/dist/routes/consent.js.map +1 -0
- package/dist/routes/filesystem.d.ts +14 -0
- package/dist/routes/filesystem.d.ts.map +1 -0
- package/dist/routes/filesystem.js +152 -0
- package/dist/routes/filesystem.js.map +1 -0
- package/dist/routes/git.d.ts +17 -0
- package/dist/routes/git.d.ts.map +1 -0
- package/dist/routes/git.js +213 -0
- package/dist/routes/git.js.map +1 -0
- package/dist/routes/health.d.ts +7 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +21 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/hooks.d.ts +9 -0
- package/dist/routes/hooks.d.ts.map +1 -0
- package/dist/routes/hooks.js +22 -0
- package/dist/routes/hooks.js.map +1 -0
- package/dist/routes/jobs.d.ts +5 -0
- package/dist/routes/jobs.d.ts.map +1 -0
- package/dist/routes/jobs.js +333 -0
- package/dist/routes/jobs.js.map +1 -0
- package/dist/routes/mcp-server.d.ts +23 -0
- package/dist/routes/mcp-server.d.ts.map +1 -0
- package/dist/routes/mcp-server.js +177 -0
- package/dist/routes/mcp-server.js.map +1 -0
- package/dist/routes/mobile.d.ts +12 -0
- package/dist/routes/mobile.d.ts.map +1 -0
- package/dist/routes/mobile.js +64 -0
- package/dist/routes/mobile.js.map +1 -0
- package/dist/routes/network.d.ts +3 -0
- package/dist/routes/network.d.ts.map +1 -0
- package/dist/routes/network.js +367 -0
- package/dist/routes/network.js.map +1 -0
- package/dist/routes/repositories.d.ts +18 -0
- package/dist/routes/repositories.d.ts.map +1 -0
- package/dist/routes/repositories.js +90 -0
- package/dist/routes/repositories.js.map +1 -0
- package/dist/routes/screen-share.d.ts +17 -0
- package/dist/routes/screen-share.d.ts.map +1 -0
- package/dist/routes/screen-share.js +92 -0
- package/dist/routes/screen-share.js.map +1 -0
- package/dist/routes/sessions.d.ts +18 -0
- package/dist/routes/sessions.d.ts.map +1 -0
- package/dist/routes/sessions.js +169 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/routes/terminals.d.ts +15 -0
- package/dist/routes/terminals.d.ts.map +1 -0
- package/dist/routes/terminals.js +326 -0
- package/dist/routes/terminals.js.map +1 -0
- package/dist/routes/threads.d.ts +38 -0
- package/dist/routes/threads.d.ts.map +1 -0
- package/dist/routes/threads.js +488 -0
- package/dist/routes/threads.js.map +1 -0
- package/dist/routes/trust.d.ts +9 -0
- package/dist/routes/trust.d.ts.map +1 -0
- package/dist/routes/trust.js +25 -0
- package/dist/routes/trust.js.map +1 -0
- package/dist/routes/voice.d.ts +5 -0
- package/dist/routes/voice.d.ts.map +1 -0
- package/dist/routes/voice.js +37 -0
- package/dist/routes/voice.js.map +1 -0
- package/dist/routes/workspace.d.ts +13 -0
- package/dist/routes/workspace.d.ts.map +1 -0
- package/dist/routes/workspace.js +275 -0
- package/dist/routes/workspace.js.map +1 -0
- package/dist/scheduler/contracts.d.ts +15 -0
- package/dist/scheduler/contracts.d.ts.map +1 -0
- package/dist/scheduler/contracts.js +2 -0
- package/dist/scheduler/contracts.js.map +1 -0
- package/dist/scheduler/hooks.d.ts +20 -0
- package/dist/scheduler/hooks.d.ts.map +1 -0
- package/dist/scheduler/hooks.js +78 -0
- package/dist/scheduler/hooks.js.map +1 -0
- package/dist/scheduler/service.d.ts +65 -0
- package/dist/scheduler/service.d.ts.map +1 -0
- package/dist/scheduler/service.js +188 -0
- package/dist/scheduler/service.js.map +1 -0
- package/dist/security/consent-executor.d.ts +48 -0
- package/dist/security/consent-executor.d.ts.map +1 -0
- package/dist/security/consent-executor.js +158 -0
- package/dist/security/consent-executor.js.map +1 -0
- package/dist/security/consent-manager.d.ts +105 -0
- package/dist/security/consent-manager.d.ts.map +1 -0
- package/dist/security/consent-manager.js +227 -0
- package/dist/security/consent-manager.js.map +1 -0
- package/dist/security/contracts.d.ts +31 -0
- package/dist/security/contracts.d.ts.map +1 -0
- package/dist/security/contracts.js +2 -0
- package/dist/security/contracts.js.map +1 -0
- package/dist/security/http-auth.d.ts +10 -0
- package/dist/security/http-auth.d.ts.map +1 -0
- package/dist/security/http-auth.js +48 -0
- package/dist/security/http-auth.js.map +1 -0
- package/dist/security/index.d.ts +10 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/path-guard.d.ts +40 -0
- package/dist/security/path-guard.d.ts.map +1 -0
- package/dist/security/path-guard.js +125 -0
- package/dist/security/path-guard.js.map +1 -0
- package/dist/security/sandbox-manager.d.ts +43 -0
- package/dist/security/sandbox-manager.d.ts.map +1 -0
- package/dist/security/sandbox-manager.js +110 -0
- package/dist/security/sandbox-manager.js.map +1 -0
- package/dist/security/ssrf-guard.d.ts +11 -0
- package/dist/security/ssrf-guard.d.ts.map +1 -0
- package/dist/security/ssrf-guard.js +59 -0
- package/dist/security/ssrf-guard.js.map +1 -0
- package/dist/security/tool-permissions.d.ts +61 -0
- package/dist/security/tool-permissions.d.ts.map +1 -0
- package/dist/security/tool-permissions.js +105 -0
- package/dist/security/tool-permissions.js.map +1 -0
- package/dist/security/tool-profiles.d.ts +23 -0
- package/dist/security/tool-profiles.d.ts.map +1 -0
- package/dist/security/tool-profiles.js +106 -0
- package/dist/security/tool-profiles.js.map +1 -0
- package/dist/security/trust-engine.d.ts +61 -0
- package/dist/security/trust-engine.d.ts.map +1 -0
- package/dist/security/trust-engine.js +192 -0
- package/dist/security/trust-engine.js.map +1 -0
- package/dist/server.d.ts +54 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +188 -0
- package/dist/server.js.map +1 -0
- package/dist/services/audit.d.ts +60 -0
- package/dist/services/audit.d.ts.map +1 -0
- package/dist/services/audit.js +58 -0
- package/dist/services/audit.js.map +1 -0
- package/dist/services/device-registry.d.ts +15 -0
- package/dist/services/device-registry.d.ts.map +1 -0
- package/dist/services/device-registry.js +32 -0
- package/dist/services/device-registry.js.map +1 -0
- package/dist/services/git.d.ts +168 -0
- package/dist/services/git.d.ts.map +1 -0
- package/dist/services/git.js +957 -0
- package/dist/services/git.js.map +1 -0
- package/dist/services/repositories.d.ts +32 -0
- package/dist/services/repositories.d.ts.map +1 -0
- package/dist/services/repositories.js +70 -0
- package/dist/services/repositories.js.map +1 -0
- package/dist/services/session-state.d.ts +20 -0
- package/dist/services/session-state.d.ts.map +1 -0
- package/dist/services/session-state.js +89 -0
- package/dist/services/session-state.js.map +1 -0
- package/dist/services/sessions.d.ts +68 -0
- package/dist/services/sessions.d.ts.map +1 -0
- package/dist/services/sessions.js +136 -0
- package/dist/services/sessions.js.map +1 -0
- package/dist/services/thread-title.d.ts +23 -0
- package/dist/services/thread-title.d.ts.map +1 -0
- package/dist/services/thread-title.js +141 -0
- package/dist/services/thread-title.js.map +1 -0
- package/dist/services/threads.d.ts +64 -0
- package/dist/services/threads.d.ts.map +1 -0
- package/dist/services/threads.js +202 -0
- package/dist/services/threads.js.map +1 -0
- package/dist/services/users.d.ts +39 -0
- package/dist/services/users.d.ts.map +1 -0
- package/dist/services/users.js +203 -0
- package/dist/services/users.js.map +1 -0
- package/dist/sessions/contracts.d.ts +14 -0
- package/dist/sessions/contracts.d.ts.map +1 -0
- package/dist/sessions/contracts.js +2 -0
- package/dist/sessions/contracts.js.map +1 -0
- package/dist/surfaces/browser.d.ts +65 -0
- package/dist/surfaces/browser.d.ts.map +1 -0
- package/dist/surfaces/browser.js +615 -0
- package/dist/surfaces/browser.js.map +1 -0
- package/dist/surfaces/contracts.d.ts +34 -0
- package/dist/surfaces/contracts.d.ts.map +1 -0
- package/dist/surfaces/contracts.js +2 -0
- package/dist/surfaces/contracts.js.map +1 -0
- package/dist/surfaces/filesystem.d.ts +76 -0
- package/dist/surfaces/filesystem.d.ts.map +1 -0
- package/dist/surfaces/filesystem.js +245 -0
- package/dist/surfaces/filesystem.js.map +1 -0
- package/dist/surfaces/index.d.ts +6 -0
- package/dist/surfaces/index.d.ts.map +1 -0
- package/dist/surfaces/index.js +5 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/registry.d.ts +24 -0
- package/dist/surfaces/registry.d.ts.map +1 -0
- package/dist/surfaces/registry.js +59 -0
- package/dist/surfaces/registry.js.map +1 -0
- package/dist/surfaces/terminal.d.ts +76 -0
- package/dist/surfaces/terminal.d.ts.map +1 -0
- package/dist/surfaces/terminal.js +271 -0
- package/dist/surfaces/terminal.js.map +1 -0
- package/dist/tools/agent-loop.d.ts +302 -0
- package/dist/tools/agent-loop.d.ts.map +1 -0
- package/dist/tools/agent-loop.js +918 -0
- package/dist/tools/agent-loop.js.map +1 -0
- package/dist/tools/agent-tools.d.ts +39 -0
- package/dist/tools/agent-tools.d.ts.map +1 -0
- package/dist/tools/agent-tools.js +263 -0
- package/dist/tools/agent-tools.js.map +1 -0
- package/dist/tools/browser-tools.d.ts +38 -0
- package/dist/tools/browser-tools.d.ts.map +1 -0
- package/dist/tools/browser-tools.js +725 -0
- package/dist/tools/browser-tools.js.map +1 -0
- package/dist/tools/chat-modes.d.ts +75 -0
- package/dist/tools/chat-modes.d.ts.map +1 -0
- package/dist/tools/chat-modes.js +228 -0
- package/dist/tools/chat-modes.js.map +1 -0
- package/dist/tools/contracts.d.ts +69 -0
- package/dist/tools/contracts.d.ts.map +1 -0
- package/dist/tools/contracts.js +2 -0
- package/dist/tools/contracts.js.map +1 -0
- package/dist/tools/core/agent.d.ts +31 -0
- package/dist/tools/core/agent.d.ts.map +1 -0
- package/dist/tools/core/agent.js +65 -0
- package/dist/tools/core/agent.js.map +1 -0
- package/dist/tools/core/edit.d.ts +30 -0
- package/dist/tools/core/edit.d.ts.map +1 -0
- package/dist/tools/core/edit.js +109 -0
- package/dist/tools/core/edit.js.map +1 -0
- package/dist/tools/core/execute.d.ts +36 -0
- package/dist/tools/core/execute.d.ts.map +1 -0
- package/dist/tools/core/execute.js +81 -0
- package/dist/tools/core/execute.js.map +1 -0
- package/dist/tools/core/get-fs.d.ts +32 -0
- package/dist/tools/core/get-fs.d.ts.map +1 -0
- package/dist/tools/core/get-fs.js +143 -0
- package/dist/tools/core/get-fs.js.map +1 -0
- package/dist/tools/core/index.d.ts +26 -0
- package/dist/tools/core/index.d.ts.map +1 -0
- package/dist/tools/core/index.js +26 -0
- package/dist/tools/core/index.js.map +1 -0
- package/dist/tools/core/jait.d.ts +60 -0
- package/dist/tools/core/jait.d.ts.map +1 -0
- package/dist/tools/core/jait.js +256 -0
- package/dist/tools/core/jait.js.map +1 -0
- package/dist/tools/core/read.d.ts +26 -0
- package/dist/tools/core/read.d.ts.map +1 -0
- package/dist/tools/core/read.js +118 -0
- package/dist/tools/core/read.js.map +1 -0
- package/dist/tools/core/search.d.ts +34 -0
- package/dist/tools/core/search.d.ts.map +1 -0
- package/dist/tools/core/search.js +187 -0
- package/dist/tools/core/search.js.map +1 -0
- package/dist/tools/core/todo.d.ts +38 -0
- package/dist/tools/core/todo.d.ts.map +1 -0
- package/dist/tools/core/todo.js +116 -0
- package/dist/tools/core/todo.js.map +1 -0
- package/dist/tools/core/web.d.ts +34 -0
- package/dist/tools/core/web.d.ts.map +1 -0
- package/dist/tools/core/web.js +120 -0
- package/dist/tools/core/web.js.map +1 -0
- package/dist/tools/cron-tools.d.ts +7 -0
- package/dist/tools/cron-tools.d.ts.map +1 -0
- package/dist/tools/cron-tools.js +116 -0
- package/dist/tools/cron-tools.js.map +1 -0
- package/dist/tools/file-tools.d.ts +32 -0
- package/dist/tools/file-tools.d.ts.map +1 -0
- package/dist/tools/file-tools.js +178 -0
- package/dist/tools/file-tools.js.map +1 -0
- package/dist/tools/gateway-tools.d.ts +15 -0
- package/dist/tools/gateway-tools.d.ts.map +1 -0
- package/dist/tools/gateway-tools.js +39 -0
- package/dist/tools/gateway-tools.js.map +1 -0
- package/dist/tools/index.d.ts +57 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +170 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/mcp-bridge.d.ts +111 -0
- package/dist/tools/mcp-bridge.d.ts.map +1 -0
- package/dist/tools/mcp-bridge.js +166 -0
- package/dist/tools/mcp-bridge.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +19 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +78 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/meta-tools.d.ts +25 -0
- package/dist/tools/meta-tools.d.ts.map +1 -0
- package/dist/tools/meta-tools.js +125 -0
- package/dist/tools/meta-tools.js.map +1 -0
- package/dist/tools/network-tools.d.ts +21 -0
- package/dist/tools/network-tools.d.ts.map +1 -0
- package/dist/tools/network-tools.js +189 -0
- package/dist/tools/network-tools.js.map +1 -0
- package/dist/tools/os-tools.d.ts +18 -0
- package/dist/tools/os-tools.d.ts.map +1 -0
- package/dist/tools/os-tools.js +210 -0
- package/dist/tools/os-tools.js.map +1 -0
- package/dist/tools/prompts/claude-prompt.d.ts +8 -0
- package/dist/tools/prompts/claude-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/claude-prompt.js +228 -0
- package/dist/tools/prompts/claude-prompt.js.map +1 -0
- package/dist/tools/prompts/default-openai-prompt.d.ts +8 -0
- package/dist/tools/prompts/default-openai-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/default-openai-prompt.js +67 -0
- package/dist/tools/prompts/default-openai-prompt.js.map +1 -0
- package/dist/tools/prompts/default-prompt.d.ts +7 -0
- package/dist/tools/prompts/default-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/default-prompt.js +50 -0
- package/dist/tools/prompts/default-prompt.js.map +1 -0
- package/dist/tools/prompts/gemini-prompt.d.ts +8 -0
- package/dist/tools/prompts/gemini-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/gemini-prompt.js +118 -0
- package/dist/tools/prompts/gemini-prompt.js.map +1 -0
- package/dist/tools/prompts/gpt5-codex-prompt.d.ts +8 -0
- package/dist/tools/prompts/gpt5-codex-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/gpt5-codex-prompt.js +72 -0
- package/dist/tools/prompts/gpt5-codex-prompt.js.map +1 -0
- package/dist/tools/prompts/gpt5-prompt.d.ts +8 -0
- package/dist/tools/prompts/gpt5-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/gpt5-prompt.js +177 -0
- package/dist/tools/prompts/gpt5-prompt.js.map +1 -0
- package/dist/tools/prompts/gpt51-prompt.d.ts +8 -0
- package/dist/tools/prompts/gpt51-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/gpt51-prompt.js +178 -0
- package/dist/tools/prompts/gpt51-prompt.js.map +1 -0
- package/dist/tools/prompts/gpt52-prompt.d.ts +8 -0
- package/dist/tools/prompts/gpt52-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/gpt52-prompt.js +198 -0
- package/dist/tools/prompts/gpt52-prompt.js.map +1 -0
- package/dist/tools/prompts/index.d.ts +22 -0
- package/dist/tools/prompts/index.d.ts.map +1 -0
- package/dist/tools/prompts/index.js +23 -0
- package/dist/tools/prompts/index.js.map +1 -0
- package/dist/tools/prompts/prompt-registry.d.ts +44 -0
- package/dist/tools/prompts/prompt-registry.d.ts.map +1 -0
- package/dist/tools/prompts/prompt-registry.js +60 -0
- package/dist/tools/prompts/prompt-registry.js.map +1 -0
- package/dist/tools/prompts/shared-sections.d.ts +28 -0
- package/dist/tools/prompts/shared-sections.d.ts.map +1 -0
- package/dist/tools/prompts/shared-sections.js +111 -0
- package/dist/tools/prompts/shared-sections.js.map +1 -0
- package/dist/tools/prompts/xai-prompt.d.ts +8 -0
- package/dist/tools/prompts/xai-prompt.d.ts.map +1 -0
- package/dist/tools/prompts/xai-prompt.js +68 -0
- package/dist/tools/prompts/xai-prompt.js.map +1 -0
- package/dist/tools/redeploy-tools.d.ts +30 -0
- package/dist/tools/redeploy-tools.d.ts.map +1 -0
- package/dist/tools/redeploy-tools.js +191 -0
- package/dist/tools/redeploy-tools.js.map +1 -0
- package/dist/tools/registry.d.ts +51 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +148 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/screen-share-tools.d.ts +31 -0
- package/dist/tools/screen-share-tools.d.ts.map +1 -0
- package/dist/tools/screen-share-tools.js +183 -0
- package/dist/tools/screen-share-tools.js.map +1 -0
- package/dist/tools/surface-tools.d.ts +23 -0
- package/dist/tools/surface-tools.d.ts.map +1 -0
- package/dist/tools/surface-tools.js +99 -0
- package/dist/tools/surface-tools.js.map +1 -0
- package/dist/tools/terminal-tools.d.ts +37 -0
- package/dist/tools/terminal-tools.d.ts.map +1 -0
- package/dist/tools/terminal-tools.js +448 -0
- package/dist/tools/terminal-tools.js.map +1 -0
- package/dist/tools/thread-tools.d.ts +61 -0
- package/dist/tools/thread-tools.d.ts.map +1 -0
- package/dist/tools/thread-tools.js +484 -0
- package/dist/tools/thread-tools.js.map +1 -0
- package/dist/tools/token-estimator.d.ts +55 -0
- package/dist/tools/token-estimator.d.ts.map +1 -0
- package/dist/tools/token-estimator.js +82 -0
- package/dist/tools/token-estimator.js.map +1 -0
- package/dist/tools/tool-names.d.ts +64 -0
- package/dist/tools/tool-names.d.ts.map +1 -0
- package/dist/tools/tool-names.js +76 -0
- package/dist/tools/tool-names.js.map +1 -0
- package/dist/tools/validate.d.ts +27 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +99 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/tools/voice-tools.d.ts +8 -0
- package/dist/tools/voice-tools.d.ts.map +1 -0
- package/dist/tools/voice-tools.js +32 -0
- package/dist/tools/voice-tools.js.map +1 -0
- package/dist/voice/service.d.ts +42 -0
- package/dist/voice/service.d.ts.map +1 -0
- package/dist/voice/service.js +75 -0
- package/dist/voice/service.js.map +1 -0
- package/dist/ws.d.ts +90 -0
- package/dist/ws.d.ts.map +1 -0
- package/dist/ws.js +562 -0
- package/dist/ws.js.map +1 -0
- package/package.json +61 -0
package/bin/jait.mjs
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Jait Gateway CLI — the single entry point for `npm install -g @jait/gateway`.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* jait Start the gateway with defaults
|
|
8
|
+
* jait --port 9000 Use a custom port
|
|
9
|
+
* jait --host 127.0.0.1 Bind to specific host
|
|
10
|
+
* jait --help Show help
|
|
11
|
+
* jait --version Show version
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
15
|
+
import { resolve, dirname, join } from "node:path";
|
|
16
|
+
import { homedir } from "node:os";
|
|
17
|
+
import { fileURLToPath } from "node:url";
|
|
18
|
+
|
|
19
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
const pkg = JSON.parse(
|
|
21
|
+
readFileSync(resolve(__dirname, "..", "package.json"), "utf8"),
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
// ── Helpers ─────────────────────────────────────────────────────────
|
|
25
|
+
|
|
26
|
+
function printBanner() {
|
|
27
|
+
const v = pkg.version;
|
|
28
|
+
console.log(`
|
|
29
|
+
██╗ █████╗ ██╗████████╗
|
|
30
|
+
██║██╔══██╗██║╚══██╔══╝
|
|
31
|
+
██║███████║██║ ██║
|
|
32
|
+
██ ██║██╔══██║██║ ██║
|
|
33
|
+
╚█████╔╝██║ ██║██║ ██║
|
|
34
|
+
╚════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ v${v}
|
|
35
|
+
`);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function printHelp() {
|
|
39
|
+
printBanner();
|
|
40
|
+
console.log(`Usage: jait [options]
|
|
41
|
+
|
|
42
|
+
Options:
|
|
43
|
+
--port <number> Port to listen on (default: 8000, env: PORT)
|
|
44
|
+
--host <address> Address to bind to (default: 0.0.0.0, env: HOST)
|
|
45
|
+
--env <path> Path to .env file (auto-detected)
|
|
46
|
+
--version, -v Show version number
|
|
47
|
+
--help, -h Show this help message
|
|
48
|
+
|
|
49
|
+
Environment files are loaded in order (first found wins):
|
|
50
|
+
1. --env flag path
|
|
51
|
+
2. ./.env (current directory)
|
|
52
|
+
3. ~/.jait/.env
|
|
53
|
+
|
|
54
|
+
All configuration can also be set via environment variables.
|
|
55
|
+
See https://github.com/JakobWl/Jait for full documentation.
|
|
56
|
+
`);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ── Argument parsing ────────────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
const args = process.argv.slice(2);
|
|
62
|
+
const flags = {};
|
|
63
|
+
|
|
64
|
+
for (let i = 0; i < args.length; i++) {
|
|
65
|
+
const arg = args[i];
|
|
66
|
+
if (arg === "--help" || arg === "-h") {
|
|
67
|
+
printHelp();
|
|
68
|
+
process.exit(0);
|
|
69
|
+
}
|
|
70
|
+
if (arg === "--version" || arg === "-v") {
|
|
71
|
+
console.log(pkg.version);
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
if (arg === "--port" && args[i + 1]) {
|
|
75
|
+
flags.port = args[++i];
|
|
76
|
+
} else if (arg === "--host" && args[i + 1]) {
|
|
77
|
+
flags.host = args[++i];
|
|
78
|
+
} else if (arg === "--env" && args[i + 1]) {
|
|
79
|
+
flags.envPath = args[++i];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ── .env loading ────────────────────────────────────────────────────
|
|
84
|
+
|
|
85
|
+
function loadEnv(filePath) {
|
|
86
|
+
if (!existsSync(filePath)) return false;
|
|
87
|
+
const lines = readFileSync(filePath, "utf8").split("\n");
|
|
88
|
+
for (const line of lines) {
|
|
89
|
+
const trimmed = line.trim();
|
|
90
|
+
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
91
|
+
const eqIdx = trimmed.indexOf("=");
|
|
92
|
+
if (eqIdx < 0) continue;
|
|
93
|
+
const key = trimmed.slice(0, eqIdx).trim();
|
|
94
|
+
let value = trimmed.slice(eqIdx + 1).trim();
|
|
95
|
+
// Strip surrounding quotes
|
|
96
|
+
if (
|
|
97
|
+
(value.startsWith('"') && value.endsWith('"')) ||
|
|
98
|
+
(value.startsWith("'") && value.endsWith("'"))
|
|
99
|
+
) {
|
|
100
|
+
value = value.slice(1, -1);
|
|
101
|
+
}
|
|
102
|
+
// Don't overwrite existing env vars
|
|
103
|
+
if (process.env[key] === undefined) {
|
|
104
|
+
process.env[key] = value;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const envCandidates = [
|
|
111
|
+
flags.envPath,
|
|
112
|
+
resolve(process.cwd(), ".env"),
|
|
113
|
+
join(homedir(), ".jait", ".env"),
|
|
114
|
+
].filter(Boolean);
|
|
115
|
+
|
|
116
|
+
let envLoaded = false;
|
|
117
|
+
for (const candidate of envCandidates) {
|
|
118
|
+
if (loadEnv(candidate)) {
|
|
119
|
+
envLoaded = candidate;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// ── Apply CLI flags as env overrides ────────────────────────────────
|
|
125
|
+
|
|
126
|
+
if (flags.port) process.env.PORT = flags.port;
|
|
127
|
+
if (flags.host) process.env.HOST = flags.host;
|
|
128
|
+
|
|
129
|
+
// Mark that env was loaded externally so config.ts doesn't try again
|
|
130
|
+
process.env.__JAIT_CLI = "1";
|
|
131
|
+
|
|
132
|
+
// ── Start ───────────────────────────────────────────────────────────
|
|
133
|
+
|
|
134
|
+
printBanner();
|
|
135
|
+
if (envLoaded) {
|
|
136
|
+
console.log(` Config loaded from ${envLoaded}`);
|
|
137
|
+
}
|
|
138
|
+
console.log("");
|
|
139
|
+
|
|
140
|
+
const { main } = await import("../dist/index.js");
|
|
141
|
+
main().catch((err) => {
|
|
142
|
+
console.error("Fatal error:", err);
|
|
143
|
+
process.exit(1);
|
|
144
|
+
});
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type LlmProvider = "ollama" | "openai";
|
|
2
|
+
export interface AppConfig {
|
|
3
|
+
port: number;
|
|
4
|
+
wsPort: number;
|
|
5
|
+
host: string;
|
|
6
|
+
logLevel: string;
|
|
7
|
+
corsOrigin: string;
|
|
8
|
+
nodeEnv: string;
|
|
9
|
+
jwtSecret: string;
|
|
10
|
+
llmProvider: LlmProvider;
|
|
11
|
+
ollamaUrl: string;
|
|
12
|
+
ollamaModel: string;
|
|
13
|
+
openaiApiKey: string;
|
|
14
|
+
openaiModel: string;
|
|
15
|
+
openaiBaseUrl: string;
|
|
16
|
+
/** Max context window tokens (auto-detected from model name if not set) */
|
|
17
|
+
contextWindow: number;
|
|
18
|
+
hookSecret: string;
|
|
19
|
+
heartbeatCron: string;
|
|
20
|
+
}
|
|
21
|
+
/** Infer context window size from model name. Conservative defaults. */
|
|
22
|
+
export declare function inferContextWindow(model: string): number;
|
|
23
|
+
export declare function loadConfig(): AppConfig;
|
|
24
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,WAAW,CAAC;IAEzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED,wBAAgB,UAAU,IAAI,SAAS,CA4BtC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { config } from "dotenv";
|
|
2
|
+
import { resolve, dirname, join } from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
import { existsSync } from "fs";
|
|
5
|
+
import { homedir } from "os";
|
|
6
|
+
// Skip dotenv loading if already handled by CLI entry (bin/jait.mjs)
|
|
7
|
+
if (!process.env["__JAIT_CLI"]) {
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
// Try .env locations in priority order:
|
|
10
|
+
// 1. CWD/.env (user project)
|
|
11
|
+
// 2. ~/.jait/.env (global config)
|
|
12
|
+
// 3. Monorepo root (dev; 3 levels up from src/config.ts)
|
|
13
|
+
const candidates = [
|
|
14
|
+
resolve(process.cwd(), ".env"),
|
|
15
|
+
join(homedir(), ".jait", ".env"),
|
|
16
|
+
resolve(__dirname, "../../../.env"),
|
|
17
|
+
];
|
|
18
|
+
const envPath = candidates.find((p) => existsSync(p));
|
|
19
|
+
if (envPath)
|
|
20
|
+
config({ path: envPath });
|
|
21
|
+
}
|
|
22
|
+
/** Infer context window size from model name. Conservative defaults. */
|
|
23
|
+
export function inferContextWindow(model) {
|
|
24
|
+
const m = model.toLowerCase();
|
|
25
|
+
if (m.includes("gpt-4o") || m.includes("gpt-4.1"))
|
|
26
|
+
return 128_000;
|
|
27
|
+
if (m.includes("gpt-4-turbo"))
|
|
28
|
+
return 128_000;
|
|
29
|
+
if (m.includes("gpt-4"))
|
|
30
|
+
return 8_192;
|
|
31
|
+
if (m.includes("gpt-3.5"))
|
|
32
|
+
return 16_385;
|
|
33
|
+
if (m.includes("claude-3") || m.includes("claude-4"))
|
|
34
|
+
return 200_000;
|
|
35
|
+
if (m.includes("claude"))
|
|
36
|
+
return 100_000;
|
|
37
|
+
if (m.includes("gemini"))
|
|
38
|
+
return 128_000;
|
|
39
|
+
if (m.includes("o1") || m.includes("o3") || m.includes("o4"))
|
|
40
|
+
return 200_000;
|
|
41
|
+
if (m.includes("deepseek"))
|
|
42
|
+
return 64_000;
|
|
43
|
+
if (m.includes("mistral") || m.includes("mixtral"))
|
|
44
|
+
return 32_000;
|
|
45
|
+
if (m.includes("llama"))
|
|
46
|
+
return 8_192;
|
|
47
|
+
return 128_000; // safe default
|
|
48
|
+
}
|
|
49
|
+
export function loadConfig() {
|
|
50
|
+
// Auto-detect provider: if OPENAI_API_KEY is set, default to openai
|
|
51
|
+
const hasOpenAiKey = !!process.env["OPENAI_API_KEY"];
|
|
52
|
+
const explicitProvider = process.env["LLM_PROVIDER"];
|
|
53
|
+
return {
|
|
54
|
+
port: parseInt(process.env["PORT"] ?? "8000", 10),
|
|
55
|
+
wsPort: parseInt(process.env["WS_PORT"] ?? "18789", 10),
|
|
56
|
+
host: process.env["HOST"] ?? "0.0.0.0",
|
|
57
|
+
logLevel: process.env["LOG_LEVEL"] ?? "info",
|
|
58
|
+
corsOrigin: process.env["CORS_ORIGIN"] ?? "http://localhost:3000",
|
|
59
|
+
nodeEnv: process.env["NODE_ENV"] ?? "development",
|
|
60
|
+
jwtSecret: process.env["JWT_SECRET"] ?? "jait-dev-secret-change-in-production",
|
|
61
|
+
llmProvider: explicitProvider ?? (hasOpenAiKey ? "openai" : "ollama"),
|
|
62
|
+
ollamaUrl: process.env["OLLAMA_URL"] ?? "http://192.168.178.60:11434",
|
|
63
|
+
ollamaModel: process.env["OLLAMA_MODEL"] ??
|
|
64
|
+
"CognitiveComputations/dolphin-mistral-nemo:12b",
|
|
65
|
+
openaiApiKey: process.env["OPENAI_API_KEY"] ?? "",
|
|
66
|
+
openaiModel: process.env["OPENAI_MODEL"] ?? "gpt-4o",
|
|
67
|
+
openaiBaseUrl: process.env["OPENAI_BASE_URL"] ?? "https://api.openai.com/v1",
|
|
68
|
+
contextWindow: parseInt(process.env["CONTEXT_WINDOW"] ?? "0", 10) || inferContextWindow(process.env["OPENAI_MODEL"] ?? "gpt-4o"),
|
|
69
|
+
hookSecret: process.env["HOOK_SECRET"] ?? "jait-hook-secret",
|
|
70
|
+
heartbeatCron: process.env["HEARTBEAT_CRON"] ?? "* * * * *",
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite connection via bun:sqlite + Drizzle ORM.
|
|
3
|
+
*
|
|
4
|
+
* Database lives at ~/.jait/data/jait.db (created automatically).
|
|
5
|
+
* For tests, pass ":memory:" as dbPath.
|
|
6
|
+
*/
|
|
7
|
+
import { Database } from "bun:sqlite";
|
|
8
|
+
import { type BunSQLiteDatabase } from "drizzle-orm/bun-sqlite";
|
|
9
|
+
import * as schema from "./schema.js";
|
|
10
|
+
export type JaitDB = BunSQLiteDatabase<typeof schema>;
|
|
11
|
+
/** Resolve the default DB path: ~/.jait/data/jait.db */
|
|
12
|
+
export declare function defaultDbPath(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Open (or create) the SQLite database and run table creation.
|
|
15
|
+
*
|
|
16
|
+
* @param dbPath File path for the SQLite DB, or ":memory:" for tests.
|
|
17
|
+
* @returns { db, sqlite } — drizzle instance + raw bun:sqlite handle
|
|
18
|
+
*/
|
|
19
|
+
export declare function openDatabase(dbPath?: string): {
|
|
20
|
+
db: BunSQLiteDatabase<typeof schema> & {
|
|
21
|
+
$client: Database;
|
|
22
|
+
};
|
|
23
|
+
sqlite: Database;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Run DDL to create all tables if they don't already exist.
|
|
27
|
+
* Uses raw SQL so we don't need drizzle-kit push in production.
|
|
28
|
+
*
|
|
29
|
+
* Migrations are numbered and tracked in a `_migrations` table.
|
|
30
|
+
* Only new (un-applied) migrations run on each startup — safe for updates.
|
|
31
|
+
*/
|
|
32
|
+
export declare function migrateDatabase(sqlite: Database): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get the current schema version (highest applied migration ID).
|
|
35
|
+
*/
|
|
36
|
+
export declare function getSchemaVersion(sqlite: Database): number;
|
|
37
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAMtC,MAAM,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,MAAM,CAAC,CAAC;AAEtD,wDAAwD;AACxD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM;;;;;EAoB3C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,QAkC/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAOzD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite connection via bun:sqlite + Drizzle ORM.
|
|
3
|
+
*
|
|
4
|
+
* Database lives at ~/.jait/data/jait.db (created automatically).
|
|
5
|
+
* For tests, pass ":memory:" as dbPath.
|
|
6
|
+
*/
|
|
7
|
+
import { Database } from "bun:sqlite";
|
|
8
|
+
import { drizzle } from "drizzle-orm/bun-sqlite";
|
|
9
|
+
import * as schema from "./schema.js";
|
|
10
|
+
import { migrations } from "./migrations.js";
|
|
11
|
+
import { mkdirSync, existsSync } from "node:fs";
|
|
12
|
+
import { dirname, join } from "node:path";
|
|
13
|
+
import { homedir } from "node:os";
|
|
14
|
+
/** Resolve the default DB path: ~/.jait/data/jait.db */
|
|
15
|
+
export function defaultDbPath() {
|
|
16
|
+
return join(homedir(), ".jait", "data", "jait.db");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Open (or create) the SQLite database and run table creation.
|
|
20
|
+
*
|
|
21
|
+
* @param dbPath File path for the SQLite DB, or ":memory:" for tests.
|
|
22
|
+
* @returns { db, sqlite } — drizzle instance + raw bun:sqlite handle
|
|
23
|
+
*/
|
|
24
|
+
export function openDatabase(dbPath) {
|
|
25
|
+
const resolvedPath = dbPath ?? defaultDbPath();
|
|
26
|
+
// Ensure the directory exists (no-op for :memory:)
|
|
27
|
+
if (resolvedPath !== ":memory:") {
|
|
28
|
+
const dir = dirname(resolvedPath);
|
|
29
|
+
if (!existsSync(dir)) {
|
|
30
|
+
mkdirSync(dir, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const sqlite = new Database(resolvedPath);
|
|
34
|
+
// Enable WAL mode for better concurrent read performance
|
|
35
|
+
sqlite.run("PRAGMA journal_mode = WAL");
|
|
36
|
+
sqlite.run("PRAGMA foreign_keys = ON");
|
|
37
|
+
const db = drizzle(sqlite, { schema });
|
|
38
|
+
return { db, sqlite };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Run DDL to create all tables if they don't already exist.
|
|
42
|
+
* Uses raw SQL so we don't need drizzle-kit push in production.
|
|
43
|
+
*
|
|
44
|
+
* Migrations are numbered and tracked in a `_migrations` table.
|
|
45
|
+
* Only new (un-applied) migrations run on each startup — safe for updates.
|
|
46
|
+
*/
|
|
47
|
+
export function migrateDatabase(sqlite) {
|
|
48
|
+
// Ensure the migrations tracking table exists
|
|
49
|
+
sqlite.run(`
|
|
50
|
+
CREATE TABLE IF NOT EXISTS _migrations (
|
|
51
|
+
id INTEGER PRIMARY KEY,
|
|
52
|
+
name TEXT NOT NULL,
|
|
53
|
+
applied_at TEXT NOT NULL
|
|
54
|
+
)
|
|
55
|
+
`);
|
|
56
|
+
// Load which migrations have already been applied
|
|
57
|
+
const applied = new Set(sqlite.query("SELECT id FROM _migrations").all()
|
|
58
|
+
.map((r) => r.id));
|
|
59
|
+
let ran = 0;
|
|
60
|
+
for (const migration of migrations) {
|
|
61
|
+
if (applied.has(migration.id))
|
|
62
|
+
continue;
|
|
63
|
+
console.log(` Running migration ${migration.id}: ${migration.name}`);
|
|
64
|
+
migration.run(sqlite);
|
|
65
|
+
// Record that this migration has been applied
|
|
66
|
+
sqlite.run("INSERT INTO _migrations (id, name, applied_at) VALUES (?, ?, ?)", [migration.id, migration.name, new Date().toISOString()]);
|
|
67
|
+
ran++;
|
|
68
|
+
}
|
|
69
|
+
if (ran > 0) {
|
|
70
|
+
console.log(` ${ran} migration(s) applied (schema now at v${migrations.length}).`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the current schema version (highest applied migration ID).
|
|
75
|
+
*/
|
|
76
|
+
export function getSchemaVersion(sqlite) {
|
|
77
|
+
try {
|
|
78
|
+
const row = sqlite.query("SELECT MAX(id) as v FROM _migrations").get();
|
|
79
|
+
return row?.v ?? 0;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/db/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAe,MAAM,iBAAiB,CAAC;AAC9G,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numbered database migrations for Jait.
|
|
3
|
+
*
|
|
4
|
+
* Each migration has an `id` (monotonically increasing) and a `run` function
|
|
5
|
+
* that receives the raw bun:sqlite Database handle.
|
|
6
|
+
*
|
|
7
|
+
* The migration runner (in connection.ts) tracks applied migrations in a
|
|
8
|
+
* `_migrations` table and only runs new ones. This makes updates safe and
|
|
9
|
+
* idempotent — deploy a new version and it picks up from where it left off.
|
|
10
|
+
*
|
|
11
|
+
* Rules for adding migrations:
|
|
12
|
+
* - Always append to the end of the array.
|
|
13
|
+
* - Never modify an existing migration's `run` function.
|
|
14
|
+
* - Use `CREATE TABLE IF NOT EXISTS` and try/catch `ALTER TABLE` for safety.
|
|
15
|
+
* - Give each migration a short human-readable `name`.
|
|
16
|
+
*/
|
|
17
|
+
import type { Database } from "bun:sqlite";
|
|
18
|
+
export interface Migration {
|
|
19
|
+
id: number;
|
|
20
|
+
name: string;
|
|
21
|
+
run: (db: Database) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const migrations: Migration[];
|
|
24
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EA0SjC,CAAC"}
|