tarsk 0.4.4 → 0.4.6
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/index.js +447375 -37
- package/package.json +2 -2
- package/dist/agent/agent.error-utils.d.ts +0 -14
- package/dist/agent/agent.error-utils.js +0 -52
- package/dist/agent/agent.event-transformer.d.ts +0 -55
- package/dist/agent/agent.event-transformer.js +0 -175
- package/dist/agent/agent.executor.d.ts +0 -26
- package/dist/agent/agent.executor.js +0 -286
- package/dist/agent/agent.model-resolver.d.ts +0 -22
- package/dist/agent/agent.model-resolver.js +0 -67
- package/dist/agent/agent.process-manager.d.ts +0 -57
- package/dist/agent/agent.process-manager.js +0 -262
- package/dist/agent/agent.processing-state-manager.d.ts +0 -74
- package/dist/agent/agent.processing-state-manager.js +0 -87
- package/dist/agent/agent.prompt-loader.d.ts +0 -16
- package/dist/agent/agent.prompt-loader.js +0 -227
- package/dist/agent/agent.subagent-executor.d.ts +0 -35
- package/dist/agent/agent.subagent-executor.js +0 -135
- package/dist/bun/index.d.ts +0 -2
- package/dist/bun/index.js +0 -165
- package/dist/cli.d.ts +0 -3
- package/dist/cli.js +0 -22
- package/dist/core/crypto.d.ts +0 -29
- package/dist/core/crypto.js +0 -166
- package/dist/core/dev-server-cache.d.ts +0 -46
- package/dist/core/dev-server-cache.js +0 -59
- package/dist/core/env-manager.d.ts +0 -3
- package/dist/core/env-manager.js +0 -60
- package/dist/core/error-responses.d.ts +0 -61
- package/dist/core/error-responses.js +0 -64
- package/dist/core/logger.d.ts +0 -10
- package/dist/core/logger.js +0 -47
- package/dist/core/paths.d.ts +0 -22
- package/dist/core/paths.js +0 -26
- package/dist/core/random-words.d.ts +0 -18
- package/dist/core/random-words.js +0 -135
- package/dist/core/response-builder.d.ts +0 -50
- package/dist/core/response-builder.js +0 -56
- package/dist/core/route-helpers.d.ts +0 -47
- package/dist/core/route-helpers.js +0 -54
- package/dist/core/run-command-detector.d.ts +0 -26
- package/dist/core/run-command-detector.js +0 -98
- package/dist/core/stream-helper.d.ts +0 -44
- package/dist/core/stream-helper.js +0 -50
- package/dist/core/utils.d.ts +0 -43
- package/dist/core/utils.js +0 -113
- package/dist/core/validation.d.ts +0 -10
- package/dist/core/validation.js +0 -20
- package/dist/database/database.d.ts +0 -40
- package/dist/database/database.encryption.d.ts +0 -33
- package/dist/database/database.encryption.js +0 -62
- package/dist/database/database.js +0 -480
- package/dist/database/database.state.d.ts +0 -52
- package/dist/database/database.state.js +0 -119
- package/dist/database/database.test-utils.d.ts +0 -22
- package/dist/database/database.test-utils.js +0 -39
- package/dist/database/database.types.d.ts +0 -3
- package/dist/database/database.types.js +0 -2
- package/dist/features/agents/agents.manager.d.ts +0 -24
- package/dist/features/agents/agents.manager.js +0 -200
- package/dist/features/ask-user/ask-user.routes.d.ts +0 -9
- package/dist/features/ask-user/ask-user.routes.js +0 -35
- package/dist/features/chat/chat-delete.route.d.ts +0 -15
- package/dist/features/chat/chat-delete.route.js +0 -36
- package/dist/features/chat/chat-post.route.d.ts +0 -11
- package/dist/features/chat/chat-post.route.js +0 -270
- package/dist/features/chat/chat-stop.route.d.ts +0 -21
- package/dist/features/chat/chat-stop.route.js +0 -22
- package/dist/features/chat/chat-subscribe.route.d.ts +0 -9
- package/dist/features/chat/chat-subscribe.route.js +0 -71
- package/dist/features/chat/chat.routes.d.ts +0 -22
- package/dist/features/chat/chat.routes.js +0 -29
- package/dist/features/conversations/conversations-delete.route.d.ts +0 -16
- package/dist/features/conversations/conversations-delete.route.js +0 -34
- package/dist/features/conversations/conversations-get-all.route.d.ts +0 -16
- package/dist/features/conversations/conversations-get-all.route.js +0 -39
- package/dist/features/conversations/conversations-get-by-id.route.d.ts +0 -16
- package/dist/features/conversations/conversations-get-by-id.route.js +0 -38
- package/dist/features/conversations/conversations-get-deleted.route.d.ts +0 -15
- package/dist/features/conversations/conversations-get-deleted.route.js +0 -34
- package/dist/features/conversations/conversations-get-messages.route.d.ts +0 -16
- package/dist/features/conversations/conversations-get-messages.route.js +0 -49
- package/dist/features/conversations/conversations.content.d.ts +0 -28
- package/dist/features/conversations/conversations.content.js +0 -142
- package/dist/features/conversations/conversations.database.d.ts +0 -108
- package/dist/features/conversations/conversations.database.js +0 -373
- package/dist/features/conversations/conversations.manager.d.ts +0 -130
- package/dist/features/conversations/conversations.manager.js +0 -162
- package/dist/features/conversations/conversations.routes.d.ts +0 -21
- package/dist/features/conversations/conversations.routes.js +0 -38
- package/dist/features/conversations/token-usage.route.d.ts +0 -41
- package/dist/features/conversations/token-usage.route.js +0 -419
- package/dist/features/git/git-commit.route.d.ts +0 -12
- package/dist/features/git/git-commit.route.js +0 -39
- package/dist/features/git/git-create-branch.route.d.ts +0 -28
- package/dist/features/git/git-create-branch.route.js +0 -119
- package/dist/features/git/git-create-pr.route.d.ts +0 -13
- package/dist/features/git/git-create-pr.route.js +0 -50
- package/dist/features/git/git-create-repo.route.d.ts +0 -14
- package/dist/features/git/git-create-repo.route.js +0 -108
- package/dist/features/git/git-diff.route.d.ts +0 -30
- package/dist/features/git/git-diff.route.js +0 -189
- package/dist/features/git/git-fetch.route.d.ts +0 -12
- package/dist/features/git/git-fetch.route.js +0 -31
- package/dist/features/git/git-generate-commit-message.route.d.ts +0 -12
- package/dist/features/git/git-generate-commit-message.route.js +0 -76
- package/dist/features/git/git-generate-pr-info.route.d.ts +0 -13
- package/dist/features/git/git-generate-pr-info.route.js +0 -147
- package/dist/features/git/git-github-status.route.d.ts +0 -16
- package/dist/features/git/git-github-status.route.js +0 -68
- package/dist/features/git/git-log.route.d.ts +0 -17
- package/dist/features/git/git-log.route.js +0 -33
- package/dist/features/git/git-pr-status.route.d.ts +0 -15
- package/dist/features/git/git-pr-status.route.js +0 -33
- package/dist/features/git/git-pull.route.d.ts +0 -12
- package/dist/features/git/git-pull.route.js +0 -35
- package/dist/features/git/git-push.route.d.ts +0 -12
- package/dist/features/git/git-push.route.js +0 -46
- package/dist/features/git/git-status-cache.database.d.ts +0 -7
- package/dist/features/git/git-status-cache.database.js +0 -53
- package/dist/features/git/git-status.route.d.ts +0 -15
- package/dist/features/git/git-status.route.js +0 -62
- package/dist/features/git/git-sync-branch.route.d.ts +0 -4
- package/dist/features/git/git-sync-branch.route.js +0 -208
- package/dist/features/git/git-unified-status.route.d.ts +0 -30
- package/dist/features/git/git-unified-status.route.js +0 -165
- package/dist/features/git/git-username.route.d.ts +0 -3
- package/dist/features/git/git-username.route.js +0 -24
- package/dist/features/git/git.manager.d.ts +0 -139
- package/dist/features/git/git.manager.js +0 -352
- package/dist/features/git/git.routes.d.ts +0 -4
- package/dist/features/git/git.routes.js +0 -116
- package/dist/features/git/git.utils.d.ts +0 -82
- package/dist/features/git/git.utils.js +0 -1040
- package/dist/features/mcp/mcp.config.d.ts +0 -27
- package/dist/features/mcp/mcp.config.js +0 -148
- package/dist/features/mcp/mcp.manager.d.ts +0 -61
- package/dist/features/mcp/mcp.manager.js +0 -254
- package/dist/features/mcp/mcp.popular.json +0 -103
- package/dist/features/mcp/mcp.routes.d.ts +0 -13
- package/dist/features/mcp/mcp.routes.js +0 -159
- package/dist/features/mcp/mcp.types.d.ts +0 -80
- package/dist/features/mcp/mcp.types.js +0 -8
- package/dist/features/metadata/metadata.manager.d.ts +0 -126
- package/dist/features/metadata/metadata.manager.js +0 -423
- package/dist/features/models/model-info-aihubmix.d.ts +0 -25
- package/dist/features/models/model-info-aihubmix.js +0 -117
- package/dist/features/models/model-info-openrouter.d.ts +0 -25
- package/dist/features/models/model-info-openrouter.js +0 -104
- package/dist/features/models/model-info.d.ts +0 -37
- package/dist/features/models/model-info.js +0 -39
- package/dist/features/models/models-catalog.d.ts +0 -49
- package/dist/features/models/models-catalog.js +0 -80
- package/dist/features/models/models-catalog.route.d.ts +0 -43
- package/dist/features/models/models-catalog.route.js +0 -15
- package/dist/features/models/models-get-available.route.d.ts +0 -36
- package/dist/features/models/models-get-available.route.js +0 -66
- package/dist/features/models/models-get-enabled.route.d.ts +0 -33
- package/dist/features/models/models-get-enabled.route.js +0 -45
- package/dist/features/models/models-get-model-info.route.d.ts +0 -31
- package/dist/features/models/models-get-model-info.route.js +0 -84
- package/dist/features/models/models-model-disable.route.d.ts +0 -15
- package/dist/features/models/models-model-disable.route.js +0 -20
- package/dist/features/models/models-model-enable.route.d.ts +0 -13
- package/dist/features/models/models-model-enable.route.js +0 -20
- package/dist/features/models/models-provider-refresh.route.d.ts +0 -17
- package/dist/features/models/models-provider-refresh.route.js +0 -20
- package/dist/features/models/models.manager.d.ts +0 -58
- package/dist/features/models/models.manager.js +0 -138
- package/dist/features/models/models.routes.d.ts +0 -18
- package/dist/features/models/models.routes.js +0 -83
- package/dist/features/models/open-router-models.d.ts +0 -38
- package/dist/features/models/open-router-models.js +0 -73
- package/dist/features/models/openai-models.d.ts +0 -63
- package/dist/features/models/openai-models.js +0 -150
- package/dist/features/onboarding/onboarding-get-git-check.route.d.ts +0 -11
- package/dist/features/onboarding/onboarding-get-git-check.route.js +0 -28
- package/dist/features/onboarding/onboarding-get-status.route.d.ts +0 -12
- package/dist/features/onboarding/onboarding-get-status.route.js +0 -15
- package/dist/features/onboarding/onboarding-post-complete.route.d.ts +0 -12
- package/dist/features/onboarding/onboarding-post-complete.route.js +0 -15
- package/dist/features/onboarding/onboarding-post-reset.route.d.ts +0 -12
- package/dist/features/onboarding/onboarding-post-reset.route.js +0 -15
- package/dist/features/onboarding/onboarding.routes.d.ts +0 -18
- package/dist/features/onboarding/onboarding.routes.js +0 -28
- package/dist/features/project-todos/project-todos.database.d.ts +0 -38
- package/dist/features/project-todos/project-todos.database.js +0 -91
- package/dist/features/project-todos/project-todos.routes.d.ts +0 -4
- package/dist/features/project-todos/project-todos.routes.js +0 -94
- package/dist/features/projects/projects-ai-files.route.d.ts +0 -148
- package/dist/features/projects/projects-ai-files.route.js +0 -425
- package/dist/features/projects/projects-commands.route.d.ts +0 -27
- package/dist/features/projects/projects-commands.route.js +0 -39
- package/dist/features/projects/projects-create.route.d.ts +0 -19
- package/dist/features/projects/projects-create.route.js +0 -37
- package/dist/features/projects/projects-delete.route.d.ts +0 -24
- package/dist/features/projects/projects-delete.route.js +0 -34
- package/dist/features/projects/projects-get.route.d.ts +0 -47
- package/dist/features/projects/projects-get.route.js +0 -36
- package/dist/features/projects/projects-list.route.d.ts +0 -58
- package/dist/features/projects/projects-list.route.js +0 -59
- package/dist/features/projects/projects-open-folder.route.d.ts +0 -10
- package/dist/features/projects/projects-open-folder.route.js +0 -11
- package/dist/features/projects/projects-open.route.d.ts +0 -26
- package/dist/features/projects/projects-open.route.js +0 -49
- package/dist/features/projects/projects-package-scripts.route.d.ts +0 -15
- package/dist/features/projects/projects-package-scripts.route.js +0 -96
- package/dist/features/projects/projects-run-command.route.d.ts +0 -8
- package/dist/features/projects/projects-run-command.route.js +0 -21
- package/dist/features/projects/projects-run.route.d.ts +0 -51
- package/dist/features/projects/projects-run.route.js +0 -74
- package/dist/features/projects/projects-update.route.d.ts +0 -24
- package/dist/features/projects/projects-update.route.js +0 -81
- package/dist/features/projects/projects.creator.d.ts +0 -33
- package/dist/features/projects/projects.creator.js +0 -555
- package/dist/features/projects/projects.database.d.ts +0 -61
- package/dist/features/projects/projects.database.js +0 -212
- package/dist/features/projects/projects.manager.d.ts +0 -291
- package/dist/features/projects/projects.manager.js +0 -426
- package/dist/features/projects/projects.open-with.d.ts +0 -27
- package/dist/features/projects/projects.open-with.js +0 -156
- package/dist/features/projects/projects.routes.d.ts +0 -20
- package/dist/features/projects/projects.routes.js +0 -255
- package/dist/features/projects/terminal-session-manager.d.ts +0 -55
- package/dist/features/projects/terminal-session-manager.js +0 -90
- package/dist/features/providers/provider-resolver.d.ts +0 -13
- package/dist/features/providers/provider-resolver.js +0 -22
- package/dist/features/providers/providers-get-credits.route.d.ts +0 -15
- package/dist/features/providers/providers-get-credits.route.js +0 -51
- package/dist/features/providers/providers-get.route.d.ts +0 -16
- package/dist/features/providers/providers-get.route.js +0 -32
- package/dist/features/providers/providers-open-external.route.d.ts +0 -15
- package/dist/features/providers/providers-open-external.route.js +0 -49
- package/dist/features/providers/providers-post-bulk-keys.route.d.ts +0 -14
- package/dist/features/providers/providers-post-bulk-keys.route.js +0 -31
- package/dist/features/providers/providers-post-keys.route.d.ts +0 -14
- package/dist/features/providers/providers-post-keys.route.js +0 -25
- package/dist/features/providers/providers.routes.d.ts +0 -19
- package/dist/features/providers/providers.routes.js +0 -31
- package/dist/features/rules/rules-post.route.d.ts +0 -43
- package/dist/features/rules/rules-post.route.js +0 -89
- package/dist/features/rules/rules.manager.d.ts +0 -36
- package/dist/features/rules/rules.manager.js +0 -203
- package/dist/features/rules/rules.routes.d.ts +0 -12
- package/dist/features/rules/rules.routes.js +0 -13
- package/dist/features/run/run-get-running.route.d.ts +0 -15
- package/dist/features/run/run-get-running.route.js +0 -21
- package/dist/features/run/run-post-start.route.d.ts +0 -8
- package/dist/features/run/run-post-start.route.js +0 -21
- package/dist/features/run/run-post-stop.route.d.ts +0 -15
- package/dist/features/run/run-post-stop.route.js +0 -24
- package/dist/features/run/run-post-suggest.route.d.ts +0 -15
- package/dist/features/run/run-post-suggest.route.js +0 -21
- package/dist/features/run/run-put-command.route.d.ts +0 -15
- package/dist/features/run/run-put-command.route.js +0 -24
- package/dist/features/run/run.routes.d.ts +0 -19
- package/dist/features/run/run.routes.js +0 -31
- package/dist/features/scaffold/index.d.ts +0 -7
- package/dist/features/scaffold/index.js +0 -5
- package/dist/features/scaffold/scaffold-get-templates.route.d.ts +0 -27
- package/dist/features/scaffold/scaffold-get-templates.route.js +0 -17
- package/dist/features/scaffold/scaffold-post.route.d.ts +0 -8
- package/dist/features/scaffold/scaffold-post.route.js +0 -30
- package/dist/features/scaffold/scaffold.routes.d.ts +0 -10
- package/dist/features/scaffold/scaffold.routes.js +0 -16
- package/dist/features/scaffold/scaffold.runner.d.ts +0 -48
- package/dist/features/scaffold/scaffold.runner.js +0 -475
- package/dist/features/scaffold/scaffold.types.d.ts +0 -26
- package/dist/features/scaffold/scaffold.types.js +0 -5
- package/dist/features/skills/skills.activation.d.ts +0 -31
- package/dist/features/skills/skills.activation.js +0 -155
- package/dist/features/skills/skills.manager.d.ts +0 -35
- package/dist/features/skills/skills.manager.js +0 -251
- package/dist/features/slash-commands/slash-commands-delete.route.d.ts +0 -23
- package/dist/features/slash-commands/slash-commands-delete.route.js +0 -36
- package/dist/features/slash-commands/slash-commands-get.route.d.ts +0 -53
- package/dist/features/slash-commands/slash-commands-get.route.js +0 -54
- package/dist/features/slash-commands/slash-commands-post.route.d.ts +0 -39
- package/dist/features/slash-commands/slash-commands-post.route.js +0 -70
- package/dist/features/slash-commands/slash-commands-put.route.d.ts +0 -23
- package/dist/features/slash-commands/slash-commands-put.route.js +0 -36
- package/dist/features/slash-commands/slash-commands.manager.d.ts +0 -46
- package/dist/features/slash-commands/slash-commands.manager.js +0 -265
- package/dist/features/slash-commands/slash-commands.routes.d.ts +0 -13
- package/dist/features/slash-commands/slash-commands.routes.js +0 -20
- package/dist/features/threads/threads-ai-files.route.d.ts +0 -153
- package/dist/features/threads/threads-ai-files.route.js +0 -287
- package/dist/features/threads/threads-conversation-folder-path.route.d.ts +0 -14
- package/dist/features/threads/threads-conversation-folder-path.route.js +0 -23
- package/dist/features/threads/threads-create.route.d.ts +0 -22
- package/dist/features/threads/threads-create.route.js +0 -60
- package/dist/features/threads/threads-delete.route.d.ts +0 -25
- package/dist/features/threads/threads-delete.route.js +0 -35
- package/dist/features/threads/threads-files.route.d.ts +0 -15
- package/dist/features/threads/threads-files.route.js +0 -20
- package/dist/features/threads/threads-fix-comments.route.d.ts +0 -26
- package/dist/features/threads/threads-fix-comments.route.js +0 -45
- package/dist/features/threads/threads-get.route.d.ts +0 -30
- package/dist/features/threads/threads-get.route.js +0 -38
- package/dist/features/threads/threads-list.route.d.ts +0 -56
- package/dist/features/threads/threads-list.route.js +0 -58
- package/dist/features/threads/threads-messages.route.d.ts +0 -28
- package/dist/features/threads/threads-messages.route.js +0 -110
- package/dist/features/threads/threads-open.route.d.ts +0 -26
- package/dist/features/threads/threads-open.route.js +0 -62
- package/dist/features/threads/threads-select.route.d.ts +0 -25
- package/dist/features/threads/threads-select.route.js +0 -35
- package/dist/features/threads/threads-update.route.d.ts +0 -15
- package/dist/features/threads/threads-update.route.js +0 -30
- package/dist/features/threads/threads.database.d.ts +0 -68
- package/dist/features/threads/threads.database.js +0 -215
- package/dist/features/threads/threads.manager.d.ts +0 -204
- package/dist/features/threads/threads.manager.js +0 -505
- package/dist/features/threads/threads.routes.d.ts +0 -20
- package/dist/features/threads/threads.routes.js +0 -230
- package/dist/features/todos/todos.database.d.ts +0 -14
- package/dist/features/todos/todos.database.js +0 -31
- package/dist/features/updates/updates.routes.d.ts +0 -13
- package/dist/features/updates/updates.routes.js +0 -40
- package/dist/index.d.ts +0 -3
- package/dist/project-analyzer.d.ts +0 -26
- package/dist/project-analyzer.js +0 -307
- package/dist/server.d.ts +0 -12
- package/dist/server.js +0 -142
- package/dist/tools/agent-tool.d.ts +0 -49
- package/dist/tools/agent-tool.js +0 -131
- package/dist/tools/ask-user.d.ts +0 -25
- package/dist/tools/ask-user.js +0 -74
- package/dist/tools/ast-grep.d.ts +0 -28
- package/dist/tools/ast-grep.js +0 -273
- package/dist/tools/bash.d.ts +0 -33
- package/dist/tools/bash.js +0 -186
- package/dist/tools/edit-diff.d.ts +0 -24
- package/dist/tools/edit-diff.js +0 -136
- package/dist/tools/edit.d.ts +0 -28
- package/dist/tools/edit.js +0 -78
- package/dist/tools/find.d.ts +0 -31
- package/dist/tools/find.js +0 -117
- package/dist/tools/grep.d.ts +0 -37
- package/dist/tools/grep.js +0 -231
- package/dist/tools/index.d.ts +0 -93
- package/dist/tools/index.js +0 -110
- package/dist/tools/ls.d.ts +0 -31
- package/dist/tools/ls.js +0 -108
- package/dist/tools/mcp-tools.d.ts +0 -31
- package/dist/tools/mcp-tools.js +0 -59
- package/dist/tools/path-utils.d.ts +0 -14
- package/dist/tools/path-utils.js +0 -87
- package/dist/tools/read.d.ts +0 -27
- package/dist/tools/read.js +0 -86
- package/dist/tools/resolve-bin.d.ts +0 -5
- package/dist/tools/resolve-bin.js +0 -28
- package/dist/tools/shell.d.ts +0 -7
- package/dist/tools/shell.js +0 -143
- package/dist/tools/skill-reference-tool.d.ts +0 -30
- package/dist/tools/skill-reference-tool.js +0 -171
- package/dist/tools/skill-tool.d.ts +0 -33
- package/dist/tools/skill-tool.js +0 -213
- package/dist/tools/todo.d.ts +0 -20
- package/dist/tools/todo.js +0 -168
- package/dist/tools/tool-helpers.d.ts +0 -78
- package/dist/tools/tool-helpers.js +0 -109
- package/dist/tools/truncate.d.ts +0 -31
- package/dist/tools/truncate.js +0 -164
- package/dist/tools/write.d.ts +0 -21
- package/dist/tools/write.js +0 -65
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model info and pricing by provider
|
|
3
|
-
*
|
|
4
|
-
* Fetches model information (name, description, pricing) for the list of
|
|
5
|
-
* supported models. OpenRouter and AIHubMix pricing are loaded from their APIs.
|
|
6
|
-
*
|
|
7
|
-
* OpenRouter API: https://openrouter.ai/docs/api/api-reference/models/get-models
|
|
8
|
-
* AIHubMix API: https://docs.aihubmix.com/api/models
|
|
9
|
-
*/
|
|
10
|
-
export interface ModelInfoPricing {
|
|
11
|
-
/** Cost per token in USD (input/prompt) */
|
|
12
|
-
prompt: number;
|
|
13
|
-
/** Cost per token in USD (output/completion) */
|
|
14
|
-
completion: number;
|
|
15
|
-
}
|
|
16
|
-
export interface ModelInfo {
|
|
17
|
-
/** Pricing is omitted when unknown */
|
|
18
|
-
pricing?: ModelInfoPricing;
|
|
19
|
-
name?: string;
|
|
20
|
-
description?: string;
|
|
21
|
-
supportedParameters?: {
|
|
22
|
-
tools?: boolean;
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Fetch model info and pricing for a provider.
|
|
27
|
-
* - OpenRouter: calls GET https://openrouter.ai/api/v1/models and maps pricing for supported model IDs (requires apiKey).
|
|
28
|
-
* - AIHubMix: calls GET https://aihubmix.com/api/v1/models and maps pricing for supported model IDs (requires apiKey).
|
|
29
|
-
* - Other providers: returns empty info for each model ID.
|
|
30
|
-
*
|
|
31
|
-
* @param provider - Provider id (e.g. "openrouter", "aihubmix")
|
|
32
|
-
* @param modelIds - List of supported model IDs to return info for
|
|
33
|
-
* @param apiKey - Optional API key; required for OpenRouter and AIHubMix
|
|
34
|
-
* @returns Map of model ID -> ModelInfo (pricing, optional name/description)
|
|
35
|
-
*/
|
|
36
|
-
export declare function getModelInfoForProvider(provider: string, modelIds: string[], apiKey?: string): Promise<Map<string, ModelInfo>>;
|
|
37
|
-
//# sourceMappingURL=model-info.d.ts.map
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model info and pricing by provider
|
|
3
|
-
*
|
|
4
|
-
* Fetches model information (name, description, pricing) for the list of
|
|
5
|
-
* supported models. OpenRouter and AIHubMix pricing are loaded from their APIs.
|
|
6
|
-
*
|
|
7
|
-
* OpenRouter API: https://openrouter.ai/docs/api/api-reference/models/get-models
|
|
8
|
-
* AIHubMix API: https://docs.aihubmix.com/api/models
|
|
9
|
-
*/
|
|
10
|
-
import { getOpenRouterModelInfo } from "./model-info-openrouter.js";
|
|
11
|
-
import { getAIHubMixModelInfo } from "./model-info-aihubmix.js";
|
|
12
|
-
/**
|
|
13
|
-
* Fetch model info and pricing for a provider.
|
|
14
|
-
* - OpenRouter: calls GET https://openrouter.ai/api/v1/models and maps pricing for supported model IDs (requires apiKey).
|
|
15
|
-
* - AIHubMix: calls GET https://aihubmix.com/api/v1/models and maps pricing for supported model IDs (requires apiKey).
|
|
16
|
-
* - Other providers: returns empty info for each model ID.
|
|
17
|
-
*
|
|
18
|
-
* @param provider - Provider id (e.g. "openrouter", "aihubmix")
|
|
19
|
-
* @param modelIds - List of supported model IDs to return info for
|
|
20
|
-
* @param apiKey - Optional API key; required for OpenRouter and AIHubMix
|
|
21
|
-
* @returns Map of model ID -> ModelInfo (pricing, optional name/description)
|
|
22
|
-
*/
|
|
23
|
-
export async function getModelInfoForProvider(provider, modelIds, apiKey) {
|
|
24
|
-
const result = new Map();
|
|
25
|
-
const emptyInfo = () => ({});
|
|
26
|
-
const providerLower = provider.toLowerCase();
|
|
27
|
-
if (providerLower === "openrouter" && apiKey && apiKey.trim().length > 0) {
|
|
28
|
-
return getOpenRouterModelInfo(modelIds, apiKey);
|
|
29
|
-
}
|
|
30
|
-
if (providerLower === "aihubmix" && apiKey && apiKey.trim().length > 0) {
|
|
31
|
-
return getAIHubMixModelInfo(modelIds, apiKey);
|
|
32
|
-
}
|
|
33
|
-
// Other providers: pricing unknown (to be filled later)
|
|
34
|
-
for (const id of modelIds) {
|
|
35
|
-
result.set(id, emptyInfo());
|
|
36
|
-
}
|
|
37
|
-
return result;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=model-info.js.map
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export interface CatalogModelCost {
|
|
2
|
-
input: number;
|
|
3
|
-
output: number;
|
|
4
|
-
}
|
|
5
|
-
export interface CatalogModelLimit {
|
|
6
|
-
context: number;
|
|
7
|
-
output: number;
|
|
8
|
-
}
|
|
9
|
-
export interface CatalogModel {
|
|
10
|
-
id: string;
|
|
11
|
-
name: string;
|
|
12
|
-
family: string;
|
|
13
|
-
attachment: boolean;
|
|
14
|
-
reasoning: boolean;
|
|
15
|
-
tool_call: boolean;
|
|
16
|
-
release_date: string;
|
|
17
|
-
last_updated: string;
|
|
18
|
-
modalities: {
|
|
19
|
-
input: string[];
|
|
20
|
-
output: string[];
|
|
21
|
-
};
|
|
22
|
-
open_weights: boolean;
|
|
23
|
-
cost: CatalogModelCost;
|
|
24
|
-
limit: CatalogModelLimit;
|
|
25
|
-
tarsk_use?: string[];
|
|
26
|
-
coding_index?: number;
|
|
27
|
-
}
|
|
28
|
-
export interface CatalogProvider {
|
|
29
|
-
id: string;
|
|
30
|
-
env: string[];
|
|
31
|
-
npm: string;
|
|
32
|
-
api: string;
|
|
33
|
-
name: string;
|
|
34
|
-
doc: string;
|
|
35
|
-
models: Record<string, CatalogModel>;
|
|
36
|
-
}
|
|
37
|
-
export type ModelsCatalog = Record<string, CatalogProvider>;
|
|
38
|
-
/**
|
|
39
|
-
* Get the models catalog using stale-while-revalidate pattern.
|
|
40
|
-
* - If cache is fresh (< 15 min): returns cached data
|
|
41
|
-
* - If cache is stale (>= 15 min): returns cached data, revalidates in background
|
|
42
|
-
* - If no cache: fetches synchronously, caches, returns
|
|
43
|
-
*/
|
|
44
|
-
export declare function getModelsCatalog(): Promise<ModelsCatalog | null>;
|
|
45
|
-
/**
|
|
46
|
-
* Get a specific provider from the catalog
|
|
47
|
-
*/
|
|
48
|
-
export declare function getCatalogProvider(providerId: string): Promise<CatalogProvider | null>;
|
|
49
|
-
//# sourceMappingURL=models-catalog.d.ts.map
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { getDatabase } from "../../database/database.js";
|
|
2
|
-
import { getState, setState } from "../../database/database.state.js";
|
|
3
|
-
const CATALOG_URL = "http://models.tarsk.io/models.json";
|
|
4
|
-
const CACHE_TTL_MS = 15 * 60 * 1000; // 15 minutes
|
|
5
|
-
const STATE_KEY_CATALOG = "modelsCatalog";
|
|
6
|
-
const STATE_KEY_TIMESTAMP = "modelsCatalogTimestamp";
|
|
7
|
-
let isRevalidating = false;
|
|
8
|
-
async function fetchCatalog() {
|
|
9
|
-
const random = Math.random();
|
|
10
|
-
const url = `${CATALOG_URL}?${random}`;
|
|
11
|
-
const response = await fetch(url);
|
|
12
|
-
if (!response.ok) {
|
|
13
|
-
throw new Error(`Failed to fetch models catalog: ${response.status}`);
|
|
14
|
-
}
|
|
15
|
-
return response.json();
|
|
16
|
-
}
|
|
17
|
-
async function getCachedCatalog() {
|
|
18
|
-
const db = await getDatabase();
|
|
19
|
-
const catalog = (await getState(db, STATE_KEY_CATALOG));
|
|
20
|
-
const timestamp = (await getState(db, STATE_KEY_TIMESTAMP)) || 0;
|
|
21
|
-
return { catalog, timestamp };
|
|
22
|
-
}
|
|
23
|
-
async function saveCatalogToCache(catalog) {
|
|
24
|
-
const db = await getDatabase();
|
|
25
|
-
await setState(db, STATE_KEY_CATALOG, catalog);
|
|
26
|
-
await setState(db, STATE_KEY_TIMESTAMP, Date.now());
|
|
27
|
-
}
|
|
28
|
-
async function revalidateInBackground() {
|
|
29
|
-
if (isRevalidating)
|
|
30
|
-
return;
|
|
31
|
-
isRevalidating = true;
|
|
32
|
-
try {
|
|
33
|
-
const catalog = await fetchCatalog();
|
|
34
|
-
await saveCatalogToCache(catalog);
|
|
35
|
-
console.log("[models-catalog] Background revalidation complete");
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
console.error("[models-catalog] Background revalidation failed:", error);
|
|
39
|
-
}
|
|
40
|
-
finally {
|
|
41
|
-
isRevalidating = false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Get the models catalog using stale-while-revalidate pattern.
|
|
46
|
-
* - If cache is fresh (< 15 min): returns cached data
|
|
47
|
-
* - If cache is stale (>= 15 min): returns cached data, revalidates in background
|
|
48
|
-
* - If no cache: fetches synchronously, caches, returns
|
|
49
|
-
*/
|
|
50
|
-
export async function getModelsCatalog() {
|
|
51
|
-
const { catalog, timestamp } = await getCachedCatalog();
|
|
52
|
-
const age = Date.now() - timestamp;
|
|
53
|
-
if (catalog) {
|
|
54
|
-
if (age >= CACHE_TTL_MS) {
|
|
55
|
-
// Stale - return cached but revalidate in background
|
|
56
|
-
void revalidateInBackground();
|
|
57
|
-
}
|
|
58
|
-
return catalog;
|
|
59
|
-
}
|
|
60
|
-
// No cache - fetch synchronously
|
|
61
|
-
try {
|
|
62
|
-
const freshCatalog = await fetchCatalog();
|
|
63
|
-
await saveCatalogToCache(freshCatalog);
|
|
64
|
-
return freshCatalog;
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.error("[models-catalog] Failed to fetch catalog:", error);
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Get a specific provider from the catalog
|
|
73
|
-
*/
|
|
74
|
-
export async function getCatalogProvider(providerId) {
|
|
75
|
-
const catalog = await getModelsCatalog();
|
|
76
|
-
if (!catalog)
|
|
77
|
-
return null;
|
|
78
|
-
return catalog[providerId] || null;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=models-catalog.js.map
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Context } from "hono";
|
|
2
|
-
export declare function handleGetModelsCatalog(c: Context): Promise<(Response & import("hono").TypedResponse<{
|
|
3
|
-
error: string;
|
|
4
|
-
}, 503, "json">) | (Response & import("hono").TypedResponse<{
|
|
5
|
-
[x: string]: {
|
|
6
|
-
id: string;
|
|
7
|
-
env: string[];
|
|
8
|
-
npm: string;
|
|
9
|
-
api: string;
|
|
10
|
-
name: string;
|
|
11
|
-
doc: string;
|
|
12
|
-
models: {
|
|
13
|
-
[x: string]: {
|
|
14
|
-
id: string;
|
|
15
|
-
name: string;
|
|
16
|
-
family: string;
|
|
17
|
-
attachment: boolean;
|
|
18
|
-
reasoning: boolean;
|
|
19
|
-
tool_call: boolean;
|
|
20
|
-
release_date: string;
|
|
21
|
-
last_updated: string;
|
|
22
|
-
modalities: {
|
|
23
|
-
input: string[];
|
|
24
|
-
output: string[];
|
|
25
|
-
};
|
|
26
|
-
open_weights: boolean;
|
|
27
|
-
cost: {
|
|
28
|
-
input: number;
|
|
29
|
-
output: number;
|
|
30
|
-
};
|
|
31
|
-
limit: {
|
|
32
|
-
context: number;
|
|
33
|
-
output: number;
|
|
34
|
-
};
|
|
35
|
-
tarsk_use?: string[] | undefined;
|
|
36
|
-
coding_index?: number | undefined;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
41
|
-
error: string;
|
|
42
|
-
}, 500, "json">)>;
|
|
43
|
-
//# sourceMappingURL=models-catalog.route.d.ts.map
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { getModelsCatalog } from "./models-catalog.js";
|
|
2
|
-
export async function handleGetModelsCatalog(c) {
|
|
3
|
-
try {
|
|
4
|
-
const catalog = await getModelsCatalog();
|
|
5
|
-
if (!catalog) {
|
|
6
|
-
return c.json({ error: "Models catalog unavailable" }, 503);
|
|
7
|
-
}
|
|
8
|
-
return c.json(catalog);
|
|
9
|
-
}
|
|
10
|
-
catch (error) {
|
|
11
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
12
|
-
return c.json({ error: message }, 500);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=models-catalog.route.js.map
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GET /api/models?provider=openrouter&supportedTools=true&useCase=coding
|
|
3
|
-
* Get available models for a provider
|
|
4
|
-
*
|
|
5
|
-
* Query parameters:
|
|
6
|
-
* - provider: Required. Provider name (e.g., "openrouter", "openai")
|
|
7
|
-
* - supportedTools: Optional. If "true", only return models with tools support
|
|
8
|
-
* - useCase: Optional. If "coding", only return models where tarsk_use includes 'coding'
|
|
9
|
-
*/
|
|
10
|
-
import { Context } from "hono";
|
|
11
|
-
import { ModelManager } from "../models/models.manager.js";
|
|
12
|
-
export declare function handleGetAvailableModels(c: Context, modelManager: ModelManager): Promise<(Response & import("hono").TypedResponse<{
|
|
13
|
-
error: string;
|
|
14
|
-
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
15
|
-
provider: string;
|
|
16
|
-
models: {
|
|
17
|
-
id: string;
|
|
18
|
-
name: string;
|
|
19
|
-
description: string;
|
|
20
|
-
provider: string;
|
|
21
|
-
pricing?: {
|
|
22
|
-
prompt: number;
|
|
23
|
-
completion: number;
|
|
24
|
-
} | undefined;
|
|
25
|
-
supportedParameters?: {
|
|
26
|
-
tools?: boolean | undefined;
|
|
27
|
-
} | undefined;
|
|
28
|
-
tarsk_use?: string[] | undefined;
|
|
29
|
-
coding_index?: number | undefined;
|
|
30
|
-
supportsImages?: boolean | undefined;
|
|
31
|
-
contextWindow?: number | undefined;
|
|
32
|
-
}[];
|
|
33
|
-
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
34
|
-
error: string;
|
|
35
|
-
}, 500, "json">)>;
|
|
36
|
-
//# sourceMappingURL=models-get-available.route.d.ts.map
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GET /api/models?provider=openrouter&supportedTools=true&useCase=coding
|
|
3
|
-
* Get available models for a provider
|
|
4
|
-
*
|
|
5
|
-
* Query parameters:
|
|
6
|
-
* - provider: Required. Provider name (e.g., "openrouter", "openai")
|
|
7
|
-
* - supportedTools: Optional. If "true", only return models with tools support
|
|
8
|
-
* - useCase: Optional. If "coding", only return models where tarsk_use includes 'coding'
|
|
9
|
-
*/
|
|
10
|
-
export async function handleGetAvailableModels(c, modelManager) {
|
|
11
|
-
try {
|
|
12
|
-
const provider = c.req.query("provider");
|
|
13
|
-
const supportedTools = c.req.query("supportedTools");
|
|
14
|
-
const useCase = c.req.query("useCase");
|
|
15
|
-
if (!provider) {
|
|
16
|
-
return c.json({ error: "provider query parameter is required" }, 400);
|
|
17
|
-
}
|
|
18
|
-
let models = await modelManager.getAvailableModels(provider);
|
|
19
|
-
// Log models missing coding_index
|
|
20
|
-
models.forEach((m) => {
|
|
21
|
-
if (m.coding_index === undefined || m.coding_index === null) {
|
|
22
|
-
console.log(`Model ${m.name} (${m.id}) is missing coding_index`);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
// Filter by supported tools if requested
|
|
26
|
-
if (supportedTools === "true" && provider.toLowerCase() === "openrouter") {
|
|
27
|
-
models = models.filter((m) => m.supportedParameters?.tools === true);
|
|
28
|
-
}
|
|
29
|
-
// Filter by use case if requested
|
|
30
|
-
if (useCase === "coding") {
|
|
31
|
-
models = models.filter((m) => {
|
|
32
|
-
const name = m.name.toLowerCase().trim();
|
|
33
|
-
const hasValidName = name !== "free" && name !== "auto";
|
|
34
|
-
// Filter to only include models where tarsk_use includes 'coding'
|
|
35
|
-
// Handle missing tarsk_use property gracefully - if missing, assume not a coding model
|
|
36
|
-
const hasCodingUse = Array.isArray(m.tarsk_use) && m.tarsk_use.includes("coding");
|
|
37
|
-
return hasValidName && hasCodingUse;
|
|
38
|
-
});
|
|
39
|
-
// If no models pass the filter, return all valid models (fallback for when data hasn't been updated)
|
|
40
|
-
if (models.length === 0) {
|
|
41
|
-
models = (await modelManager.getAvailableModels(provider)).filter((m) => {
|
|
42
|
-
const name = m.name.toLowerCase().trim();
|
|
43
|
-
return name !== "free" && name !== "auto";
|
|
44
|
-
});
|
|
45
|
-
// Re-apply supported tools filter if it was requested
|
|
46
|
-
if (supportedTools === "true" && provider.toLowerCase() === "openrouter") {
|
|
47
|
-
models = models.filter((m) => m.supportedParameters?.tools === true);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Sort models to put enabled ones at the top
|
|
52
|
-
const enabledModels = await modelManager.getEnabledModels(provider);
|
|
53
|
-
const enabledModelIds = new Set(enabledModels.map((m) => m.id));
|
|
54
|
-
models.sort((a, b) => {
|
|
55
|
-
const aEnabled = enabledModelIds.has(a.id) ? 0 : 1;
|
|
56
|
-
const bEnabled = enabledModelIds.has(b.id) ? 0 : 1;
|
|
57
|
-
return aEnabled - bEnabled;
|
|
58
|
-
});
|
|
59
|
-
return c.json({ provider, models });
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
63
|
-
return c.json({ error: message }, 500);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=models-get-available.route.js.map
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GET /api/models/enabled?useCase=coding
|
|
3
|
-
* Get all enabled models across all providers
|
|
4
|
-
*
|
|
5
|
-
* Query parameters:
|
|
6
|
-
* - useCase: Optional. If "coding", only return models where tarsk_use includes 'coding'
|
|
7
|
-
*/
|
|
8
|
-
import { Context } from "hono";
|
|
9
|
-
import { ModelManager } from "../models/models.manager.js";
|
|
10
|
-
export declare function handleGetEnabledModels(c: Context, modelManager: ModelManager): Promise<(Response & import("hono").TypedResponse<{
|
|
11
|
-
enabledModels: {
|
|
12
|
-
[x: string]: {
|
|
13
|
-
id: string;
|
|
14
|
-
name: string;
|
|
15
|
-
description: string;
|
|
16
|
-
provider: string;
|
|
17
|
-
pricing?: {
|
|
18
|
-
prompt: number;
|
|
19
|
-
completion: number;
|
|
20
|
-
} | undefined;
|
|
21
|
-
supportedParameters?: {
|
|
22
|
-
tools?: boolean | undefined;
|
|
23
|
-
} | undefined;
|
|
24
|
-
tarsk_use?: string[] | undefined;
|
|
25
|
-
coding_index?: number | undefined;
|
|
26
|
-
supportsImages?: boolean | undefined;
|
|
27
|
-
contextWindow?: number | undefined;
|
|
28
|
-
}[];
|
|
29
|
-
};
|
|
30
|
-
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
31
|
-
error: string;
|
|
32
|
-
}, 500, "json">)>;
|
|
33
|
-
//# sourceMappingURL=models-get-enabled.route.d.ts.map
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GET /api/models/enabled?useCase=coding
|
|
3
|
-
* Get all enabled models across all providers
|
|
4
|
-
*
|
|
5
|
-
* Query parameters:
|
|
6
|
-
* - useCase: Optional. If "coding", only return models where tarsk_use includes 'coding'
|
|
7
|
-
*/
|
|
8
|
-
export async function handleGetEnabledModels(c, modelManager) {
|
|
9
|
-
try {
|
|
10
|
-
const useCase = c.req.query("useCase");
|
|
11
|
-
let enabledModels = await modelManager.getAllEnabledModels();
|
|
12
|
-
// Filter by use case if requested
|
|
13
|
-
if (useCase === "coding") {
|
|
14
|
-
const filtered = {};
|
|
15
|
-
for (const [provider, models] of Object.entries(enabledModels)) {
|
|
16
|
-
// Filter to only include coding models
|
|
17
|
-
const filteredModels = models.filter((m) => {
|
|
18
|
-
const name = m.name.toLowerCase().trim();
|
|
19
|
-
const hasValidName = name !== "free" && name !== "auto";
|
|
20
|
-
// Filter to only include models where tarsk_use includes 'coding'
|
|
21
|
-
// Handle missing tarsk_use property gracefully - if missing, assume not a coding model
|
|
22
|
-
const hasCodingUse = Array.isArray(m.tarsk_use) && m.tarsk_use.includes("coding");
|
|
23
|
-
return hasValidName && hasCodingUse;
|
|
24
|
-
});
|
|
25
|
-
// If no models pass the filter, return all valid models (fallback for when data hasn't been updated)
|
|
26
|
-
if (filteredModels.length === 0) {
|
|
27
|
-
filtered[provider] = models.filter((m) => {
|
|
28
|
-
const name = m.name.toLowerCase().trim();
|
|
29
|
-
return name !== "free" && name !== "auto";
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
filtered[provider] = filteredModels;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
enabledModels = filtered;
|
|
37
|
-
}
|
|
38
|
-
return c.json({ enabledModels });
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
42
|
-
return c.json({ error: message }, 500);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=models-get-enabled.route.js.map
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GET /api/models/info?modelId=...
|
|
3
|
-
* Get detailed information about a specific model including context window
|
|
4
|
-
* The modelId must be provided as a query parameter (modelId).
|
|
5
|
-
*/
|
|
6
|
-
import { Context } from "hono";
|
|
7
|
-
import { ModelManager } from "./models.manager.js";
|
|
8
|
-
export declare function handleGetModelInfo(c: Context, modelManager: ModelManager): Promise<(Response & import("hono").TypedResponse<{
|
|
9
|
-
error: string;
|
|
10
|
-
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
11
|
-
id: string;
|
|
12
|
-
name: string;
|
|
13
|
-
provider: string;
|
|
14
|
-
description: string;
|
|
15
|
-
contextWindow: number | undefined;
|
|
16
|
-
pricing: {
|
|
17
|
-
prompt: number;
|
|
18
|
-
completion: number;
|
|
19
|
-
} | undefined;
|
|
20
|
-
supportedParameters: {
|
|
21
|
-
tools?: boolean | undefined;
|
|
22
|
-
} | undefined;
|
|
23
|
-
tarsk_use: string[] | undefined;
|
|
24
|
-
coding_index: number | undefined;
|
|
25
|
-
supportsImages: boolean | undefined;
|
|
26
|
-
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
27
|
-
error: string;
|
|
28
|
-
}, 404, "json">) | (Response & import("hono").TypedResponse<{
|
|
29
|
-
error: string;
|
|
30
|
-
}, 500, "json">)>;
|
|
31
|
-
//# sourceMappingURL=models-get-model-info.route.d.ts.map
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GET /api/models/info?modelId=...
|
|
3
|
-
* Get detailed information about a specific model including context window
|
|
4
|
-
* The modelId must be provided as a query parameter (modelId).
|
|
5
|
-
*/
|
|
6
|
-
export async function handleGetModelInfo(c, modelManager) {
|
|
7
|
-
try {
|
|
8
|
-
const modelId = c.req.query("modelId");
|
|
9
|
-
if (!modelId || typeof modelId !== "string") {
|
|
10
|
-
return c.json({ error: "modelId query parameter is required and must be a string" }, 400);
|
|
11
|
-
}
|
|
12
|
-
// Extract provider from modelId (e.g., "openrouter/anthropic/claude-haiku-4.5" -> "openrouter")
|
|
13
|
-
const parts = modelId.split("/");
|
|
14
|
-
if (parts.length < 2) {
|
|
15
|
-
return c.json({ error: 'modelId must be in format "provider/model"' }, 400);
|
|
16
|
-
}
|
|
17
|
-
const provider = parts[0];
|
|
18
|
-
const modelName = parts.slice(1).join("/");
|
|
19
|
-
try {
|
|
20
|
-
// First, let's see all enabled models across all providers
|
|
21
|
-
console.log(`[models] Checking all enabled models...`);
|
|
22
|
-
const enabledModels = await modelManager.getEnabledModels(provider);
|
|
23
|
-
console.log(`[models] Enabled models for provider "${provider}":`, enabledModels.map((m) => ({ id: m.id, name: m.name })));
|
|
24
|
-
console.log(`[models] Looking for model ID: "${modelName}" or full: "${modelId}"`);
|
|
25
|
-
// If no models found for this provider, let's check all providers
|
|
26
|
-
if (enabledModels.length === 0) {
|
|
27
|
-
console.log(`[models] No enabled models for provider "${provider}". Checking all providers...`);
|
|
28
|
-
// Try to get available models instead to see what's available
|
|
29
|
-
try {
|
|
30
|
-
const availableModels = await modelManager.getAvailableModels(provider);
|
|
31
|
-
console.log(`[models] Available models for provider "${provider}":`, availableModels.map((m) => ({
|
|
32
|
-
id: m.id,
|
|
33
|
-
name: m.name,
|
|
34
|
-
contextWindow: m.contextWindow,
|
|
35
|
-
})));
|
|
36
|
-
// Try to find the model in available models
|
|
37
|
-
const availableModel = availableModels.find((m) => m.id === modelName || m.id === modelId);
|
|
38
|
-
if (availableModel) {
|
|
39
|
-
console.log(`[models] Found model in available models:`, availableModel);
|
|
40
|
-
return c.json({
|
|
41
|
-
id: availableModel.id,
|
|
42
|
-
name: availableModel.name,
|
|
43
|
-
provider: availableModel.provider,
|
|
44
|
-
description: availableModel.description,
|
|
45
|
-
contextWindow: availableModel.contextWindow,
|
|
46
|
-
pricing: availableModel.pricing,
|
|
47
|
-
supportedParameters: availableModel.supportedParameters,
|
|
48
|
-
tarsk_use: availableModel.tarsk_use,
|
|
49
|
-
coding_index: availableModel.coding_index,
|
|
50
|
-
supportsImages: availableModel.supportsImages,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (availError) {
|
|
55
|
-
console.log(`[models] Failed to get available models for provider "${provider}":`, availError);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
const model = enabledModels.find((m) => m.id === modelName || m.id === modelId);
|
|
59
|
-
if (!model) {
|
|
60
|
-
return c.json({ error: `Model "${modelId}" not found or not enabled` }, 404);
|
|
61
|
-
}
|
|
62
|
-
return c.json({
|
|
63
|
-
id: model.id,
|
|
64
|
-
name: model.name,
|
|
65
|
-
provider: model.provider,
|
|
66
|
-
description: model.description,
|
|
67
|
-
contextWindow: model.contextWindow,
|
|
68
|
-
pricing: model.pricing,
|
|
69
|
-
supportedParameters: model.supportedParameters,
|
|
70
|
-
tarsk_use: model.tarsk_use,
|
|
71
|
-
coding_index: model.coding_index,
|
|
72
|
-
supportsImages: model.supportsImages,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
return c.json({ error: `Failed to get models from provider "${provider}"` }, 500);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
console.error("[models] Error getting model info:", error);
|
|
81
|
-
return c.json({ error: "Failed to retrieve model information" }, 500);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=models-get-model-info.route.js.map
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /api/models/:provider/:modelId/disable
|
|
3
|
-
* Disable a model for a provider
|
|
4
|
-
*/
|
|
5
|
-
import { Context } from "hono";
|
|
6
|
-
import { ModelManager } from "../models/models.manager.js";
|
|
7
|
-
export declare function handleModelDisable(c: Context, modelManager: ModelManager): Promise<(Response & import("hono").TypedResponse<{
|
|
8
|
-
error: string;
|
|
9
|
-
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
10
|
-
success: true;
|
|
11
|
-
message: string;
|
|
12
|
-
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
13
|
-
error: string;
|
|
14
|
-
}, 500, "json">)>;
|
|
15
|
-
//# sourceMappingURL=models-model-disable.route.d.ts.map
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /api/models/:provider/:modelId/disable
|
|
3
|
-
* Disable a model for a provider
|
|
4
|
-
*/
|
|
5
|
-
export async function handleModelDisable(c, modelManager) {
|
|
6
|
-
try {
|
|
7
|
-
const provider = c.req.param("provider");
|
|
8
|
-
const modelId = c.req.param("modelId");
|
|
9
|
-
if (!provider || !modelId) {
|
|
10
|
-
return c.json({ error: "provider and modelId are required" }, 400);
|
|
11
|
-
}
|
|
12
|
-
await modelManager.disableModel(provider, modelId);
|
|
13
|
-
return c.json({ success: true, message: `Model ${modelId} disabled for ${provider}` });
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
17
|
-
return c.json({ error: message }, 500);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=models-model-disable.route.js.map
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /api/models/:provider/:modelId/enable
|
|
3
|
-
* Enable a model for a provider
|
|
4
|
-
*/
|
|
5
|
-
import { Context } from "hono";
|
|
6
|
-
import { ModelManager } from "../models/models.manager.js";
|
|
7
|
-
export declare function handleModelEnable(c: Context, modelManager: ModelManager): Promise<(Response & import("hono").TypedResponse<{
|
|
8
|
-
error: string;
|
|
9
|
-
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
10
|
-
success: true;
|
|
11
|
-
message: string;
|
|
12
|
-
}, import("hono/utils/http-status").ContentfulStatusCode, "json">)>;
|
|
13
|
-
//# sourceMappingURL=models-model-enable.route.d.ts.map
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /api/models/:provider/:modelId/enable
|
|
3
|
-
* Enable a model for a provider
|
|
4
|
-
*/
|
|
5
|
-
export async function handleModelEnable(c, modelManager) {
|
|
6
|
-
try {
|
|
7
|
-
const provider = c.req.param("provider");
|
|
8
|
-
const modelId = c.req.param("modelId");
|
|
9
|
-
if (!provider || !modelId) {
|
|
10
|
-
return c.json({ error: "provider and modelId are required" }, 400);
|
|
11
|
-
}
|
|
12
|
-
await modelManager.enableModel(provider, modelId);
|
|
13
|
-
return c.json({ success: true, message: `Model ${modelId} enabled for ${provider}` });
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
17
|
-
return c.json({ error: message }, 400);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=models-model-enable.route.js.map
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /api/models/:provider/refresh
|
|
3
|
-
* Refresh the available models for a provider
|
|
4
|
-
* Note: With provider-data.ts, this is a no-op but kept for backward compatibility
|
|
5
|
-
*/
|
|
6
|
-
import { Context } from "hono";
|
|
7
|
-
import { ModelManager } from "../models/models.manager.js";
|
|
8
|
-
export declare function handleProviderRefresh(c: Context, modelManager: ModelManager): Promise<(Response & import("hono").TypedResponse<{
|
|
9
|
-
error: string;
|
|
10
|
-
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
11
|
-
success: true;
|
|
12
|
-
provider: string;
|
|
13
|
-
modelCount: number;
|
|
14
|
-
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
15
|
-
error: string;
|
|
16
|
-
}, 500, "json">)>;
|
|
17
|
-
//# sourceMappingURL=models-provider-refresh.route.d.ts.map
|