opencode-anthropic-multi-account 0.2.84 → 0.2.85
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/{chunk-UOB6GD7D.js → chunk-FQBFDF73.js} +7 -3
- package/dist/chunk-FQBFDF73.js.map +1 -0
- package/dist/{chunk-TGDRFB4C.js → chunk-XG67FMBB.js} +8 -6
- package/dist/chunk-XG67FMBB.js.map +1 -0
- package/dist/fingerprint-capture.js +2 -2
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/scrub-template.d.ts +2 -1
- package/dist/scrub-template.js +3 -1
- package/package.json +2 -2
- package/dist/chunk-TGDRFB4C.js.map +0 -1
- package/dist/chunk-UOB6GD7D.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../providers/claude-code/src/scrub-template.ts"],"sourcesContent":["interface ScrubTemplateOptions {\n dropMcpTools?: boolean;\n}\n\ninterface TemplateToolLike {\n name: string;\n [key: string]: unknown;\n}\n\ninterface TemplateLike {\n agent_identity: string;\n system_prompt: string;\n system_prompt_fable?: string;\n tools: TemplateToolLike[];\n tool_names: string[];\n header_order?: string[];\n header_values?: Record<string, string>;\n}\n\nconst HOST_CONTEXT_SECTION_NAMES = new Set([\n \"environment\",\n \"automemory\",\n \"claudemd\",\n \"useremail\",\n \"currentdate\",\n \"gitstatus\",\n \"language\",\n]);\n\nconst USER_PATH_REPLACEMENTS = [\n {\n pattern: /\\/Users\\/(?!user(?:\\/|$))[A-Za-z0-9._-]+/g,\n replacement: \"/Users/user\",\n },\n {\n pattern: /\\/home\\/(?!user(?:\\/|$))[A-Za-z0-9._-]+/g,\n replacement: \"/home/user\",\n },\n {\n pattern: /([A-Za-z]:\\\\Users\\\\)(?!user(?:\\\\|$))[A-Za-z0-9._-]+/g,\n replacement: \"$1user\",\n },\n {\n pattern: /([A-Za-z])--Users-[^\\s\\\\`'\")\\]]+/g,\n replacement: \"$1--Users-user-project\",\n },\n {\n pattern: /(\\/\\.claude\\/projects\\/)-[A-Za-z0-9._-]+(?=\\/|$)/g,\n replacement: \"$1project\",\n },\n] as const;\n\nconst USER_PATH_HIT_PATTERNS = [\n /\\/Users\\/(?!user(?:\\/|$))[A-Za-z0-9._-]+(?:\\/[^\\s\"'`<>)]*)?/g,\n /\\/home\\/(?!user(?:\\/|$))[A-Za-z0-9._-]+(?:\\/[^\\s\"'`<>)]*)?/g,\n /[A-Za-z]:\\\\Users\\\\(?!user(?:\\\\|$))[A-Za-z0-9._-]+(?:\\\\[^\\s\"'`<>)]*)?/g,\n /[A-Za-z]--Users-(?!user-project\\b)[^\\s\\\\`'\")\\]]+/g,\n /\\/\\.claude\\/projects\\/-[A-Za-z0-9._-]+(?:\\/[^\\s\"'`<>)]*)?/g,\n] as const;\n\nconst GIT_METADATA_REPLACEMENTS = [\n {\n pattern: /^Current branch: .+$/gm,\n replacement: \"Current branch: (dynamic)\",\n },\n {\n pattern: /^Main branch \\(you will usually use this for PRs\\): .+$/gm,\n replacement: \"Main branch (you will usually use this for PRs): (dynamic)\",\n },\n {\n pattern: /^Git user: .+$/gm,\n replacement: \"Git user: (dynamic)\",\n },\n] as const;\n\nfunction normalizeSectionName(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9]+/g, \"\");\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction cleanupRemovedSections(text: string): string {\n const lines = text.split(\"\\n\");\n const cleaned: string[] = [];\n let previousBlank = true;\n\n for (const line of lines) {\n const blank = line.trim().length === 0;\n if (blank && previousBlank) continue;\n cleaned.push(line);\n previousBlank = blank;\n }\n\n while (cleaned.length > 0 && cleaned[cleaned.length - 1]!.trim().length === 0) {\n cleaned.pop();\n }\n\n return cleaned.join(\"\\n\");\n}\n\nfunction removeDynamicStatusBlock(text: string): string {\n const statusStart = \"\\n\\nStatus:\\n\";\n const recentStart = \"\\n\\nRecent commits:\\n\";\n let scrubbed = text;\n let searchFrom = 0;\n\n while (true) {\n const start = scrubbed.indexOf(statusStart, searchFrom);\n if (start === -1) return scrubbed;\n\n const contentStart = start + statusStart.length;\n const end = scrubbed.indexOf(recentStart, contentStart);\n if (end === -1) return scrubbed;\n\n scrubbed = `${scrubbed.slice(0, contentStart)}(dynamic)${scrubbed.slice(end)}`;\n searchFrom = contentStart + \"(dynamic)\".length + recentStart.length;\n }\n}\n\nfunction removeDynamicRecentCommits(text: string): string {\n return text.replace(\n /(\\n\\nRecent commits:\\n)(?:[0-9a-f]{7,}\\s.*\\n?)+/g,\n \"$1(dynamic)\\n\",\n );\n}\n\nfunction removeDynamicGitMetadata(text: string): string {\n let scrubbed = text;\n\n for (const { pattern, replacement } of GIT_METADATA_REPLACEMENTS) {\n scrubbed = scrubbed.replace(pattern, replacement);\n }\n\n return scrubbed;\n}\n\nexport function scrubText(text: string): string {\n let scrubbed = text;\n\n for (const { pattern, replacement } of USER_PATH_REPLACEMENTS) {\n scrubbed = scrubbed.replace(pattern, replacement);\n }\n\n return removeDynamicGitMetadata(scrubbed);\n}\n\nexport function findUserPathHits(text: string): string[] {\n const hits = USER_PATH_HIT_PATTERNS.flatMap((pattern) => text.match(pattern) ?? []);\n return [...new Set(hits)];\n}\n\nexport function removeHostContextSections(systemPrompt: string): string {\n const lines = systemPrompt.split(\"\\n\");\n const keptLines: string[] = [];\n let skippedHeadingDepth: number | null = null;\n\n for (const line of lines) {\n const headingMatch = parseMarkdownHeading(line);\n\n if (headingMatch) {\n const headingDepth = headingMatch.depth;\n const sectionName = normalizeSectionName(headingMatch.title);\n const startsSkippedSection = HOST_CONTEXT_SECTION_NAMES.has(sectionName);\n\n if (startsSkippedSection) {\n skippedHeadingDepth = headingDepth;\n continue;\n }\n\n if (skippedHeadingDepth !== null && headingDepth > skippedHeadingDepth) {\n continue;\n }\n\n skippedHeadingDepth = null;\n keptLines.push(line);\n continue;\n }\n\n if (skippedHeadingDepth !== null) {\n continue;\n }\n\n keptLines.push(line);\n }\n\n return cleanupRemovedSections(removeDynamicGitMetadata(removeDynamicRecentCommits(removeDynamicStatusBlock(keptLines.join(\"\\n\")))));\n}\n\nfunction parseMarkdownHeading(line: string): { depth: number; title: string } | null {\n const trimmedStart = line.trimStart();\n if (line.length - trimmedStart.length > 3 || !trimmedStart.startsWith(\"#\")) {\n return null;\n }\n\n let depth = 0;\n while (depth < trimmedStart.length && trimmedStart[depth] === \"#\") {\n depth += 1;\n }\n\n if (depth < 1 || depth > 6 || trimmedStart[depth] !== \" \") {\n return null;\n }\n\n const title = trimmedStart.slice(depth + 1).trim();\n return title ? { depth, title } : null;\n}\n\nexport function scrubObjectStrings(value: unknown): unknown {\n if (typeof value === \"string\") {\n return scrubText(value);\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => scrubObjectStrings(entry));\n }\n\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, scrubObjectStrings(entry)]),\n );\n }\n\n return value;\n}\n\nexport function scrubTemplate<T extends TemplateLike>(data: T, options?: ScrubTemplateOptions): T {\n const systemPrompt = scrubText(removeHostContextSections(data.system_prompt));\n const dropMcpTools = options?.dropMcpTools ?? true;\n const tools = data.tools\n .filter((tool) => !dropMcpTools || !tool.name.startsWith(\"mcp__\"))\n .map((tool) => scrubObjectStrings(tool) as T[\"tools\"][number]);\n\n return {\n ...data,\n agent_identity: scrubText(data.agent_identity),\n system_prompt: systemPrompt,\n ...(typeof data.system_prompt_fable === \"string\"\n ? { system_prompt_fable: scrubText(removeHostContextSections(data.system_prompt_fable)) }\n : {}),\n tools,\n tool_names: tools.map((tool) => tool.name),\n header_order: data.header_order ? [...data.header_order] : undefined,\n header_values: data.header_values\n ? scrubObjectStrings(data.header_values) as Record<string, string>\n : undefined,\n } as T;\n}\n"],"mappings":"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","names":[]}
|