@cloudcli-ai/cloudcli 1.36.3 → 1.37.1
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/dist/assets/index-D3jfzuKN.css +32 -0
- package/dist/assets/index-DTMWjJj8.js +1550 -0
- package/dist/index.html +2 -2
- package/dist-server/server/constants/config.js.map +1 -1
- package/dist-server/server/index.js +73 -1224
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/load-env.js +17 -4
- package/dist-server/server/load-env.js.map +1 -1
- package/dist-server/server/modules/agent/agent.module.js +37 -0
- package/dist-server/server/modules/agent/agent.module.js.map +1 -0
- package/dist-server/server/modules/agent/agent.routes.js +1161 -0
- package/dist-server/server/modules/agent/agent.routes.js.map +1 -0
- package/dist-server/server/modules/agent/index.js +3 -0
- package/dist-server/server/modules/agent/index.js.map +1 -0
- package/dist-server/server/modules/agent/tests/agent.routes.test.js +176 -0
- package/dist-server/server/modules/agent/tests/agent.routes.test.js.map +1 -0
- package/dist-server/server/modules/assets/assets.routes.js +56 -15
- package/dist-server/server/modules/assets/assets.routes.js.map +1 -1
- package/dist-server/server/modules/assets/index.js +2 -2
- package/dist-server/server/modules/assets/index.js.map +1 -1
- package/dist-server/server/modules/assets/services/image-assets.service.js +39 -1
- package/dist-server/server/modules/assets/services/image-assets.service.js.map +1 -1
- package/dist-server/server/modules/assets/tests/image-assets.service.test.js +21 -1
- package/dist-server/server/modules/assets/tests/image-assets.service.test.js.map +1 -1
- package/dist-server/server/{middleware/auth.js → modules/auth/auth.middleware.js} +30 -8
- package/dist-server/server/modules/auth/auth.middleware.js.map +1 -0
- package/dist-server/server/modules/auth/auth.module.js +29 -0
- package/dist-server/server/modules/auth/auth.module.js.map +1 -0
- package/dist-server/server/modules/auth/auth.routes.js +45 -0
- package/dist-server/server/modules/auth/auth.routes.js.map +1 -0
- package/dist-server/server/modules/auth/auth.service.js +113 -0
- package/dist-server/server/modules/auth/auth.service.js.map +1 -0
- package/dist-server/server/modules/auth/index.js +9 -0
- package/dist-server/server/modules/auth/index.js.map +1 -0
- package/dist-server/server/modules/auth/tests/auth.service.test.js +80 -0
- package/dist-server/server/modules/auth/tests/auth.service.test.js.map +1 -0
- package/dist-server/server/{browser-use-mcp.js → modules/browser-use/browser-use-mcp.js} +3 -1
- package/dist-server/server/modules/browser-use/browser-use-mcp.js.map +1 -0
- package/dist-server/server/modules/browser-use/browser-use.service.js +3 -4
- package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -1
- package/dist-server/server/modules/browser-use/index.js +9 -0
- package/dist-server/server/modules/browser-use/index.js.map +1 -0
- package/dist-server/server/modules/cli/cli.js +11 -0
- package/dist-server/server/modules/cli/cli.js.map +1 -0
- package/dist-server/server/modules/cli/cli.module.js +86 -0
- package/dist-server/server/modules/cli/cli.module.js.map +1 -0
- package/dist-server/server/modules/cli/cli.service.js +244 -0
- package/dist-server/server/modules/cli/cli.service.js.map +1 -0
- package/dist-server/server/modules/cli/index.js +3 -0
- package/dist-server/server/modules/cli/index.js.map +1 -0
- package/dist-server/server/modules/cli/sandbox.service.js +332 -0
- package/dist-server/server/modules/cli/sandbox.service.js.map +1 -0
- package/dist-server/server/modules/cli/tests/cli.service.test.js +78 -0
- package/dist-server/server/modules/cli/tests/cli.service.test.js.map +1 -0
- package/dist-server/server/modules/cli/tests/sandbox.service.test.js +55 -0
- package/dist-server/server/modules/cli/tests/sandbox.service.test.js.map +1 -0
- package/dist-server/server/modules/commands/commands.module.js +20 -0
- package/dist-server/server/modules/commands/commands.module.js.map +1 -0
- package/dist-server/server/modules/commands/commands.routes.js +497 -0
- package/dist-server/server/modules/commands/commands.routes.js.map +1 -0
- package/dist-server/server/modules/commands/index.js +3 -0
- package/dist-server/server/modules/commands/index.js.map +1 -0
- package/dist-server/server/modules/commands/tests/commands.test.js +91 -0
- package/dist-server/server/modules/commands/tests/commands.test.js.map +1 -0
- package/dist-server/server/modules/database/index.js +3 -0
- package/dist-server/server/modules/database/index.js.map +1 -1
- package/dist-server/server/modules/database/migrations.js +31 -1
- package/dist-server/server/modules/database/migrations.js.map +1 -1
- package/dist-server/server/modules/database/repositories/provider-models.js +112 -0
- package/dist-server/server/modules/database/repositories/provider-models.js.map +1 -0
- package/dist-server/server/modules/database/repositories/sessions.db.js +76 -7
- package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
- package/dist-server/server/modules/database/schema.js +29 -0
- package/dist-server/server/modules/database/schema.js.map +1 -1
- package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js +102 -0
- package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js.map +1 -0
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +2 -1
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +22 -0
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
- package/dist-server/server/modules/file-tree/file-tree.module.js +95 -0
- package/dist-server/server/modules/file-tree/file-tree.module.js.map +1 -0
- package/dist-server/server/modules/file-tree/file-tree.routes.js +208 -0
- package/dist-server/server/modules/file-tree/file-tree.routes.js.map +1 -0
- package/dist-server/server/modules/file-tree/file-tree.service.js +576 -0
- package/dist-server/server/modules/file-tree/file-tree.service.js.map +1 -0
- package/dist-server/server/modules/file-tree/index.js +3 -0
- package/dist-server/server/modules/file-tree/index.js.map +1 -0
- package/dist-server/server/modules/file-tree/tests/file-tree.routes.test.js +123 -0
- package/dist-server/server/modules/file-tree/tests/file-tree.routes.test.js.map +1 -0
- package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js +260 -0
- package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js.map +1 -0
- package/dist-server/server/modules/git/git-parsing.service.js +61 -0
- package/dist-server/server/modules/git/git-parsing.service.js.map +1 -0
- package/dist-server/server/modules/git/git.module.js +14 -0
- package/dist-server/server/modules/git/git.module.js.map +1 -0
- package/dist-server/server/modules/git/git.routes.js +1339 -0
- package/dist-server/server/modules/git/git.routes.js.map +1 -0
- package/dist-server/server/modules/git/index.js +3 -0
- package/dist-server/server/modules/git/index.js.map +1 -0
- package/dist-server/server/modules/git/tests/git-init.routes.test.js +48 -0
- package/dist-server/server/modules/git/tests/git-init.routes.test.js.map +1 -0
- package/dist-server/server/{routes → modules/git/tests}/git.test.js +1 -1
- package/dist-server/server/modules/git/tests/git.test.js.map +1 -0
- package/dist-server/server/modules/notifications/index.js +15 -1
- package/dist-server/server/modules/notifications/index.js.map +1 -1
- package/dist-server/server/modules/notifications/tests/notification-orchestrator.integration.test.js +44 -0
- package/dist-server/server/modules/notifications/tests/notification-orchestrator.integration.test.js.map +1 -0
- package/dist-server/server/{services/vapid-keys.js → modules/notifications/vapid-keys.service.js} +3 -2
- package/dist-server/server/modules/notifications/vapid-keys.service.js.map +1 -0
- package/dist-server/server/modules/plugins/index.js +9 -0
- package/dist-server/server/modules/plugins/index.js.map +1 -0
- package/dist-server/server/{utils/plugin-process-manager.js → modules/plugins/plugin-process.service.js} +3 -2
- package/dist-server/server/modules/plugins/plugin-process.service.js.map +1 -0
- package/dist-server/server/{utils/plugin-loader.js → modules/plugins/plugin-registry.service.js} +2 -1
- package/dist-server/server/modules/plugins/plugin-registry.service.js.map +1 -0
- package/dist-server/server/modules/plugins/plugins.module.js +30 -0
- package/dist-server/server/modules/plugins/plugins.module.js.map +1 -0
- package/dist-server/server/modules/plugins/plugins.routes.js +70 -0
- package/dist-server/server/modules/plugins/plugins.routes.js.map +1 -0
- package/dist-server/server/modules/plugins/plugins.service.js +123 -0
- package/dist-server/server/modules/plugins/plugins.service.js.map +1 -0
- package/dist-server/server/modules/plugins/tests/plugins.service.test.js +28 -0
- package/dist-server/server/modules/plugins/tests/plugins.service.test.js.map +1 -0
- package/dist-server/server/modules/projects/index.js +5 -0
- package/dist-server/server/modules/projects/index.js.map +1 -1
- package/dist-server/server/modules/providers/index.js +3 -0
- package/dist-server/server/modules/providers/index.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js +6 -0
- package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-models.provider.js +47 -18
- package/dist-server/server/modules/providers/list/claude/claude-models.provider.js.map +1 -1
- package/dist-server/server/{claude-sdk.js → modules/providers/list/claude/claude-runtime.provider.js} +69 -55
- package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js.map +1 -0
- package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js +6 -4
- package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js +23 -4
- package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude.provider.js +2 -0
- package/dist-server/server/modules/providers/list/claude/claude.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +59 -75
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
- package/dist-server/server/{openai-codex.js → modules/providers/list/codex/codex-runtime.provider.js} +48 -34
- package/dist-server/server/modules/providers/list/codex/codex-runtime.provider.js.map +1 -0
- package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +1 -54
- package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +290 -6
- package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-skills.provider.js +5 -0
- package/dist-server/server/modules/providers/list/codex/codex-skills.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex.provider.js +2 -0
- package/dist-server/server/modules/providers/list/codex/codex.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js +33 -673
- package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js.map +1 -1
- package/dist-server/server/{cursor-cli.js → modules/providers/list/cursor/cursor-runtime.provider.js} +40 -28
- package/dist-server/server/modules/providers/list/cursor/cursor-runtime.provider.js.map +1 -0
- package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js +21 -14
- package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor.provider.js +2 -0
- package/dist-server/server/modules/providers/list/cursor/cursor.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +112 -333
- package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js.map +1 -1
- package/dist-server/server/{opencode-cli.js → modules/providers/list/opencode/opencode-runtime.provider.js} +38 -25
- package/dist-server/server/modules/providers/list/opencode/opencode-runtime.provider.js.map +1 -0
- package/dist-server/server/{opencode-cli.test.js → modules/providers/list/opencode/opencode-runtime.provider.test.js} +27 -4
- package/dist-server/server/modules/providers/list/opencode/opencode-runtime.provider.test.js.map +1 -0
- package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js +0 -12
- package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-sessions.provider.js +11 -5
- package/dist-server/server/modules/providers/list/opencode/opencode-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode.provider.js +2 -0
- package/dist-server/server/modules/providers/list/opencode/opencode.provider.js.map +1 -1
- package/dist-server/server/modules/providers/provider.routes.js +169 -37
- package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-capabilities.service.js +5 -1
- package/dist-server/server/modules/providers/services/provider-capabilities.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-models.service.js +247 -184
- package/dist-server/server/modules/providers/services/provider-models.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-runtime.service.js +66 -0
- package/dist-server/server/modules/providers/services/provider-runtime.service.js.map +1 -0
- package/dist-server/server/modules/providers/services/provider-token-usage.service.js +268 -0
- package/dist-server/server/modules/providers/services/provider-token-usage.service.js.map +1 -0
- package/dist-server/server/modules/providers/services/session-conversations-search.service.js +12 -4
- package/dist-server/server/modules/providers/services/session-conversations-search.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/sessions-watcher.service.js +2 -0
- package/dist-server/server/modules/providers/services/sessions-watcher.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/sessions.service.js +116 -3
- package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
- package/dist-server/server/modules/providers/shared/base/abstract.provider.js +2 -3
- package/dist-server/server/modules/providers/shared/base/abstract.provider.js.map +1 -1
- package/dist-server/server/modules/providers/tests/claude-auth.test.js +122 -0
- package/dist-server/server/modules/providers/tests/claude-auth.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-sessions.test.js +44 -0
- package/dist-server/server/modules/providers/tests/claude-sessions.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js +76 -4
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/opencode-models.test.js +15 -126
- package/dist-server/server/modules/providers/tests/opencode-models.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +5 -5
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/{provider-image-history.test.js → provider-attachment-history.test.js} +60 -2
- package/dist-server/server/modules/providers/tests/provider-attachment-history.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/provider-models.service.test.js +241 -271
- package/dist-server/server/modules/providers/tests/provider-models.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/provider-runtime.service.test.js +126 -0
- package/dist-server/server/modules/providers/tests/provider-runtime.service.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js +166 -0
- package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/provider.routes.test.js +126 -0
- package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/sessions-details.test.js +62 -0
- package/dist-server/server/modules/providers/tests/sessions-details.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/sessions.service.test.js +87 -0
- package/dist-server/server/modules/providers/tests/sessions.service.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/skills.test.js +4 -2
- package/dist-server/server/modules/providers/tests/skills.test.js.map +1 -1
- package/dist-server/server/modules/settings/index.js +3 -0
- package/dist-server/server/modules/settings/index.js.map +1 -0
- package/dist-server/server/modules/settings/settings.module.js +35 -0
- package/dist-server/server/modules/settings/settings.module.js.map +1 -0
- package/dist-server/server/modules/settings/settings.routes.js +34 -0
- package/dist-server/server/modules/settings/settings.routes.js.map +1 -0
- package/dist-server/server/modules/settings/settings.service.js +116 -0
- package/dist-server/server/modules/settings/settings.service.js.map +1 -0
- package/dist-server/server/modules/settings/tests/settings.service.test.js +48 -0
- package/dist-server/server/modules/settings/tests/settings.service.test.js.map +1 -0
- package/dist-server/server/modules/system/index.js +3 -0
- package/dist-server/server/modules/system/index.js.map +1 -0
- package/dist-server/server/modules/system/system.module.js +44 -0
- package/dist-server/server/modules/system/system.module.js.map +1 -0
- package/dist-server/server/modules/system/system.routes.js +16 -0
- package/dist-server/server/modules/system/system.routes.js.map +1 -0
- package/dist-server/server/modules/system/system.service.js +45 -0
- package/dist-server/server/modules/system/system.service.js.map +1 -0
- package/dist-server/server/modules/system/tests/system.service.test.js +100 -0
- package/dist-server/server/modules/system/tests/system.service.test.js.map +1 -0
- package/dist-server/server/modules/taskmaster/index.js +3 -0
- package/dist-server/server/modules/taskmaster/index.js.map +1 -0
- package/dist-server/server/modules/taskmaster/taskmaster.module.js +20 -0
- package/dist-server/server/modules/taskmaster/taskmaster.module.js.map +1 -0
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js +1372 -0
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js.map +1 -0
- package/dist-server/server/modules/taskmaster/taskmaster.service.js +107 -0
- package/dist-server/server/modules/taskmaster/taskmaster.service.js.map +1 -0
- package/dist-server/server/modules/taskmaster/tests/taskmaster.routes.test.js +132 -0
- package/dist-server/server/modules/taskmaster/tests/taskmaster.routes.test.js.map +1 -0
- package/dist-server/server/modules/taskmaster/tests/taskmaster.service.test.js +85 -0
- package/dist-server/server/modules/taskmaster/tests/taskmaster.service.test.js.map +1 -0
- package/dist-server/server/modules/user/index.js +3 -0
- package/dist-server/server/modules/user/index.js.map +1 -0
- package/dist-server/server/modules/user/tests/user.service.test.js +53 -0
- package/dist-server/server/modules/user/tests/user.service.test.js.map +1 -0
- package/dist-server/server/modules/user/user.module.js +47 -0
- package/dist-server/server/modules/user/user.module.js.map +1 -0
- package/dist-server/server/modules/user/user.routes.js +44 -0
- package/dist-server/server/modules/user/user.routes.js.map +1 -0
- package/dist-server/server/modules/user/user.service.js +59 -0
- package/dist-server/server/modules/user/user.service.js.map +1 -0
- package/dist-server/server/modules/voice/index.js +3 -0
- package/dist-server/server/modules/voice/index.js.map +1 -0
- package/dist-server/server/modules/voice/tests/voice.service.test.js +86 -0
- package/dist-server/server/modules/voice/tests/voice.service.test.js.map +1 -0
- package/dist-server/server/modules/voice/voice.module.js +44 -0
- package/dist-server/server/modules/voice/voice.module.js.map +1 -0
- package/dist-server/server/modules/voice/voice.routes.js +87 -0
- package/dist-server/server/modules/voice/voice.routes.js.map +1 -0
- package/dist-server/server/modules/voice/voice.service.js +148 -0
- package/dist-server/server/modules/voice/voice.service.js.map +1 -0
- package/dist-server/server/modules/websocket/services/chat-session-writer.service.js +2 -2
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js +44 -29
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js +76 -8
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/websocket-server.service.js +51 -20
- package/dist-server/server/modules/websocket/services/websocket-server.service.js.map +1 -1
- package/dist-server/server/modules/websocket/tests/{chat-image-filter.test.js → chat-attachment-filter.test.js} +10 -3
- package/dist-server/server/modules/websocket/tests/chat-attachment-filter.test.js.map +1 -0
- package/dist-server/server/modules/websocket/tests/shell-websocket.service.test.js +97 -0
- package/dist-server/server/modules/websocket/tests/shell-websocket.service.test.js.map +1 -0
- package/dist-server/server/modules/websocket/tests/websocket-heartbeat.service.test.js +61 -0
- package/dist-server/server/modules/websocket/tests/websocket-heartbeat.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/index.js +3 -0
- package/dist-server/server/modules/worktrees/index.js.map +1 -0
- package/dist-server/server/modules/worktrees/services/worktree-create-and-open.service.js +37 -0
- package/dist-server/server/modules/worktrees/services/worktree-create-and-open.service.js.map +1 -0
- package/dist-server/server/modules/worktrees/services/worktree-create.service.js +67 -0
- package/dist-server/server/modules/worktrees/services/worktree-create.service.js.map +1 -0
- package/dist-server/server/modules/worktrees/services/worktree-git.service.js +172 -0
- package/dist-server/server/modules/worktrees/services/worktree-git.service.js.map +1 -0
- package/dist-server/server/modules/worktrees/services/worktree-list.service.js +91 -0
- package/dist-server/server/modules/worktrees/services/worktree-list.service.js.map +1 -0
- package/dist-server/server/modules/worktrees/services/worktree-merge.service.js +118 -0
- package/dist-server/server/modules/worktrees/services/worktree-merge.service.js.map +1 -0
- package/dist-server/server/modules/worktrees/services/worktree-open.service.js +58 -0
- package/dist-server/server/modules/worktrees/services/worktree-open.service.js.map +1 -0
- package/dist-server/server/modules/worktrees/services/worktree-remove.service.js +65 -0
- package/dist-server/server/modules/worktrees/services/worktree-remove.service.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktree-create-and-open.service.test.js +58 -0
- package/dist-server/server/modules/worktrees/tests/worktree-create-and-open.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktree-create.service.test.js +85 -0
- package/dist-server/server/modules/worktrees/tests/worktree-create.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktree-git.service.test.js +58 -0
- package/dist-server/server/modules/worktrees/tests/worktree-git.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktree-list.service.test.js +34 -0
- package/dist-server/server/modules/worktrees/tests/worktree-list.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktree-merge.service.test.js +137 -0
- package/dist-server/server/modules/worktrees/tests/worktree-merge.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktree-open.service.test.js +99 -0
- package/dist-server/server/modules/worktrees/tests/worktree-open.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktree-remove.service.test.js +157 -0
- package/dist-server/server/modules/worktrees/tests/worktree-remove.service.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/tests/worktrees.routes.test.js +167 -0
- package/dist-server/server/modules/worktrees/tests/worktrees.routes.test.js.map +1 -0
- package/dist-server/server/modules/worktrees/worktrees.module.js +97 -0
- package/dist-server/server/modules/worktrees/worktrees.module.js.map +1 -0
- package/dist-server/server/modules/worktrees/worktrees.routes.js +84 -0
- package/dist-server/server/modules/worktrees/worktrees.routes.js.map +1 -0
- package/dist-server/server/shared/image-attachments.js +90 -17
- package/dist-server/server/shared/image-attachments.js.map +1 -1
- package/dist-server/server/shared/tests/image-attachments.test.js +43 -1
- package/dist-server/server/shared/tests/image-attachments.test.js.map +1 -1
- package/dist-server/server/shared/utils.js +66 -142
- package/dist-server/server/shared/utils.js.map +1 -1
- package/package.json +9 -5
- package/server/index.ts +401 -0
- package/server/{load-env.js → load-env.ts} +18 -5
- package/server/modules/agent/agent.module.ts +51 -0
- package/server/modules/agent/agent.routes.ts +1287 -0
- package/server/modules/agent/index.ts +2 -0
- package/server/modules/agent/tests/agent.routes.test.ts +205 -0
- package/server/modules/assets/assets.routes.ts +63 -16
- package/server/modules/assets/index.ts +2 -2
- package/server/modules/assets/services/image-assets.service.ts +46 -1
- package/server/modules/assets/tests/image-assets.service.test.ts +28 -0
- package/server/{middleware/auth.js → modules/auth/auth.middleware.ts} +38 -7
- package/server/modules/auth/auth.module.ts +38 -0
- package/server/modules/auth/auth.routes.ts +57 -0
- package/server/modules/auth/auth.service.ts +155 -0
- package/server/modules/auth/index.ts +9 -0
- package/server/modules/auth/tests/auth.service.test.ts +95 -0
- package/server/{browser-use-mcp.ts → modules/browser-use/browser-use-mcp.ts} +3 -1
- package/server/modules/browser-use/browser-use.service.ts +3 -4
- package/server/modules/browser-use/index.ts +8 -0
- package/server/modules/cli/cli.module.ts +96 -0
- package/server/modules/cli/cli.service.ts +281 -0
- package/server/modules/cli/cli.ts +13 -0
- package/server/modules/cli/index.ts +2 -0
- package/server/modules/cli/sandbox.service.ts +413 -0
- package/server/modules/cli/tests/cli.service.test.ts +91 -0
- package/server/modules/cli/tests/sandbox.service.test.ts +61 -0
- package/server/modules/commands/commands.module.ts +22 -0
- package/server/{routes/commands.js → modules/commands/commands.routes.ts} +46 -38
- package/server/modules/commands/index.ts +2 -0
- package/server/modules/commands/tests/commands.test.ts +114 -0
- package/server/modules/database/index.ts +3 -0
- package/server/modules/database/migrations.ts +35 -0
- package/server/modules/database/repositories/provider-models.ts +168 -0
- package/server/modules/database/repositories/sessions.db.ts +103 -8
- package/server/modules/database/schema.ts +30 -0
- package/server/modules/database/tests/provider-models.db.integration.test.ts +125 -0
- package/server/modules/database/tests/sessions-provider-mapping.test.ts +2 -1
- package/server/modules/database/tests/sessions.db.integration.test.ts +32 -0
- package/server/modules/file-tree/file-tree.module.ts +116 -0
- package/server/modules/file-tree/file-tree.routes.ts +258 -0
- package/server/modules/file-tree/file-tree.service.ts +664 -0
- package/server/modules/file-tree/index.ts +2 -0
- package/server/modules/file-tree/tests/file-tree.routes.test.ts +157 -0
- package/server/modules/file-tree/tests/file-tree.service.test.ts +317 -0
- package/server/modules/git/git-parsing.service.ts +66 -0
- package/server/modules/git/git.module.ts +22 -0
- package/server/{routes/git.js → modules/git/git.routes.ts} +91 -132
- package/server/modules/git/index.ts +2 -0
- package/server/modules/git/tests/git-init.routes.test.ts +52 -0
- package/server/{routes/git.test.js → modules/git/tests/git.test.ts} +3 -3
- package/server/modules/notifications/index.ts +9 -0
- package/server/modules/notifications/tests/notification-orchestrator.integration.test.ts +55 -0
- package/server/{services/vapid-keys.js → modules/notifications/vapid-keys.service.ts} +3 -1
- package/server/modules/plugins/index.ts +9 -0
- package/server/{utils/plugin-process-manager.js → modules/plugins/plugin-process.service.ts} +3 -1
- package/server/{utils/plugin-loader.js → modules/plugins/plugin-registry.service.ts} +1 -0
- package/server/modules/plugins/plugins.module.ts +33 -0
- package/server/modules/plugins/plugins.routes.ts +66 -0
- package/server/modules/plugins/plugins.service.ts +147 -0
- package/server/modules/plugins/tests/plugins.service.test.ts +32 -0
- package/server/modules/projects/index.ts +5 -0
- package/server/modules/providers/README.md +41 -9
- package/server/modules/providers/index.ts +4 -0
- package/server/modules/providers/list/claude/claude-auth.provider.ts +8 -0
- package/server/modules/providers/list/claude/claude-models.provider.ts +47 -26
- package/server/{claude-sdk.js → modules/providers/list/claude/claude-runtime.provider.js} +73 -59
- package/server/modules/providers/list/claude/claude-session-synchronizer.provider.ts +6 -4
- package/server/modules/providers/list/claude/claude-sessions.provider.ts +27 -4
- package/server/modules/providers/list/claude/claude.provider.ts +3 -0
- package/server/modules/providers/list/codex/codex-models.provider.ts +58 -108
- package/server/{openai-codex.js → modules/providers/list/codex/codex-runtime.provider.js} +54 -36
- package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +1 -60
- package/server/modules/providers/list/codex/codex-sessions.provider.ts +331 -7
- package/server/modules/providers/list/codex/codex-skills.provider.ts +5 -0
- package/server/modules/providers/list/codex/codex.provider.ts +3 -0
- package/server/modules/providers/list/cursor/cursor-models.provider.ts +32 -719
- package/server/{cursor-cli.js → modules/providers/list/cursor/cursor-runtime.provider.js} +58 -27
- package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +26 -15
- package/server/modules/providers/list/cursor/cursor.provider.ts +3 -0
- package/server/modules/providers/list/opencode/opencode-models.provider.ts +112 -423
- package/server/{opencode-cli.js → modules/providers/list/opencode/opencode-runtime.provider.js} +56 -28
- package/server/{opencode-cli.test.js → modules/providers/list/opencode/opencode-runtime.provider.test.js} +41 -3
- package/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.ts +0 -13
- package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +13 -5
- package/server/modules/providers/list/opencode/opencode.provider.ts +3 -0
- package/server/modules/providers/provider.routes.ts +228 -39
- package/server/modules/providers/services/provider-capabilities.service.ts +7 -1
- package/server/modules/providers/services/provider-models.service.ts +312 -269
- package/server/modules/providers/services/provider-runtime.service.ts +108 -0
- package/server/modules/providers/services/provider-token-usage.service.ts +357 -0
- package/server/modules/providers/services/session-conversations-search.service.ts +12 -4
- package/server/modules/providers/services/sessions-watcher.service.ts +2 -0
- package/server/modules/providers/services/sessions.service.ts +166 -3
- package/server/modules/providers/shared/base/abstract.provider.ts +4 -3
- package/server/modules/providers/tests/claude-auth.test.ts +150 -0
- package/server/modules/providers/tests/claude-sessions.test.ts +61 -0
- package/server/modules/providers/tests/codex-sessions.test.ts +83 -4
- package/server/modules/providers/tests/opencode-models.test.ts +34 -135
- package/server/modules/providers/tests/opencode-sessions.test.ts +5 -5
- package/server/modules/providers/tests/{provider-image-history.test.ts → provider-attachment-history.test.ts} +68 -1
- package/server/modules/providers/tests/provider-models.service.test.ts +300 -296
- package/server/modules/providers/tests/provider-runtime.service.test.ts +138 -0
- package/server/modules/providers/tests/provider-token-usage.service.test.ts +186 -0
- package/server/modules/providers/tests/provider.routes.test.ts +183 -0
- package/server/modules/providers/tests/sessions-details.test.ts +73 -0
- package/server/modules/providers/tests/sessions.service.test.ts +127 -0
- package/server/modules/providers/tests/skills.test.ts +9 -2
- package/server/modules/settings/index.ts +2 -0
- package/server/modules/settings/settings.module.ts +50 -0
- package/server/modules/settings/settings.routes.ts +51 -0
- package/server/modules/settings/settings.service.ts +186 -0
- package/server/modules/settings/tests/settings.service.test.ts +54 -0
- package/server/modules/system/index.ts +2 -0
- package/server/modules/system/system.module.ts +62 -0
- package/server/modules/system/system.routes.ts +21 -0
- package/server/modules/system/system.service.ts +76 -0
- package/server/modules/system/tests/system.service.test.ts +118 -0
- package/server/modules/taskmaster/index.ts +2 -0
- package/server/modules/taskmaster/taskmaster.module.ts +24 -0
- package/server/modules/taskmaster/taskmaster.routes.ts +1482 -0
- package/server/modules/taskmaster/taskmaster.service.ts +132 -0
- package/server/modules/taskmaster/tests/taskmaster.routes.test.ts +144 -0
- package/server/modules/taskmaster/tests/taskmaster.service.test.ts +97 -0
- package/server/modules/user/index.ts +2 -0
- package/server/modules/user/tests/user.service.test.ts +61 -0
- package/server/modules/user/user.module.ts +58 -0
- package/server/modules/user/user.routes.ts +50 -0
- package/server/modules/user/user.service.ts +85 -0
- package/server/modules/voice/index.ts +2 -0
- package/server/modules/voice/tests/voice.service.test.ts +98 -0
- package/server/modules/voice/voice.module.ts +47 -0
- package/server/modules/voice/voice.routes.ts +113 -0
- package/server/modules/voice/voice.service.ts +192 -0
- package/server/modules/websocket/README.md +7 -7
- package/server/modules/websocket/services/chat-session-writer.service.ts +2 -2
- package/server/modules/websocket/services/chat-websocket.service.ts +77 -61
- package/server/modules/websocket/services/shell-websocket.service.ts +88 -12
- package/server/modules/websocket/services/websocket-server.service.ts +63 -19
- package/server/modules/websocket/tests/{chat-image-filter.test.ts → chat-attachment-filter.test.ts} +17 -2
- package/server/modules/websocket/tests/shell-websocket.service.test.ts +119 -0
- package/server/modules/websocket/tests/websocket-heartbeat.service.test.ts +78 -0
- package/server/modules/worktrees/index.ts +2 -0
- package/server/modules/worktrees/services/worktree-create-and-open.service.ts +53 -0
- package/server/modules/worktrees/services/worktree-create.service.ts +104 -0
- package/server/modules/worktrees/services/worktree-git.service.ts +207 -0
- package/server/modules/worktrees/services/worktree-list.service.ts +143 -0
- package/server/modules/worktrees/services/worktree-merge.service.ts +157 -0
- package/server/modules/worktrees/services/worktree-open.service.ts +85 -0
- package/server/modules/worktrees/services/worktree-remove.service.ts +88 -0
- package/server/modules/worktrees/tests/worktree-create-and-open.service.test.ts +68 -0
- package/server/modules/worktrees/tests/worktree-create.service.test.ts +142 -0
- package/server/modules/worktrees/tests/worktree-git.service.test.ts +84 -0
- package/server/modules/worktrees/tests/worktree-list.service.test.ts +45 -0
- package/server/modules/worktrees/tests/worktree-merge.service.test.ts +213 -0
- package/server/modules/worktrees/tests/worktree-open.service.test.ts +122 -0
- package/server/modules/worktrees/tests/worktree-remove.service.test.ts +227 -0
- package/server/modules/worktrees/tests/worktrees.routes.test.ts +199 -0
- package/server/modules/worktrees/worktrees.module.ts +113 -0
- package/server/modules/worktrees/worktrees.routes.ts +116 -0
- package/server/shared/image-attachments.ts +112 -18
- package/server/shared/interfaces.ts +33 -25
- package/server/shared/tests/image-attachments.test.ts +55 -0
- package/server/shared/types.ts +685 -36
- package/server/shared/utils.ts +77 -212
- package/dist/assets/index-CcCsKitq.js +0 -1423
- package/dist/assets/index-DLmhQ15L.css +0 -32
- package/dist-server/server/browser-use-mcp.js.map +0 -1
- package/dist-server/server/claude-sdk.js.map +0 -1
- package/dist-server/server/cli.js +0 -647
- package/dist-server/server/cli.js.map +0 -1
- package/dist-server/server/cursor-cli.js.map +0 -1
- package/dist-server/server/middleware/auth.js.map +0 -1
- package/dist-server/server/modules/providers/tests/provider-image-history.test.js.map +0 -1
- package/dist-server/server/modules/websocket/tests/chat-image-filter.test.js.map +0 -1
- package/dist-server/server/openai-codex.js.map +0 -1
- package/dist-server/server/opencode-cli.js.map +0 -1
- package/dist-server/server/opencode-cli.test.js.map +0 -1
- package/dist-server/server/routes/agent.js +0 -1155
- package/dist-server/server/routes/agent.js.map +0 -1
- package/dist-server/server/routes/auth.js +0 -119
- package/dist-server/server/routes/auth.js.map +0 -1
- package/dist-server/server/routes/commands.js +0 -492
- package/dist-server/server/routes/commands.js.map +0 -1
- package/dist-server/server/routes/cursor.js +0 -49
- package/dist-server/server/routes/cursor.js.map +0 -1
- package/dist-server/server/routes/git.js +0 -1389
- package/dist-server/server/routes/git.js.map +0 -1
- package/dist-server/server/routes/git.test.js.map +0 -1
- package/dist-server/server/routes/mcp-utils.js +0 -29
- package/dist-server/server/routes/mcp-utils.js.map +0 -1
- package/dist-server/server/routes/plugins.js +0 -266
- package/dist-server/server/routes/plugins.js.map +0 -1
- package/dist-server/server/routes/settings.js +0 -249
- package/dist-server/server/routes/settings.js.map +0 -1
- package/dist-server/server/routes/taskmaster.js +0 -1362
- package/dist-server/server/routes/taskmaster.js.map +0 -1
- package/dist-server/server/routes/tests/commands.test.js +0 -76
- package/dist-server/server/routes/tests/commands.test.js.map +0 -1
- package/dist-server/server/routes/user.js +0 -116
- package/dist-server/server/routes/user.js.map +0 -1
- package/dist-server/server/services/notification-orchestrator.js +0 -2
- package/dist-server/server/services/notification-orchestrator.js.map +0 -1
- package/dist-server/server/services/tests/notification-orchestrator.test.js +0 -64
- package/dist-server/server/services/tests/notification-orchestrator.test.js.map +0 -1
- package/dist-server/server/services/vapid-keys.js.map +0 -1
- package/dist-server/server/utils/colors.js +0 -20
- package/dist-server/server/utils/colors.js.map +0 -1
- package/dist-server/server/utils/commandParser.js +0 -255
- package/dist-server/server/utils/commandParser.js.map +0 -1
- package/dist-server/server/utils/gitConfig.js +0 -37
- package/dist-server/server/utils/gitConfig.js.map +0 -1
- package/dist-server/server/utils/mcp-detector.js +0 -134
- package/dist-server/server/utils/mcp-detector.js.map +0 -1
- package/dist-server/server/utils/plugin-loader.js.map +0 -1
- package/dist-server/server/utils/plugin-process-manager.js.map +0 -1
- package/dist-server/server/utils/runtime-paths.js +0 -30
- package/dist-server/server/utils/runtime-paths.js.map +0 -1
- package/dist-server/server/utils/taskmaster-websocket.js +0 -124
- package/dist-server/server/utils/taskmaster-websocket.js.map +0 -1
- package/dist-server/server/utils/url-detection.js +0 -58
- package/dist-server/server/utils/url-detection.js.map +0 -1
- package/dist-server/server/voice-proxy.js +0 -226
- package/dist-server/server/voice-proxy.js.map +0 -1
- package/server/cli.js +0 -695
- package/server/index.js +0 -1651
- package/server/routes/agent.js +0 -1257
- package/server/routes/auth.js +0 -137
- package/server/routes/cursor.js +0 -52
- package/server/routes/mcp-utils.js +0 -31
- package/server/routes/plugins.js +0 -307
- package/server/routes/settings.js +0 -282
- package/server/routes/taskmaster.js +0 -1470
- package/server/routes/tests/commands.test.js +0 -82
- package/server/routes/user.js +0 -124
- package/server/services/notification-orchestrator.js +0 -7
- package/server/services/tests/notification-orchestrator.test.js +0 -80
- package/server/utils/colors.js +0 -21
- package/server/utils/commandParser.js +0 -305
- package/server/utils/gitConfig.js +0 -35
- package/server/utils/mcp-detector.js +0 -147
- package/server/utils/runtime-paths.js +0 -37
- package/server/utils/taskmaster-websocket.js +0 -135
- package/server/utils/url-detection.js +0 -71
- package/server/voice-proxy.js +0 -224
- /package/server/constants/{config.js → config.ts} +0 -0
|
@@ -2,12 +2,61 @@ import { readFile } from 'node:fs/promises';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import TOML from '@iarna/toml';
|
|
5
|
-
import { buildDefaultProviderCurrentActiveModel, readObjectRecord, readOptionalString,
|
|
6
|
-
|
|
5
|
+
import { buildDefaultProviderCurrentActiveModel, readObjectRecord, readOptionalString, } from '../../../../shared/utils.js';
|
|
6
|
+
/** Curated Codex catalog shipped as immutable CloudCLI defaults. */
|
|
7
|
+
export const CODEX_PREDEFINED_MODELS = {
|
|
7
8
|
OPTIONS: [
|
|
9
|
+
{
|
|
10
|
+
value: 'gpt-5.6-sol',
|
|
11
|
+
label: 'GPT-5.6 Sol',
|
|
12
|
+
description: 'Latest frontier agentic coding model.',
|
|
13
|
+
effort: {
|
|
14
|
+
default: 'low',
|
|
15
|
+
values: [
|
|
16
|
+
{ value: 'low' },
|
|
17
|
+
{ value: 'medium' },
|
|
18
|
+
{ value: 'high' },
|
|
19
|
+
{ value: 'xhigh' },
|
|
20
|
+
{ value: 'max' },
|
|
21
|
+
{ value: 'ultra' },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
value: 'gpt-5.6-terra',
|
|
27
|
+
label: 'GPT-5.6 Terra',
|
|
28
|
+
description: 'Balanced agentic coding model for everyday work.',
|
|
29
|
+
effort: {
|
|
30
|
+
default: 'medium',
|
|
31
|
+
values: [
|
|
32
|
+
{ value: 'low' },
|
|
33
|
+
{ value: 'medium' },
|
|
34
|
+
{ value: 'high' },
|
|
35
|
+
{ value: 'xhigh' },
|
|
36
|
+
{ value: 'max' },
|
|
37
|
+
{ value: 'ultra' },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
value: 'gpt-5.6-luna',
|
|
43
|
+
label: 'GPT-5.6 Luna',
|
|
44
|
+
description: 'Fast and affordable agentic coding model.',
|
|
45
|
+
effort: {
|
|
46
|
+
default: 'medium',
|
|
47
|
+
values: [
|
|
48
|
+
{ value: 'low' },
|
|
49
|
+
{ value: 'medium' },
|
|
50
|
+
{ value: 'high' },
|
|
51
|
+
{ value: 'xhigh' },
|
|
52
|
+
{ value: 'max' },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
8
56
|
{
|
|
9
57
|
value: 'gpt-5.5',
|
|
10
|
-
label: '
|
|
58
|
+
label: 'GPT-5.5',
|
|
59
|
+
description: 'Frontier model for complex coding, research, and real-world work.',
|
|
11
60
|
effort: {
|
|
12
61
|
default: 'medium',
|
|
13
62
|
values: [{ value: 'low' }, { value: 'medium' }, { value: 'high' }, { value: 'xhigh' }],
|
|
@@ -15,7 +64,8 @@ export const CODEX_FALLBACK_MODELS = {
|
|
|
15
64
|
},
|
|
16
65
|
{
|
|
17
66
|
value: 'gpt-5.4',
|
|
18
|
-
label: '
|
|
67
|
+
label: 'GPT-5.4',
|
|
68
|
+
description: 'Strong model for everyday coding.',
|
|
19
69
|
effort: {
|
|
20
70
|
default: 'medium',
|
|
21
71
|
values: [{ value: 'low' }, { value: 'medium' }, { value: 'high' }, { value: 'xhigh' }],
|
|
@@ -23,84 +73,21 @@ export const CODEX_FALLBACK_MODELS = {
|
|
|
23
73
|
},
|
|
24
74
|
{
|
|
25
75
|
value: 'gpt-5.4-mini',
|
|
26
|
-
label: '
|
|
76
|
+
label: 'GPT-5.4 Mini',
|
|
77
|
+
description: 'Small, fast, and cost-efficient model for simpler coding tasks.',
|
|
27
78
|
effort: {
|
|
28
79
|
default: 'medium',
|
|
29
80
|
values: [{ value: 'low' }, { value: 'medium' }, { value: 'high' }, { value: 'xhigh' }],
|
|
30
81
|
},
|
|
31
82
|
},
|
|
32
83
|
],
|
|
33
|
-
DEFAULT: 'gpt-5.
|
|
84
|
+
DEFAULT: 'gpt-5.6-sol',
|
|
34
85
|
};
|
|
35
|
-
const CODEX_MODELS_CACHE_PATH = path.join(os.homedir(), '.codex', 'models_cache.json');
|
|
36
86
|
const CODEX_CONFIG_PATH = path.join(os.homedir(), '.codex', 'config.toml');
|
|
37
|
-
|
|
38
|
-
const record = readObjectRecord(value);
|
|
39
|
-
return Boolean(record && readOptionalString(record.slug));
|
|
40
|
-
};
|
|
41
|
-
const readCodexPriority = (value) => (typeof value === 'number' && Number.isFinite(value) ? value : Number.MAX_SAFE_INTEGER);
|
|
42
|
-
const mapCodexModel = (model) => {
|
|
43
|
-
const effortValues = Array.isArray(model.supported_reasoning_levels)
|
|
44
|
-
? model.supported_reasoning_levels
|
|
45
|
-
.map((level) => {
|
|
46
|
-
const value = readOptionalString(level?.effort);
|
|
47
|
-
if (!value) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
value,
|
|
52
|
-
description: readOptionalString(level?.description),
|
|
53
|
-
};
|
|
54
|
-
})
|
|
55
|
-
.filter((level) => Boolean(level))
|
|
56
|
-
: [];
|
|
57
|
-
return {
|
|
58
|
-
value: model.slug,
|
|
59
|
-
label: readOptionalString(model.display_name) ?? model.slug,
|
|
60
|
-
description: readOptionalString(model.description),
|
|
61
|
-
effort: effortValues.length > 0
|
|
62
|
-
? {
|
|
63
|
-
default: readOptionalString(model.default_reasoning_level) ?? undefined,
|
|
64
|
-
values: effortValues,
|
|
65
|
-
}
|
|
66
|
-
: undefined,
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
const buildCodexModelsDefinition = (models) => {
|
|
70
|
-
const sortedModels = [...models]
|
|
71
|
-
.filter((model) => model.visibility === 'list' && model.supported_in_api !== false)
|
|
72
|
-
.sort((left, right) => readCodexPriority(left.priority) - readCodexPriority(right.priority));
|
|
73
|
-
const options = [];
|
|
74
|
-
const seenValues = new Set();
|
|
75
|
-
for (const model of sortedModels) {
|
|
76
|
-
const mappedModel = mapCodexModel(model);
|
|
77
|
-
if (seenValues.has(mappedModel.value)) {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
seenValues.add(mappedModel.value);
|
|
81
|
-
options.push(mappedModel);
|
|
82
|
-
}
|
|
83
|
-
if (options.length === 0) {
|
|
84
|
-
return CODEX_FALLBACK_MODELS;
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
OPTIONS: options,
|
|
88
|
-
DEFAULT: options[0]?.value ?? CODEX_FALLBACK_MODELS.DEFAULT,
|
|
89
|
-
};
|
|
90
|
-
};
|
|
87
|
+
/** Provider registry model adapter for Codex predefined models and active config. */
|
|
91
88
|
export class CodexProviderModels {
|
|
92
89
|
async getSupportedModels() {
|
|
93
|
-
|
|
94
|
-
const raw = await readFile(CODEX_MODELS_CACHE_PATH, 'utf8');
|
|
95
|
-
const parsed = readObjectRecord(JSON.parse(raw));
|
|
96
|
-
const models = Array.isArray(parsed?.models)
|
|
97
|
-
? parsed.models.filter(isCodexCachedModel)
|
|
98
|
-
: [];
|
|
99
|
-
return buildCodexModelsDefinition(models);
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
return CODEX_FALLBACK_MODELS;
|
|
103
|
-
}
|
|
90
|
+
return CODEX_PREDEFINED_MODELS;
|
|
104
91
|
}
|
|
105
92
|
async getCurrentActiveModel() {
|
|
106
93
|
try {
|
|
@@ -118,8 +105,5 @@ export class CodexProviderModels {
|
|
|
118
105
|
return buildDefaultProviderCurrentActiveModel(await this.getSupportedModels());
|
|
119
106
|
}
|
|
120
107
|
}
|
|
121
|
-
async changeActiveModel(input) {
|
|
122
|
-
return writeProviderSessionActiveModelChange('codex', input);
|
|
123
|
-
}
|
|
124
108
|
}
|
|
125
109
|
//# sourceMappingURL=codex-models.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-models.provider.js","sourceRoot":"","sources":["../../../../../../server/modules/providers/list/codex/codex-models.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,IAAI,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-models.provider.js","sourceRoot":"","sources":["../../../../../../server/modules/providers/list/codex/codex-models.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,22 +3,19 @@
|
|
|
3
3
|
* =============================
|
|
4
4
|
*
|
|
5
5
|
* This module provides integration with the OpenAI Codex SDK for non-interactive
|
|
6
|
-
* chat sessions. It mirrors the
|
|
6
|
+
* chat sessions. It mirrors the Claude runtime adapter for consistency.
|
|
7
7
|
*
|
|
8
8
|
* ## Usage
|
|
9
9
|
*
|
|
10
|
-
* -
|
|
10
|
+
* - codexRuntime.run(command, options, writer, context) - Execute a streamed prompt
|
|
11
11
|
* - abortCodexSession(sessionId) - Cancel an active session
|
|
12
12
|
* - isCodexSessionActive(sessionId) - Check if a session is running
|
|
13
13
|
* - getActiveCodexSessions() - List all active sessions
|
|
14
14
|
*/
|
|
15
15
|
import { Codex } from '@openai/codex-sdk';
|
|
16
|
-
import { buildCodexInputItems, normalizeImageDescriptors } from '
|
|
17
|
-
import { notifyRunFailed, notifyRunStopped } from '
|
|
18
|
-
import {
|
|
19
|
-
import { providerAuthService } from './modules/providers/services/provider-auth.service.js';
|
|
20
|
-
import { providerModelsService } from './modules/providers/services/provider-models.service.js';
|
|
21
|
-
import { createCompleteMessage, createNormalizedMessage } from './shared/utils.js';
|
|
16
|
+
import { appendFilesInputTag, buildCodexInputItems, normalizeImageDescriptors } from '../../../../shared/image-attachments.js';
|
|
17
|
+
import { notifyRunFailed, notifyRunStopped } from '../../../../modules/notifications/index.js';
|
|
18
|
+
import { createCompleteMessage, createNormalizedMessage } from '../../../../shared/utils.js';
|
|
22
19
|
const activeCodexSessions = new Map();
|
|
23
20
|
function readUsageNumber(value) {
|
|
24
21
|
const parsed = Number(value);
|
|
@@ -197,12 +194,15 @@ function mapPermissionModeToCodexOptions(permissionMode) {
|
|
|
197
194
|
* @param {object} options - Options including cwd, sessionId, model, permissionMode
|
|
198
195
|
* @param {WebSocket|object} ws - WebSocket connection or response writer
|
|
199
196
|
*/
|
|
200
|
-
export async function queryCodex(command, options = {}, ws) {
|
|
201
|
-
const { sessionId, sessionSummary, cwd, projectPath, model, effort, images, permissionMode = 'default' } = options;
|
|
202
|
-
|
|
197
|
+
export async function queryCodex(command, options = {}, ws, context) {
|
|
198
|
+
const { sessionId, sessionSummary, cwd, projectPath, model, effort, images, files, permissionMode = 'default' } = options;
|
|
199
|
+
// Callers pass the stable app session id; the SDK resumes threads with the
|
|
200
|
+
// provider-native id recorded on the session row.
|
|
201
|
+
const providerSessionId = context.resolveProviderSessionId(sessionId);
|
|
202
|
+
const resolvedModel = await context.resolveResumeModel(sessionId, model);
|
|
203
203
|
const workingDirectory = cwd || projectPath || process.cwd();
|
|
204
204
|
const { sandboxMode, approvalPolicy } = mapPermissionModeToCodexOptions(permissionMode);
|
|
205
|
-
const catalog =
|
|
205
|
+
const catalog = await context.getProviderModels();
|
|
206
206
|
const selectedModel = catalog.OPTIONS.find((option) => option.value === resolvedModel) || null;
|
|
207
207
|
const allowedEfforts = selectedModel?.effort?.values?.map((value) => value.value) || [];
|
|
208
208
|
const resolvedEffort = typeof effort === 'string' && effort !== 'default' && allowedEfforts.includes(effort)
|
|
@@ -210,10 +210,15 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
210
210
|
: undefined;
|
|
211
211
|
let codex;
|
|
212
212
|
let thread;
|
|
213
|
-
|
|
213
|
+
// Provider-native thread id (starts as the resume id, or is captured from
|
|
214
|
+
// the stream for brand-new sessions).
|
|
215
|
+
let capturedSessionId = providerSessionId;
|
|
214
216
|
let sessionCreatedSent = false;
|
|
215
217
|
let terminalFailure = null;
|
|
216
218
|
const abortController = new AbortController();
|
|
219
|
+
// Session-map key: the app session id when the caller supplied one, else
|
|
220
|
+
// the provider-native thread id once captured (legacy/direct API callers).
|
|
221
|
+
const sessionKey = () => sessionId || capturedSessionId || null;
|
|
217
222
|
try {
|
|
218
223
|
codex = new Codex();
|
|
219
224
|
const threadOptions = {
|
|
@@ -224,8 +229,8 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
224
229
|
model: resolvedModel,
|
|
225
230
|
modelReasoningEffort: resolvedEffort,
|
|
226
231
|
};
|
|
227
|
-
if (
|
|
228
|
-
thread = codex.resumeThread(
|
|
232
|
+
if (providerSessionId) {
|
|
233
|
+
thread = codex.resumeThread(providerSessionId, threadOptions);
|
|
229
234
|
}
|
|
230
235
|
else {
|
|
231
236
|
thread = codex.startThread(threadOptions);
|
|
@@ -242,14 +247,15 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
242
247
|
startedAt: new Date().toISOString()
|
|
243
248
|
});
|
|
244
249
|
};
|
|
245
|
-
if (
|
|
246
|
-
registerSession(
|
|
250
|
+
if (sessionKey()) {
|
|
251
|
+
registerSession(sessionKey());
|
|
247
252
|
}
|
|
248
253
|
// Execute with streaming. Turns with image attachments send structured
|
|
249
254
|
// input items so Codex reads the images from their local asset paths.
|
|
255
|
+
const promptWithFiles = appendFilesInputTag(command, files);
|
|
250
256
|
const turnInput = normalizeImageDescriptors(images).length > 0
|
|
251
|
-
? buildCodexInputItems(
|
|
252
|
-
:
|
|
257
|
+
? buildCodexInputItems(promptWithFiles, images, workingDirectory)
|
|
258
|
+
: promptWithFiles;
|
|
253
259
|
const streamedTurn = await thread.runStreamed(turnInput, {
|
|
254
260
|
signal: abortController.signal
|
|
255
261
|
});
|
|
@@ -259,11 +265,11 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
259
265
|
const discoveredSessionId = event.thread_id || event.id || null;
|
|
260
266
|
if (discoveredSessionId && !capturedSessionId) {
|
|
261
267
|
capturedSessionId = discoveredSessionId;
|
|
262
|
-
registerSession(
|
|
268
|
+
registerSession(sessionKey());
|
|
263
269
|
if (ws.setSessionId && typeof ws.setSessionId === 'function') {
|
|
264
270
|
ws.setSessionId(capturedSessionId);
|
|
265
271
|
}
|
|
266
|
-
if (!
|
|
272
|
+
if (!providerSessionId && !sessionCreatedSent) {
|
|
267
273
|
sessionCreatedSent = true;
|
|
268
274
|
sendMessage(ws, createNormalizedMessage({ kind: 'session_created', newSessionId: capturedSessionId, sessionId: capturedSessionId, provider: 'codex' }));
|
|
269
275
|
}
|
|
@@ -273,8 +279,8 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
273
279
|
if (abortController.signal.aborted) {
|
|
274
280
|
break;
|
|
275
281
|
}
|
|
276
|
-
if (
|
|
277
|
-
const session = activeCodexSessions.get(
|
|
282
|
+
if (sessionKey()) {
|
|
283
|
+
const session = activeCodexSessions.get(sessionKey());
|
|
278
284
|
if (session?.status === 'aborted') {
|
|
279
285
|
break;
|
|
280
286
|
}
|
|
@@ -284,16 +290,17 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
284
290
|
}
|
|
285
291
|
const transformed = transformCodexEvent(event);
|
|
286
292
|
// Normalize the transformed event into NormalizedMessage(s) via adapter
|
|
287
|
-
const normalizedMsgs =
|
|
293
|
+
const normalizedMsgs = context.normalizeMessage(transformed, capturedSessionId || sessionId || null);
|
|
288
294
|
for (const msg of normalizedMsgs) {
|
|
289
295
|
sendMessage(ws, msg);
|
|
290
296
|
}
|
|
291
297
|
if (event.type === 'turn.failed' && !terminalFailure) {
|
|
292
298
|
terminalFailure = event.error || new Error('Turn failed');
|
|
299
|
+
// Notifications are app-facing, so they carry the app session id.
|
|
293
300
|
notifyRunFailed({
|
|
294
301
|
userId: ws?.userId || null,
|
|
295
302
|
provider: 'codex',
|
|
296
|
-
sessionId:
|
|
303
|
+
sessionId: sessionId || capturedSessionId || null,
|
|
297
304
|
sessionName: sessionSummary,
|
|
298
305
|
error: terminalFailure
|
|
299
306
|
});
|
|
@@ -308,7 +315,7 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
308
315
|
}
|
|
309
316
|
// Send the terminal completion event — skipped for aborted runs, whose
|
|
310
317
|
// terminal `complete` (aborted: true) was already sent by abort-session.
|
|
311
|
-
const runSession =
|
|
318
|
+
const runSession = sessionKey() ? activeCodexSessions.get(sessionKey()) : null;
|
|
312
319
|
const runAborted = runSession?.status === 'aborted' || abortController.signal.aborted;
|
|
313
320
|
if (!runAborted) {
|
|
314
321
|
sendMessage(ws, createCompleteMessage({
|
|
@@ -321,7 +328,7 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
321
328
|
notifyRunStopped({
|
|
322
329
|
userId: ws?.userId || null,
|
|
323
330
|
provider: 'codex',
|
|
324
|
-
sessionId:
|
|
331
|
+
sessionId: sessionId || capturedSessionId || null,
|
|
325
332
|
sessionName: sessionSummary,
|
|
326
333
|
stopReason: 'completed'
|
|
327
334
|
});
|
|
@@ -329,14 +336,14 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
329
336
|
}
|
|
330
337
|
}
|
|
331
338
|
catch (error) {
|
|
332
|
-
const session =
|
|
339
|
+
const session = sessionKey() ? activeCodexSessions.get(sessionKey()) : null;
|
|
333
340
|
const wasAborted = session?.status === 'aborted' ||
|
|
334
341
|
error?.name === 'AbortError' ||
|
|
335
342
|
String(error?.message || '').toLowerCase().includes('aborted');
|
|
336
343
|
if (!wasAborted) {
|
|
337
344
|
console.error('[Codex] Error:', error);
|
|
338
345
|
// Check if Codex SDK is available for a clearer error message
|
|
339
|
-
const installed = await
|
|
346
|
+
const installed = await context.isProviderInstalled();
|
|
340
347
|
const errorContent = !installed
|
|
341
348
|
? 'Codex CLI is not configured. Please set up authentication first.'
|
|
342
349
|
: error.message;
|
|
@@ -350,7 +357,7 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
350
357
|
notifyRunFailed({
|
|
351
358
|
userId: ws?.userId || null,
|
|
352
359
|
provider: 'codex',
|
|
353
|
-
sessionId:
|
|
360
|
+
sessionId: sessionId || capturedSessionId || null,
|
|
354
361
|
sessionName: sessionSummary,
|
|
355
362
|
error
|
|
356
363
|
});
|
|
@@ -359,8 +366,8 @@ export async function queryCodex(command, options = {}, ws) {
|
|
|
359
366
|
}
|
|
360
367
|
finally {
|
|
361
368
|
// Update session status
|
|
362
|
-
if (
|
|
363
|
-
const session = activeCodexSessions.get(
|
|
369
|
+
if (sessionKey()) {
|
|
370
|
+
const session = activeCodexSessions.get(sessionKey());
|
|
364
371
|
if (session) {
|
|
365
372
|
session.status = session.status === 'aborted' ? 'aborted' : 'completed';
|
|
366
373
|
}
|
|
@@ -412,6 +419,10 @@ export function getActiveCodexSessions() {
|
|
|
412
419
|
}
|
|
413
420
|
return sessions;
|
|
414
421
|
}
|
|
422
|
+
export const codexRuntime = {
|
|
423
|
+
run: queryCodex,
|
|
424
|
+
abort: abortCodexSession,
|
|
425
|
+
};
|
|
415
426
|
/**
|
|
416
427
|
* Helper to send message via WebSocket or writer
|
|
417
428
|
* @param {WebSocket|object} ws - WebSocket or response writer
|
|
@@ -433,7 +444,7 @@ function sendMessage(ws, data) {
|
|
|
433
444
|
}
|
|
434
445
|
}
|
|
435
446
|
// Clean up old completed sessions periodically
|
|
436
|
-
setInterval(() => {
|
|
447
|
+
const completedSessionCleanupTimer = setInterval(() => {
|
|
437
448
|
const now = Date.now();
|
|
438
449
|
const maxAge = 30 * 60 * 1000; // 30 minutes
|
|
439
450
|
for (const [id, session] of activeCodexSessions.entries()) {
|
|
@@ -445,4 +456,7 @@ setInterval(() => {
|
|
|
445
456
|
}
|
|
446
457
|
}
|
|
447
458
|
}, 5 * 60 * 1000); // Every 5 minutes
|
|
448
|
-
|
|
459
|
+
// Runtime cleanup should not keep focused tests or one-off scripts alive after
|
|
460
|
+
// their provider work has completed.
|
|
461
|
+
completedSessionCleanupTimer.unref?.();
|
|
462
|
+
//# sourceMappingURL=codex-runtime.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-runtime.provider.js","sourceRoot":"","sources":["../../../../../../server/modules/providers/list/codex/codex-runtime.provider.js"],"names":[],"mappings":"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"}
|
package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js
CHANGED
|
@@ -82,21 +82,7 @@ export class CodexSessionSynchronizer {
|
|
|
82
82
|
sessionName: normalizeSessionName(existingSessionName, 'Untitled Codex Session'),
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
// app-allocated session_id mapped to the provider id. For these we title the
|
|
87
|
-
// conversation from the first user message the user typed, instead of the
|
|
88
|
-
// generic "Untitled Codex Session" placeholder. Sessions discovered purely
|
|
89
|
-
// by indexing (session_id === provider_session_id) keep the existing
|
|
90
|
-
// thread_name/last-agent-message setup below.
|
|
91
|
-
const isAppCreated = existingSession != null &&
|
|
92
|
-
existingSession.provider_session_id != null &&
|
|
93
|
-
existingSession.session_id !== existingSession.provider_session_id;
|
|
94
|
-
let sessionName = isAppCreated
|
|
95
|
-
? await this.extractFirstUserMessageFromStart(filePath)
|
|
96
|
-
: undefined;
|
|
97
|
-
if (!sessionName) {
|
|
98
|
-
sessionName = nameMap.get(parsed.sessionId);
|
|
99
|
-
}
|
|
85
|
+
let sessionName = nameMap.get(parsed.sessionId);
|
|
100
86
|
if (!sessionName) {
|
|
101
87
|
sessionName = await this.extractLastAgentMessageFromEnd(filePath);
|
|
102
88
|
}
|
|
@@ -122,45 +108,6 @@ export class CodexSessionSynchronizer {
|
|
|
122
108
|
const source = payload.source;
|
|
123
109
|
return typeof source === 'object' && source !== null && 'subagent' in source;
|
|
124
110
|
}
|
|
125
|
-
/**
|
|
126
|
-
* Returns the first user message text in a Codex transcript, used to title
|
|
127
|
-
* app-created sessions from the prompt the user sent from cloudcli.
|
|
128
|
-
*
|
|
129
|
-
* Reads the `event_msg`/`user_message` payload rather than the raw
|
|
130
|
-
* `response_item` user turn so injected `<environment_context>` boilerplate is
|
|
131
|
-
* never mistaken for the user's prompt.
|
|
132
|
-
*/
|
|
133
|
-
async extractFirstUserMessageFromStart(filePath) {
|
|
134
|
-
try {
|
|
135
|
-
const content = await readFile(filePath, 'utf8');
|
|
136
|
-
const lines = content.split(/\r?\n/);
|
|
137
|
-
for (const rawLine of lines) {
|
|
138
|
-
const line = rawLine.trim();
|
|
139
|
-
if (!line) {
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
let parsed;
|
|
143
|
-
try {
|
|
144
|
-
parsed = JSON.parse(line);
|
|
145
|
-
}
|
|
146
|
-
catch {
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
const data = parsed;
|
|
150
|
-
const eventType = typeof data.type === 'string' ? data.type : undefined;
|
|
151
|
-
const payload = data.payload;
|
|
152
|
-
const payloadType = typeof payload?.type === 'string' ? payload.type : undefined;
|
|
153
|
-
const message = typeof payload?.message === 'string' ? payload.message : undefined;
|
|
154
|
-
if (eventType === 'event_msg' && payloadType === 'user_message' && message?.trim()) {
|
|
155
|
-
return message;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
catch {
|
|
160
|
-
// Ignore missing/unreadable files so sync can continue.
|
|
161
|
-
}
|
|
162
|
-
return undefined;
|
|
163
|
-
}
|
|
164
111
|
async extractLastAgentMessageFromEnd(filePath) {
|
|
165
112
|
try {
|
|
166
113
|
const content = await readFile(filePath, 'utf8');
|
package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-session-synchronizer.provider.js","sourceRoot":"","sources":["../../../../../../server/modules/providers/list/codex/codex-session-synchronizer.provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex-session-synchronizer.provider.js","sourceRoot":"","sources":["../../../../../../server/modules/providers/list/codex/codex-session-synchronizer.provider.ts"],"names":[],"mappings":"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"}
|