@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.
Files changed (206) hide show
  1. package/LICENSE +22 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +141 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/cli/quota-probe.d.ts +3 -0
  11. package/dist/cli/quota-probe.d.ts.map +1 -0
  12. package/dist/cli/quota-probe.js +106 -0
  13. package/dist/cli/quota-probe.js.map +1 -0
  14. package/dist/index.d.ts +13 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +90 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/index.test.d.ts +2 -0
  19. package/dist/index.test.d.ts.map +1 -0
  20. package/dist/index.test.js +35 -0
  21. package/dist/index.test.js.map +1 -0
  22. package/dist/server/acp.auth.test.d.ts +2 -0
  23. package/dist/server/acp.auth.test.d.ts.map +1 -0
  24. package/dist/server/acp.auth.test.js +581 -0
  25. package/dist/server/acp.auth.test.js.map +1 -0
  26. package/dist/server/acp.d.ts +68 -0
  27. package/dist/server/acp.d.ts.map +1 -0
  28. package/dist/server/acp.js +779 -0
  29. package/dist/server/acp.js.map +1 -0
  30. package/dist/server/acp.quota.test.d.ts +2 -0
  31. package/dist/server/acp.quota.test.d.ts.map +1 -0
  32. package/dist/server/acp.quota.test.js +114 -0
  33. package/dist/server/acp.quota.test.js.map +1 -0
  34. package/dist/server/acp.test.d.ts +2 -0
  35. package/dist/server/acp.test.d.ts.map +1 -0
  36. package/dist/server/acp.test.js +1153 -0
  37. package/dist/server/acp.test.js.map +1 -0
  38. package/dist/server/auth-check.d.ts +8 -0
  39. package/dist/server/auth-check.d.ts.map +1 -0
  40. package/dist/server/auth-check.js +8 -0
  41. package/dist/server/auth-check.js.map +1 -0
  42. package/dist/server/claude-config.d.ts +49 -0
  43. package/dist/server/claude-config.d.ts.map +1 -0
  44. package/dist/server/claude-config.js +279 -0
  45. package/dist/server/claude-config.js.map +1 -0
  46. package/dist/server/claude-config.test.d.ts +2 -0
  47. package/dist/server/claude-config.test.d.ts.map +1 -0
  48. package/dist/server/claude-config.test.js +197 -0
  49. package/dist/server/claude-config.test.js.map +1 -0
  50. package/dist/server/cli-capabilities.d.ts +26 -0
  51. package/dist/server/cli-capabilities.d.ts.map +1 -0
  52. package/dist/server/cli-capabilities.js +115 -0
  53. package/dist/server/cli-capabilities.js.map +1 -0
  54. package/dist/server/config-schema.d.ts +3 -0
  55. package/dist/server/config-schema.d.ts.map +1 -0
  56. package/dist/server/config-schema.js +67 -0
  57. package/dist/server/config-schema.js.map +1 -0
  58. package/dist/server/engine-availability.test.d.ts +2 -0
  59. package/dist/server/engine-availability.test.d.ts.map +1 -0
  60. package/dist/server/engine-availability.test.js +41 -0
  61. package/dist/server/engine-availability.test.js.map +1 -0
  62. package/dist/server/execute.acp-fallback.test.d.ts +2 -0
  63. package/dist/server/execute.acp-fallback.test.d.ts.map +1 -0
  64. package/dist/server/execute.acp-fallback.test.js +104 -0
  65. package/dist/server/execute.acp-fallback.test.js.map +1 -0
  66. package/dist/server/execute.d.ts +23 -0
  67. package/dist/server/execute.d.ts.map +1 -0
  68. package/dist/server/execute.js +1089 -0
  69. package/dist/server/execute.js.map +1 -0
  70. package/dist/server/execute.remote.test.d.ts +2 -0
  71. package/dist/server/execute.remote.test.d.ts.map +1 -0
  72. package/dist/server/execute.remote.test.js +484 -0
  73. package/dist/server/execute.remote.test.js.map +1 -0
  74. package/dist/server/index.d.ts +16 -0
  75. package/dist/server/index.d.ts.map +1 -0
  76. package/dist/server/index.js +84 -0
  77. package/dist/server/index.js.map +1 -0
  78. package/dist/server/models.d.ts +13 -0
  79. package/dist/server/models.d.ts.map +1 -0
  80. package/dist/server/models.js +153 -0
  81. package/dist/server/models.js.map +1 -0
  82. package/dist/server/parse.d.ts +58 -0
  83. package/dist/server/parse.d.ts.map +1 -0
  84. package/dist/server/parse.js +459 -0
  85. package/dist/server/parse.js.map +1 -0
  86. package/dist/server/parse.test.d.ts +2 -0
  87. package/dist/server/parse.test.d.ts.map +1 -0
  88. package/dist/server/parse.test.js +419 -0
  89. package/dist/server/parse.test.js.map +1 -0
  90. package/dist/server/permissions.d.ts +14 -0
  91. package/dist/server/permissions.d.ts.map +1 -0
  92. package/dist/server/permissions.js +13 -0
  93. package/dist/server/permissions.js.map +1 -0
  94. package/dist/server/permissions.test.d.ts +2 -0
  95. package/dist/server/permissions.test.d.ts.map +1 -0
  96. package/dist/server/permissions.test.js +22 -0
  97. package/dist/server/permissions.test.js.map +1 -0
  98. package/dist/server/probe-diagnostics.d.ts +102 -0
  99. package/dist/server/probe-diagnostics.d.ts.map +1 -0
  100. package/dist/server/probe-diagnostics.js +140 -0
  101. package/dist/server/probe-diagnostics.js.map +1 -0
  102. package/dist/server/probe-diagnostics.test.d.ts +2 -0
  103. package/dist/server/probe-diagnostics.test.d.ts.map +1 -0
  104. package/dist/server/probe-diagnostics.test.js +114 -0
  105. package/dist/server/probe-diagnostics.test.js.map +1 -0
  106. package/dist/server/probe-env.d.ts +42 -0
  107. package/dist/server/probe-env.d.ts.map +1 -0
  108. package/dist/server/probe-env.js +149 -0
  109. package/dist/server/probe-env.js.map +1 -0
  110. package/dist/server/probe-env.test.d.ts +2 -0
  111. package/dist/server/probe-env.test.d.ts.map +1 -0
  112. package/dist/server/probe-env.test.js +135 -0
  113. package/dist/server/probe-env.test.js.map +1 -0
  114. package/dist/server/probe-redaction.test.d.ts +2 -0
  115. package/dist/server/probe-redaction.test.d.ts.map +1 -0
  116. package/dist/server/probe-redaction.test.js +86 -0
  117. package/dist/server/probe-redaction.test.js.map +1 -0
  118. package/dist/server/prompt-cache.d.ts +17 -0
  119. package/dist/server/prompt-cache.d.ts.map +1 -0
  120. package/dist/server/prompt-cache.js +126 -0
  121. package/dist/server/prompt-cache.js.map +1 -0
  122. package/dist/server/quota-keychain.test.d.ts +2 -0
  123. package/dist/server/quota-keychain.test.d.ts.map +1 -0
  124. package/dist/server/quota-keychain.test.js +83 -0
  125. package/dist/server/quota-keychain.test.js.map +1 -0
  126. package/dist/server/quota.d.ts +30 -0
  127. package/dist/server/quota.d.ts.map +1 -0
  128. package/dist/server/quota.js +543 -0
  129. package/dist/server/quota.js.map +1 -0
  130. package/dist/server/setup-token-characterization.test.d.ts +2 -0
  131. package/dist/server/setup-token-characterization.test.d.ts.map +1 -0
  132. package/dist/server/setup-token-characterization.test.js +123 -0
  133. package/dist/server/setup-token-characterization.test.js.map +1 -0
  134. package/dist/server/setup-token-parse.d.ts +47 -0
  135. package/dist/server/setup-token-parse.d.ts.map +1 -0
  136. package/dist/server/setup-token-parse.js +506 -0
  137. package/dist/server/setup-token-parse.js.map +1 -0
  138. package/dist/server/setup-token-parse.test.d.ts +2 -0
  139. package/dist/server/setup-token-parse.test.d.ts.map +1 -0
  140. package/dist/server/setup-token-parse.test.js +587 -0
  141. package/dist/server/setup-token-parse.test.js.map +1 -0
  142. package/dist/server/setup-token-runner.d.ts +115 -0
  143. package/dist/server/setup-token-runner.d.ts.map +1 -0
  144. package/dist/server/setup-token-runner.js +317 -0
  145. package/dist/server/setup-token-runner.js.map +1 -0
  146. package/dist/server/setup-token-runner.test.d.ts +2 -0
  147. package/dist/server/setup-token-runner.test.d.ts.map +1 -0
  148. package/dist/server/setup-token-runner.test.js +336 -0
  149. package/dist/server/setup-token-runner.test.js.map +1 -0
  150. package/dist/server/skills.d.ts +8 -0
  151. package/dist/server/skills.d.ts.map +1 -0
  152. package/dist/server/skills.js +42 -0
  153. package/dist/server/skills.js.map +1 -0
  154. package/dist/server/test.d.ts +3 -0
  155. package/dist/server/test.d.ts.map +1 -0
  156. package/dist/server/test.js +434 -0
  157. package/dist/server/test.js.map +1 -0
  158. package/dist/server/test.probe.test.d.ts +2 -0
  159. package/dist/server/test.probe.test.d.ts.map +1 -0
  160. package/dist/server/test.probe.test.js +608 -0
  161. package/dist/server/test.probe.test.js.map +1 -0
  162. package/dist/server/test.remote.test.d.ts +2 -0
  163. package/dist/server/test.remote.test.d.ts.map +1 -0
  164. package/dist/server/test.remote.test.js +149 -0
  165. package/dist/server/test.remote.test.js.map +1 -0
  166. package/dist/ui/build-config.d.ts +3 -0
  167. package/dist/ui/build-config.d.ts.map +1 -0
  168. package/dist/ui/build-config.js +76 -0
  169. package/dist/ui/build-config.js.map +1 -0
  170. package/dist/ui/build-config.test.d.ts +2 -0
  171. package/dist/ui/build-config.test.d.ts.map +1 -0
  172. package/dist/ui/build-config.test.js +68 -0
  173. package/dist/ui/build-config.test.js.map +1 -0
  174. package/dist/ui/index.d.ts +3 -0
  175. package/dist/ui/index.d.ts.map +1 -0
  176. package/dist/ui/index.js +3 -0
  177. package/dist/ui/index.js.map +1 -0
  178. package/dist/ui/parse-stdout.d.ts +3 -0
  179. package/dist/ui/parse-stdout.d.ts.map +1 -0
  180. package/dist/ui/parse-stdout.js +153 -0
  181. package/dist/ui/parse-stdout.js.map +1 -0
  182. package/package.json +63 -0
  183. package/skills/agentmail/SKILL.md +70 -0
  184. package/skills/paperclip/SKILL.md +712 -0
  185. package/skills/paperclip/references/api-reference.md +1675 -0
  186. package/skills/paperclip/references/artifacts.md +158 -0
  187. package/skills/paperclip/references/cases.md +295 -0
  188. package/skills/paperclip/references/company-skills.md +266 -0
  189. package/skills/paperclip/references/issue-workspaces.md +80 -0
  190. package/skills/paperclip/references/routines.md +231 -0
  191. package/skills/paperclip/references/workflows.md +141 -0
  192. package/skills/paperclip/scripts/paperclip-upload-artifact.sh +592 -0
  193. package/skills/paperclip-board/SKILL.md +619 -0
  194. package/skills/paperclip-converting-plans-to-tasks/SKILL.md +60 -0
  195. package/skills/paperclip-create-agent/SKILL.md +179 -0
  196. package/skills/paperclip-create-agent/references/agent-instruction-templates.md +123 -0
  197. package/skills/paperclip-create-agent/references/agents/coder.md +64 -0
  198. package/skills/paperclip-create-agent/references/agents/qa.md +88 -0
  199. package/skills/paperclip-create-agent/references/agents/securityengineer.md +135 -0
  200. package/skills/paperclip-create-agent/references/agents/uxdesigner.md +115 -0
  201. package/skills/paperclip-create-agent/references/api-reference.md +110 -0
  202. package/skills/paperclip-create-agent/references/baseline-role-guide.md +168 -0
  203. package/skills/paperclip-create-agent/references/draft-review-checklist.md +95 -0
  204. package/skills/para-memory-files/SKILL.md +100 -0
  205. package/skills/para-memory-files/references/schemas.md +35 -0
  206. package/skills/slack/SKILL.md +65 -0
@@ -0,0 +1,459 @@
1
+ import { asString, asNumber, asBoolean, parseObject, parseJson, } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
2
+ // The legacy login-prompt markers. The Claude CLI prints these words when it
3
+ // asks the user to log in. The detector matches them against any probe output
4
+ // line, which includes the raw stdout and stderr. This scope is pre-existing.
5
+ const CLAUDE_LOGIN_PROMPT_RE = /(?:not\s+logged\s+in|please\s+log\s+in|please\s+run\s+(?:`?claude\s+login`?|\/login)|login\s+required|requires\s+login|unauthorized|authentication\s+required|invalid\s+api\s+key[\s\S]{0,120}(?:\/login|claude\s+login|log\s+in))/i;
6
+ // The token-failure markers. An assistant or model event can print these same
7
+ // words as ordinary prose, so the detector matches them only against the parsed
8
+ // terminal result fields of a failed run. See detectClaudeLoginRequired.
9
+ const CLAUDE_AUTH_TOKEN_FAILURE_RE = /(?:authentication[_\s-](?:failed|error)|failed\s+to\s+authenticate|invalid\s+bearer\s+token|(?:invalid|expired|revoked)[\s\S]{0,40}(?:bearer|oauth|access)\s+token|(?:bearer|oauth|access)\s+token[\s\S]{0,40}(?:is\s+)?(?:invalid|expired|revoked))/i;
10
+ const URL_RE = /(https?:\/\/[^\s'"`<>()[\]{};,!?]+[^\s'"`<>()[\]{};,!.?:]+)/gi;
11
+ const CLAUDE_TRANSIENT_UPSTREAM_RE = /(?:rate[-\s]?limit(?:ed)?|rate_limit_error|too\s+many\s+requests|\b429\b|overloaded(?:_error)?|server\s+overloaded|service\s+unavailable|\b503\b|\b529\b|high\s+demand|try\s+again\s+later|temporarily\s+unavailable|throttl(?:ed|ing)|throttlingexception|servicequotaexceededexception|out\s+of\s+extra\s+usage|extra\s+usage\b|claude\s+usage\s+limit\s+reached|5[-\s]?hour\s+limit\s+reached|weekly\s+limit\s+reached|usage\s+limit\s+reached|usage\s+cap\s+reached)/i;
12
+ const CLAUDE_PROVIDER_QUOTA_RE = /(?:you(?:'|’)ve\s+hit\s+your\s+(?:\w+\s+)?limit|session\s+limit\s+(?:reached|exceeded)|out\s+of\s+extra\s+usage|extra\s+usage\b|claude\s+usage\s+limit\s+reached|5[-\s]?hour\s+limit\s+reached|weekly\s+limit\s+reached|usage\s+limit\s+reached|usage\s+cap\s+reached|servicequotaexceededexception)/i;
13
+ const CLAUDE_MODEL_NOT_FOUND_RE = /(?:\b404\b[\s\S]{0,120})?(?:model[\s_-]*(?:not[\s_-]*found|does not exist|unknown|invalid)|unknown[\s_-]*model)/i;
14
+ const CLAUDE_EXTRA_USAGE_RESET_RE = /(?:you(?:'|’)ve\s+hit\s+your\s+(?:\w+\s+)?limit|session\s+limit\s+(?:reached|exceeded)|out\s+of\s+extra\s+usage|extra\s+usage|usage\s+limit\s+reached|usage\s+cap\s+reached|5[-\s]?hour\s+limit\s+reached|weekly\s+limit\s+reached|claude\s+usage\s+limit\s+reached)[\s\S]{0,120}?\bresets?\s+(?:at\s+)?([^\n()]+?)(?:\s*\(([^)]+)\))?(?:[.!]|\n|$)/i;
15
+ /**
16
+ * Sum the per-model usage ledger from a Claude CLI result event. The result
17
+ * event's top-level `usage` reflects only the main-loop message chain, so it
18
+ * undercounts output tokens whenever subagents or sidechains ran; `modelUsage`
19
+ * is the CLI's authoritative per-model accounting (it is what backs /cost).
20
+ * Cache-creation tokens are billed prompt tokens, so they count as input.
21
+ */
22
+ export function claudeModelUsageTotals(modelUsage) {
23
+ const byModel = parseObject(modelUsage);
24
+ let inputTokens = 0;
25
+ let outputTokens = 0;
26
+ let cachedInputTokens = 0;
27
+ let sawEntry = false;
28
+ for (const value of Object.values(byModel)) {
29
+ const entry = parseObject(value);
30
+ if (Object.keys(entry).length === 0)
31
+ continue;
32
+ sawEntry = true;
33
+ inputTokens += asNumber(entry.inputTokens, 0) + asNumber(entry.cacheCreationInputTokens, 0);
34
+ outputTokens += asNumber(entry.outputTokens, 0);
35
+ cachedInputTokens += asNumber(entry.cacheReadInputTokens, 0);
36
+ }
37
+ if (!sawEntry)
38
+ return null;
39
+ return { inputTokens, outputTokens, cachedInputTokens };
40
+ }
41
+ export function parseClaudeStreamJson(stdout) {
42
+ let sessionId = null;
43
+ let model = "";
44
+ let finalResult = null;
45
+ const assistantTexts = [];
46
+ for (const rawLine of stdout.split(/\r?\n/)) {
47
+ const line = rawLine.trim();
48
+ if (!line)
49
+ continue;
50
+ const event = parseJson(line);
51
+ if (!event)
52
+ continue;
53
+ const type = asString(event.type, "");
54
+ if (type === "system" && asString(event.subtype, "") === "init") {
55
+ sessionId = asString(event.session_id, sessionId ?? "") || sessionId;
56
+ model = asString(event.model, model);
57
+ continue;
58
+ }
59
+ if (type === "assistant") {
60
+ sessionId = asString(event.session_id, sessionId ?? "") || sessionId;
61
+ const message = parseObject(event.message);
62
+ const content = Array.isArray(message.content) ? message.content : [];
63
+ for (const entry of content) {
64
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry))
65
+ continue;
66
+ const block = entry;
67
+ if (asString(block.type, "") === "text") {
68
+ const text = asString(block.text, "");
69
+ if (text)
70
+ assistantTexts.push(text);
71
+ }
72
+ }
73
+ continue;
74
+ }
75
+ if (type === "result") {
76
+ finalResult = event;
77
+ sessionId = asString(event.session_id, sessionId ?? "") || sessionId;
78
+ }
79
+ }
80
+ if (!finalResult) {
81
+ return {
82
+ sessionId,
83
+ model,
84
+ costUsd: null,
85
+ usage: null,
86
+ usageBasis: null,
87
+ summary: assistantTexts.join("\n\n").trim(),
88
+ resultJson: null,
89
+ };
90
+ }
91
+ const modelUsageTotals = claudeModelUsageTotals(finalResult.modelUsage);
92
+ const usageObj = parseObject(finalResult.usage);
93
+ const usage = modelUsageTotals ?? {
94
+ inputTokens: asNumber(usageObj.input_tokens, 0),
95
+ cachedInputTokens: asNumber(usageObj.cache_read_input_tokens, 0),
96
+ outputTokens: asNumber(usageObj.output_tokens, 0),
97
+ };
98
+ const costRaw = finalResult.total_cost_usd;
99
+ const costUsd = typeof costRaw === "number" && Number.isFinite(costRaw) ? costRaw : null;
100
+ const summary = asString(finalResult.result, assistantTexts.join("\n\n")).trim();
101
+ return {
102
+ sessionId,
103
+ model,
104
+ costUsd,
105
+ usage,
106
+ // modelUsage covers exactly this CLI invocation, so mark it per-run to
107
+ // keep the server from applying its session-cumulative delta heuristic.
108
+ usageBasis: "per_run",
109
+ summary,
110
+ resultJson: finalResult,
111
+ };
112
+ }
113
+ function extractClaudeErrorMessages(parsed) {
114
+ const raw = Array.isArray(parsed.errors) ? parsed.errors : [];
115
+ const messages = [];
116
+ for (const entry of raw) {
117
+ if (typeof entry === "string") {
118
+ const msg = entry.trim();
119
+ if (msg)
120
+ messages.push(msg);
121
+ continue;
122
+ }
123
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry)) {
124
+ continue;
125
+ }
126
+ const obj = entry;
127
+ const msg = asString(obj.message, "") || asString(obj.error, "") || asString(obj.code, "");
128
+ if (msg) {
129
+ messages.push(msg);
130
+ continue;
131
+ }
132
+ try {
133
+ messages.push(JSON.stringify(obj));
134
+ }
135
+ catch {
136
+ // skip non-serializable entry
137
+ }
138
+ }
139
+ return messages;
140
+ }
141
+ export function extractClaudeLoginUrl(text) {
142
+ const match = text.match(URL_RE);
143
+ if (!match || match.length === 0)
144
+ return null;
145
+ for (const rawUrl of match) {
146
+ const cleaned = rawUrl.replace(/[\])}.!,?;:'\"]+$/g, "");
147
+ if (cleaned.includes("claude") || cleaned.includes("anthropic") || cleaned.includes("auth")) {
148
+ return cleaned;
149
+ }
150
+ }
151
+ return match[0]?.replace(/[\])}.!,?;:'\"]+$/g, "") ?? null;
152
+ }
153
+ // Collect the parsed terminal result fields that carry an auth failure. The
154
+ // CLI writes the token-failure text to the result event, so the detector reads
155
+ // the result string, the top-level error field, and the errors array. It never
156
+ // reads the raw stdout, so an assistant event cannot inject a token marker.
157
+ function collectClaudeTerminalText(parsed) {
158
+ return [
159
+ asString(parsed.result, ""),
160
+ asString(parsed.error, ""),
161
+ ...extractClaudeErrorMessages(parsed),
162
+ ]
163
+ .map((field) => field.trim())
164
+ .filter(Boolean)
165
+ .join("\n");
166
+ }
167
+ // Report whether the parsed terminal result marks the run as an auth failure.
168
+ // The token-failure markers apply only to a failed run. A successful probe
169
+ // whose answer text repeats an auth phrase does not classify as login required.
170
+ function claudeResultIndicatesAuthFailure(parsed) {
171
+ if (asBoolean(parsed.is_error, false))
172
+ return true;
173
+ const subtype = asString(parsed.subtype, "").trim().toLowerCase();
174
+ if (subtype.startsWith("error"))
175
+ return true;
176
+ const status = asNumber(parsed.api_error_status, 0) || asNumber(parsed.error_status, 0);
177
+ if (status === 401 || status === 403)
178
+ return true;
179
+ if (asString(parsed.error, "").trim())
180
+ return true;
181
+ return extractClaudeErrorMessages(parsed).length > 0;
182
+ }
183
+ export function detectClaudeLoginRequired(input) {
184
+ const parsed = input.parsed ?? null;
185
+ const resultText = asString(parsed?.result, "").trim();
186
+ // The legacy login-prompt markers keep their broad scope. They match against
187
+ // every output line, which includes the parsed result, the parsed errors, and
188
+ // the raw stdout and stderr.
189
+ const promptLines = [resultText, ...extractClaudeErrorMessages(parsed ?? {}), input.stdout, input.stderr]
190
+ .join("\n")
191
+ .split(/\r?\n/)
192
+ .map((line) => line.trim())
193
+ .filter(Boolean);
194
+ const loginPrompt = promptLines.some((line) => CLAUDE_LOGIN_PROMPT_RE.test(line));
195
+ // The token-failure markers match only against the parsed terminal fields of
196
+ // a failed run. The raw stdout is untrusted, so a model that prints a token
197
+ // phrase, or a successful run that repeats one, does not flip the classifier.
198
+ const tokenFailure = parsed !== null &&
199
+ claudeResultIndicatesAuthFailure(parsed) &&
200
+ CLAUDE_AUTH_TOKEN_FAILURE_RE.test(collectClaudeTerminalText(parsed));
201
+ return {
202
+ requiresLogin: loginPrompt || tokenFailure,
203
+ loginUrl: extractClaudeLoginUrl([input.stdout, input.stderr].join("\n")),
204
+ };
205
+ }
206
+ export function describeClaudeFailure(parsed) {
207
+ const subtype = asString(parsed.subtype, "");
208
+ const resultText = asString(parsed.result, "").trim();
209
+ const errors = extractClaudeErrorMessages(parsed);
210
+ let detail = resultText;
211
+ if (!detail && errors.length > 0) {
212
+ detail = errors[0] ?? "";
213
+ }
214
+ const parts = ["Claude run failed"];
215
+ if (subtype)
216
+ parts.push(`subtype=${subtype}`);
217
+ if (detail)
218
+ parts.push(detail);
219
+ return parts.length > 1 ? parts.join(": ") : null;
220
+ }
221
+ export function isClaudeModelNotFoundError(input) {
222
+ const parsed = input.parsed ?? null;
223
+ const messages = [
224
+ input.errorMessage ?? "",
225
+ input.stdout ?? "",
226
+ input.stderr ?? "",
227
+ parsed ? asString(parsed.result, "") : "",
228
+ ...(parsed ? extractClaudeErrorMessages(parsed) : []),
229
+ ];
230
+ return messages.some((message) => CLAUDE_MODEL_NOT_FOUND_RE.test(message));
231
+ }
232
+ export function isClaudeMaxTurnsResult(parsed) {
233
+ if (!parsed)
234
+ return false;
235
+ const subtype = asString(parsed.subtype, "").trim().toLowerCase();
236
+ if (subtype === "error_max_turns")
237
+ return true;
238
+ const structuredStopReasons = [
239
+ parsed.stop_reason,
240
+ parsed.stopReason,
241
+ parsed.error_code,
242
+ parsed.errorCode,
243
+ ].map((value) => asString(value, "").trim().toLowerCase());
244
+ return structuredStopReasons.some((reason) => reason === "max_turns" ||
245
+ reason === "max_turns_exhausted" ||
246
+ reason === "turn_limit" ||
247
+ reason === "turn_limit_exhausted");
248
+ }
249
+ export function isClaudeRefusalResult(parsed) {
250
+ if (!parsed)
251
+ return false;
252
+ // A policy refusal exits the CLI cleanly (exitCode=0, is_error=false), so it
253
+ // must be detected from the structured fields rather than the failure flag.
254
+ const subtype = asString(parsed.subtype, "").trim().toLowerCase();
255
+ if (subtype === "model_refusal" || subtype === "refusal")
256
+ return true;
257
+ const structuredStopReasons = [
258
+ parsed.stop_reason,
259
+ parsed.stopReason,
260
+ parsed.error_code,
261
+ parsed.errorCode,
262
+ ].map((value) => asString(value, "").trim().toLowerCase());
263
+ return structuredStopReasons.some((reason) => reason === "refusal");
264
+ }
265
+ export function isClaudeUnknownSessionError(parsed) {
266
+ const resultText = asString(parsed.result, "").trim();
267
+ const allMessages = [resultText, ...extractClaudeErrorMessages(parsed)]
268
+ .map((msg) => msg.trim())
269
+ .filter(Boolean);
270
+ return allMessages.some((msg) => /no conversation found with session id|unknown session|session .* not found|not a valid UUID|--resume requires a valid session|is not a UUID|does not match any session title/i.test(msg));
271
+ }
272
+ export function isClaudePoisonedPreviousMessageIdError(parsed) {
273
+ const resultText = asString(parsed.result, "").trim();
274
+ const allMessages = [resultText, ...extractClaudeErrorMessages(parsed)]
275
+ .map((msg) => msg.trim())
276
+ .filter(Boolean);
277
+ return allMessages.some((msg) => /diagnostics\.previous_message_id.*starts with `msg_`/i.test(msg));
278
+ }
279
+ export function isClaudeImageProcessingError(parsed) {
280
+ const resultText = asString(parsed.result, "").trim();
281
+ const allMessages = [resultText, ...extractClaudeErrorMessages(parsed)]
282
+ .map((msg) => msg.trim())
283
+ .filter(Boolean);
284
+ return allMessages.some((msg) => /could not process image/i.test(msg));
285
+ }
286
+ function buildClaudeTransientHaystack(input) {
287
+ const parsed = input.parsed ?? null;
288
+ const resultText = parsed ? asString(parsed.result, "") : "";
289
+ const parsedErrors = parsed ? extractClaudeErrorMessages(parsed) : [];
290
+ return [
291
+ input.errorMessage ?? "",
292
+ resultText,
293
+ ...parsedErrors,
294
+ input.stdout ?? "",
295
+ input.stderr ?? "",
296
+ ]
297
+ .join("\n")
298
+ .split(/\r?\n/)
299
+ .map((line) => line.trim())
300
+ .filter(Boolean)
301
+ .join("\n");
302
+ }
303
+ function readTimeZoneParts(date, timeZone) {
304
+ const values = new Map(new Intl.DateTimeFormat("en-US", {
305
+ timeZone,
306
+ hourCycle: "h23",
307
+ year: "numeric",
308
+ month: "2-digit",
309
+ day: "2-digit",
310
+ hour: "2-digit",
311
+ minute: "2-digit",
312
+ }).formatToParts(date).map((part) => [part.type, part.value]));
313
+ return {
314
+ year: Number.parseInt(values.get("year") ?? "", 10),
315
+ month: Number.parseInt(values.get("month") ?? "", 10),
316
+ day: Number.parseInt(values.get("day") ?? "", 10),
317
+ hour: Number.parseInt(values.get("hour") ?? "", 10),
318
+ minute: Number.parseInt(values.get("minute") ?? "", 10),
319
+ };
320
+ }
321
+ function normalizeResetTimeZone(timeZoneHint) {
322
+ const normalized = timeZoneHint?.trim();
323
+ if (!normalized)
324
+ return null;
325
+ if (/^(?:utc|gmt)$/i.test(normalized))
326
+ return "UTC";
327
+ try {
328
+ new Intl.DateTimeFormat("en-US", { timeZone: normalized }).format(new Date(0));
329
+ return normalized;
330
+ }
331
+ catch {
332
+ return null;
333
+ }
334
+ }
335
+ function dateFromTimeZoneWallClock(input) {
336
+ let candidate = new Date(Date.UTC(input.year, input.month - 1, input.day, input.hour, input.minute, 0, 0));
337
+ const targetUtc = Date.UTC(input.year, input.month - 1, input.day, input.hour, input.minute, 0, 0);
338
+ for (let attempt = 0; attempt < 4; attempt += 1) {
339
+ const actual = readTimeZoneParts(candidate, input.timeZone);
340
+ const actualUtc = Date.UTC(actual.year, actual.month - 1, actual.day, actual.hour, actual.minute, 0, 0);
341
+ const offsetMs = targetUtc - actualUtc;
342
+ if (offsetMs === 0)
343
+ break;
344
+ candidate = new Date(candidate.getTime() + offsetMs);
345
+ }
346
+ const verified = readTimeZoneParts(candidate, input.timeZone);
347
+ if (verified.year !== input.year ||
348
+ verified.month !== input.month ||
349
+ verified.day !== input.day ||
350
+ verified.hour !== input.hour ||
351
+ verified.minute !== input.minute) {
352
+ return null;
353
+ }
354
+ return candidate;
355
+ }
356
+ function nextClockTimeInTimeZone(input) {
357
+ const timeZone = normalizeResetTimeZone(input.timeZoneHint);
358
+ if (!timeZone)
359
+ return null;
360
+ const nowParts = readTimeZoneParts(input.now, timeZone);
361
+ let retryAt = dateFromTimeZoneWallClock({
362
+ year: nowParts.year,
363
+ month: nowParts.month,
364
+ day: nowParts.day,
365
+ hour: input.hour,
366
+ minute: input.minute,
367
+ timeZone,
368
+ });
369
+ if (!retryAt)
370
+ return null;
371
+ if (retryAt.getTime() <= input.now.getTime()) {
372
+ const nextDay = new Date(Date.UTC(nowParts.year, nowParts.month - 1, nowParts.day + 1, 0, 0, 0, 0));
373
+ retryAt = dateFromTimeZoneWallClock({
374
+ year: nextDay.getUTCFullYear(),
375
+ month: nextDay.getUTCMonth() + 1,
376
+ day: nextDay.getUTCDate(),
377
+ hour: input.hour,
378
+ minute: input.minute,
379
+ timeZone,
380
+ });
381
+ }
382
+ return retryAt;
383
+ }
384
+ function parseClaudeResetClockTime(clockText, now, timeZoneHint) {
385
+ const normalized = clockText.trim().replace(/\s+/g, " ");
386
+ const match = normalized.match(/^(\d{1,2})(?::(\d{2}))?\s*([ap])\.?\s*m\.?/i);
387
+ if (!match)
388
+ return null;
389
+ const hour12 = Number.parseInt(match[1] ?? "", 10);
390
+ const minute = Number.parseInt(match[2] ?? "0", 10);
391
+ if (!Number.isInteger(hour12) || hour12 < 1 || hour12 > 12)
392
+ return null;
393
+ if (!Number.isInteger(minute) || minute < 0 || minute > 59)
394
+ return null;
395
+ let hour24 = hour12 % 12;
396
+ if ((match[3] ?? "").toLowerCase() === "p")
397
+ hour24 += 12;
398
+ if (timeZoneHint) {
399
+ const explicitRetryAt = nextClockTimeInTimeZone({
400
+ now,
401
+ hour: hour24,
402
+ minute,
403
+ timeZoneHint,
404
+ });
405
+ if (explicitRetryAt)
406
+ return explicitRetryAt;
407
+ }
408
+ const retryAt = new Date(now);
409
+ retryAt.setHours(hour24, minute, 0, 0);
410
+ if (retryAt.getTime() <= now.getTime()) {
411
+ retryAt.setDate(retryAt.getDate() + 1);
412
+ }
413
+ return retryAt;
414
+ }
415
+ export function extractClaudeRetryNotBefore(input, now = new Date()) {
416
+ const haystack = buildClaudeTransientHaystack(input);
417
+ const match = haystack.match(CLAUDE_EXTRA_USAGE_RESET_RE);
418
+ if (!match)
419
+ return null;
420
+ return parseClaudeResetClockTime(match[1] ?? "", now, match[2]);
421
+ }
422
+ export function isClaudeTransientUpstreamError(input) {
423
+ const parsed = input.parsed ?? null;
424
+ // Deterministic failures are handled by their own classifiers.
425
+ if (parsed && (isClaudeMaxTurnsResult(parsed) || isClaudeUnknownSessionError(parsed) || isClaudePoisonedPreviousMessageIdError(parsed) || isClaudeImageProcessingError(parsed))) {
426
+ return false;
427
+ }
428
+ const loginMeta = detectClaudeLoginRequired({
429
+ parsed,
430
+ stdout: input.stdout ?? "",
431
+ stderr: input.stderr ?? "",
432
+ });
433
+ if (loginMeta.requiresLogin)
434
+ return false;
435
+ const haystack = buildClaudeTransientHaystack(input);
436
+ if (!haystack)
437
+ return false;
438
+ if (isClaudeProviderQuotaError(input))
439
+ return false;
440
+ return CLAUDE_TRANSIENT_UPSTREAM_RE.test(haystack);
441
+ }
442
+ export function isClaudeProviderQuotaError(input) {
443
+ const parsed = input.parsed ?? null;
444
+ if (parsed && (isClaudeMaxTurnsResult(parsed) || isClaudeUnknownSessionError(parsed) || isClaudePoisonedPreviousMessageIdError(parsed) || isClaudeImageProcessingError(parsed))) {
445
+ return false;
446
+ }
447
+ const loginMeta = detectClaudeLoginRequired({
448
+ parsed,
449
+ stdout: input.stdout ?? "",
450
+ stderr: input.stderr ?? "",
451
+ });
452
+ if (loginMeta.requiresLogin)
453
+ return false;
454
+ const haystack = buildClaudeTransientHaystack(input);
455
+ if (!haystack)
456
+ return false;
457
+ return CLAUDE_PROVIDER_QUOTA_RE.test(haystack);
458
+ }
459
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/server/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parse.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.test.d.ts","sourceRoot":"","sources":["../../src/server/parse.test.ts"],"names":[],"mappings":""}