@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
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
const TITLE_MAX_LENGTH = 80;
|
|
2
|
+
const TITLE_TURN_TIMEOUT_MS = 30_000;
|
|
3
|
+
export const THREAD_TITLE_PROMPT = "Reply with ONLY a short task title (3-8 words). No quotes, bullets, or commentary.";
|
|
4
|
+
/**
|
|
5
|
+
* Generate a title by sending a turn through an already-running provider
|
|
6
|
+
* session. The session must not be busy (turn completed / just started).
|
|
7
|
+
* Returns the assistant text from the turn.
|
|
8
|
+
*/
|
|
9
|
+
export async function generateTitleViaTurn(provider, sessionId, task) {
|
|
10
|
+
const prompt = `${THREAD_TITLE_PROMPT}\n\n${task.trim()}`;
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
let text = "";
|
|
13
|
+
const timer = setTimeout(() => {
|
|
14
|
+
unsub();
|
|
15
|
+
reject(new Error("Title turn timed out"));
|
|
16
|
+
}, TITLE_TURN_TIMEOUT_MS);
|
|
17
|
+
const unsub = provider.onEvent((event) => {
|
|
18
|
+
if (!("sessionId" in event) || event.sessionId !== sessionId)
|
|
19
|
+
return;
|
|
20
|
+
if (event.type === "token") {
|
|
21
|
+
text += event.content;
|
|
22
|
+
}
|
|
23
|
+
else if (event.type === "message" && event.role === "assistant") {
|
|
24
|
+
// Full message replaces streamed tokens
|
|
25
|
+
text = event.content;
|
|
26
|
+
}
|
|
27
|
+
else if (event.type === "turn.completed") {
|
|
28
|
+
clearTimeout(timer);
|
|
29
|
+
unsub();
|
|
30
|
+
resolve(text.trim());
|
|
31
|
+
}
|
|
32
|
+
else if (event.type === "session.error") {
|
|
33
|
+
clearTimeout(timer);
|
|
34
|
+
unsub();
|
|
35
|
+
reject(new Error(event.error));
|
|
36
|
+
}
|
|
37
|
+
else if (event.type === "session.completed") {
|
|
38
|
+
clearTimeout(timer);
|
|
39
|
+
unsub();
|
|
40
|
+
resolve(text.trim());
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
// Fire the turn — the prompt asks for only a title
|
|
44
|
+
provider.sendTurn(sessionId, prompt).catch((err) => {
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
unsub();
|
|
47
|
+
reject(err);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate a title using a direct LLM API call (OpenAI / Ollama).
|
|
53
|
+
* Used as fallback when the provider isn't a CLI agent or when no
|
|
54
|
+
* session is available.
|
|
55
|
+
*/
|
|
56
|
+
export async function generateTitleViaApi(options) {
|
|
57
|
+
const raw = await callLlm(options);
|
|
58
|
+
const title = normalizeGeneratedThreadTitle(raw, "");
|
|
59
|
+
if (!title)
|
|
60
|
+
throw new Error("Title generation returned empty result");
|
|
61
|
+
return title;
|
|
62
|
+
}
|
|
63
|
+
export function normalizeGeneratedThreadTitle(raw, fallback) {
|
|
64
|
+
const singleLine = raw
|
|
65
|
+
.replace(/\r/g, "\n")
|
|
66
|
+
.split("\n")
|
|
67
|
+
.map((line) => line.trim())
|
|
68
|
+
.find(Boolean) ?? "";
|
|
69
|
+
let title = singleLine
|
|
70
|
+
.replace(/^title\s*:\s*/i, "")
|
|
71
|
+
.replace(/^[-*•\d.)\s]+/, "")
|
|
72
|
+
.replace(/^["'`]+|["'`]+$/g, "")
|
|
73
|
+
.replace(/\s+/g, " ")
|
|
74
|
+
.trim();
|
|
75
|
+
title = title.replace(/[.:;\-–\s]+$/g, "").trim();
|
|
76
|
+
if (!title)
|
|
77
|
+
return fallback;
|
|
78
|
+
if (title.length <= TITLE_MAX_LENGTH)
|
|
79
|
+
return title;
|
|
80
|
+
const truncated = title.slice(0, TITLE_MAX_LENGTH + 1);
|
|
81
|
+
const lastSpace = truncated.lastIndexOf(" ");
|
|
82
|
+
return (lastSpace >= 24 ? truncated.slice(0, lastSpace) : truncated.slice(0, TITLE_MAX_LENGTH)).trim();
|
|
83
|
+
}
|
|
84
|
+
// ── Private helpers ──────────────────────────────────────────────
|
|
85
|
+
async function callLlm(options) {
|
|
86
|
+
const apiKeys = options.apiKeys ?? {};
|
|
87
|
+
const promptMessages = [
|
|
88
|
+
{ role: "system", content: THREAD_TITLE_PROMPT },
|
|
89
|
+
{ role: "user", content: options.task.trim() },
|
|
90
|
+
];
|
|
91
|
+
if (apiKeys["OPENAI_API_KEY"]?.trim() || options.config.llmProvider === "openai") {
|
|
92
|
+
const apiKey = apiKeys["OPENAI_API_KEY"]?.trim() || options.config.openaiApiKey;
|
|
93
|
+
if (!apiKey)
|
|
94
|
+
throw new Error("OPENAI_API_KEY is not configured");
|
|
95
|
+
const response = await fetch(`${(apiKeys["OPENAI_BASE_URL"]?.trim() || options.config.openaiBaseUrl).replace(/\/+$/, "")}/chat/completions`, {
|
|
96
|
+
method: "POST",
|
|
97
|
+
headers: {
|
|
98
|
+
"Content-Type": "application/json",
|
|
99
|
+
Authorization: `Bearer ${apiKey}`,
|
|
100
|
+
},
|
|
101
|
+
body: JSON.stringify({
|
|
102
|
+
model: apiKeys["OPENAI_MODEL"]?.trim() || options.model || options.config.openaiModel,
|
|
103
|
+
temperature: 0.2,
|
|
104
|
+
max_tokens: 24,
|
|
105
|
+
messages: promptMessages,
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
throw new Error(`OpenAI title generation failed: ${response.status}`);
|
|
110
|
+
}
|
|
111
|
+
const data = await response.json();
|
|
112
|
+
const content = data.choices?.[0]?.message?.content;
|
|
113
|
+
if (typeof content === "string")
|
|
114
|
+
return content;
|
|
115
|
+
if (Array.isArray(content)) {
|
|
116
|
+
return content
|
|
117
|
+
.map((part) => (part?.type === "text" ? part.text ?? "" : ""))
|
|
118
|
+
.join("")
|
|
119
|
+
.trim();
|
|
120
|
+
}
|
|
121
|
+
throw new Error("OpenAI title generation returned no content");
|
|
122
|
+
}
|
|
123
|
+
const response = await fetch(`${options.config.ollamaUrl.replace(/\/+$/, "")}/api/chat`, {
|
|
124
|
+
method: "POST",
|
|
125
|
+
headers: { "Content-Type": "application/json" },
|
|
126
|
+
body: JSON.stringify({
|
|
127
|
+
model: options.config.ollamaModel,
|
|
128
|
+
stream: false,
|
|
129
|
+
messages: promptMessages,
|
|
130
|
+
}),
|
|
131
|
+
});
|
|
132
|
+
if (!response.ok) {
|
|
133
|
+
throw new Error(`Ollama title generation failed: ${response.status}`);
|
|
134
|
+
}
|
|
135
|
+
const data = await response.json();
|
|
136
|
+
const content = data.message?.content?.trim();
|
|
137
|
+
if (!content)
|
|
138
|
+
throw new Error("Ollama title generation returned no content");
|
|
139
|
+
return content;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=thread-title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-title.js","sourceRoot":"","sources":["../../src/services/thread-title.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,MAAM,CAAC,MAAM,mBAAmB,GAC9B,oFAAoF,CAAC;AASvF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAA4B,EAC5B,SAAiB,EACjB,IAAY;IAEZ,MAAM,MAAM,GAAG,GAAG,mBAAmB,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAE1D,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC5C,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE1B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAoB,EAAE,EAAE;YACtD,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,OAAO;YACrE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClE,wCAAwC;gBACxC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC1C,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBAC9C,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACjD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAmC;IAC3E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,6BAA6B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,GAAW,EAAE,QAAgB;IACzE,MAAM,UAAU,GAAG,GAAG;SACnB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAEvB,IAAI,KAAK,GAAG,UAAU;SACnB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;IAEV,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAEnD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzG,CAAC;AAED,oEAAoE;AAEpE,KAAK,UAAU,OAAO,CAAC,OAAmC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG;QACrB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE;QAChD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;KAC/C,CAAC;IAEF,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACjF,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QAChF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,EAAE;YAC3I,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW;gBACrF,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,cAAc;aACzB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAE/B,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;QACpD,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC7D,IAAI,CAAC,EAAE,CAAC;iBACR,IAAI,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE;QACvF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW;YACjC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,cAAc;SACzB,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwC,CAAC;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThreadService — CRUD + lifecycle management for agent threads.
|
|
3
|
+
*
|
|
4
|
+
* Agent threads are parallel running agent sessions, each powered by a
|
|
5
|
+
* CliProviderAdapter (jait, codex, or claude-code). Threads persist their
|
|
6
|
+
* status, configuration, and activity log in SQLite via Drizzle.
|
|
7
|
+
*/
|
|
8
|
+
import type { JaitDB } from "../db/connection.js";
|
|
9
|
+
import { agentThreads } from "../db/schema.js";
|
|
10
|
+
import type { ProviderId, RuntimeMode, ProviderEvent } from "../providers/contracts.js";
|
|
11
|
+
export type ThreadStatus = "running" | "completed" | "error" | "interrupted";
|
|
12
|
+
export interface CreateThreadParams {
|
|
13
|
+
userId?: string;
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
title: string;
|
|
16
|
+
providerId: ProviderId;
|
|
17
|
+
model?: string;
|
|
18
|
+
runtimeMode?: RuntimeMode;
|
|
19
|
+
workingDirectory?: string;
|
|
20
|
+
branch?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface UpdateThreadParams {
|
|
23
|
+
title?: string;
|
|
24
|
+
model?: string;
|
|
25
|
+
runtimeMode?: RuntimeMode;
|
|
26
|
+
workingDirectory?: string;
|
|
27
|
+
branch?: string;
|
|
28
|
+
prUrl?: string | null;
|
|
29
|
+
prNumber?: number | null;
|
|
30
|
+
prTitle?: string | null;
|
|
31
|
+
prState?: "open" | "closed" | "merged" | null;
|
|
32
|
+
status?: ThreadStatus;
|
|
33
|
+
providerSessionId?: string | null;
|
|
34
|
+
error?: string | null;
|
|
35
|
+
completedAt?: string | null;
|
|
36
|
+
}
|
|
37
|
+
export interface ThreadActivity {
|
|
38
|
+
id: string;
|
|
39
|
+
threadId: string;
|
|
40
|
+
kind: string;
|
|
41
|
+
summary: string;
|
|
42
|
+
payload?: unknown;
|
|
43
|
+
createdAt: string;
|
|
44
|
+
}
|
|
45
|
+
export type ThreadRow = typeof agentThreads.$inferSelect;
|
|
46
|
+
export declare class ThreadService {
|
|
47
|
+
private db;
|
|
48
|
+
constructor(db: JaitDB);
|
|
49
|
+
create(params: CreateThreadParams): ThreadRow;
|
|
50
|
+
getById(id: string): ThreadRow | undefined;
|
|
51
|
+
list(userId?: string): ThreadRow[];
|
|
52
|
+
listBySession(sessionId: string): ThreadRow[];
|
|
53
|
+
listRunning(): ThreadRow[];
|
|
54
|
+
update(id: string, params: UpdateThreadParams): ThreadRow | undefined;
|
|
55
|
+
delete(id: string): void;
|
|
56
|
+
markRunning(id: string, providerSessionId: string): ThreadRow | undefined;
|
|
57
|
+
markCompleted(id: string): ThreadRow | undefined;
|
|
58
|
+
markError(id: string, error: string): ThreadRow | undefined;
|
|
59
|
+
markInterrupted(id: string): ThreadRow | undefined;
|
|
60
|
+
addActivity(threadId: string, kind: string, summary: string, payload?: unknown): ThreadActivity;
|
|
61
|
+
getActivities(threadId: string, limit?: number, after?: string): ThreadActivity[];
|
|
62
|
+
logProviderEvent(threadId: string, event: ProviderEvent): ThreadActivity | undefined;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=threads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/services/threads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThreadService — CRUD + lifecycle management for agent threads.
|
|
3
|
+
*
|
|
4
|
+
* Agent threads are parallel running agent sessions, each powered by a
|
|
5
|
+
* CliProviderAdapter (jait, codex, or claude-code). Threads persist their
|
|
6
|
+
* status, configuration, and activity log in SQLite via Drizzle.
|
|
7
|
+
*/
|
|
8
|
+
import { and, eq, desc, gt } from "drizzle-orm";
|
|
9
|
+
import { agentThreads, agentThreadActivities } from "../db/schema.js";
|
|
10
|
+
import { uuidv7 } from "../lib/uuidv7.js";
|
|
11
|
+
// ── Service ──────────────────────────────────────────────────────────
|
|
12
|
+
export class ThreadService {
|
|
13
|
+
db;
|
|
14
|
+
constructor(db) {
|
|
15
|
+
this.db = db;
|
|
16
|
+
}
|
|
17
|
+
// ── CRUD ─────────────────────────────────────────────────────────
|
|
18
|
+
create(params) {
|
|
19
|
+
const id = uuidv7();
|
|
20
|
+
const now = new Date().toISOString();
|
|
21
|
+
this.db
|
|
22
|
+
.insert(agentThreads)
|
|
23
|
+
.values({
|
|
24
|
+
id,
|
|
25
|
+
userId: params.userId ?? null,
|
|
26
|
+
sessionId: params.sessionId ?? null,
|
|
27
|
+
title: params.title,
|
|
28
|
+
providerId: params.providerId,
|
|
29
|
+
model: params.model ?? null,
|
|
30
|
+
runtimeMode: params.runtimeMode ?? "full-access",
|
|
31
|
+
workingDirectory: params.workingDirectory ?? null,
|
|
32
|
+
branch: params.branch ?? null,
|
|
33
|
+
status: "running",
|
|
34
|
+
createdAt: now,
|
|
35
|
+
updatedAt: now,
|
|
36
|
+
})
|
|
37
|
+
.run();
|
|
38
|
+
return this.getById(id);
|
|
39
|
+
}
|
|
40
|
+
getById(id) {
|
|
41
|
+
return this.db
|
|
42
|
+
.select()
|
|
43
|
+
.from(agentThreads)
|
|
44
|
+
.where(eq(agentThreads.id, id))
|
|
45
|
+
.get();
|
|
46
|
+
}
|
|
47
|
+
list(userId) {
|
|
48
|
+
const base = this.db.select().from(agentThreads);
|
|
49
|
+
if (userId) {
|
|
50
|
+
return base
|
|
51
|
+
.where(eq(agentThreads.userId, userId))
|
|
52
|
+
.orderBy(desc(agentThreads.updatedAt))
|
|
53
|
+
.all();
|
|
54
|
+
}
|
|
55
|
+
return base.orderBy(desc(agentThreads.updatedAt)).all();
|
|
56
|
+
}
|
|
57
|
+
listBySession(sessionId) {
|
|
58
|
+
return this.db
|
|
59
|
+
.select()
|
|
60
|
+
.from(agentThreads)
|
|
61
|
+
.where(eq(agentThreads.sessionId, sessionId))
|
|
62
|
+
.orderBy(desc(agentThreads.updatedAt))
|
|
63
|
+
.all();
|
|
64
|
+
}
|
|
65
|
+
listRunning() {
|
|
66
|
+
return this.db
|
|
67
|
+
.select()
|
|
68
|
+
.from(agentThreads)
|
|
69
|
+
.where(eq(agentThreads.status, "running"))
|
|
70
|
+
.orderBy(desc(agentThreads.updatedAt))
|
|
71
|
+
.all();
|
|
72
|
+
}
|
|
73
|
+
update(id, params) {
|
|
74
|
+
const now = new Date().toISOString();
|
|
75
|
+
this.db
|
|
76
|
+
.update(agentThreads)
|
|
77
|
+
.set({ ...params, updatedAt: now })
|
|
78
|
+
.where(eq(agentThreads.id, id))
|
|
79
|
+
.run();
|
|
80
|
+
return this.getById(id);
|
|
81
|
+
}
|
|
82
|
+
delete(id) {
|
|
83
|
+
// Delete activities first, then the thread
|
|
84
|
+
this.db
|
|
85
|
+
.delete(agentThreadActivities)
|
|
86
|
+
.where(eq(agentThreadActivities.threadId, id))
|
|
87
|
+
.run();
|
|
88
|
+
this.db.delete(agentThreads).where(eq(agentThreads.id, id)).run();
|
|
89
|
+
}
|
|
90
|
+
// ── Status transitions ──────────────────────────────────────────
|
|
91
|
+
markRunning(id, providerSessionId) {
|
|
92
|
+
return this.update(id, {
|
|
93
|
+
status: "running",
|
|
94
|
+
providerSessionId,
|
|
95
|
+
error: null,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
markCompleted(id) {
|
|
99
|
+
return this.update(id, {
|
|
100
|
+
status: "completed",
|
|
101
|
+
providerSessionId: null,
|
|
102
|
+
completedAt: new Date().toISOString(),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
markError(id, error) {
|
|
106
|
+
return this.update(id, {
|
|
107
|
+
status: "error",
|
|
108
|
+
providerSessionId: null,
|
|
109
|
+
error,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
markInterrupted(id) {
|
|
113
|
+
return this.update(id, {
|
|
114
|
+
status: "interrupted",
|
|
115
|
+
providerSessionId: null,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
// ── Activities ──────────────────────────────────────────────────
|
|
119
|
+
addActivity(threadId, kind, summary, payload) {
|
|
120
|
+
const id = uuidv7();
|
|
121
|
+
const now = new Date().toISOString();
|
|
122
|
+
this.db
|
|
123
|
+
.insert(agentThreadActivities)
|
|
124
|
+
.values({
|
|
125
|
+
id,
|
|
126
|
+
threadId,
|
|
127
|
+
kind,
|
|
128
|
+
summary,
|
|
129
|
+
payload: payload != null ? JSON.stringify(payload) : null,
|
|
130
|
+
createdAt: now,
|
|
131
|
+
})
|
|
132
|
+
.run();
|
|
133
|
+
return { id, threadId, kind, summary, payload, createdAt: now };
|
|
134
|
+
}
|
|
135
|
+
getActivities(threadId, limit, after) {
|
|
136
|
+
const filters = [eq(agentThreadActivities.threadId, threadId)];
|
|
137
|
+
if (after) {
|
|
138
|
+
filters.push(gt(agentThreadActivities.createdAt, after));
|
|
139
|
+
}
|
|
140
|
+
const baseQuery = this.db
|
|
141
|
+
.select()
|
|
142
|
+
.from(agentThreadActivities)
|
|
143
|
+
.where(filters.length === 1 ? filters[0] : and(...filters))
|
|
144
|
+
.orderBy(desc(agentThreadActivities.createdAt));
|
|
145
|
+
const query = typeof limit === "number" && Number.isFinite(limit) && limit > 0
|
|
146
|
+
? baseQuery.limit(limit)
|
|
147
|
+
: baseQuery;
|
|
148
|
+
const rows = query.all();
|
|
149
|
+
return rows.map((r) => ({
|
|
150
|
+
id: r.id,
|
|
151
|
+
threadId: r.threadId,
|
|
152
|
+
kind: r.kind,
|
|
153
|
+
summary: r.summary,
|
|
154
|
+
payload: r.payload ? JSON.parse(r.payload) : undefined,
|
|
155
|
+
createdAt: r.createdAt,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
// ── Provider event → activity log mapping ───────────────────────
|
|
159
|
+
logProviderEvent(threadId, event) {
|
|
160
|
+
switch (event.type) {
|
|
161
|
+
case "token":
|
|
162
|
+
// Don't log individual tokens — too noisy
|
|
163
|
+
return undefined;
|
|
164
|
+
case "tool.start":
|
|
165
|
+
return this.addActivity(threadId, "tool.start", `Using ${event.tool}`, {
|
|
166
|
+
tool: event.tool,
|
|
167
|
+
args: event.args,
|
|
168
|
+
callId: event.callId,
|
|
169
|
+
});
|
|
170
|
+
case "tool.result":
|
|
171
|
+
return this.addActivity(threadId, event.ok ? "tool.result" : "tool.error", `${event.tool}: ${event.message}`, { tool: event.tool, ok: event.ok, message: event.message, callId: event.callId });
|
|
172
|
+
case "tool.output":
|
|
173
|
+
// Don't persist per-delta output — too noisy (like tokens).
|
|
174
|
+
// The frontend can reconstruct final output from tool.result.
|
|
175
|
+
return undefined;
|
|
176
|
+
case "tool.approval-required":
|
|
177
|
+
return this.addActivity(threadId, "tool.approval", `Approval required: ${event.tool}`, { tool: event.tool, args: event.args, requestId: event.requestId });
|
|
178
|
+
case "message":
|
|
179
|
+
// User messages are already persisted by the route handler (/start, /send).
|
|
180
|
+
// Only persist assistant messages from provider events to avoid duplicates.
|
|
181
|
+
if (event.role === "user")
|
|
182
|
+
return undefined;
|
|
183
|
+
return this.addActivity(threadId, "message", event.content.slice(0, 500), {
|
|
184
|
+
role: event.role,
|
|
185
|
+
content: event.content,
|
|
186
|
+
});
|
|
187
|
+
case "session.started":
|
|
188
|
+
return this.addActivity(threadId, "session", "Session started");
|
|
189
|
+
case "turn.completed":
|
|
190
|
+
return this.addActivity(threadId, "session", "Turn completed — ready for input");
|
|
191
|
+
case "session.completed":
|
|
192
|
+
return this.addActivity(threadId, "session", "Session completed");
|
|
193
|
+
case "session.error":
|
|
194
|
+
return this.addActivity(threadId, "error", event.error);
|
|
195
|
+
case "activity":
|
|
196
|
+
return this.addActivity(threadId, event.kind, event.summary, event.payload);
|
|
197
|
+
default:
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=threads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/services/threads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { JaitDB } from "../db/connection.js";
|
|
2
|
+
export type ThemeMode = "light" | "dark" | "system";
|
|
3
|
+
export type SttProvider = "simulated" | "browser";
|
|
4
|
+
export type ChatProvider = "jait" | "codex" | "claude-code";
|
|
5
|
+
export interface UserRecord {
|
|
6
|
+
id: string;
|
|
7
|
+
username: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
}
|
|
11
|
+
export interface UserSettingsRecord {
|
|
12
|
+
userId: string;
|
|
13
|
+
theme: ThemeMode;
|
|
14
|
+
apiKeys: Record<string, string>;
|
|
15
|
+
disabledTools: string[];
|
|
16
|
+
sttProvider: SttProvider;
|
|
17
|
+
chatProvider: ChatProvider;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class UserService {
|
|
21
|
+
private readonly db;
|
|
22
|
+
constructor(db: JaitDB);
|
|
23
|
+
countUsers(): number;
|
|
24
|
+
findByUsername(username: string): UserRecord | null;
|
|
25
|
+
findById(id: string): UserRecord | null;
|
|
26
|
+
createUser(username: string, password: string): UserRecord;
|
|
27
|
+
verifyCredentials(username: string, password: string): UserRecord | null;
|
|
28
|
+
getSettings(userId: string): UserSettingsRecord;
|
|
29
|
+
updateSettings(userId: string, patch: {
|
|
30
|
+
theme?: ThemeMode;
|
|
31
|
+
apiKeys?: Record<string, string>;
|
|
32
|
+
disabledTools?: string[];
|
|
33
|
+
sttProvider?: SttProvider;
|
|
34
|
+
chatProvider?: ChatProvider;
|
|
35
|
+
}): UserSettingsRecord;
|
|
36
|
+
bindSessionToUser(userId: string, sessionId: string): boolean;
|
|
37
|
+
clearArchivedSessions(userId: string): number;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/services/users.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAE5D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAiDD,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM;IAEvC,UAAU,IAAI,MAAM;IAKpB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAYnD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAWvC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAqB1D,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAaxE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAkC/C,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,GAC/I,kBAAkB;IAuBrB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAW7D,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAe9C"}
|