@getpaseo/server 0.2.1 → 0.2.2
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/server/server/agent/providers/claude/agent.d.ts +3 -0
- package/dist/server/server/agent/providers/claude/agent.js +31 -2
- package/dist/server/server/agent/providers/claude/model-manifest.d.ts +31 -5
- package/dist/server/server/agent/providers/claude/model-manifest.js +79 -23
- package/dist/server/server/agent/providers/claude/models.d.ts +2 -2
- package/dist/server/server/agent/providers/claude/models.js +4 -4
- package/dist/server/web-ui/_expo/static/js/web/{index-de9718f7e02a4f1e313f23dc76de7025.js → index-df2ab43bd83b09b00e92c1bb91d425eb.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{index-de9718f7e02a4f1e313f23dc76de7025.js.br → index-df2ab43bd83b09b00e92c1bb91d425eb.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{index-de9718f7e02a4f1e313f23dc76de7025.js.gz → index-df2ab43bd83b09b00e92c1bb91d425eb.js.gz} +0 -0
- package/dist/server/web-ui/index.html +1 -1
- package/dist/server/web-ui/index.html.br +0 -0
- package/dist/server/web-ui/index.html.gz +0 -0
- package/package.json +6 -6
|
@@ -22,6 +22,7 @@ interface ClaudeAgentClientOptions {
|
|
|
22
22
|
runtimeSettings?: ProviderRuntimeSettings;
|
|
23
23
|
queryFactory?: ClaudeQueryFactory;
|
|
24
24
|
resolveBinary?: () => Promise<string>;
|
|
25
|
+
resolveVersion?: () => Promise<string>;
|
|
25
26
|
configDir?: string;
|
|
26
27
|
}
|
|
27
28
|
export declare function extractUserMessageText(content: unknown): string | null;
|
|
@@ -35,6 +36,7 @@ export declare class ClaudeAgentClient implements AgentClient {
|
|
|
35
36
|
private readonly runtimeSettings?;
|
|
36
37
|
private readonly queryFactory?;
|
|
37
38
|
private readonly resolveBinary;
|
|
39
|
+
private readonly resolveVersion;
|
|
38
40
|
private readonly configDir?;
|
|
39
41
|
constructor(options: ClaudeAgentClientOptions);
|
|
40
42
|
createSession(config: AgentSessionConfig, launchContext?: AgentLaunchContext, options?: AgentCreateSessionOptions): Promise<AgentSession>;
|
|
@@ -50,6 +52,7 @@ export declare class ClaudeAgentClient implements AgentClient {
|
|
|
50
52
|
}>;
|
|
51
53
|
private assertConfig;
|
|
52
54
|
}
|
|
55
|
+
export declare function resolveClaudeCodeVersion(runtimeSettings?: ProviderRuntimeSettings): Promise<string>;
|
|
53
56
|
interface ClaudeHistoryEntry {
|
|
54
57
|
type?: unknown;
|
|
55
58
|
subtype?: unknown;
|
|
@@ -6,7 +6,7 @@ import path from "node:path";
|
|
|
6
6
|
import { mapClaudeCanceledToolCall, mapClaudeCompletedToolCall, mapClaudeFailedToolCall, mapClaudeRunningToolCall, } from "./tool-call-mapper.js";
|
|
7
7
|
import { mapTaskNotificationSystemRecordToToolCall, mapTaskNotificationUserContentToToolCall, } from "./task-notification-tool-call.js";
|
|
8
8
|
import { findClaudeModel, getClaudeModelsWithSettings, normalizeClaudeRuntimeModelId, } from "./models.js";
|
|
9
|
-
import { CLAUDE_DISABLED_THINKING_OPTION_ID, CLAUDE_ULTRACODE_THINKING_OPTION_ID, resolveClaudeDisabledThinkingForModel, } from "./model-manifest.js";
|
|
9
|
+
import { CLAUDE_DISABLED_THINKING_OPTION_ID, CLAUDE_ULTRACODE_THINKING_OPTION_ID, parseClaudeCodeVersion, resolveClaudeDisabledThinkingForModel, } from "./model-manifest.js";
|
|
10
10
|
import { parsePartialJsonObject } from "./partial-json.js";
|
|
11
11
|
import { ClaudeSidechainTracker } from "./sidechain-tracker.js";
|
|
12
12
|
import { buildClaudeFeatures, claudeModelSupportsFastMode } from "./feature-definitions.js";
|
|
@@ -1039,6 +1039,8 @@ export class ClaudeAgentClient {
|
|
|
1039
1039
|
this.runtimeSettings = options.runtimeSettings;
|
|
1040
1040
|
this.queryFactory = options.queryFactory;
|
|
1041
1041
|
this.resolveBinary = options.resolveBinary ?? (() => resolveClaudeBinary(this.runtimeSettings));
|
|
1042
|
+
this.resolveVersion =
|
|
1043
|
+
options.resolveVersion ?? (() => resolveClaudeCodeVersion(this.runtimeSettings));
|
|
1042
1044
|
this.configDir = options.configDir;
|
|
1043
1045
|
}
|
|
1044
1046
|
async createSession(config, launchContext, options) {
|
|
@@ -1079,7 +1081,14 @@ export class ClaudeAgentClient {
|
|
|
1079
1081
|
}
|
|
1080
1082
|
async fetchCatalog(_options) {
|
|
1081
1083
|
// Claude exposes a global catalog here; cwd/force are intentionally irrelevant.
|
|
1082
|
-
|
|
1084
|
+
let claudeCodeVersion;
|
|
1085
|
+
try {
|
|
1086
|
+
claudeCodeVersion = await this.resolveVersion();
|
|
1087
|
+
}
|
|
1088
|
+
catch (error) {
|
|
1089
|
+
this.logger.warn({ err: error }, "Failed to resolve Claude Code version for model catalog");
|
|
1090
|
+
}
|
|
1091
|
+
const models = await getClaudeModelsWithSettings(this.logger, this.configDir, claudeCodeVersion);
|
|
1083
1092
|
const modes = detectIneligibleAutoModeTransport(createProviderEnv({ baseEnv: process.env, runtimeSettings: this.runtimeSettings }))
|
|
1084
1093
|
? DEFAULT_MODES.filter((mode) => mode.id !== "auto")
|
|
1085
1094
|
: DEFAULT_MODES;
|
|
@@ -1181,6 +1190,26 @@ async function resolveClaudeBinary(runtimeSettings) {
|
|
|
1181
1190
|
}
|
|
1182
1191
|
throw new Error("Claude binary not found. Install Claude Code (https://github.com/anthropics/claude-code) and ensure it is available in your shell PATH.");
|
|
1183
1192
|
}
|
|
1193
|
+
export async function resolveClaudeCodeVersion(runtimeSettings) {
|
|
1194
|
+
const launch = await resolveProviderLaunch({
|
|
1195
|
+
commandConfig: runtimeSettings?.command,
|
|
1196
|
+
defaultBinary: "claude",
|
|
1197
|
+
});
|
|
1198
|
+
const availability = await checkProviderLaunchAvailable(launch);
|
|
1199
|
+
if (!availability.available) {
|
|
1200
|
+
throw new Error("Claude binary not found while resolving Claude Code version");
|
|
1201
|
+
}
|
|
1202
|
+
const executable = availability.resolvedPath ?? launch.command;
|
|
1203
|
+
const { stdout, stderr } = await execCommand(executable, [...launch.args, "--version"], {
|
|
1204
|
+
...createProviderEnvSpec({ runtimeSettings }),
|
|
1205
|
+
timeout: 5000,
|
|
1206
|
+
});
|
|
1207
|
+
const version = parseClaudeCodeVersion(`${stdout}\n${stderr}`);
|
|
1208
|
+
if (!version) {
|
|
1209
|
+
throw new Error("Unable to parse Claude Code version from --version output");
|
|
1210
|
+
}
|
|
1211
|
+
return version.join(".");
|
|
1212
|
+
}
|
|
1184
1213
|
async function resolveClaudeAuth(launch, availability, runtimeSettings) {
|
|
1185
1214
|
const run = async (executable, args) => {
|
|
1186
1215
|
try {
|
|
@@ -2,18 +2,35 @@ import type { AgentModelDefinition } from "../../agent-sdk-types.js";
|
|
|
2
2
|
export declare const CLAUDE_DISABLED_THINKING_OPTION_ID = "off";
|
|
3
3
|
export declare const CLAUDE_ULTRACODE_THINKING_OPTION_ID = "ultracode";
|
|
4
4
|
export declare const CLAUDE_MODEL_MANIFEST: readonly [{
|
|
5
|
+
readonly id: "claude-opus-5[1m]";
|
|
6
|
+
readonly label: "Opus 5 1M";
|
|
7
|
+
readonly description: "Opus 5 with 1M context window";
|
|
8
|
+
readonly defaultPriority: 2;
|
|
9
|
+
readonly minimumClaudeCodeVersion: "2.1.219";
|
|
10
|
+
readonly contextWindowMaxTokens: 1000000;
|
|
11
|
+
readonly effortLevels: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
12
|
+
readonly supportsThinkingDisabled: true;
|
|
13
|
+
}, {
|
|
5
14
|
readonly id: "claude-opus-5";
|
|
6
15
|
readonly label: "Opus 5";
|
|
7
|
-
readonly description: "Opus 5 ·
|
|
8
|
-
readonly
|
|
9
|
-
readonly contextWindowMaxTokens:
|
|
16
|
+
readonly description: "Opus 5 · 200K context window";
|
|
17
|
+
readonly minimumClaudeCodeVersion: "2.1.219";
|
|
18
|
+
readonly contextWindowMaxTokens: 200000;
|
|
10
19
|
readonly effortLevels: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
11
20
|
readonly supportsThinkingDisabled: true;
|
|
21
|
+
}, {
|
|
22
|
+
readonly id: "claude-fable-5[1m]";
|
|
23
|
+
readonly label: "Fable 5 1M";
|
|
24
|
+
readonly description: "Fable 5 with 1M context window";
|
|
25
|
+
readonly minimumClaudeCodeVersion: "2.1.169";
|
|
26
|
+
readonly contextWindowMaxTokens: 1000000;
|
|
27
|
+
readonly effortLevels: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
12
28
|
}, {
|
|
13
29
|
readonly id: "claude-fable-5";
|
|
14
30
|
readonly label: "Fable 5";
|
|
15
31
|
readonly description: "Fable 5 · Most powerful model";
|
|
16
|
-
readonly
|
|
32
|
+
readonly minimumClaudeCodeVersion: "2.1.169";
|
|
33
|
+
readonly contextWindowMaxTokens: 200000;
|
|
17
34
|
readonly effortLevels: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
18
35
|
}, {
|
|
19
36
|
readonly id: "claude-opus-4-8[1m]";
|
|
@@ -27,6 +44,7 @@ export declare const CLAUDE_MODEL_MANIFEST: readonly [{
|
|
|
27
44
|
readonly id: "claude-opus-4-8";
|
|
28
45
|
readonly label: "Opus 4.8";
|
|
29
46
|
readonly description: "Opus 4.8 · Previous release";
|
|
47
|
+
readonly defaultPriority: 1;
|
|
30
48
|
readonly contextWindowMaxTokens: 200000;
|
|
31
49
|
readonly effortLevels: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
32
50
|
readonly supportsThinkingDisabled: true;
|
|
@@ -35,6 +53,13 @@ export declare const CLAUDE_MODEL_MANIFEST: readonly [{
|
|
|
35
53
|
readonly id: "claude-sonnet-5";
|
|
36
54
|
readonly label: "Sonnet 5";
|
|
37
55
|
readonly description: "Sonnet 5 · Best for everyday tasks";
|
|
56
|
+
readonly contextWindowMaxTokens: 200000;
|
|
57
|
+
readonly effortLevels: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
58
|
+
readonly supportsThinkingDisabled: true;
|
|
59
|
+
}, {
|
|
60
|
+
readonly id: "claude-sonnet-5[1m]";
|
|
61
|
+
readonly label: "Sonnet 5 1M";
|
|
62
|
+
readonly description: "Sonnet 5 with 1M context window";
|
|
38
63
|
readonly contextWindowMaxTokens: 1000000;
|
|
39
64
|
readonly effortLevels: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
40
65
|
readonly supportsThinkingDisabled: true;
|
|
@@ -90,7 +115,8 @@ export declare const CLAUDE_MODEL_MANIFEST: readonly [{
|
|
|
90
115
|
readonly description: "Haiku 4.5 · Fastest for quick answers";
|
|
91
116
|
readonly contextWindowMaxTokens: 200000;
|
|
92
117
|
}];
|
|
93
|
-
export declare function getClaudeManifestModels(): AgentModelDefinition[];
|
|
118
|
+
export declare function getClaudeManifestModels(claudeCodeVersion?: string): AgentModelDefinition[];
|
|
119
|
+
export declare function parseClaudeCodeVersion(value: string): [number, number, number] | null;
|
|
94
120
|
export interface ClaudeDisabledThinkingResolution {
|
|
95
121
|
supported: boolean;
|
|
96
122
|
fallbackThinkingOptionId: string | undefined;
|
|
@@ -12,20 +12,39 @@ const CLAUDE_EFFORT_LABELS = {
|
|
|
12
12
|
export const CLAUDE_DISABLED_THINKING_OPTION_ID = "off";
|
|
13
13
|
export const CLAUDE_ULTRACODE_THINKING_OPTION_ID = "ultracode";
|
|
14
14
|
export const CLAUDE_MODEL_MANIFEST = [
|
|
15
|
+
{
|
|
16
|
+
id: "claude-opus-5[1m]",
|
|
17
|
+
label: "Opus 5 1M",
|
|
18
|
+
description: "Opus 5 with 1M context window",
|
|
19
|
+
defaultPriority: 2,
|
|
20
|
+
minimumClaudeCodeVersion: "2.1.219",
|
|
21
|
+
contextWindowMaxTokens: 1000000,
|
|
22
|
+
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
|
23
|
+
supportsThinkingDisabled: true,
|
|
24
|
+
},
|
|
15
25
|
{
|
|
16
26
|
id: "claude-opus-5",
|
|
17
27
|
label: "Opus 5",
|
|
18
|
-
description: "Opus 5 ·
|
|
19
|
-
|
|
20
|
-
contextWindowMaxTokens:
|
|
28
|
+
description: "Opus 5 · 200K context window",
|
|
29
|
+
minimumClaudeCodeVersion: "2.1.219",
|
|
30
|
+
contextWindowMaxTokens: 200000,
|
|
21
31
|
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
|
22
32
|
supportsThinkingDisabled: true,
|
|
23
33
|
},
|
|
34
|
+
{
|
|
35
|
+
id: "claude-fable-5[1m]",
|
|
36
|
+
label: "Fable 5 1M",
|
|
37
|
+
description: "Fable 5 with 1M context window",
|
|
38
|
+
minimumClaudeCodeVersion: "2.1.169",
|
|
39
|
+
contextWindowMaxTokens: 1000000,
|
|
40
|
+
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
|
41
|
+
},
|
|
24
42
|
{
|
|
25
43
|
id: "claude-fable-5",
|
|
26
44
|
label: "Fable 5",
|
|
27
45
|
description: "Fable 5 · Most powerful model",
|
|
28
|
-
|
|
46
|
+
minimumClaudeCodeVersion: "2.1.169",
|
|
47
|
+
contextWindowMaxTokens: 200000,
|
|
29
48
|
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
|
30
49
|
},
|
|
31
50
|
{
|
|
@@ -41,6 +60,7 @@ export const CLAUDE_MODEL_MANIFEST = [
|
|
|
41
60
|
id: "claude-opus-4-8",
|
|
42
61
|
label: "Opus 4.8",
|
|
43
62
|
description: "Opus 4.8 · Previous release",
|
|
63
|
+
defaultPriority: 1,
|
|
44
64
|
contextWindowMaxTokens: 200000,
|
|
45
65
|
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
|
46
66
|
supportsThinkingDisabled: true,
|
|
@@ -50,6 +70,14 @@ export const CLAUDE_MODEL_MANIFEST = [
|
|
|
50
70
|
id: "claude-sonnet-5",
|
|
51
71
|
label: "Sonnet 5",
|
|
52
72
|
description: "Sonnet 5 · Best for everyday tasks",
|
|
73
|
+
contextWindowMaxTokens: 200000,
|
|
74
|
+
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
|
75
|
+
supportsThinkingDisabled: true,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "claude-sonnet-5[1m]",
|
|
79
|
+
label: "Sonnet 5 1M",
|
|
80
|
+
description: "Sonnet 5 with 1M context window",
|
|
53
81
|
contextWindowMaxTokens: 1000000,
|
|
54
82
|
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
|
55
83
|
supportsThinkingDisabled: true,
|
|
@@ -129,27 +157,55 @@ function buildThinkingOptions(effortLevels, supportsThinkingDisabled) {
|
|
|
129
157
|
}
|
|
130
158
|
return options;
|
|
131
159
|
}
|
|
132
|
-
export function getClaudeManifestModels() {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
160
|
+
export function getClaudeManifestModels(claudeCodeVersion) {
|
|
161
|
+
const availableModels = CLAUDE_MODEL_MANIFEST.filter((model) => isModelAvailableInClaudeCode(model, claudeCodeVersion));
|
|
162
|
+
const defaultModel = availableModels.reduce((selected, candidate) => (candidate.defaultPriority ?? 0) > (selected?.defaultPriority ?? 0) ? candidate : selected, undefined);
|
|
163
|
+
return availableModels.map((model) => {
|
|
164
|
+
const thinkingOptions = buildThinkingOptions(model.effortLevels, model.supportsThinkingDisabled === true);
|
|
165
|
+
const definition = {
|
|
136
166
|
provider: "claude",
|
|
137
167
|
id: model.id,
|
|
138
168
|
label: model.label,
|
|
139
169
|
description: model.description,
|
|
140
|
-
...("isDefault" in model && model.isDefault ? { isDefault: true } : {}),
|
|
141
|
-
...(model.contextWindowMaxTokens !== undefined
|
|
142
|
-
? { contextWindowMaxTokens: model.contextWindowMaxTokens }
|
|
143
|
-
: {}),
|
|
144
|
-
...(thinkingOptions
|
|
145
|
-
? {
|
|
146
|
-
thinkingOptions,
|
|
147
|
-
defaultThinkingOptionId: "effortLevels" in model ? model.effortLevels?.[0] : undefined,
|
|
148
|
-
}
|
|
149
|
-
: {}),
|
|
150
170
|
};
|
|
171
|
+
if (model === defaultModel) {
|
|
172
|
+
definition.isDefault = true;
|
|
173
|
+
}
|
|
174
|
+
if (model.contextWindowMaxTokens !== undefined) {
|
|
175
|
+
definition.contextWindowMaxTokens = model.contextWindowMaxTokens;
|
|
176
|
+
}
|
|
177
|
+
if (thinkingOptions) {
|
|
178
|
+
definition.thinkingOptions = thinkingOptions;
|
|
179
|
+
definition.defaultThinkingOptionId = model.effortLevels?.[0];
|
|
180
|
+
}
|
|
181
|
+
return definition;
|
|
151
182
|
});
|
|
152
183
|
}
|
|
184
|
+
function isModelAvailableInClaudeCode(model, claudeCodeVersion) {
|
|
185
|
+
if (!model.minimumClaudeCodeVersion || claudeCodeVersion === undefined) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
return compareVersions(claudeCodeVersion, model.minimumClaudeCodeVersion) >= 0;
|
|
189
|
+
}
|
|
190
|
+
function compareVersions(left, right) {
|
|
191
|
+
const leftParts = parseClaudeCodeVersion(left);
|
|
192
|
+
const rightParts = parseClaudeCodeVersion(right);
|
|
193
|
+
if (!leftParts || !rightParts) {
|
|
194
|
+
return -1;
|
|
195
|
+
}
|
|
196
|
+
for (let index = 0; index < leftParts.length; index += 1) {
|
|
197
|
+
const difference = leftParts[index] - rightParts[index];
|
|
198
|
+
if (difference !== 0) {
|
|
199
|
+
return difference;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return 0;
|
|
203
|
+
}
|
|
204
|
+
export function parseClaudeCodeVersion(value) {
|
|
205
|
+
const match = value.match(/\b(\d+)\.(\d+)\.(\d+)\s+\(Claude Code\)/i) ??
|
|
206
|
+
value.match(/\b(\d+)\.(\d+)\.(\d+)\b/);
|
|
207
|
+
return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : null;
|
|
208
|
+
}
|
|
153
209
|
/**
|
|
154
210
|
* Resolve the disabled-thinking capability from the curated manifest only. Runtime/provider
|
|
155
211
|
* model aliases intentionally do not inherit this capability.
|
|
@@ -188,15 +244,15 @@ export function normalizeClaudeManifestModelId(value) {
|
|
|
188
244
|
if (isClaudeManifestModelId(trimmed)) {
|
|
189
245
|
return trimmed;
|
|
190
246
|
}
|
|
191
|
-
const singleSegmentMatch = trimmed.match(/^(?:claude[-_ ])?(fable|opus|sonnet|haiku)[-_ ]+(\d+)(
|
|
247
|
+
const singleSegmentMatch = trimmed.match(/^(?:claude[-_ ])?(fable|opus|sonnet|haiku)[-_ ]+(\d+)(?:\[1m\])?(?:[-_ ]+\d{8})?(?:\[1m\])?$/i);
|
|
192
248
|
if (singleSegmentMatch) {
|
|
193
249
|
return normalizeSingleSegmentClaudeModelId(singleSegmentMatch[1], singleSegmentMatch[2], trimmed.toLowerCase().includes("[1m]"));
|
|
194
250
|
}
|
|
195
|
-
const runtimeMatch = trimmed.match(/^(?:claude[-_ ])?(opus|sonnet|haiku)[-_ ]+(\d+)[-.](\d+)(
|
|
251
|
+
const runtimeMatch = trimmed.match(/^(?:claude[-_ ])?(opus|sonnet|haiku)[-_ ]+(\d+)[-.](\d+)(?:\[1m\])?(?:[-_ ]+\d{8})?(?:\[1m\])?$/i);
|
|
196
252
|
if (!runtimeMatch) {
|
|
197
253
|
return null;
|
|
198
254
|
}
|
|
199
|
-
return normalizeMajorMinorClaudeModelId(runtimeMatch[1], runtimeMatch[2], runtimeMatch[3],
|
|
255
|
+
return normalizeMajorMinorClaudeModelId(runtimeMatch[1], runtimeMatch[2], runtimeMatch[3], trimmed.toLowerCase().includes("[1m]"));
|
|
200
256
|
}
|
|
201
257
|
/**
|
|
202
258
|
* Normalize a Claude Code runtime/config model string to a known manifest ID.
|
|
@@ -214,7 +270,7 @@ export function normalizeClaudeRuntimeModelId(value) {
|
|
|
214
270
|
}
|
|
215
271
|
const singleSegmentMatch = trimmed.match(/claude[-_ ](fable|opus|sonnet|haiku)[-_ ]+(\d+)(\[1m\])?/i);
|
|
216
272
|
if (singleSegmentMatch) {
|
|
217
|
-
const normalizedModelId = normalizeSingleSegmentClaudeModelId(singleSegmentMatch[1], singleSegmentMatch[2],
|
|
273
|
+
const normalizedModelId = normalizeSingleSegmentClaudeModelId(singleSegmentMatch[1], singleSegmentMatch[2], trimmed.toLowerCase().includes("[1m]"));
|
|
218
274
|
if (normalizedModelId) {
|
|
219
275
|
return normalizedModelId;
|
|
220
276
|
}
|
|
@@ -223,7 +279,7 @@ export function normalizeClaudeRuntimeModelId(value) {
|
|
|
223
279
|
if (!runtimeMatch) {
|
|
224
280
|
return null;
|
|
225
281
|
}
|
|
226
|
-
return normalizeMajorMinorClaudeModelId(runtimeMatch[1], runtimeMatch[2], runtimeMatch[3],
|
|
282
|
+
return normalizeMajorMinorClaudeModelId(runtimeMatch[1], runtimeMatch[2], runtimeMatch[3], trimmed.toLowerCase().includes("[1m]"));
|
|
227
283
|
}
|
|
228
284
|
function normalizeSingleSegmentClaudeModelId(familyValue, major, hasOneMillionContext) {
|
|
229
285
|
const family = familyValue.toLowerCase();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Logger } from "pino";
|
|
2
2
|
import type { AgentModelDefinition } from "../../agent-sdk-types.js";
|
|
3
|
-
export declare function getClaudeModels(): AgentModelDefinition[];
|
|
3
|
+
export declare function getClaudeModels(claudeCodeVersion?: string): AgentModelDefinition[];
|
|
4
4
|
export declare function findClaudeModel(modelId: string | null | undefined): AgentModelDefinition | undefined;
|
|
5
|
-
export declare function getClaudeModelsWithSettings(logger: Logger, configDir?: string): Promise<AgentModelDefinition[]>;
|
|
5
|
+
export declare function getClaudeModelsWithSettings(logger: Logger, configDir?: string, claudeCodeVersion?: string): Promise<AgentModelDefinition[]>;
|
|
6
6
|
/**
|
|
7
7
|
* Normalize a runtime model string (from SDK init message) to a known model ID.
|
|
8
8
|
* Handles the `[1m]` suffix that the SDK appends for 1M context sessions.
|
|
@@ -9,8 +9,8 @@ const CLAUDE_SETTINGS_MODEL_ENV_KEYS = [
|
|
|
9
9
|
"ANTHROPIC_DEFAULT_SONNET_MODEL",
|
|
10
10
|
"ANTHROPIC_DEFAULT_HAIKU_MODEL",
|
|
11
11
|
];
|
|
12
|
-
export function getClaudeModels() {
|
|
13
|
-
return getClaudeManifestModels();
|
|
12
|
+
export function getClaudeModels(claudeCodeVersion) {
|
|
13
|
+
return getClaudeManifestModels(claudeCodeVersion);
|
|
14
14
|
}
|
|
15
15
|
export function findClaudeModel(modelId) {
|
|
16
16
|
const normalizedModelId = normalizeClaudeRuntimeModelId(modelId);
|
|
@@ -19,8 +19,8 @@ export function findClaudeModel(modelId) {
|
|
|
19
19
|
}
|
|
20
20
|
return getClaudeModels().find((model) => model.id === normalizedModelId);
|
|
21
21
|
}
|
|
22
|
-
export async function getClaudeModelsWithSettings(logger, configDir) {
|
|
23
|
-
const hardcodedModels = getClaudeModels();
|
|
22
|
+
export async function getClaudeModelsWithSettings(logger, configDir, claudeCodeVersion) {
|
|
23
|
+
const hardcodedModels = getClaudeModels(claudeCodeVersion);
|
|
24
24
|
const settingsModels = await readClaudeSettingsModels(logger, configDir);
|
|
25
25
|
if (settingsModels.length === 0) {
|
|
26
26
|
return hardcodedModels;
|
|
@@ -15059,7 +15059,7 @@ __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{v
|
|
|
15059
15059
|
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"decodeOfferFragmentPayload",{enumerable:!0,get:function(){return n.decodeOfferFragmentPayload}}),Object.defineProperty(e,"buildDaemonWebSocketUrl",{enumerable:!0,get:function(){return t.buildDaemonWebSocketUrl}}),Object.defineProperty(e,"deriveLabelFromEndpoint",{enumerable:!0,get:function(){return t.deriveLabelFromEndpoint}}),Object.defineProperty(e,"extractHostPortFromWebSocketUrl",{enumerable:!0,get:function(){return t.extractHostPortFromWebSocketUrl}}),Object.defineProperty(e,"normalizeHostPort",{enumerable:!0,get:function(){return t.normalizeHostPort}}),Object.defineProperty(e,"parseConnectionUri",{enumerable:!0,get:function(){return t.parseConnectionUri}}),Object.defineProperty(e,"parseHostPort",{enumerable:!0,get:function(){return t.parseHostPort}}),Object.defineProperty(e,"serializeConnectionUri",{enumerable:!0,get:function(){return t.serializeConnectionUri}}),Object.defineProperty(e,"serializeConnectionUriForStorage",{enumerable:!0,get:function(){return t.serializeConnectionUriForStorage}}),Object.defineProperty(e,"shouldUseTlsForDefaultHostedRelay",{enumerable:!0,get:function(){return t.shouldUseTlsForDefaultHostedRelay}}),e.buildRelayWebSocketUrl=function(n){return(0,t.buildRelayWebSocketUrl)(Object.assign({},n,{role:"client"}))};var t=r(d[0]),n=r(d[1])},3414,[3393,3415]);
|
|
15060
15060
|
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"ConnectionOfferV2Schema",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"ConnectionOfferSchema",{enumerable:!0,get:function(){return o}}),e.decodeOfferFragmentPayload=l,e.parseConnectionOfferFromUrl=function(n){const t=f(n);if(!t)return null;const c=l(t);return o.parse(c)};var n=r(d[0]);const t=n.z.object({v:n.z.literal(2),serverId:n.z.string().min(1),daemonPublicKeyB64:n.z.string().min(1),relay:n.z.object({endpoint:n.z.string().min(1),useTls:n.z.boolean().optional()})}),o=t;function c(n){const t=n.replace(/-/g,"+").replace(/_/g,"/"),o=t.padEnd(t.length+(4-t.length%4)%4,"="),c=globalThis.atob(o),l=Uint8Array.from(c,n=>n.charCodeAt(0));return new TextDecoder("utf-8",{fatal:!0}).decode(l)}function l(n){const t=c(n);return JSON.parse(t)}const u="#offer=";function f(n){const t=n.trim();if(!t)return null;const o=t.indexOf(u);if(-1===o)return null;const c=t.slice(o+u.length).trim();return c.length>0?c:null}},3415,[3279]);
|
|
15061
15061
|
__d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.resolveAppVersion=function(){const e=u(t.default?.version);if(e)return e;const o=u(n.default.expoConfig?.version);if(o)return o;const f=u(n.default.manifest?.version);if(f)return f;return null};var n=e(r(d[0])),t=e(r(d[1]));function u(e){if("string"!=typeof e)return null;const n=e.trim();return 0===n.length?null:n}},3416,[1006,3417]);
|
|
15062
|
-
__d(function(e,t,r,a,o,i,n){o.exports={name:"@getpaseo/app",version:"0.2.
|
|
15062
|
+
__d(function(e,t,r,a,o,i,n){o.exports={name:"@getpaseo/app",version:"0.2.2",private:!0,main:"index.ts",scripts:{start:"npm run start:expo","start:expo":"cross-env APP_VARIANT=development expo start","reset-project":"node ./scripts/reset-project.js","eas-build-post-install":"npm --prefix ../.. run build:app-deps && npm run build:terminal-webview",android:"npm run android:development","android:development":"npm --prefix ../.. run build:client && cross-env APP_VARIANT=development expo prebuild --platform android --non-interactive && cross-env APP_VARIANT=development expo run:android --variant=debug","android:production":"npm --prefix ../.. run build:client && cross-env APP_VARIANT=production expo prebuild --platform android --non-interactive && cross-env APP_VARIANT=production expo run:android --variant=release","android:release":"npm run android:production","android:clear":"node -e \"require('node:fs').rmSync('android', { recursive: true, force: true })\"",ios:"npm --prefix ../.. run build:client && expo run:ios","ios:release":"npm --prefix ../.. run build:client && expo run:ios --configuration Release",web:"npm --prefix ../.. run build:client && concurrently --kill-others --names protocol,client,expo --prefix-colors yellow,blue,magenta \"npm --prefix ../.. run watch:protocol\" \"npm --prefix ../.. run watch:client\" \"npm run web:expo\"","web:expo":"expo start --web",lint:"expo lint",typecheck:"tsgo --noEmit",test:"vitest run","test:browser":"vitest run --project browser","test:e2e":"playwright test --project='Desktop Chrome'","test:e2e:desktop":"cross-env E2E_DESKTOP_RUNTIME=1 playwright test --project='Desktop Chrome' e2e/project-picker-desktop.spec.ts","test:e2e:real":"cross-env E2E_FORK_PASEO_HOME_FROM=../../.dev/paseo-home playwright test --project=real-provider","test:e2e:ui":"playwright test --ui",build:"npm run build:web","build:web":"npm --prefix ../.. run build:app-deps && expo export --platform web","profile:workspace-tabs":"node ./scripts/profile-workspace-tabs.mjs","deploy:web":"npm run build:web && wrangler pages deploy dist --project-name paseo-app --branch main","build:terminal-webview":"node ./scripts/build-terminal-webview-html.mjs"},dependencies:{"@codemirror/commands":"6.10.4","@codemirror/language":"6.12.4","@codemirror/search":"6.7.1","@codemirror/state":"6.7.1","@codemirror/view":"6.43.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react-native":"^0.10.7","@getpaseo/client":"*","@getpaseo/expo-two-way-audio":"*","@getpaseo/highlight":"*","@getpaseo/protocol":"*","@gorhom/bottom-sheet":"^5.2.14","@gorhom/portal":"^1.0.14","@react-native-async-storage/async-storage":"2.2.0","@react-native-masked-view/masked-view":"^0.3.2","@react-native/normalize-colors":"^0.81.5","@react-navigation/native":"^7.1.8","@replit/codemirror-vim":"6.3.0","@tanstack/react-query":"^5.90.11","@tanstack/react-virtual":"^3.13.21","@xterm/addon-clipboard":"^0.3.0-beta.213","@xterm/addon-fit":"^0.12.0-beta.213","@xterm/addon-image":"^0.10.0-beta.213","@xterm/addon-ligatures":"^0.11.0-beta.213","@xterm/addon-search":"^0.17.0-beta.213","@xterm/addon-unicode11":"^0.10.0-beta.213","@xterm/addon-web-links":"^0.13.0-beta.213","@xterm/addon-webgl":"^0.20.0-beta.212","@xterm/xterm":"^6.1.0-beta.213",buffer:"^6.0.3",expo:"^54.0.18","expo-asset":"~12.0.12","expo-audio":"~1.0.13","expo-build-properties":"^1.0.9","expo-camera":"~17.0.10","expo-clipboard":"~8.0.7","expo-constants":"~18.0.9","expo-crypto":"^15.0.8","expo-dev-client":"^6.0.15","expo-document-picker":"~14.0.8","expo-file-system":"~19.0.17","expo-haptics":"~15.0.7","expo-image":"~3.0.10","expo-image-manipulator":"~14.0.8","expo-image-picker":"^17.0.8","expo-keep-awake":"^15.0.7","expo-linking":"~8.0.8","expo-localization":"~17.0.9","expo-notifications":"^0.32.16","expo-router":"~6.0.13","expo-sharing":"^14.0.8","expo-splash-screen":"~31.0.10","expo-system-ui":"~6.0.7","expo-updates":"~29.0.12","fast-deep-equal":"^3.1.3",htmlparser2:"^12.0.0",i18next:"^26.3.0","lucide-react-native":"^0.546.0","markdown-it":"^10.0.0","mnemonic-id":"^3.2.7",qrcode:"^1.5.4",react:"19.1.0","react-dom":"19.1.0","react-i18next":"^17.0.8","react-native":"0.81.5","react-native-draggable-flatlist":"^4.0.3","react-native-edge-to-edge":"^1.7.0","react-native-gesture-handler":"~2.28.0","react-native-keyboard-controller":"^1.19.2","react-native-markdown-display":"^7.0.2","react-native-nitro-modules":"0.35.5","react-native-reanimated":"~4.3.1","react-native-safe-area-context":"~5.6.0","react-native-screens":"~4.16.0","react-native-svg":"^15.14.0","react-native-uitextview":"^2.2.0","react-native-unistyles":"^3.2.4","react-native-web":"~0.21.0","react-native-webview":"^13.16.0","react-native-worklets":"~0.8.3","tiny-invariant":"^1.3.3","use-sync-external-store":"^1.6.0",zod:"^4.4.3",zustand:"^5.0.9"},devDependencies:{"@playwright/test":"^1.56.1","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.2","@types/markdown-it":"^14.1.2","@types/qrcode":"^1.5.6","@types/react":"~19.2.0","@types/ws":"^8.18.1","@vitest/browser":"^4.1.7","@vitest/browser-playwright":"^4.1.7","@xterm/headless":"^6.1.0-beta.213",dotenv:"^17.2.3","eas-cli":"^16.24.1",eslint:"^9.25.0","eslint-config-expo":"~10.0.0","expo-gradle-jvmargs":"^1.1.2",jsdom:"^20.0.3","material-icon-theme":"^5.32.0",playwright:"^1.56.1","serve-sim":"^0.1.40",typescript:"~5.9.2",vitest:"^4.1.6",wrangler:"^4.105.0",ws:"^8.20.0"}}},3417,[]);
|
|
15063
15063
|
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.shouldUseDesktopDaemon=function(){return(0,n.isElectronRuntime)()},e.getDesktopDaemonStatus=async function(){return p(await(0,t.invokeDesktopCommand)("desktop_daemon_status"))},e.startDesktopDaemon=async function(){return p(await(0,t.invokeDesktopCommand)("start_desktop_daemon"))},e.stopDesktopDaemon=async function(n="manual_ipc"){return p(await(0,t.invokeDesktopCommand)("stop_desktop_daemon",{reason:n}))},e.restartDesktopDaemon=async function(){return p(await(0,t.invokeDesktopCommand)("restart_desktop_daemon"))},e.getDesktopDaemonLogs=async function(){return u(await(0,t.invokeDesktopCommand)("desktop_daemon_logs"))},e.getDesktopAppLogs=async function(){const n=await(0,t.invokeDesktopCommand)("desktop_app_logs");if(!o(n))throw new Error("Unexpected desktop app logs response.");return{logPath:s(n.logPath)??"",contents:"string"==typeof n.contents?n.contents:""}},e.getDesktopDaemonPairing=async function(){return k(await(0,t.invokeDesktopCommand)("desktop_daemon_pairing"))},e.getCliDaemonStatus=async function(){const n=await(0,t.invokeDesktopCommand)("cli_daemon_status");if("string"!=typeof n)throw new Error("Unexpected CLI daemon status response.");return n},e.listenToLocalTransportEvents=async function(t){const l=(0,n.getDesktopHost)()?.events?.on;if("function"!=typeof l)throw new Error("Desktop events API is unavailable.");const p=await l("local-daemon-transport-event",n=>{o(n)&&t({sessionId:s(n.sessionId)??"",kind:s(n.kind)??"error",text:s(n.text),binaryBase64:s(n.binaryBase64),code:c(n.code),reason:s(n.reason),error:s(n.error)})});return"function"==typeof p?p:()=>{}},e.openLocalTransportSession=async function(n){const o=await(0,t.invokeDesktopCommand)("open_local_daemon_transport",n);if("string"!=typeof o||0===o.trim().length)throw new Error("Unexpected local transport session response.");return o},e.sendLocalTransportMessage=async function(n){await(0,t.invokeDesktopCommand)("send_local_daemon_transport_message",Object.assign({sessionId:n.sessionId},n.text?{text:n.text}:{},n.binaryBase64?{binaryBase64:n.binaryBase64}:{}))},e.closeLocalTransportSession=async function(n){await(0,t.invokeDesktopCommand)("close_local_daemon_transport",{sessionId:n})},e.getCliInstallStatus=async function(){return f(await(0,t.invokeDesktopCommand)("get_cli_install_status"))},e.installCli=async function(){return f(await(0,t.invokeDesktopCommand)("install_cli"))},e.getSkillsStatus=async function(){return y(await(0,t.invokeDesktopCommand)("get_skills_status"))},e.installSkills=async function(){return y(await(0,t.invokeDesktopCommand)("install_skills"))},e.updateSkills=async function(){return y(await(0,t.invokeDesktopCommand)("update_skills"))},e.uninstallSkills=async function(){return y(await(0,t.invokeDesktopCommand)("uninstall_skills"))};var n=r(d[0]),t=r(d[1]);function o(n){return"object"==typeof n&&null!==n}function s(n){return"string"==typeof n&&n.trim().length>0?n:null}function c(n){return"number"==typeof n&&Number.isFinite(n)?n:null}function l(n){const t=s(n)?.toLowerCase();switch(t){case"starting":return"starting";case"running":return"running";case"errored":case"error":return"errored";default:return"stopped"}}function p(n){if(!o(n))throw new Error("Unexpected desktop daemon status response.");return{serverId:s(n.serverId)??"",status:l(n.status),listen:s(n.listen),hostname:s(n.hostname),pid:c(n.pid),home:s(n.home)??"",version:s(n.version),desktopManaged:!0===n.desktopManaged,error:s(n.error)}}function u(n){if(!o(n))throw new Error("Unexpected desktop daemon logs response.");return{logPath:s(n.logPath)??"",contents:"string"==typeof n.contents?n.contents:""}}function k(n){if(!o(n))throw new Error("Unexpected desktop daemon pairing response.");return{relayEnabled:!0===n.relayEnabled,url:s(n.url),qr:s(n.qr)}}function f(n){if(!o(n))throw new Error("Unexpected install status response.");return{installed:!0===n.installed}}function w(n){switch(n){case"not-installed":case"up-to-date":case"drift":return n;default:throw new Error(`Unexpected skills status state: ${String(n)}`)}}function _(n){if(!o(n))throw new Error("Unexpected skill op response.");const t=s(n.name);if(!t)throw new Error("Skill op missing name.");switch(n.kind){case"add":return{kind:"add",name:t};case"update":return{kind:"update",name:t};case"delete":return{kind:"delete",name:t};default:throw new Error(`Unexpected skill op kind: ${String(n.kind)}`)}}function y(n){if(!o(n))throw new Error("Unexpected skills status response.");const t=Array.isArray(n.ops)?n.ops.map(_):[];return{state:w(n.state),ops:t}}},3418,[3264,3419]);
|
|
15064
15064
|
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.invokeDesktopCommand=async function(t,o){const s=(0,n.getDesktopHost)()?.invoke;if("function"!=typeof s)throw new Error("Desktop invoke() is unavailable in this environment.");return await s(t,o)};var n=r(d[0])},3419,[3264]);
|
|
15065
15065
|
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"DaemonConnectionTestError",{enumerable:!0,get:function(){return f}}),e.buildClientConfig=y,e.connectAndProbe=w,e.connectToDaemon=async function(t,o,n=l){return w(await y(t,o?.serverId,o,n),T(t,o),n)};var t=r(d[0]),o=r(d[1]),n=r(d[2]),s=r(d[3]),c=r(d[4]);const l={getClientId:o.getOrCreateClientId,resolveAppVersion:n.resolveAppVersion,createLocalTransportFactory:c.createDesktopLocalDaemonTransportFactory,buildLocalTransportUrl:c.buildLocalDaemonTransportUrl,createClient:o=>new t.DaemonClient(o)};function u(t){if("string"!=typeof t)return null;const o=t.trim();return o.length>0?o:null}function p(t,o){const n=t&&("transport error"===t.toLowerCase()||"transport closed"===t.toLowerCase()),s=o&&("transport error"===o.toLowerCase()||"transport closed"===o.toLowerCase()||"unable to connect"===o.toLowerCase());return n&&o&&!s?o:t||(o||"Unable to connect")}function b(t){if(!t.config.password)return!1;const o=[t.reason,t.lastError].filter(Boolean).join("\n").toLowerCase();return o.includes("401")||o.includes("4001")||o.includes("unauthorized")||o.includes("code 1006")}class f extends Error{constructor(t,o){super(t),this.name="DaemonConnectionTestError",this.reason=o.reason,this.lastError=o.lastError}}async function y(t,o,n,c=l){const u=await c.getClientId(),p=c.createLocalTransportFactory(),b=Object.assign({clientId:u,clientType:"mobile",appVersion:c.resolveAppVersion()??void 0,suppressSendErrors:!0,reconnect:{enabled:!1}},n?.capabilities?{capabilities:n.capabilities}:{},"directSocket"!==t.type&&"directPipe"!==t.type||!p?{}:{transportFactory:p});if("directSocket"===t.type||"directPipe"===t.type)return Object.assign({},b,{url:c.buildLocalTransportUrl({transportType:"directSocket"===t.type?"socket":"pipe",transportPath:t.path})});if("directTcp"===t.type)return Object.assign({},b,{url:(0,s.buildDaemonWebSocketUrl)(t.endpoint,{useTls:t.useTls??!1})},t.password?{password:t.password}:{});if(!o)throw new Error("serverId is required to probe a relay connection");return Object.assign({},b,{url:(0,s.buildRelayWebSocketUrl)({endpoint:t.relayEndpoint,useTls:t.useTls??(0,s.shouldUseTlsForDefaultHostedRelay)(t.relayEndpoint),serverId:o}),e2ee:{enabled:!0,daemonPublicKeyB64:t.daemonPublicKeyB64}})}function w(t,o,n=l){const s=n.createClient(t);return new Promise((n,c)=>{const l=setTimeout(()=>{s.close().catch(()=>{}),c(new f("Connection timed out",{reason:"Connection timed out",lastError:s.lastError??null}))},o);s.connect().then(()=>{clearTimeout(l);const t=s.getLastServerInfoMessage();if(!t)return s.close().catch(()=>{}),void c(new f("Missing server info message",{reason:"Missing server info message",lastError:s.lastError??null}));n({client:s,serverId:t.serverId,hostname:t.hostname})}).catch(o=>{clearTimeout(l);const n=u(o instanceof Error?o.message:String(o)),y=u(s.lastError),w=b({config:t,reason:n,lastError:y})?"Incorrect password":p(n,y);s.close().catch(()=>{}),c(new f(w,{reason:n,lastError:y}))})})}function T(t,o){return o?.timeoutMs?o.timeoutMs:"relay"===t.type?1e4:6e3}},3420,[3375,3421,3416,3414,3422]);
|
|
Binary file
|
|
Binary file
|
|
@@ -85,6 +85,6 @@
|
|
|
85
85
|
<body>
|
|
86
86
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
87
87
|
<div id="root"></div>
|
|
88
|
-
<script src="/_expo/static/js/web/index-
|
|
88
|
+
<script src="/_expo/static/js/web/index-df2ab43bd83b09b00e92c1bb91d425eb.js" defer></script>
|
|
89
89
|
</body>
|
|
90
90
|
</html>
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getpaseo/server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Paseo backend server",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/server",
|
|
@@ -65,12 +65,12 @@
|
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"@agentclientprotocol/sdk": "^0.17.1",
|
|
68
|
-
"@anthropic-ai/claude-agent-sdk": "^0.3.
|
|
68
|
+
"@anthropic-ai/claude-agent-sdk": "^0.3.220",
|
|
69
69
|
"@anthropic-ai/sdk": "^0.104.2",
|
|
70
|
-
"@getpaseo/client": "0.2.
|
|
71
|
-
"@getpaseo/highlight": "0.2.
|
|
72
|
-
"@getpaseo/protocol": "0.2.
|
|
73
|
-
"@getpaseo/relay": "0.2.
|
|
70
|
+
"@getpaseo/client": "0.2.2",
|
|
71
|
+
"@getpaseo/highlight": "0.2.2",
|
|
72
|
+
"@getpaseo/protocol": "0.2.2",
|
|
73
|
+
"@getpaseo/relay": "0.2.2",
|
|
74
74
|
"@isaacs/ttlcache": "^2.1.4",
|
|
75
75
|
"@modelcontextprotocol/sdk": "^1.20.1",
|
|
76
76
|
"@opencode-ai/sdk": "1.14.46",
|