@vibesdotdev/integrations-anthropic 0.0.0-stage → 1.0.0-rc.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/LICENSE +126 -0
- package/README.md +57 -2
- package/dist/ai/anthropic-router-codec.d.ts +32 -0
- package/dist/ai/anthropic-router-codec.d.ts.map +1 -0
- package/dist/ai/anthropic-router-codec.js +321 -0
- package/dist/ai/anthropic-router-codec.js.map +1 -0
- package/dist/ai/anthropic.plugin.d.ts +6 -0
- package/dist/ai/anthropic.plugin.d.ts.map +1 -0
- package/dist/ai/anthropic.plugin.js +116 -0
- package/dist/ai/anthropic.plugin.js.map +1 -0
- package/dist/ai/catalog.d.ts +87 -0
- package/dist/ai/catalog.d.ts.map +1 -0
- package/dist/ai/catalog.js +64 -0
- package/dist/ai/catalog.js.map +1 -0
- package/dist/ai/claude-code-session.d.ts +56 -0
- package/dist/ai/claude-code-session.d.ts.map +1 -0
- package/dist/ai/claude-code-session.js +75 -0
- package/dist/ai/claude-code-session.js.map +1 -0
- package/dist/ai/claude-code-turn-env.d.ts +10 -0
- package/dist/ai/claude-code-turn-env.d.ts.map +1 -0
- package/dist/ai/claude-code-turn-env.js +19 -0
- package/dist/ai/claude-code-turn-env.js.map +1 -0
- package/dist/ai/hostile.d.ts +23 -0
- package/dist/ai/hostile.d.ts.map +1 -0
- package/dist/ai/hostile.js +22 -0
- package/dist/ai/hostile.js.map +1 -0
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +4 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/metadata/assets/logos/providers/anthropic.svg +1 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-3-5-haiku-20241022.json +77 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-3-5-sonnet-20241022.json +42 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-4-opus-20250514.json +79 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-4-sonnet-20250514.json +79 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-haiku-4-5.json +80 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-haiku-5-5.json +39 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-opus-4-1.json +78 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-opus-4-5.json +80 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-opus-4-6.json +80 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-opus-4-7.json +81 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-sonnet-4-5.json +80 -0
- package/dist/ai/metadata/provider-models/anthropic/anthropic-claude-sonnet-4-6.json +80 -0
- package/dist/ai/metadata/providers/anthropic.json +22 -0
- package/dist/ai/providers/anthropic/anthropic.provider.impl.d.ts +62 -0
- package/dist/ai/providers/anthropic/anthropic.provider.impl.d.ts.map +1 -0
- package/dist/ai/providers/anthropic/anthropic.provider.impl.js +430 -0
- package/dist/ai/providers/anthropic/anthropic.provider.impl.js.map +1 -0
- package/dist/ai/providers/anthropic/detection/index.d.ts +8 -0
- package/dist/ai/providers/anthropic/detection/index.d.ts.map +1 -0
- package/dist/ai/providers/anthropic/detection/index.js +8 -0
- package/dist/ai/providers/anthropic/detection/index.js.map +1 -0
- package/dist/ai/providers/anthropic/detection/system.d.ts +12 -0
- package/dist/ai/providers/anthropic/detection/system.d.ts.map +1 -0
- package/dist/ai/providers/anthropic/detection/system.js +34 -0
- package/dist/ai/providers/anthropic/detection/system.js.map +1 -0
- package/dist/ai/providers/anthropic/docs/ai.providers.anthropic.docs.descriptor.d.ts +4 -0
- package/dist/ai/providers/anthropic/docs/ai.providers.anthropic.docs.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/anthropic/docs/ai.providers.anthropic.docs.descriptor.js +212 -0
- package/dist/ai/providers/anthropic/docs/ai.providers.anthropic.docs.descriptor.js.map +1 -0
- package/dist/ai/providers/anthropic/index.d.ts +4 -0
- package/dist/ai/providers/anthropic/index.d.ts.map +1 -0
- package/dist/ai/providers/anthropic/index.js +4 -0
- package/dist/ai/providers/anthropic/index.js.map +1 -0
- package/dist/ai/providers/anthropic/recommendations.d.ts +24 -0
- package/dist/ai/providers/anthropic/recommendations.d.ts.map +1 -0
- package/dist/ai/providers/anthropic/recommendations.js +192 -0
- package/dist/ai/providers/anthropic/recommendations.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/config.anthropic.descriptor.d.ts +4194 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/config.anthropic.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/config.anthropic.descriptor.js +52 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/config.anthropic.descriptor.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/schemas/index.d.ts +46 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/schemas/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/schemas/index.js +22 -0
- package/dist/ai/providers/cloud/frontier/anthropic/config/schemas/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/index.d.ts +5 -0
- package/dist/ai/providers/cloud/frontier/anthropic/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/index.js +4 -0
- package/dist/ai/providers/cloud/frontier/anthropic/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/provider.anthropic.descriptor.d.ts +183 -0
- package/dist/ai/providers/cloud/frontier/anthropic/provider.anthropic.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/anthropic/provider.anthropic.descriptor.js +115 -0
- package/dist/ai/providers/cloud/frontier/anthropic/provider.anthropic.descriptor.js.map +1 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.failures.d.ts +46 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.failures.d.ts.map +1 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.failures.js +183 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.failures.js.map +1 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.descriptor.d.ts +34 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.descriptor.js +29 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.descriptor.js.map +1 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.impl.d.ts +48 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.impl.d.ts.map +1 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.impl.js +557 -0
- package/dist/ai/specs/anthropic-messages/anthropic-messages.spec.impl.js.map +1 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.descriptor.d.ts +26 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.descriptor.js +15 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.descriptor.js.map +1 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.impl.d.ts +35 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.impl.d.ts.map +1 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.impl.js +210 -0
- package/dist/ai/specs/claude-code-exec/claude-code-exec.spec.impl.js.map +1 -0
- package/dist/external/acp-server.consumer.plugin.d.ts +3 -0
- package/dist/external/acp-server.consumer.plugin.d.ts.map +1 -0
- package/dist/external/acp-server.consumer.plugin.js +29 -0
- package/dist/external/acp-server.consumer.plugin.js.map +1 -0
- package/dist/external/acp-server.d.ts +19 -0
- package/dist/external/acp-server.d.ts.map +1 -0
- package/dist/external/acp-server.js +198 -0
- package/dist/external/acp-server.js.map +1 -0
- package/dist/external/claude-code-hooks.d.ts +51 -0
- package/dist/external/claude-code-hooks.d.ts.map +1 -0
- package/dist/external/claude-code-hooks.js +252 -0
- package/dist/external/claude-code-hooks.js.map +1 -0
- package/dist/external/claude-code-installer.d.ts +10 -0
- package/dist/external/claude-code-installer.d.ts.map +1 -0
- package/dist/external/claude-code-installer.js +604 -0
- package/dist/external/claude-code-installer.js.map +1 -0
- package/dist/external/claude-code-operations.d.ts +217 -0
- package/dist/external/claude-code-operations.d.ts.map +1 -0
- package/dist/external/claude-code-operations.js +101 -0
- package/dist/external/claude-code-operations.js.map +1 -0
- package/dist/external/claude-code-plugin.json +7 -0
- package/dist/external/claude-code-presets.d.ts +813 -0
- package/dist/external/claude-code-presets.d.ts.map +1 -0
- package/dist/external/claude-code-presets.js +157 -0
- package/dist/external/claude-code-presets.js.map +1 -0
- package/dist/external/claude-code.descriptor.d.ts +160 -0
- package/dist/external/claude-code.descriptor.d.ts.map +1 -0
- package/dist/external/claude-code.descriptor.js +5 -0
- package/dist/external/claude-code.descriptor.js.map +1 -0
- package/dist/external/claude-code.manifest.d.ts +5 -0
- package/dist/external/claude-code.manifest.d.ts.map +1 -0
- package/dist/external/claude-code.manifest.js +205 -0
- package/dist/external/claude-code.manifest.js.map +1 -0
- package/dist/external/external.plugin.d.ts +6 -0
- package/dist/external/external.plugin.d.ts.map +1 -0
- package/dist/external/external.plugin.js +56 -0
- package/dist/external/external.plugin.js.map +1 -0
- package/dist/external/index.d.ts +6 -0
- package/dist/external/index.d.ts.map +1 -0
- package/dist/external/index.js +6 -0
- package/dist/external/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/package.json +108 -4
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Descriptor for ai.providers.anthropic
|
|
3
|
+
* Auto-generated by `vibes docs generate`
|
|
4
|
+
*/
|
|
5
|
+
const ai_providers_anthropicMarkdown = `---
|
|
6
|
+
title: Anthropic Provider
|
|
7
|
+
summary: Use a Claude subscription locally or a separately billed Anthropic API credential
|
|
8
|
+
tags: [ai, providers, anthropic, claude, llm]
|
|
9
|
+
parent: ai.providers
|
|
10
|
+
order: 2
|
|
11
|
+
id: ai.providers.anthropic
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Anthropic Provider
|
|
15
|
+
|
|
16
|
+
The \`@vibesdotdev/integrations-anthropic\` package registers two deliberately separate
|
|
17
|
+
Claude routes. Consumer hosts can delegate to the official Claude Code CLI using a
|
|
18
|
+
provider-managed \`claude.ai\` subscription session. Consumer and cloud hosts can use
|
|
19
|
+
an Anthropic API-key \`CredentialReference\`, which is billed by Anthropic Console.
|
|
20
|
+
A Claude subscription does not fund the API-key route.
|
|
21
|
+
|
|
22
|
+
## Overview
|
|
23
|
+
|
|
24
|
+
The package contributes these runtime assets:
|
|
25
|
+
|
|
26
|
+
- A provider-type implementation (\`AnthropicProviderType\`) that verifies Claude Code
|
|
27
|
+
subscription status without returning account details, validates credential references,
|
|
28
|
+
and checks API health without sending a generated message.
|
|
29
|
+
- Credential detection (\`detectAnthropicSystem\`) that surfaces a configured
|
|
30
|
+
\`ANTHROPIC_API_KEY\` as a secret \`CredentialReference\`, never as its value.
|
|
31
|
+
- A consumer-only \`claude-code-exec\` process spec that disables tools, browser
|
|
32
|
+
integration, session persistence, and API-billing environment overrides.
|
|
33
|
+
- A recommendation engine (\`AnthropicRecommendation\`, resolved through the runtime) used by setup flows to score
|
|
34
|
+
Claude for chat, development, research, and organization use cases.
|
|
35
|
+
|
|
36
|
+
Claude models support a 200K-token context window, native tool use, and vision
|
|
37
|
+
(image) input.
|
|
38
|
+
|
|
39
|
+
## Authentication
|
|
40
|
+
|
|
41
|
+
### Claude subscription on a consumer host
|
|
42
|
+
|
|
43
|
+
Choose **Claude subscription** in the provider connection UI. The provider runs
|
|
44
|
+
\`claude auth login\` without \`--console\`, then accepts the connection only when
|
|
45
|
+
\`claude auth status\` reports \`authMethod: claude.ai\` and a non-empty subscription
|
|
46
|
+
type. Vibes never reads or mirrors Claude OAuth credentials.
|
|
47
|
+
|
|
48
|
+
This route runs only on the connected consumer host. Cloud workers cannot reuse a
|
|
49
|
+
consumer Claude session.
|
|
50
|
+
|
|
51
|
+
### Anthropic API billing
|
|
52
|
+
|
|
53
|
+
Create the key in [Anthropic Console](https://console.anthropic.com/settings/keys),
|
|
54
|
+
put the value in a Vibes secrets store, and save only a \`CredentialReference\` such as
|
|
55
|
+
\`{ source: 'secret', key: 'ANTHROPIC_API_KEY' }\` in the provider connection. API usage
|
|
56
|
+
is metered separately from Claude subscriptions. Do not paste a bare key into source,
|
|
57
|
+
configuration, logs, or chat.
|
|
58
|
+
|
|
59
|
+
## Detecting the provider
|
|
60
|
+
|
|
61
|
+
\`detectAnthropicSystem(runtime)\` returns a \`DetectedProvider\` when the handed runtime resolves the declared credential, or \`null\` when it is not:
|
|
62
|
+
|
|
63
|
+
:::usage{language="ts"}
|
|
64
|
+
import { detectAnthropicSystem } from '@vibesdotdev/integrations-anthropic/ai';
|
|
65
|
+
|
|
66
|
+
const detected = await detectAnthropicSystem(runtime);
|
|
67
|
+
if (detected) {
|
|
68
|
+
console.log(detected.providerType); // 'anthropic'
|
|
69
|
+
console.log(detected.status); // 'available'
|
|
70
|
+
}
|
|
71
|
+
:::
|
|
72
|
+
|
|
73
|
+
## Generating text
|
|
74
|
+
|
|
75
|
+
Generation goes through the runtime's \`ai/generation\` kind. Resolve an executor for
|
|
76
|
+
the target hardware, then call \`generate()\` with a Claude model id. The runtime
|
|
77
|
+
routes the request to the Anthropic provider based on the model's provider id.
|
|
78
|
+
|
|
79
|
+
:::usage{language="ts"}
|
|
80
|
+
// runtime is supplied by the host or invocation context.
|
|
81
|
+
const executor = await runtime.query('ai/generation')
|
|
82
|
+
.forHardware('consumer')
|
|
83
|
+
.resolve();
|
|
84
|
+
|
|
85
|
+
const response = await executor.generate({
|
|
86
|
+
messages: [
|
|
87
|
+
{ role: 'user', content: 'Hello, Claude!' }
|
|
88
|
+
],
|
|
89
|
+
model: 'anthropic:claude-sonnet-4-5',
|
|
90
|
+
maxTokens: 1024,
|
|
91
|
+
temperature: 0.7
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
console.log(response.content);
|
|
95
|
+
:::
|
|
96
|
+
|
|
97
|
+
### Tool use
|
|
98
|
+
|
|
99
|
+
\`\`\`ts
|
|
100
|
+
const response = await executor.generate({
|
|
101
|
+
messages: [
|
|
102
|
+
{ role: 'user', content: 'What is the weather in San Francisco?' }
|
|
103
|
+
],
|
|
104
|
+
model: 'anthropic:claude-sonnet-4-5',
|
|
105
|
+
tools: [
|
|
106
|
+
{
|
|
107
|
+
name: 'get_weather',
|
|
108
|
+
description: 'Get current weather for a location',
|
|
109
|
+
parameters: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
properties: {
|
|
112
|
+
location: { type: 'string' }
|
|
113
|
+
},
|
|
114
|
+
required: ['location']
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
toolChoice: 'auto'
|
|
119
|
+
});
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
For streaming responses, see [\`ai.streaming\`](ai.streaming).
|
|
123
|
+
|
|
124
|
+
## Available models
|
|
125
|
+
|
|
126
|
+
Claude models are registered by \`@vibesdotdev/integrations-anthropic\` with
|
|
127
|
+
colon-namespaced ids. All carry a 200K-token context window.
|
|
128
|
+
|
|
129
|
+
| Model id | Display name |
|
|
130
|
+
|----------|--------------|
|
|
131
|
+
| \`anthropic:claude-opus-4-7\` | Claude Opus 4.7 |
|
|
132
|
+
| \`anthropic:claude-opus-4-6\` | Claude Opus 4.6 |
|
|
133
|
+
| \`anthropic:claude-opus-4-5\` | Claude Opus 4.5 |
|
|
134
|
+
| \`anthropic:claude-opus-4-1\` | Claude Opus 4.1 (legacy pricing) |
|
|
135
|
+
| \`anthropic:claude-sonnet-4-6\` | Claude Sonnet 4.6 |
|
|
136
|
+
| \`anthropic:claude-sonnet-4-5\` | Claude Sonnet 4.5 |
|
|
137
|
+
| \`anthropic:claude-haiku-4-5\` | Claude Haiku 4.5 |
|
|
138
|
+
|
|
139
|
+
Opus models are tuned for complex reasoning, Sonnet for a balance of intelligence
|
|
140
|
+
and speed, and Haiku for fast, cost-effective tasks.
|
|
141
|
+
|
|
142
|
+
## Connection validation
|
|
143
|
+
|
|
144
|
+
\`AnthropicProviderType\` exposes helpers that setup flows use to validate a
|
|
145
|
+
configuration before persisting it. \`validateConnection()\` requires a canonical
|
|
146
|
+
\`CredentialReference\` for API-key auth. Subscription health verifies the Claude Code
|
|
147
|
+
auth status; API health uses the non-generating models catalog endpoint. Provider bodies,
|
|
148
|
+
account identity, OAuth tokens, and authorization details are never returned.
|
|
149
|
+
|
|
150
|
+
## Recommendations
|
|
151
|
+
|
|
152
|
+
The \`AnthropicRecommendation\` class, which the \`ai/provider-recommendation\` kind resolves
|
|
153
|
+
through the runtime, scores Claude
|
|
154
|
+
across use cases and supplies setup steps. It supports the \`oauth\`, \`api_key\` and \`env_var\`
|
|
155
|
+
setup methods. OAuth means a provider-managed Claude Code subscription login on a consumer host;
|
|
156
|
+
it does not mean that Vibes stores a reusable Anthropic token.
|
|
157
|
+
|
|
158
|
+
\`\`\`ts
|
|
159
|
+
const recommendation = await runtime.query('ai/provider-recommendation').withId('anthropic').resolve();
|
|
160
|
+
|
|
161
|
+
recommendation.getSupportedSetupMethods(); // ['oauth', 'api_key', 'env_var']
|
|
162
|
+
\`\`\`
|
|
163
|
+
|
|
164
|
+
## Related
|
|
165
|
+
|
|
166
|
+
:::card{title="See also"}
|
|
167
|
+
- [\`ai.providers\`](ai.providers) — Provider registry overview
|
|
168
|
+
- [\`ai.generation\`](ai.generation) — Generation API
|
|
169
|
+
- [\`ai.streaming\`](ai.streaming) — Streaming responses
|
|
170
|
+
- [\`ai.models\`](ai.models) — Model registry and descriptors
|
|
171
|
+
:::
|
|
172
|
+
`;
|
|
173
|
+
const descriptor = {
|
|
174
|
+
kind: 'docs/topic',
|
|
175
|
+
id: 'ai.providers.anthropic',
|
|
176
|
+
title: 'Anthropic Provider',
|
|
177
|
+
summary: 'Use a Claude subscription locally or a separately billed Anthropic API credential',
|
|
178
|
+
body: {
|
|
179
|
+
type: 'markdown',
|
|
180
|
+
sourceType: 'raw',
|
|
181
|
+
source: ai_providers_anthropicMarkdown
|
|
182
|
+
},
|
|
183
|
+
parent: 'ai.providers',
|
|
184
|
+
order: 2,
|
|
185
|
+
tags: ['ai', 'providers', 'anthropic', 'claude', 'llm'],
|
|
186
|
+
surfaces: ['cli', 'web', 'in-app'],
|
|
187
|
+
hardware: ['consumer', 'cloud'],
|
|
188
|
+
enabled: true,
|
|
189
|
+
man: {
|
|
190
|
+
name: 'ai.providers.anthropic — Anthropic Claude provider',
|
|
191
|
+
section: 1,
|
|
192
|
+
synopsis: 'vibes man ai.providers.anthropic',
|
|
193
|
+
options: [],
|
|
194
|
+
examples: [
|
|
195
|
+
{
|
|
196
|
+
description: 'Generate text with Claude',
|
|
197
|
+
command: "const ex = await runtime.query('ai/generation').forHardware('consumer').resolve(); await ex.generate({ model: 'anthropic:claude-sonnet-4-5', messages: [...] })"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
description: 'Detect a configured Anthropic key',
|
|
201
|
+
command: 'await detectAnthropicSystem(runtime)'
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
description: 'Inspect supported setup methods',
|
|
205
|
+
command: "(await runtime.query('ai/provider-recommendation').withId('anthropic').resolve()).getSupportedSetupMethods()"
|
|
206
|
+
}
|
|
207
|
+
],
|
|
208
|
+
seeAlso: ['ai.providers', 'ai.generation', 'ai.streaming', 'ai.models']
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
export default descriptor;
|
|
212
|
+
//# sourceMappingURL=ai.providers.anthropic.docs.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.providers.anthropic.docs.descriptor.js","sourceRoot":"","sources":["../../../../../src/ai/providers/anthropic/docs/ai.providers.anthropic.docs.descriptor.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuKtC,CAAC;AAEF,MAAM,UAAU,GAAwB;IACtC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,wBAAwB;IAC5B,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,mFAAmF;IAC5F,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,8BAA8B;KACvC;IACD,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;IAClC,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,IAAI;IACb,GAAG,EAAE;QACH,IAAI,EAAE,oDAAoD;QAC1D,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,kCAAkC;QAC5C,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,2BAA2B;gBACxC,OAAO,EACL,iKAAiK;aACpK;YACD;gBACE,WAAW,EAAE,mCAAmC;gBAChD,OAAO,EAAE,sCAAsC;aAChD;YACD;gBACE,WAAW,EAAE,iCAAiC;gBAC9C,OAAO,EACL,8GAA8G;aACjH;SACF;QACD,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC;KACxE;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProviderRecommendation, type ModelAdapter } from '@vibesdotdev/ai/recommendations/base';
|
|
2
|
+
import type { UseCase, SetupMethod, RecommendationContext, SetupStep, ModelRecommendation } from '@vibesdotdev/ai/recommendations/schemas';
|
|
3
|
+
export declare class AnthropicRecommendation extends ProviderRecommendation {
|
|
4
|
+
readonly providerType = "anthropic";
|
|
5
|
+
readonly displayName = "Anthropic Claude";
|
|
6
|
+
getUseCaseScore(useCase: UseCase): number;
|
|
7
|
+
getStageScore(stage: RecommendationContext['stage']): number;
|
|
8
|
+
getRequiredEnvironmentVariables(): string[];
|
|
9
|
+
getReason(useCase: UseCase): string;
|
|
10
|
+
getStrengths(_useCase: UseCase): string[];
|
|
11
|
+
getWeaknesses(context: RecommendationContext): string[];
|
|
12
|
+
getSupportedSetupMethods(): SetupMethod[];
|
|
13
|
+
getSetupSteps(method: SetupMethod, _context: RecommendationContext): Promise<SetupStep[]>;
|
|
14
|
+
recommendModels(adapter: ModelAdapter | null, context: RecommendationContext): Promise<ModelRecommendation[]>;
|
|
15
|
+
getExecutionContext(): {
|
|
16
|
+
scanModels: "server";
|
|
17
|
+
getSetupSteps: "both";
|
|
18
|
+
recommendModels: "server";
|
|
19
|
+
};
|
|
20
|
+
supportsOAuth(): boolean;
|
|
21
|
+
supportsLocal(): boolean;
|
|
22
|
+
requiresGPU(): boolean;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=recommendations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,KAAK,EACX,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,MAAM,yCAAyC,CAAC;AAGjD,qBAAa,uBAAwB,SAAQ,sBAAsB;IAClE,QAAQ,CAAC,YAAY,eAAe;IACpC,QAAQ,CAAC,WAAW,sBAAsB;IAE1C,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAazC,aAAa,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM;IAI5D,+BAA+B,IAAI,MAAM,EAAE;IAI3C,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAenC,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE;IAUzC,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,EAAE;IAoBvD,wBAAwB,IAAI,WAAW,EAAE;IAInC,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsDzF,eAAe,CACpB,OAAO,EAAE,YAAY,GAAG,IAAI,EAC5B,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAkFjC,mBAAmB;;;;;IAQnB,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,OAAO;IAIxB,WAAW,IAAI,OAAO;CAGtB"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { ProviderRecommendation } from '@vibesdotdev/ai/recommendations/base';
|
|
2
|
+
import { catalogLimits, catalogModel, catalogName, usdPerMillion } from "../../catalog.js";
|
|
3
|
+
export class AnthropicRecommendation extends ProviderRecommendation {
|
|
4
|
+
providerType = 'anthropic';
|
|
5
|
+
displayName = 'Anthropic Claude';
|
|
6
|
+
getUseCaseScore(useCase) {
|
|
7
|
+
const scores = {
|
|
8
|
+
chat: 50,
|
|
9
|
+
development: 45,
|
|
10
|
+
research: 50,
|
|
11
|
+
images: 0,
|
|
12
|
+
video: 0,
|
|
13
|
+
audio: 0,
|
|
14
|
+
organization: 40
|
|
15
|
+
};
|
|
16
|
+
return scores[useCase];
|
|
17
|
+
}
|
|
18
|
+
getStageScore(stage) {
|
|
19
|
+
return stage === 'production' ? 25 : 0;
|
|
20
|
+
}
|
|
21
|
+
getRequiredEnvironmentVariables() {
|
|
22
|
+
return ['ANTHROPIC_API_KEY'];
|
|
23
|
+
}
|
|
24
|
+
getReason(useCase) {
|
|
25
|
+
switch (useCase) {
|
|
26
|
+
case 'chat':
|
|
27
|
+
return 'Claude excels at natural conversation with strong context retention';
|
|
28
|
+
case 'development':
|
|
29
|
+
return 'Claude Sonnet offers excellent code generation and debugging';
|
|
30
|
+
case 'research':
|
|
31
|
+
return "Claude's 200K context window handles long documents and analysis";
|
|
32
|
+
case 'organization':
|
|
33
|
+
return 'Enterprise-ready with strong safety and compliance';
|
|
34
|
+
default:
|
|
35
|
+
return 'General-purpose AI model with strong reasoning';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
getStrengths(_useCase) {
|
|
39
|
+
return [
|
|
40
|
+
'200K context window',
|
|
41
|
+
'Strong reasoning capabilities',
|
|
42
|
+
'Fast response times',
|
|
43
|
+
'SOC 2 Type II certified',
|
|
44
|
+
'Excellent code understanding'
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
getWeaknesses(context) {
|
|
48
|
+
const weaknesses = [];
|
|
49
|
+
if (context.useCase === 'images' ||
|
|
50
|
+
context.useCase === 'video' ||
|
|
51
|
+
context.useCase === 'audio') {
|
|
52
|
+
weaknesses.push('No multimedia generation');
|
|
53
|
+
}
|
|
54
|
+
if (!context.availableEnvVars?.includes('ANTHROPIC_API_KEY')) {
|
|
55
|
+
weaknesses.push('Cloud execution requires an Anthropic API credential reference');
|
|
56
|
+
}
|
|
57
|
+
weaknesses.push('Claude subscription execution requires a connected consumer host');
|
|
58
|
+
return weaknesses;
|
|
59
|
+
}
|
|
60
|
+
getSupportedSetupMethods() {
|
|
61
|
+
return ['oauth', 'api_key', 'env_var'];
|
|
62
|
+
}
|
|
63
|
+
async getSetupSteps(method, _context) {
|
|
64
|
+
if (method === 'oauth') {
|
|
65
|
+
return [
|
|
66
|
+
{
|
|
67
|
+
step: 'Connect Claude subscription',
|
|
68
|
+
description: 'Run the provider-owned Claude Code browser login without the Console API-billing option.'
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
step: 'Verify billing route',
|
|
72
|
+
description: 'Confirm Claude Code reports authMethod=claude.ai and a non-empty subscription type.'
|
|
73
|
+
}
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
if (method === 'api_key') {
|
|
77
|
+
return [
|
|
78
|
+
{
|
|
79
|
+
step: 'Get API Key',
|
|
80
|
+
description: 'Sign up for Anthropic Claude and generate an API key',
|
|
81
|
+
action: 'https://console.anthropic.com/settings/keys',
|
|
82
|
+
component: 'anthropic/setup/signup-guide'
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
step: 'Store the API key',
|
|
86
|
+
description: 'Save the value through Vibes Secrets, then enter only its secret reference name in provider setup.',
|
|
87
|
+
component: 'anthropic/setup/api-key-form'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
step: 'Test Connection',
|
|
91
|
+
description: "We'll verify your API key works and select a default model"
|
|
92
|
+
}
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
if (method === 'env_var') {
|
|
96
|
+
return [
|
|
97
|
+
{
|
|
98
|
+
step: 'Bind the runtime credential',
|
|
99
|
+
description: 'Provision ANTHROPIC_API_KEY through the host credential store the runtime composes (a live host-credentials publisher or the workspace env-file store), then save the secret reference { source: "secret", key: "ANTHROPIC_API_KEY" }.',
|
|
100
|
+
component: 'anthropic/setup/env-var-guide'
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
step: 'Restart Application',
|
|
104
|
+
description: 'Restart the host so the credential store publishes the key'
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
async recommendModels(adapter, context) {
|
|
111
|
+
const recommendations = [];
|
|
112
|
+
// If adapter exists, check which models user has access to
|
|
113
|
+
let availableModels = [];
|
|
114
|
+
if (adapter?.listModels) {
|
|
115
|
+
// A listing failure propagates: logging it and recommending against an
|
|
116
|
+
// empty list would present every model as unavailable.
|
|
117
|
+
const models = await adapter.listModels();
|
|
118
|
+
availableModels = models.map((m) => m.id);
|
|
119
|
+
}
|
|
120
|
+
// A model is available when the adapter lists its catalogue id, or a dated snapshot of it.
|
|
121
|
+
const isListed = (providerModelId) => availableModels.some((listed) => listed === providerModelId || listed.startsWith(`${providerModelId}-`));
|
|
122
|
+
/** A recommendation of one catalogue model: its id, name, limits and price are the catalogue's. */
|
|
123
|
+
const recommend = (providerModelId, fit) => {
|
|
124
|
+
const model = catalogModel(providerModelId);
|
|
125
|
+
const limits = catalogLimits(model);
|
|
126
|
+
const input = usdPerMillion(model, 'input_tokens');
|
|
127
|
+
const output = usdPerMillion(model, 'output_tokens');
|
|
128
|
+
const recommendation = {
|
|
129
|
+
modelId: model.providerModelId,
|
|
130
|
+
modelName: catalogName(model),
|
|
131
|
+
score: fit.score,
|
|
132
|
+
reason: fit.reason,
|
|
133
|
+
contextWindow: limits.contextWindow,
|
|
134
|
+
maxOutputTokens: limits.maxOutputTokens,
|
|
135
|
+
capabilities: fit.capabilities,
|
|
136
|
+
isAvailable: isListed(model.providerModelId),
|
|
137
|
+
requiresUpgrade: false,
|
|
138
|
+
useCaseFit: fit.score
|
|
139
|
+
};
|
|
140
|
+
// The field is per 1K tokens; the catalogue prices per million.
|
|
141
|
+
if (input !== undefined && output !== undefined) {
|
|
142
|
+
recommendation.costPer1kTokens = { input: input / 1000, output: output / 1000 };
|
|
143
|
+
}
|
|
144
|
+
return recommendation;
|
|
145
|
+
};
|
|
146
|
+
// Recommend models based on use case
|
|
147
|
+
if (context.useCase === 'chat' || context.useCase === 'research') {
|
|
148
|
+
recommendations.push(recommend('claude-opus-4-7', {
|
|
149
|
+
score: 95,
|
|
150
|
+
reason: 'Most capable model for complex reasoning and long conversations',
|
|
151
|
+
capabilities: ['chat', 'vision', 'tools']
|
|
152
|
+
}), recommend('claude-sonnet-4-6', {
|
|
153
|
+
score: 90,
|
|
154
|
+
reason: 'Best balance of intelligence and speed for most tasks',
|
|
155
|
+
capabilities: ['chat', 'vision', 'tools']
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
if (context.useCase === 'development') {
|
|
159
|
+
recommendations.push(recommend('claude-sonnet-4-6', {
|
|
160
|
+
score: 95,
|
|
161
|
+
reason: 'Excellent at code generation, debugging, and technical tasks',
|
|
162
|
+
capabilities: ['chat', 'vision', 'tools']
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
if (context.userType === 'simple' || context.useCase === 'organization') {
|
|
166
|
+
recommendations.push(recommend('claude-haiku-4-5', {
|
|
167
|
+
score: 75,
|
|
168
|
+
reason: 'Fast and cost-effective for simple queries',
|
|
169
|
+
capabilities: ['chat', 'vision']
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
// Sort by score
|
|
173
|
+
return recommendations.sort((a, b) => b.score - a.score);
|
|
174
|
+
}
|
|
175
|
+
getExecutionContext() {
|
|
176
|
+
return {
|
|
177
|
+
scanModels: 'server',
|
|
178
|
+
getSetupSteps: 'both',
|
|
179
|
+
recommendModels: 'server'
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
supportsOAuth() {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
supportsLocal() {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
requiresGPU() {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=recommendations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/recommendations.ts"],"names":[],"mappings":"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"}
|