@tickernelz/paperclip-pro-adapter-claude-local 2026.925.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/dist/cli/format-event.d.ts +2 -0
- package/dist/cli/format-event.d.ts.map +1 -0
- package/dist/cli/format-event.js +141 -0
- package/dist/cli/format-event.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/quota-probe.d.ts +3 -0
- package/dist/cli/quota-probe.d.ts.map +1 -0
- package/dist/cli/quota-probe.js +106 -0
- package/dist/cli/quota-probe.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +35 -0
- package/dist/index.test.js.map +1 -0
- package/dist/server/acp.auth.test.d.ts +2 -0
- package/dist/server/acp.auth.test.d.ts.map +1 -0
- package/dist/server/acp.auth.test.js +581 -0
- package/dist/server/acp.auth.test.js.map +1 -0
- package/dist/server/acp.d.ts +68 -0
- package/dist/server/acp.d.ts.map +1 -0
- package/dist/server/acp.js +779 -0
- package/dist/server/acp.js.map +1 -0
- package/dist/server/acp.quota.test.d.ts +2 -0
- package/dist/server/acp.quota.test.d.ts.map +1 -0
- package/dist/server/acp.quota.test.js +114 -0
- package/dist/server/acp.quota.test.js.map +1 -0
- package/dist/server/acp.test.d.ts +2 -0
- package/dist/server/acp.test.d.ts.map +1 -0
- package/dist/server/acp.test.js +1153 -0
- package/dist/server/acp.test.js.map +1 -0
- package/dist/server/auth-check.d.ts +8 -0
- package/dist/server/auth-check.d.ts.map +1 -0
- package/dist/server/auth-check.js +8 -0
- package/dist/server/auth-check.js.map +1 -0
- package/dist/server/claude-config.d.ts +49 -0
- package/dist/server/claude-config.d.ts.map +1 -0
- package/dist/server/claude-config.js +279 -0
- package/dist/server/claude-config.js.map +1 -0
- package/dist/server/claude-config.test.d.ts +2 -0
- package/dist/server/claude-config.test.d.ts.map +1 -0
- package/dist/server/claude-config.test.js +197 -0
- package/dist/server/claude-config.test.js.map +1 -0
- package/dist/server/cli-capabilities.d.ts +26 -0
- package/dist/server/cli-capabilities.d.ts.map +1 -0
- package/dist/server/cli-capabilities.js +115 -0
- package/dist/server/cli-capabilities.js.map +1 -0
- package/dist/server/config-schema.d.ts +3 -0
- package/dist/server/config-schema.d.ts.map +1 -0
- package/dist/server/config-schema.js +67 -0
- package/dist/server/config-schema.js.map +1 -0
- package/dist/server/engine-availability.test.d.ts +2 -0
- package/dist/server/engine-availability.test.d.ts.map +1 -0
- package/dist/server/engine-availability.test.js +41 -0
- package/dist/server/engine-availability.test.js.map +1 -0
- package/dist/server/execute.acp-fallback.test.d.ts +2 -0
- package/dist/server/execute.acp-fallback.test.d.ts.map +1 -0
- package/dist/server/execute.acp-fallback.test.js +104 -0
- package/dist/server/execute.acp-fallback.test.js.map +1 -0
- package/dist/server/execute.d.ts +23 -0
- package/dist/server/execute.d.ts.map +1 -0
- package/dist/server/execute.js +1089 -0
- package/dist/server/execute.js.map +1 -0
- package/dist/server/execute.remote.test.d.ts +2 -0
- package/dist/server/execute.remote.test.d.ts.map +1 -0
- package/dist/server/execute.remote.test.js +484 -0
- package/dist/server/execute.remote.test.js.map +1 -0
- package/dist/server/index.d.ts +16 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +84 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/models.d.ts +13 -0
- package/dist/server/models.d.ts.map +1 -0
- package/dist/server/models.js +153 -0
- package/dist/server/models.js.map +1 -0
- package/dist/server/parse.d.ts +58 -0
- package/dist/server/parse.d.ts.map +1 -0
- package/dist/server/parse.js +459 -0
- package/dist/server/parse.js.map +1 -0
- package/dist/server/parse.test.d.ts +2 -0
- package/dist/server/parse.test.d.ts.map +1 -0
- package/dist/server/parse.test.js +419 -0
- package/dist/server/parse.test.js.map +1 -0
- package/dist/server/permissions.d.ts +14 -0
- package/dist/server/permissions.d.ts.map +1 -0
- package/dist/server/permissions.js +13 -0
- package/dist/server/permissions.js.map +1 -0
- package/dist/server/permissions.test.d.ts +2 -0
- package/dist/server/permissions.test.d.ts.map +1 -0
- package/dist/server/permissions.test.js +22 -0
- package/dist/server/permissions.test.js.map +1 -0
- package/dist/server/probe-diagnostics.d.ts +102 -0
- package/dist/server/probe-diagnostics.d.ts.map +1 -0
- package/dist/server/probe-diagnostics.js +140 -0
- package/dist/server/probe-diagnostics.js.map +1 -0
- package/dist/server/probe-diagnostics.test.d.ts +2 -0
- package/dist/server/probe-diagnostics.test.d.ts.map +1 -0
- package/dist/server/probe-diagnostics.test.js +114 -0
- package/dist/server/probe-diagnostics.test.js.map +1 -0
- package/dist/server/probe-env.d.ts +42 -0
- package/dist/server/probe-env.d.ts.map +1 -0
- package/dist/server/probe-env.js +149 -0
- package/dist/server/probe-env.js.map +1 -0
- package/dist/server/probe-env.test.d.ts +2 -0
- package/dist/server/probe-env.test.d.ts.map +1 -0
- package/dist/server/probe-env.test.js +135 -0
- package/dist/server/probe-env.test.js.map +1 -0
- package/dist/server/probe-redaction.test.d.ts +2 -0
- package/dist/server/probe-redaction.test.d.ts.map +1 -0
- package/dist/server/probe-redaction.test.js +86 -0
- package/dist/server/probe-redaction.test.js.map +1 -0
- package/dist/server/prompt-cache.d.ts +17 -0
- package/dist/server/prompt-cache.d.ts.map +1 -0
- package/dist/server/prompt-cache.js +126 -0
- package/dist/server/prompt-cache.js.map +1 -0
- package/dist/server/quota-keychain.test.d.ts +2 -0
- package/dist/server/quota-keychain.test.d.ts.map +1 -0
- package/dist/server/quota-keychain.test.js +83 -0
- package/dist/server/quota-keychain.test.js.map +1 -0
- package/dist/server/quota.d.ts +30 -0
- package/dist/server/quota.d.ts.map +1 -0
- package/dist/server/quota.js +543 -0
- package/dist/server/quota.js.map +1 -0
- package/dist/server/setup-token-characterization.test.d.ts +2 -0
- package/dist/server/setup-token-characterization.test.d.ts.map +1 -0
- package/dist/server/setup-token-characterization.test.js +123 -0
- package/dist/server/setup-token-characterization.test.js.map +1 -0
- package/dist/server/setup-token-parse.d.ts +47 -0
- package/dist/server/setup-token-parse.d.ts.map +1 -0
- package/dist/server/setup-token-parse.js +506 -0
- package/dist/server/setup-token-parse.js.map +1 -0
- package/dist/server/setup-token-parse.test.d.ts +2 -0
- package/dist/server/setup-token-parse.test.d.ts.map +1 -0
- package/dist/server/setup-token-parse.test.js +587 -0
- package/dist/server/setup-token-parse.test.js.map +1 -0
- package/dist/server/setup-token-runner.d.ts +115 -0
- package/dist/server/setup-token-runner.d.ts.map +1 -0
- package/dist/server/setup-token-runner.js +317 -0
- package/dist/server/setup-token-runner.js.map +1 -0
- package/dist/server/setup-token-runner.test.d.ts +2 -0
- package/dist/server/setup-token-runner.test.d.ts.map +1 -0
- package/dist/server/setup-token-runner.test.js +336 -0
- package/dist/server/setup-token-runner.test.js.map +1 -0
- package/dist/server/skills.d.ts +8 -0
- package/dist/server/skills.d.ts.map +1 -0
- package/dist/server/skills.js +42 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/test.d.ts +3 -0
- package/dist/server/test.d.ts.map +1 -0
- package/dist/server/test.js +434 -0
- package/dist/server/test.js.map +1 -0
- package/dist/server/test.probe.test.d.ts +2 -0
- package/dist/server/test.probe.test.d.ts.map +1 -0
- package/dist/server/test.probe.test.js +608 -0
- package/dist/server/test.probe.test.js.map +1 -0
- package/dist/server/test.remote.test.d.ts +2 -0
- package/dist/server/test.remote.test.d.ts.map +1 -0
- package/dist/server/test.remote.test.js +149 -0
- package/dist/server/test.remote.test.js.map +1 -0
- package/dist/ui/build-config.d.ts +3 -0
- package/dist/ui/build-config.d.ts.map +1 -0
- package/dist/ui/build-config.js +76 -0
- package/dist/ui/build-config.js.map +1 -0
- package/dist/ui/build-config.test.d.ts +2 -0
- package/dist/ui/build-config.test.d.ts.map +1 -0
- package/dist/ui/build-config.test.js +68 -0
- package/dist/ui/build-config.test.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts +3 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -0
- package/dist/ui/parse-stdout.js +153 -0
- package/dist/ui/parse-stdout.js.map +1 -0
- package/package.json +63 -0
- package/skills/agentmail/SKILL.md +70 -0
- package/skills/paperclip/SKILL.md +712 -0
- package/skills/paperclip/references/api-reference.md +1675 -0
- package/skills/paperclip/references/artifacts.md +158 -0
- package/skills/paperclip/references/cases.md +295 -0
- package/skills/paperclip/references/company-skills.md +266 -0
- package/skills/paperclip/references/issue-workspaces.md +80 -0
- package/skills/paperclip/references/routines.md +231 -0
- package/skills/paperclip/references/workflows.md +141 -0
- package/skills/paperclip/scripts/paperclip-upload-artifact.sh +592 -0
- package/skills/paperclip-board/SKILL.md +619 -0
- package/skills/paperclip-converting-plans-to-tasks/SKILL.md +60 -0
- package/skills/paperclip-create-agent/SKILL.md +179 -0
- package/skills/paperclip-create-agent/references/agent-instruction-templates.md +123 -0
- package/skills/paperclip-create-agent/references/agents/coder.md +64 -0
- package/skills/paperclip-create-agent/references/agents/qa.md +88 -0
- package/skills/paperclip-create-agent/references/agents/securityengineer.md +135 -0
- package/skills/paperclip-create-agent/references/agents/uxdesigner.md +115 -0
- package/skills/paperclip-create-agent/references/api-reference.md +110 -0
- package/skills/paperclip-create-agent/references/baseline-role-guide.md +168 -0
- package/skills/paperclip-create-agent/references/draft-review-checklist.md +95 -0
- package/skills/para-memory-files/SKILL.md +100 -0
- package/skills/para-memory-files/references/schemas.md +35 -0
- package/skills/slack/SKILL.md +65 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export { claudeSessionCwdMatchesExecutionTarget, execute, runClaudeLogin } from "./execute.js";
|
|
2
|
+
export * from "./acp.js";
|
|
3
|
+
export { getConfigSchema } from "./config-schema.js";
|
|
4
|
+
export { listClaudeSkills, syncClaudeSkills } from "./skills.js";
|
|
5
|
+
export { listClaudeModels, refreshClaudeModels, resetClaudeModelsCacheForTests } from "./models.js";
|
|
6
|
+
export { testEnvironment } from "./test.js";
|
|
7
|
+
export { claudeCommandSupportsEffortFlag, resetClaudeCliCapabilitiesCacheForTests, } from "./cli-capabilities.js";
|
|
8
|
+
export { parseClaudeStreamJson, describeClaudeFailure, isClaudeMaxTurnsResult, isClaudeProviderQuotaError, isClaudeRefusalResult, isClaudeUnknownSessionError, } from "./parse.js";
|
|
9
|
+
export { getQuotaWindows, readClaudeAuthStatus, readClaudeToken, readIsolatedClaudeKeychainToken, fetchClaudeQuota, fetchClaudeCliQuota, captureClaudeCliUsageText, parseClaudeCliUsageText, toPercent, fetchWithTimeout, claudeConfigDir, } from "./quota.js";
|
|
10
|
+
// The Claude `setup-token` login parser. It reads the interactive login output
|
|
11
|
+
// and returns the authorization URL and the browser-code prompt, or the minted
|
|
12
|
+
// OAuth token from the success record. Both functions fail closed and keep every
|
|
13
|
+
// input byte out of each log and each thrown error.
|
|
14
|
+
export { parseSetupTokenPrompt, parseSetupTokenCredential, SETUP_TOKEN_PROMPT, SETUP_TOKEN_AUTH_URLS, SETUP_TOKEN_REDIRECT_URI, SETUP_TOKEN_URL_QUERY_KEYS, SETUP_TOKEN_PREFIX, SETUP_TOKEN_BEFORE_ANCHOR, SETUP_TOKEN_AFTER_ANCHOR, } from "./setup-token-parse.js";
|
|
15
|
+
// The Claude `setup-token` login runner. A server-side factory binds it to a
|
|
16
|
+
// sandbox pseudo-terminal driver to drive the two-way login round-trip and to
|
|
17
|
+
// deliver the minted token one time in memory.
|
|
18
|
+
export { runSetupTokenLogin, CLAUDE_SETUP_TOKEN_COMMAND, CODE_SUBMISSION_TERMINATOR, CLAUDE_SETUP_TOKEN_MAX_BUFFER_CHARS, } from "./setup-token-runner.js";
|
|
19
|
+
import { sessionCodec as acpxSessionCodec } from "@tickernelz/paperclip-pro-adapter-utils/acpx-engine/session-codec";
|
|
20
|
+
function readNonEmptyString(value) {
|
|
21
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
22
|
+
}
|
|
23
|
+
export const sessionCodec = {
|
|
24
|
+
deserialize(raw) {
|
|
25
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw))
|
|
26
|
+
return null;
|
|
27
|
+
const record = raw;
|
|
28
|
+
const sessionId = readNonEmptyString(record.sessionId) ?? readNonEmptyString(record.session_id);
|
|
29
|
+
if (!sessionId)
|
|
30
|
+
return acpxSessionCodec.deserialize(raw);
|
|
31
|
+
const cwd = readNonEmptyString(record.cwd) ??
|
|
32
|
+
readNonEmptyString(record.workdir) ??
|
|
33
|
+
readNonEmptyString(record.folder);
|
|
34
|
+
const promptBundleKey = readNonEmptyString(record.promptBundleKey) ??
|
|
35
|
+
readNonEmptyString(record.prompt_bundle_key);
|
|
36
|
+
const mcpServerIdentity = readNonEmptyString(record.mcpServerIdentity);
|
|
37
|
+
const workspaceId = readNonEmptyString(record.workspaceId) ?? readNonEmptyString(record.workspace_id);
|
|
38
|
+
const repoUrl = readNonEmptyString(record.repoUrl) ?? readNonEmptyString(record.repo_url);
|
|
39
|
+
const repoRef = readNonEmptyString(record.repoRef) ?? readNonEmptyString(record.repo_ref);
|
|
40
|
+
return {
|
|
41
|
+
sessionId,
|
|
42
|
+
...(cwd ? { cwd } : {}),
|
|
43
|
+
...(promptBundleKey ? { promptBundleKey } : {}),
|
|
44
|
+
...(mcpServerIdentity ? { mcpServerIdentity } : {}),
|
|
45
|
+
...(workspaceId ? { workspaceId } : {}),
|
|
46
|
+
...(repoUrl ? { repoUrl } : {}),
|
|
47
|
+
...(repoRef ? { repoRef } : {}),
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
serialize(params) {
|
|
51
|
+
if (!params)
|
|
52
|
+
return null;
|
|
53
|
+
const sessionId = readNonEmptyString(params.sessionId) ?? readNonEmptyString(params.session_id);
|
|
54
|
+
if (!sessionId)
|
|
55
|
+
return acpxSessionCodec.serialize(params);
|
|
56
|
+
const cwd = readNonEmptyString(params.cwd) ??
|
|
57
|
+
readNonEmptyString(params.workdir) ??
|
|
58
|
+
readNonEmptyString(params.folder);
|
|
59
|
+
const promptBundleKey = readNonEmptyString(params.promptBundleKey) ??
|
|
60
|
+
readNonEmptyString(params.prompt_bundle_key);
|
|
61
|
+
const mcpServerIdentity = readNonEmptyString(params.mcpServerIdentity);
|
|
62
|
+
const workspaceId = readNonEmptyString(params.workspaceId) ?? readNonEmptyString(params.workspace_id);
|
|
63
|
+
const repoUrl = readNonEmptyString(params.repoUrl) ?? readNonEmptyString(params.repo_url);
|
|
64
|
+
const repoRef = readNonEmptyString(params.repoRef) ?? readNonEmptyString(params.repo_ref);
|
|
65
|
+
return {
|
|
66
|
+
sessionId,
|
|
67
|
+
...(cwd ? { cwd } : {}),
|
|
68
|
+
...(promptBundleKey ? { promptBundleKey } : {}),
|
|
69
|
+
...(mcpServerIdentity ? { mcpServerIdentity } : {}),
|
|
70
|
+
...(workspaceId ? { workspaceId } : {}),
|
|
71
|
+
...(repoUrl ? { repoUrl } : {}),
|
|
72
|
+
...(repoRef ? { repoRef } : {}),
|
|
73
|
+
};
|
|
74
|
+
},
|
|
75
|
+
getDisplayId(params) {
|
|
76
|
+
if (!params)
|
|
77
|
+
return null;
|
|
78
|
+
return (readNonEmptyString(params.sessionId) ??
|
|
79
|
+
readNonEmptyString(params.session_id) ??
|
|
80
|
+
acpxSessionCodec.getDisplayId?.(params) ??
|
|
81
|
+
null);
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AdapterModel } from "@tickernelz/paperclip-pro-adapter-utils";
|
|
2
|
+
/**
|
|
3
|
+
* Return the model list appropriate for the current auth mode.
|
|
4
|
+
* When Bedrock env vars are detected, returns Bedrock-native model IDs;
|
|
5
|
+
* otherwise returns standard Anthropic API model IDs.
|
|
6
|
+
*/
|
|
7
|
+
export declare function listClaudeModels(): Promise<AdapterModel[]>;
|
|
8
|
+
export declare function refreshClaudeModels(): Promise<AdapterModel[]>;
|
|
9
|
+
export declare function resetClaudeModelsCacheForTests(): void;
|
|
10
|
+
/** Check whether a model ID is a Bedrock-native identifier (not an Anthropic API short name). */
|
|
11
|
+
/** Bedrock model IDs use region-qualified prefixes (e.g. us.anthropic.*, eu.anthropic.*) or ARNs. */
|
|
12
|
+
export declare function isBedrockModelId(model: string): boolean;
|
|
13
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/server/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAoJ5E;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEhE;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEnE;AAED,wBAAgB,8BAA8B,SAE7C;AAED,iGAAiG;AACjG,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { models as DIRECT_MODELS } from "../index.js";
|
|
3
|
+
const ANTHROPIC_MODELS_ENDPOINT = "/v1/models";
|
|
4
|
+
const ANTHROPIC_MODELS_TIMEOUT_MS = 5000;
|
|
5
|
+
const ANTHROPIC_MODELS_CACHE_TTL_MS = 60_000;
|
|
6
|
+
const ANTHROPIC_API_VERSION = "2023-06-01";
|
|
7
|
+
/** AWS Bedrock model IDs — region-qualified identifiers required by the Bedrock API. */
|
|
8
|
+
const BEDROCK_MODELS = [
|
|
9
|
+
{ id: "us.anthropic.claude-opus-4-8", label: "Bedrock Opus 4.8" },
|
|
10
|
+
{ id: "us.anthropic.claude-opus-5-5", label: "Bedrock Opus 5.5" },
|
|
11
|
+
{ id: "us.anthropic.claude-opus-5", label: "Bedrock Opus 5" },
|
|
12
|
+
{ id: "us.anthropic.claude-sonnet-5", label: "Bedrock Sonnet 5" },
|
|
13
|
+
// Fable 5.1's documented geo inference ID carries no -v1 suffix, unlike earlier entries.
|
|
14
|
+
{ id: "us.anthropic.claude-fable-5-1", label: "Bedrock Fable 5.1" },
|
|
15
|
+
{ id: "us.anthropic.claude-fable-5", label: "Bedrock Fable 5" },
|
|
16
|
+
{ id: "us.anthropic.claude-opus-4-7", label: "Bedrock Opus 4.7" },
|
|
17
|
+
{ id: "us.anthropic.claude-sonnet-4-6", label: "Bedrock Sonnet 4.6" },
|
|
18
|
+
{ id: "us.anthropic.claude-opus-4-6-v1", label: "Bedrock Opus 4.6" },
|
|
19
|
+
{ id: "us.anthropic.claude-sonnet-4-5-20250929-v2:0", label: "Bedrock Sonnet 4.5" },
|
|
20
|
+
{ id: "us.anthropic.claude-haiku-4-5-20251001-v1:0", label: "Bedrock Haiku 4.5" },
|
|
21
|
+
];
|
|
22
|
+
let cached = null;
|
|
23
|
+
function isBedrockEnv() {
|
|
24
|
+
return (process.env.CLAUDE_CODE_USE_BEDROCK === "1" ||
|
|
25
|
+
process.env.CLAUDE_CODE_USE_BEDROCK === "true" ||
|
|
26
|
+
(typeof process.env.ANTHROPIC_BEDROCK_BASE_URL === "string" &&
|
|
27
|
+
process.env.ANTHROPIC_BEDROCK_BASE_URL.trim().length > 0));
|
|
28
|
+
}
|
|
29
|
+
function fingerprint(apiKey) {
|
|
30
|
+
const digest = createHash("sha256").update(apiKey).digest("base64url").slice(0, 16);
|
|
31
|
+
return `${apiKey.length}:${digest}`;
|
|
32
|
+
}
|
|
33
|
+
function dedupeModels(models) {
|
|
34
|
+
const seen = new Set();
|
|
35
|
+
const deduped = [];
|
|
36
|
+
for (const model of models) {
|
|
37
|
+
const id = model.id.trim();
|
|
38
|
+
if (!id || seen.has(id))
|
|
39
|
+
continue;
|
|
40
|
+
seen.add(id);
|
|
41
|
+
deduped.push({ id, label: model.label.trim() || id });
|
|
42
|
+
}
|
|
43
|
+
return deduped;
|
|
44
|
+
}
|
|
45
|
+
function mergedWithFallback(models) {
|
|
46
|
+
return dedupeModels([
|
|
47
|
+
...models,
|
|
48
|
+
...DIRECT_MODELS,
|
|
49
|
+
]);
|
|
50
|
+
}
|
|
51
|
+
function resolveAnthropicApiKey() {
|
|
52
|
+
const apiKey = process.env.ANTHROPIC_API_KEY?.trim();
|
|
53
|
+
return apiKey && apiKey.length > 0 ? apiKey : null;
|
|
54
|
+
}
|
|
55
|
+
function resolveAnthropicBaseUrl() {
|
|
56
|
+
const baseUrl = process.env.ANTHROPIC_BASE_URL?.trim();
|
|
57
|
+
return baseUrl && baseUrl.length > 0 ? baseUrl.replace(/\/+$/, "") : "https://api.anthropic.com";
|
|
58
|
+
}
|
|
59
|
+
async function fetchAnthropicModels(apiKey, baseUrl) {
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const timeout = setTimeout(() => controller.abort(), ANTHROPIC_MODELS_TIMEOUT_MS);
|
|
62
|
+
try {
|
|
63
|
+
const response = await fetch(`${baseUrl}${ANTHROPIC_MODELS_ENDPOINT}`, {
|
|
64
|
+
headers: {
|
|
65
|
+
"anthropic-version": ANTHROPIC_API_VERSION,
|
|
66
|
+
"x-api-key": apiKey,
|
|
67
|
+
},
|
|
68
|
+
signal: controller.signal,
|
|
69
|
+
});
|
|
70
|
+
if (!response.ok)
|
|
71
|
+
return [];
|
|
72
|
+
const payload = (await response.json());
|
|
73
|
+
const data = Array.isArray(payload.data) ? payload.data : [];
|
|
74
|
+
const models = [];
|
|
75
|
+
for (const item of data) {
|
|
76
|
+
if (typeof item !== "object" || item === null)
|
|
77
|
+
continue;
|
|
78
|
+
const record = item;
|
|
79
|
+
if (typeof record.id !== "string" || record.id.trim().length === 0)
|
|
80
|
+
continue;
|
|
81
|
+
const displayName = typeof record.display_name === "string" && record.display_name.trim().length > 0
|
|
82
|
+
? record.display_name
|
|
83
|
+
: record.id;
|
|
84
|
+
models.push({
|
|
85
|
+
id: record.id,
|
|
86
|
+
label: displayName,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return dedupeModels(models);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.warn("[paperclip] Claude model discovery failed", {
|
|
93
|
+
error: error instanceof Error ? error.message : String(error),
|
|
94
|
+
});
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
clearTimeout(timeout);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async function loadClaudeModels(options) {
|
|
102
|
+
if (isBedrockEnv())
|
|
103
|
+
return dedupeModels(BEDROCK_MODELS);
|
|
104
|
+
const fallback = dedupeModels(DIRECT_MODELS);
|
|
105
|
+
const apiKey = resolveAnthropicApiKey();
|
|
106
|
+
if (!apiKey)
|
|
107
|
+
return fallback;
|
|
108
|
+
const now = Date.now();
|
|
109
|
+
const baseUrl = resolveAnthropicBaseUrl();
|
|
110
|
+
const keyFingerprint = fingerprint(apiKey);
|
|
111
|
+
if (options?.forceRefresh !== true &&
|
|
112
|
+
cached &&
|
|
113
|
+
cached.keyFingerprint === keyFingerprint &&
|
|
114
|
+
cached.baseUrl === baseUrl &&
|
|
115
|
+
cached.expiresAt > now) {
|
|
116
|
+
return cached.models;
|
|
117
|
+
}
|
|
118
|
+
const fetched = await fetchAnthropicModels(apiKey, baseUrl);
|
|
119
|
+
if (fetched.length > 0) {
|
|
120
|
+
const merged = mergedWithFallback(fetched);
|
|
121
|
+
cached = {
|
|
122
|
+
keyFingerprint,
|
|
123
|
+
baseUrl,
|
|
124
|
+
expiresAt: now + ANTHROPIC_MODELS_CACHE_TTL_MS,
|
|
125
|
+
models: merged,
|
|
126
|
+
};
|
|
127
|
+
return merged;
|
|
128
|
+
}
|
|
129
|
+
if (cached && cached.keyFingerprint === keyFingerprint && cached.baseUrl === baseUrl && cached.models.length > 0) {
|
|
130
|
+
return cached.models;
|
|
131
|
+
}
|
|
132
|
+
return fallback;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Return the model list appropriate for the current auth mode.
|
|
136
|
+
* When Bedrock env vars are detected, returns Bedrock-native model IDs;
|
|
137
|
+
* otherwise returns standard Anthropic API model IDs.
|
|
138
|
+
*/
|
|
139
|
+
export async function listClaudeModels() {
|
|
140
|
+
return loadClaudeModels();
|
|
141
|
+
}
|
|
142
|
+
export async function refreshClaudeModels() {
|
|
143
|
+
return loadClaudeModels({ forceRefresh: true });
|
|
144
|
+
}
|
|
145
|
+
export function resetClaudeModelsCacheForTests() {
|
|
146
|
+
cached = null;
|
|
147
|
+
}
|
|
148
|
+
/** Check whether a model ID is a Bedrock-native identifier (not an Anthropic API short name). */
|
|
149
|
+
/** Bedrock model IDs use region-qualified prefixes (e.g. us.anthropic.*, eu.anthropic.*) or ARNs. */
|
|
150
|
+
export function isBedrockModelId(model) {
|
|
151
|
+
return /^\w+\.anthropic\./.test(model) || model.startsWith("arn:aws:bedrock:");
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/server/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { UsageSummary } from "@tickernelz/paperclip-pro-adapter-utils";
|
|
2
|
+
/**
|
|
3
|
+
* Sum the per-model usage ledger from a Claude CLI result event. The result
|
|
4
|
+
* event's top-level `usage` reflects only the main-loop message chain, so it
|
|
5
|
+
* undercounts output tokens whenever subagents or sidechains ran; `modelUsage`
|
|
6
|
+
* is the CLI's authoritative per-model accounting (it is what backs /cost).
|
|
7
|
+
* Cache-creation tokens are billed prompt tokens, so they count as input.
|
|
8
|
+
*/
|
|
9
|
+
export declare function claudeModelUsageTotals(modelUsage: unknown): UsageSummary | null;
|
|
10
|
+
export declare function parseClaudeStreamJson(stdout: string): {
|
|
11
|
+
sessionId: string | null;
|
|
12
|
+
model: string;
|
|
13
|
+
costUsd: number | null;
|
|
14
|
+
usage: UsageSummary | null;
|
|
15
|
+
usageBasis: "per_run" | null;
|
|
16
|
+
summary: string;
|
|
17
|
+
resultJson: Record<string, unknown> | null;
|
|
18
|
+
};
|
|
19
|
+
export declare function extractClaudeLoginUrl(text: string): string | null;
|
|
20
|
+
export declare function detectClaudeLoginRequired(input: {
|
|
21
|
+
parsed: Record<string, unknown> | null;
|
|
22
|
+
stdout: string;
|
|
23
|
+
stderr: string;
|
|
24
|
+
}): {
|
|
25
|
+
requiresLogin: boolean;
|
|
26
|
+
loginUrl: string | null;
|
|
27
|
+
};
|
|
28
|
+
export declare function describeClaudeFailure(parsed: Record<string, unknown>): string | null;
|
|
29
|
+
export declare function isClaudeModelNotFoundError(input: {
|
|
30
|
+
parsed?: Record<string, unknown> | null;
|
|
31
|
+
stdout?: string | null;
|
|
32
|
+
stderr?: string | null;
|
|
33
|
+
errorMessage?: string | null;
|
|
34
|
+
}): boolean;
|
|
35
|
+
export declare function isClaudeMaxTurnsResult(parsed: Record<string, unknown> | null | undefined): boolean;
|
|
36
|
+
export declare function isClaudeRefusalResult(parsed: Record<string, unknown> | null | undefined): boolean;
|
|
37
|
+
export declare function isClaudeUnknownSessionError(parsed: Record<string, unknown>): boolean;
|
|
38
|
+
export declare function isClaudePoisonedPreviousMessageIdError(parsed: Record<string, unknown>): boolean;
|
|
39
|
+
export declare function isClaudeImageProcessingError(parsed: Record<string, unknown>): boolean;
|
|
40
|
+
export declare function extractClaudeRetryNotBefore(input: {
|
|
41
|
+
parsed?: Record<string, unknown> | null;
|
|
42
|
+
stdout?: string | null;
|
|
43
|
+
stderr?: string | null;
|
|
44
|
+
errorMessage?: string | null;
|
|
45
|
+
}, now?: Date): Date | null;
|
|
46
|
+
export declare function isClaudeTransientUpstreamError(input: {
|
|
47
|
+
parsed?: Record<string, unknown> | null;
|
|
48
|
+
stdout?: string | null;
|
|
49
|
+
stderr?: string | null;
|
|
50
|
+
errorMessage?: string | null;
|
|
51
|
+
}): boolean;
|
|
52
|
+
export declare function isClaudeProviderQuotaError(input: {
|
|
53
|
+
parsed?: Record<string, unknown> | null;
|
|
54
|
+
stdout?: string | null;
|
|
55
|
+
stderr?: string | null;
|
|
56
|
+
errorMessage?: string | null;
|
|
57
|
+
}): boolean;
|
|
58
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/server/parse.ts"],"names":[],"mappings":"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"}
|