charness 3.0.0 → 3.1.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 (227) hide show
  1. package/README.md +188 -16
  2. package/dist/adapters/claudeCliAdapter.d.ts +15 -0
  3. package/dist/adapters/claudeCliAdapter.d.ts.map +1 -1
  4. package/dist/adapters/claudeCliAdapter.js +36 -1
  5. package/dist/adapters/claudeCliAdapter.js.map +1 -1
  6. package/dist/adapters/claudeConfigDir.d.ts +40 -0
  7. package/dist/adapters/claudeConfigDir.d.ts.map +1 -0
  8. package/dist/adapters/claudeConfigDir.js +3 -0
  9. package/dist/adapters/claudeConfigDir.js.map +1 -0
  10. package/dist/adapters/claudeJsonStreamAdapter.d.ts +32 -0
  11. package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
  12. package/dist/adapters/claudeJsonStreamAdapter.js +89 -8
  13. package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
  14. package/dist/adapters/claudePlatformFlags.d.ts +4 -4
  15. package/dist/adapters/claudePlatformFlags.js +4 -4
  16. package/dist/adapters/createAdapter.d.ts +8 -0
  17. package/dist/adapters/createAdapter.d.ts.map +1 -1
  18. package/dist/adapters/createAdapter.js +37 -0
  19. package/dist/adapters/createAdapter.js.map +1 -1
  20. package/dist/adapters/openCodeAdapter.d.ts +23 -0
  21. package/dist/adapters/openCodeAdapter.d.ts.map +1 -1
  22. package/dist/adapters/openCodeAdapter.js +84 -1
  23. package/dist/adapters/openCodeAdapter.js.map +1 -1
  24. package/dist/agentLogin/agentLogin.d.ts +15 -2
  25. package/dist/agentLogin/agentLogin.d.ts.map +1 -1
  26. package/dist/agentLogin/agentLogin.js +53 -16
  27. package/dist/agentLogin/agentLogin.js.map +1 -1
  28. package/dist/apiErrorRetry.d.ts +8 -3
  29. package/dist/apiErrorRetry.d.ts.map +1 -1
  30. package/dist/apiErrorRetry.js +36 -5
  31. package/dist/apiErrorRetry.js.map +1 -1
  32. package/dist/apiRetryKick.d.ts +9 -0
  33. package/dist/apiRetryKick.d.ts.map +1 -1
  34. package/dist/apiRetryKick.js +16 -0
  35. package/dist/apiRetryKick.js.map +1 -1
  36. package/dist/bot.d.ts.map +1 -1
  37. package/dist/bot.js +639 -24
  38. package/dist/bot.js.map +1 -1
  39. package/dist/cli/claudeProfiles.d.ts +42 -0
  40. package/dist/cli/claudeProfiles.d.ts.map +1 -0
  41. package/dist/cli/claudeProfiles.js +106 -0
  42. package/dist/cli/claudeProfiles.js.map +1 -0
  43. package/dist/cli.js +10 -0
  44. package/dist/cli.js.map +1 -1
  45. package/dist/connectors/jira/adf.d.ts +2 -0
  46. package/dist/connectors/jira/adf.d.ts.map +1 -1
  47. package/dist/connectors/jira/adf.js +5 -0
  48. package/dist/connectors/jira/adf.js.map +1 -1
  49. package/dist/connectors/jira/answerSink.d.ts +7 -0
  50. package/dist/connectors/jira/answerSink.d.ts.map +1 -1
  51. package/dist/connectors/jira/answerSink.js +24 -10
  52. package/dist/connectors/jira/answerSink.js.map +1 -1
  53. package/dist/connectors/jira/attachmentTool.d.ts +7 -0
  54. package/dist/connectors/jira/attachmentTool.d.ts.map +1 -1
  55. package/dist/connectors/jira/attachmentTool.js +16 -0
  56. package/dist/connectors/jira/attachmentTool.js.map +1 -1
  57. package/dist/connectors/jira/client.d.ts +32 -0
  58. package/dist/connectors/jira/client.d.ts.map +1 -1
  59. package/dist/connectors/jira/client.js +43 -5
  60. package/dist/connectors/jira/client.js.map +1 -1
  61. package/dist/connectors/jira/config.d.ts +3 -16
  62. package/dist/connectors/jira/config.d.ts.map +1 -1
  63. package/dist/connectors/jira/config.js +5 -32
  64. package/dist/connectors/jira/config.js.map +1 -1
  65. package/dist/connectors/jira/connector.d.ts +3 -0
  66. package/dist/connectors/jira/connector.d.ts.map +1 -1
  67. package/dist/connectors/jira/connector.js +70 -15
  68. package/dist/connectors/jira/connector.js.map +1 -1
  69. package/dist/connectors/jira/contextLedger.d.ts +1 -0
  70. package/dist/connectors/jira/contextLedger.d.ts.map +1 -1
  71. package/dist/connectors/jira/contextLedger.js +2 -0
  72. package/dist/connectors/jira/contextLedger.js.map +1 -1
  73. package/dist/connectors/jira/inbound.d.ts +15 -6
  74. package/dist/connectors/jira/inbound.d.ts.map +1 -1
  75. package/dist/connectors/jira/inbound.js +37 -22
  76. package/dist/connectors/jira/inbound.js.map +1 -1
  77. package/dist/connectors/jira/issueBlocks.d.ts +26 -3
  78. package/dist/connectors/jira/issueBlocks.d.ts.map +1 -1
  79. package/dist/connectors/jira/issueBlocks.js +104 -29
  80. package/dist/connectors/jira/issueBlocks.js.map +1 -1
  81. package/dist/connectors/jira/issueContext.d.ts +11 -5
  82. package/dist/connectors/jira/issueContext.d.ts.map +1 -1
  83. package/dist/connectors/jira/issueContext.js +23 -6
  84. package/dist/connectors/jira/issueContext.js.map +1 -1
  85. package/dist/connectors/jira/issueDelta.d.ts +3 -0
  86. package/dist/connectors/jira/issueDelta.d.ts.map +1 -1
  87. package/dist/connectors/jira/issueDelta.js +15 -6
  88. package/dist/connectors/jira/issueDelta.js.map +1 -1
  89. package/dist/connectors/jira/mediaPlaceholders.d.ts +2 -0
  90. package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -1
  91. package/dist/connectors/jira/mediaPlaceholders.js +16 -3
  92. package/dist/connectors/jira/mediaPlaceholders.js.map +1 -1
  93. package/dist/connectors/jira/prompt.d.ts +2 -0
  94. package/dist/connectors/jira/prompt.d.ts.map +1 -1
  95. package/dist/connectors/jira/prompt.js +4 -1
  96. package/dist/connectors/jira/prompt.js.map +1 -1
  97. package/dist/connectors/jira/sessionKeyCodec.d.ts +2 -0
  98. package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -1
  99. package/dist/connectors/jira/sessionKeyCodec.js +5 -0
  100. package/dist/connectors/jira/sessionKeyCodec.js.map +1 -1
  101. package/dist/connectors/jira/trigger.d.ts +4 -0
  102. package/dist/connectors/jira/trigger.d.ts.map +1 -1
  103. package/dist/connectors/jira/trigger.js +9 -1
  104. package/dist/connectors/jira/trigger.js.map +1 -1
  105. package/dist/connectors/jira/triggerLog.d.ts +4 -2
  106. package/dist/connectors/jira/triggerLog.d.ts.map +1 -1
  107. package/dist/connectors/jira/triggerLog.js +1 -1
  108. package/dist/connectors/jira/triggerLog.js.map +1 -1
  109. package/dist/connectors/jira/trustedGroup.d.ts +54 -0
  110. package/dist/connectors/jira/trustedGroup.d.ts.map +1 -0
  111. package/dist/connectors/jira/trustedGroup.js +98 -0
  112. package/dist/connectors/jira/trustedGroup.js.map +1 -0
  113. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +3 -0
  114. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -1
  115. package/dist/connectors/telegram/commands/autoContinueLimits.js +15 -45
  116. package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -1
  117. package/dist/connectors/telegram/commands/claudeAccounts.d.ts +58 -0
  118. package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -0
  119. package/dist/connectors/telegram/commands/claudeAccounts.js +591 -0
  120. package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -0
  121. package/dist/connectors/telegram/commands/fallbackChain.d.ts +49 -0
  122. package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -0
  123. package/dist/connectors/telegram/commands/fallbackChain.js +624 -0
  124. package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -0
  125. package/dist/connectors/telegram/commands/modelProviders.d.ts +23 -1
  126. package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -1
  127. package/dist/connectors/telegram/commands/modelProviders.js +131 -6
  128. package/dist/connectors/telegram/commands/modelProviders.js.map +1 -1
  129. package/dist/i18n/de.d.ts.map +1 -1
  130. package/dist/i18n/de.js +137 -9
  131. package/dist/i18n/de.js.map +1 -1
  132. package/dist/i18n/en.d.ts.map +1 -1
  133. package/dist/i18n/en.js +137 -9
  134. package/dist/i18n/en.js.map +1 -1
  135. package/dist/i18n/es.d.ts.map +1 -1
  136. package/dist/i18n/es.js +137 -9
  137. package/dist/i18n/es.js.map +1 -1
  138. package/dist/i18n/fr.d.ts.map +1 -1
  139. package/dist/i18n/fr.js +137 -9
  140. package/dist/i18n/fr.js.map +1 -1
  141. package/dist/i18n/hi.d.ts.map +1 -1
  142. package/dist/i18n/hi.js +137 -9
  143. package/dist/i18n/hi.js.map +1 -1
  144. package/dist/i18n/ja.d.ts.map +1 -1
  145. package/dist/i18n/ja.js +137 -9
  146. package/dist/i18n/ja.js.map +1 -1
  147. package/dist/i18n/ka.d.ts.map +1 -1
  148. package/dist/i18n/ka.js +137 -9
  149. package/dist/i18n/ka.js.map +1 -1
  150. package/dist/i18n/pt.d.ts.map +1 -1
  151. package/dist/i18n/pt.js +137 -9
  152. package/dist/i18n/pt.js.map +1 -1
  153. package/dist/i18n/ru.d.ts.map +1 -1
  154. package/dist/i18n/ru.js +137 -9
  155. package/dist/i18n/ru.js.map +1 -1
  156. package/dist/i18n/uk.d.ts.map +1 -1
  157. package/dist/i18n/uk.js +137 -9
  158. package/dist/i18n/uk.js.map +1 -1
  159. package/dist/i18n/uz.d.ts.map +1 -1
  160. package/dist/i18n/uz.js +137 -9
  161. package/dist/i18n/uz.js.map +1 -1
  162. package/dist/i18n/zh.d.ts.map +1 -1
  163. package/dist/i18n/zh.js +137 -9
  164. package/dist/i18n/zh.js.map +1 -1
  165. package/dist/scheduler/mcpSurface.d.ts +8 -0
  166. package/dist/scheduler/mcpSurface.d.ts.map +1 -1
  167. package/dist/scheduler/mcpSurface.js +42 -2
  168. package/dist/scheduler/mcpSurface.js.map +1 -1
  169. package/dist/state.d.ts +172 -1
  170. package/dist/state.d.ts.map +1 -1
  171. package/dist/state.js +298 -0
  172. package/dist/state.js.map +1 -1
  173. package/dist/types.d.ts +7 -0
  174. package/dist/types.d.ts.map +1 -1
  175. package/dist/utils/autoContinueOnLimit.d.ts +7 -0
  176. package/dist/utils/autoContinueOnLimit.d.ts.map +1 -1
  177. package/dist/utils/autoContinueOnLimit.js +10 -0
  178. package/dist/utils/autoContinueOnLimit.js.map +1 -1
  179. package/dist/utils/claudeAccountPickerPlan.d.ts +85 -0
  180. package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -0
  181. package/dist/utils/claudeAccountPickerPlan.js +123 -0
  182. package/dist/utils/claudeAccountPickerPlan.js.map +1 -0
  183. package/dist/utils/claudeLimitSwitch.d.ts +40 -0
  184. package/dist/utils/claudeLimitSwitch.d.ts.map +1 -0
  185. package/dist/utils/claudeLimitSwitch.js +54 -0
  186. package/dist/utils/claudeLimitSwitch.js.map +1 -0
  187. package/dist/utils/claudeProfileUsageLines.d.ts +15 -0
  188. package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -0
  189. package/dist/utils/claudeProfileUsageLines.js +42 -0
  190. package/dist/utils/claudeProfileUsageLines.js.map +1 -0
  191. package/dist/utils/claudeProfiles.d.ts +117 -0
  192. package/dist/utils/claudeProfiles.d.ts.map +1 -0
  193. package/dist/utils/claudeProfiles.js +285 -0
  194. package/dist/utils/claudeProfiles.js.map +1 -0
  195. package/dist/utils/claudeStreamJson.d.ts +13 -1
  196. package/dist/utils/claudeStreamJson.d.ts.map +1 -1
  197. package/dist/utils/claudeStreamJson.js +13 -0
  198. package/dist/utils/claudeStreamJson.js.map +1 -1
  199. package/dist/utils/claudeUsage.d.ts +209 -0
  200. package/dist/utils/claudeUsage.d.ts.map +1 -0
  201. package/dist/utils/claudeUsage.js +413 -0
  202. package/dist/utils/claudeUsage.js.map +1 -0
  203. package/dist/utils/claudeUsageRefresher.d.ts +44 -0
  204. package/dist/utils/claudeUsageRefresher.d.ts.map +1 -0
  205. package/dist/utils/claudeUsageRefresher.js +95 -0
  206. package/dist/utils/claudeUsageRefresher.js.map +1 -0
  207. package/dist/utils/fallbackBridge.d.ts +32 -0
  208. package/dist/utils/fallbackBridge.d.ts.map +1 -0
  209. package/dist/utils/fallbackBridge.js +62 -0
  210. package/dist/utils/fallbackBridge.js.map +1 -0
  211. package/dist/utils/fallbackChain.d.ts +299 -0
  212. package/dist/utils/fallbackChain.d.ts.map +1 -0
  213. package/dist/utils/fallbackChain.js +542 -0
  214. package/dist/utils/fallbackChain.js.map +1 -0
  215. package/dist/utils/jsonStreamHost.d.ts +14 -3
  216. package/dist/utils/jsonStreamHost.d.ts.map +1 -1
  217. package/dist/utils/jsonStreamHost.js +26 -5
  218. package/dist/utils/jsonStreamHost.js.map +1 -1
  219. package/dist/utils/modelRecentPlan.d.ts +56 -0
  220. package/dist/utils/modelRecentPlan.d.ts.map +1 -0
  221. package/dist/utils/modelRecentPlan.js +107 -0
  222. package/dist/utils/modelRecentPlan.js.map +1 -0
  223. package/dist/utils/threadStatusReport.d.ts +25 -1
  224. package/dist/utils/threadStatusReport.d.ts.map +1 -1
  225. package/dist/utils/threadStatusReport.js +24 -1
  226. package/dist/utils/threadStatusReport.js.map +1 -1
  227. package/package.json +1 -1
@@ -0,0 +1,542 @@
1
+ "use strict";
2
+ /**
3
+ * @description The FALLBACK CHAIN (`/limits`, formerly `/fallback`): one instance-wide, ordered list of «where a topic's main agent
4
+ * continues when its own account / provider hits a usage limit». An entry names a backend and what it runs on —
5
+ * a Claude account profile (`utils/claudeProfiles.ts`) with an optional model, or an OpenCode provider with a
6
+ * model — and the list is the operator's PRIORITY (top = preferred). The bot drafts it from what is actually
7
+ * signed in (`proposeFallbackChain`), the operator reorders / removes / adds with buttons, and a limit on a
8
+ * topic picks the first AVAILABLE entry (`pickFallbackCandidates`): not disabled, signed in, present in the live catalog,
9
+ * not marked limited, and not the account the topic is already on.
10
+ *
11
+ * This module is the pure layer: the chain shape, its edit operations, the draft, the ranking, the
12
+ * auto / offer / none decision and the `callback_data` codecs. The chain lives in `state.json`
13
+ * (`StateStore.getFallbackChain`), the detection and the switch itself in `bot.ts`, the `/limits` screen in
14
+ * `connectors/telegram/commands/fallbackChain.ts`. The within-Claude ranking by headroom
15
+ * (`claudeLimitSwitch.ts`) is what an EMPTY chain falls back to, so a bot without a configured chain behaves
16
+ * exactly as before.
17
+ *
18
+ * No I/O, no `Date.now()`: the caller passes the clock and the detection views, so every rule is unit-tested.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.fallbackWaitOpenCallback = exports.fallbackAutoSwitchOpenCallback = exports.fallbackWaitSameCallback = exports.fallbackWaitOffCallback = exports.fallbackWaitOnCallback = exports.fallbackAutoSwitchSameCallback = exports.fallbackAutoSwitchOffCallback = exports.fallbackAutoSwitchOnCallback = exports.fallbackBackCallback = exports.fallbackClearCallback = exports.fallbackProposeConfirmCallback = exports.fallbackProposeCallback = exports.fallbackAddModelCallbackRe = exports.fallbackAddModelPageCallbackRe = exports.fallbackAddProviderCallbackRe = exports.fallbackAddClaudeModelCallbackRe = exports.fallbackAddClaudeCallbackRe = exports.fallbackAddCallback = exports.fallbackOpenCallbackRe = exports.fallbackToggleCallbackRe = exports.fallbackRemoveCallbackRe = exports.fallbackMoveDownCallbackRe = exports.fallbackMoveUpCallbackRe = exports.fallbackSwitchCallbackRe = exports.fallbackSwitchCallbackPrefix = exports.fallbackEarliestResetToleranceMs = exports.fallbackClaudeModelAliases = exports.fallbackSwitchMaxOffers = exports.fallbackChainMaxLength = void 0;
22
+ exports.parseOpenCodeModelLabel = parseOpenCodeModelLabel;
23
+ exports.buildOpenCodeModelLabel = buildOpenCodeModelLabel;
24
+ exports.checkIsSameFallbackEntry = checkIsSameFallbackEntry;
25
+ exports.checkIsSameFallbackAccount = checkIsSameFallbackAccount;
26
+ exports.formatFallbackEntryKey = formatFallbackEntryKey;
27
+ exports.formatFallbackEntryLabel = formatFallbackEntryLabel;
28
+ exports.normaliseFallbackChain = normaliseFallbackChain;
29
+ exports.checkIsFallbackEntryDisabled = checkIsFallbackEntryDisabled;
30
+ exports.toggleFallbackEntryDisabled = toggleFallbackEntryDisabled;
31
+ exports.addFallbackEntry = addFallbackEntry;
32
+ exports.removeFallbackEntry = removeFallbackEntry;
33
+ exports.moveFallbackEntry = moveFallbackEntry;
34
+ exports.getFallbackChainRevision = getFallbackChainRevision;
35
+ exports.listOpenCodeProviders = listOpenCodeProviders;
36
+ exports.listOpenCodeModelsOfProvider = listOpenCodeModelsOfProvider;
37
+ exports.pickPreferredOpenCodeModel = pickPreferredOpenCodeModel;
38
+ exports.proposeFallbackChain = proposeFallbackChain;
39
+ exports.getFallbackEntryAvailability = getFallbackEntryAvailability;
40
+ exports.pickEarliestResetRung = pickEarliestResetRung;
41
+ exports.pickFallbackCandidates = pickFallbackCandidates;
42
+ exports.decideFallbackSwitch = decideFallbackSwitch;
43
+ exports.resolveOpenCodeLimitedUntil = resolveOpenCodeLimitedUntil;
44
+ exports.buildFallbackSwitchCallbackData = buildFallbackSwitchCallbackData;
45
+ exports.parseFallbackSwitchCallbackData = parseFallbackSwitchCallbackData;
46
+ exports.getFallbackSwitchTapDecision = getFallbackSwitchTapDecision;
47
+ exports.buildFallbackMoveUpCallback = buildFallbackMoveUpCallback;
48
+ exports.buildFallbackMoveDownCallback = buildFallbackMoveDownCallback;
49
+ exports.buildFallbackRemoveCallback = buildFallbackRemoveCallback;
50
+ exports.buildFallbackOpenCallback = buildFallbackOpenCallback;
51
+ exports.buildFallbackToggleCallback = buildFallbackToggleCallback;
52
+ exports.buildFallbackAddClaudeCallback = buildFallbackAddClaudeCallback;
53
+ exports.buildFallbackAddClaudeModelCallback = buildFallbackAddClaudeModelCallback;
54
+ exports.buildFallbackAddProviderCallback = buildFallbackAddProviderCallback;
55
+ exports.buildFallbackAddModelPageCallback = buildFallbackAddModelPageCallback;
56
+ exports.buildFallbackAddModelCallback = buildFallbackAddModelCallback;
57
+ exports.parseFallbackEditCallback = parseFallbackEditCallback;
58
+ const claudeProfiles_1 = require("./claudeProfiles");
59
+ const claudeUsage_1 = require("./claudeUsage");
60
+ /** The chain is a short priority list; a longer one is never consulted past the first available entry anyway. */
61
+ exports.fallbackChainMaxLength = 12;
62
+ /** The most «switch to …» buttons a limit notice offers (best first); the rest of the chain is in `/fallback`. */
63
+ exports.fallbackSwitchMaxOffers = 3;
64
+ /** Claude's CLI model aliases (`claudeJsonStreamAdapter.getAvailableModels`), the choices a Claude entry offers. */
65
+ exports.fallbackClaudeModelAliases = ['fable', 'opus', 'sonnet', 'haiku'];
66
+ const claudeModelAliasRe = /^[a-z0-9][a-z0-9._-]{0,31}$/;
67
+ const openCodeProviderIdRe = /^[a-z0-9][a-z0-9._-]*$/;
68
+ // ── shape ──
69
+ /** `provider/model` → its two halves; `null` for a label without a provider segment. */
70
+ function parseOpenCodeModelLabel(label) {
71
+ const index = label.indexOf('/');
72
+ if (index <= 0 || index === label.length - 1)
73
+ return null;
74
+ const providerId = label.slice(0, index);
75
+ if (!openCodeProviderIdRe.test(providerId))
76
+ return null;
77
+ return { providerId, modelId: label.slice(index + 1) };
78
+ }
79
+ function buildOpenCodeModelLabel(entry) {
80
+ return `${entry.providerId}/${entry.modelId}`;
81
+ }
82
+ /** Whether two entries name the same rung (backend, account / provider and model alike). */
83
+ function checkIsSameFallbackEntry(a, b) {
84
+ if (a.backend === 'claude' && b.backend === 'claude')
85
+ return a.profile === b.profile && a.model === b.model;
86
+ if (a.backend === 'opencode' && b.backend === 'opencode')
87
+ return a.providerId === b.providerId && a.modelId === b.modelId;
88
+ return false;
89
+ }
90
+ /**
91
+ * @description Whether two entries share the thing a usage limit exhausts: the Claude ACCOUNT (its windows
92
+ * are per account, whatever the model) or the OpenCode provider+model. A limit on `a` makes every entry
93
+ * `checkIsSameFallbackAccount(a, b)` just as limited.
94
+ */
95
+ function checkIsSameFallbackAccount(a, b) {
96
+ if (a.backend === 'claude' && b.backend === 'claude')
97
+ return a.profile === b.profile;
98
+ if (a.backend === 'opencode' && b.backend === 'opencode')
99
+ return a.providerId === b.providerId && a.modelId === b.modelId;
100
+ return false;
101
+ }
102
+ /** `claude:work:fable` / `opencode:openai/gpt-5` — the entry as one token (logs, tests, the revision hash). */
103
+ function formatFallbackEntryKey(entry) {
104
+ return entry.backend === 'claude'
105
+ ? `claude:${entry.profile}:${entry.model ?? '-'}`
106
+ : `opencode:${buildOpenCodeModelLabel(entry)}`;
107
+ }
108
+ /**
109
+ * @description The entry for a human: `Claude · work · fable`, `Claude · default · <topic's model>`,
110
+ * `OpenCode · openai/gpt-5`. The backend words and the topic-model stand-in come localised from the caller.
111
+ */
112
+ function formatFallbackEntryLabel(entry, words) {
113
+ if (entry.backend === 'claude')
114
+ return `${words.claude} · ${entry.profile} · ${entry.model ?? words.topicModel}`;
115
+ return `${words.openCode} · ${buildOpenCodeModelLabel(entry)}`;
116
+ }
117
+ /**
118
+ * @description The chain as `state.json` may hold it, validated entry by entry: a malformed rung (a hand edit,
119
+ * an older shape) is dropped, never thrown on — the chain is advisory and the bot must boot. Duplicates are
120
+ * folded (first wins) and the cap applied.
121
+ */
122
+ function normaliseFallbackChain(raw) {
123
+ if (!Array.isArray(raw))
124
+ return [];
125
+ const chain = [];
126
+ for (const item of raw) {
127
+ const entry = readFallbackEntry(item);
128
+ if (entry && !chain.some((known) => checkIsSameFallbackEntry(known, entry)))
129
+ chain.push(entry);
130
+ if (chain.length >= exports.fallbackChainMaxLength)
131
+ break;
132
+ }
133
+ return chain;
134
+ }
135
+ function readFallbackEntry(item) {
136
+ if (!item || typeof item !== 'object')
137
+ return null;
138
+ const record = item;
139
+ if (record.backend === 'claude') {
140
+ const profile = record.profile;
141
+ if (typeof profile !== 'string' || (profile !== claudeProfiles_1.defaultClaudeProfileName && !(0, claudeProfiles_1.checkIsValidClaudeProfileName)(profile)))
142
+ return null;
143
+ const model = record.model;
144
+ if (model !== null && model !== undefined && (typeof model !== 'string' || !claudeModelAliasRe.test(model)))
145
+ return null;
146
+ return withDisabledFlag({ backend: 'claude', profile, model: typeof model === 'string' ? model : null }, record.disabled);
147
+ }
148
+ if (record.backend === 'opencode') {
149
+ if (typeof record.providerId !== 'string' || typeof record.modelId !== 'string' || record.modelId === '')
150
+ return null;
151
+ if (!openCodeProviderIdRe.test(record.providerId))
152
+ return null;
153
+ return withDisabledFlag({ backend: 'opencode', providerId: record.providerId, modelId: record.modelId }, record.disabled);
154
+ }
155
+ return null;
156
+ }
157
+ /** Keep `disabled` only when it is `true`: an enabled rung is persisted without the field. */
158
+ function withDisabledFlag(entry, disabled) {
159
+ return disabled === true ? { ...entry, disabled: true } : entry;
160
+ }
161
+ /** Whether the rung is excluded from automatic switching. */
162
+ function checkIsFallbackEntryDisabled(entry) {
163
+ return entry.disabled === true;
164
+ }
165
+ /** Flip the rung at `index` between included and excluded (a NEW chain). */
166
+ function toggleFallbackEntryDisabled(chain, index) {
167
+ if (!Number.isInteger(index) || index < 0 || index >= chain.length)
168
+ return { ok: false, reason: 'outOfRange' };
169
+ return {
170
+ ok: true,
171
+ chain: chain.map((entry, i) => {
172
+ if (i !== index)
173
+ return entry;
174
+ if (entry.disabled === true) {
175
+ const { disabled: _dropped, ...enabled } = entry;
176
+ return enabled;
177
+ }
178
+ return { ...entry, disabled: true };
179
+ }),
180
+ };
181
+ }
182
+ function addFallbackEntry(chain, entry) {
183
+ if (chain.some((known) => checkIsSameFallbackEntry(known, entry)))
184
+ return { ok: false, reason: 'duplicate' };
185
+ if (chain.length >= exports.fallbackChainMaxLength)
186
+ return { ok: false, reason: 'full' };
187
+ return { ok: true, chain: [...chain, entry] };
188
+ }
189
+ function removeFallbackEntry(chain, index) {
190
+ if (!Number.isInteger(index) || index < 0 || index >= chain.length)
191
+ return { ok: false, reason: 'outOfRange' };
192
+ return { ok: true, chain: chain.filter((_, i) => i !== index) };
193
+ }
194
+ /** Move the rung at `index` one step up (`-1`) or down (`+1`); the ends are clamped (a no-op, still `ok`). */
195
+ function moveFallbackEntry(chain, index, delta) {
196
+ if (!Number.isInteger(index) || index < 0 || index >= chain.length)
197
+ return { ok: false, reason: 'outOfRange' };
198
+ const target = index + delta;
199
+ if (target < 0 || target >= chain.length)
200
+ return { ok: true, chain: [...chain] };
201
+ const next = [...chain];
202
+ [next[index], next[target]] = [next[target], next[index]];
203
+ return { ok: true, chain: next };
204
+ }
205
+ /**
206
+ * @description A short, stable fingerprint of the chain's CONTENT (FNV-1a over the entry keys, 8 hex digits).
207
+ * Every edit button of the picker bakes it in: a tap whose revision is not the chain's current one came from a
208
+ * keyboard posted before a later edit, and its index would point at another rung — it is refused as stale.
209
+ */
210
+ function getFallbackChainRevision(chain) {
211
+ const text = chain.map((entry) => `${formatFallbackEntryKey(entry)}${entry.disabled === true ? '!' : ''}`).join('\n');
212
+ let hash = 0x811c9dc5;
213
+ for (let index = 0; index < text.length; index += 1) {
214
+ hash ^= text.charCodeAt(index);
215
+ hash = Math.imul(hash, 0x01000193);
216
+ }
217
+ return (hash >>> 0).toString(16).padStart(8, '0');
218
+ }
219
+ // ── the draft ──
220
+ /**
221
+ * The models a provider's draft rung prefers, in order: the strongest general-purpose model each family
222
+ * ships. The first model of the provider that matches a pattern wins; a provider with no match gets its first
223
+ * model. A deliberately short, conservative list — the operator reorders anyway.
224
+ */
225
+ const preferredOpenCodeModelPatterns = [
226
+ /opus/i,
227
+ /^gpt-5(?!.*(mini|nano|codex))/i,
228
+ /^o3(?!-mini)/i,
229
+ /gemini-[\d.]+-pro/i,
230
+ /sonnet/i,
231
+ /grok-4/i,
232
+ /deepseek-(?:r1|reasoner)/i,
233
+ /qwen3/i,
234
+ ];
235
+ /** The provider ids of a catalog, in first-seen order. */
236
+ function listOpenCodeProviders(models) {
237
+ const providers = [];
238
+ for (const label of models) {
239
+ const parsed = parseOpenCodeModelLabel(label);
240
+ if (parsed && !providers.includes(parsed.providerId))
241
+ providers.push(parsed.providerId);
242
+ }
243
+ return providers;
244
+ }
245
+ /** The model ids of one provider, in catalog order. */
246
+ function listOpenCodeModelsOfProvider(models, providerId) {
247
+ const ids = [];
248
+ for (const label of models) {
249
+ const parsed = parseOpenCodeModelLabel(label);
250
+ if (parsed && parsed.providerId === providerId && !ids.includes(parsed.modelId))
251
+ ids.push(parsed.modelId);
252
+ }
253
+ return ids;
254
+ }
255
+ /** The provider's best model by {@link preferredOpenCodeModelPatterns}, else its first; `null` for an unknown provider. */
256
+ function pickPreferredOpenCodeModel(models, providerId) {
257
+ const ids = listOpenCodeModelsOfProvider(models, providerId);
258
+ if (ids.length === 0)
259
+ return null;
260
+ for (const pattern of preferredOpenCodeModelPatterns) {
261
+ const match = ids.find((id) => pattern.test(id));
262
+ if (match)
263
+ return match;
264
+ }
265
+ return ids[0];
266
+ }
267
+ /**
268
+ * @description The draft the bot PROPOSES from what it detected: the signed-in Claude profiles in their
269
+ * registry order (each keeping the topic's model), then OpenCode — the recently picked models that are still
270
+ * in the catalog, then every other provider's preferred model. Only what is actually available is proposed; a
271
+ * profile never probed counts as signed in (the CLI reports a signed-out one as `false`).
272
+ */
273
+ function proposeFallbackChain(detection, previous = []) {
274
+ let chain = [];
275
+ const push = (entry) => {
276
+ const added = addFallbackEntry(chain, entry);
277
+ if (added.ok)
278
+ chain = added.chain;
279
+ };
280
+ for (const profile of detection.claudeProfiles) {
281
+ if (profile.loggedIn === false)
282
+ continue;
283
+ push({ backend: 'claude', profile: profile.name, model: null });
284
+ }
285
+ const catalog = new Set(detection.openCodeModels);
286
+ for (const label of detection.recentOpenCodeModels) {
287
+ const parsed = parseOpenCodeModelLabel(label);
288
+ if (parsed && catalog.has(label))
289
+ push({ backend: 'opencode', ...parsed });
290
+ }
291
+ for (const providerId of listOpenCodeProviders(detection.openCodeModels)) {
292
+ const modelId = pickPreferredOpenCodeModel(detection.openCodeModels, providerId);
293
+ if (modelId !== null)
294
+ push({ backend: 'opencode', providerId, modelId });
295
+ }
296
+ return chain.map((entry) => (checkIsExcludedByPrevious(entry, previous) ? { ...entry, disabled: true } : entry));
297
+ }
298
+ /**
299
+ * Whether the operator had EXCLUDED this draft rung from switching in the chain being replaced: the Claude
300
+ * account (any model) or the OpenCode provider (the draft may prefer another model of it) has a disabled rung
301
+ * there and no enabled one. A rebuild never silently re-enables what was switched off.
302
+ */
303
+ function checkIsExcludedByPrevious(entry, previous) {
304
+ const sameOwner = (other) => (entry.backend === 'claude'
305
+ ? other.backend === 'claude' && other.profile === entry.profile
306
+ : other.backend === 'opencode' && other.providerId === entry.providerId);
307
+ const related = previous.filter(sameOwner);
308
+ return related.length > 0 && related.every(checkIsFallbackEntryDisabled);
309
+ }
310
+ /**
311
+ * @description Whether a rung can take work over NOW. A Claude profile is available when it is known, signed in
312
+ * and eligible by the usage report (not marked limited, not at 100 % on the windows its model drains — stale
313
+ * usage is allowed: the chain is the operator's explicit order, not a headroom race). An OpenCode model is
314
+ * available when the live catalog lists it and its limit mark, if any, lies in the past.
315
+ */
316
+ function getFallbackEntryAvailability(entry, detection, nowMs) {
317
+ if (entry.backend === 'claude') {
318
+ const profile = detection.claudeProfiles.find((candidate) => candidate.name === entry.profile);
319
+ if (!profile)
320
+ return { status: 'missing' };
321
+ if (profile.loggedIn === false)
322
+ return { status: 'signedOut' };
323
+ if (profile.limitedUntil !== null && Date.parse(profile.limitedUntil) > nowMs)
324
+ return { status: 'limited', until: profile.limitedUntil };
325
+ const report = (0, claudeUsage_1.buildClaudeProfilesReport)([profile], entry.model, nowMs);
326
+ if (!report.profiles[0]?.isEligible)
327
+ return { status: 'limited', until: getExhaustedWindowReset(profile, entry.model, nowMs) ?? new Date(nowMs).toISOString() };
328
+ return { status: 'available' };
329
+ }
330
+ const label = buildOpenCodeModelLabel(entry);
331
+ if (!detection.openCodeModels.includes(label))
332
+ return { status: 'missing' };
333
+ const limitedUntil = detection.openCodeLimits[label];
334
+ if (limitedUntil !== undefined && Date.parse(limitedUntil) > nowMs)
335
+ return { status: 'limited', until: limitedUntil };
336
+ return { status: 'available' };
337
+ }
338
+ /** The latest reset among the windows a model drains that are at 100 % and still ahead; `null` when none names one. */
339
+ function getExhaustedWindowReset(profile, model, nowMs) {
340
+ let latest = null;
341
+ for (const kind of (0, claudeUsage_1.getRelevantClaudeUsageKinds)(model)) {
342
+ const bucket = (0, claudeUsage_1.getClaudeUsageBucket)(profile.usage, kind);
343
+ if (!bucket || bucket.percent < 100 || bucket.resetsAt === null)
344
+ continue;
345
+ const at = Date.parse(bucket.resetsAt);
346
+ if (Number.isFinite(at) && at > nowMs && (latest === null || at > latest))
347
+ latest = at;
348
+ }
349
+ return latest === null ? null : new Date(latest).toISOString();
350
+ }
351
+ /** Two resets closer than this count as the same moment (the current rung then wins: no needless switch). */
352
+ exports.fallbackEarliestResetToleranceMs = 60_000;
353
+ /**
354
+ * @description The rung a usage-limit WAIT should end on when nothing has room now: of the enabled rungs of
355
+ * `chain` and the rung the topic is on (`current`), the one whose limit resets EARLIEST. `null` when some rung
356
+ * is still available (the normal switch plan applies) or none names a future reset. `isCurrent` says the topic's
357
+ * own rung resets first (or within {@link fallbackEarliestResetToleranceMs} of the first): the wait stays as it
358
+ * is. Signed-out and missing rungs are skipped; rungs of the current account count as the current rung.
359
+ */
360
+ function pickEarliestResetRung(input) {
361
+ const rungs = input.chain.filter((entry) => !checkIsFallbackEntryDisabled(entry));
362
+ const found = [];
363
+ const consider = (entry, isCurrent) => {
364
+ const availability = getFallbackEntryAvailability(entry, input.detection, input.nowMs);
365
+ if (availability.status === 'available')
366
+ return !isCurrent;
367
+ if (availability.status !== 'limited')
368
+ return false;
369
+ const untilMs = Date.parse(availability.until);
370
+ if (Number.isFinite(untilMs) && untilMs > input.nowMs)
371
+ found.push({ entry, untilMs, isCurrent });
372
+ return false;
373
+ };
374
+ if (input.current)
375
+ consider(input.current, true);
376
+ for (const entry of rungs) {
377
+ const isCurrent = input.current !== null && checkIsSameFallbackAccount(entry, input.current);
378
+ if (isCurrent)
379
+ continue;
380
+ if (consider(entry, false))
381
+ return null;
382
+ }
383
+ if (found.length === 0)
384
+ return null;
385
+ const earliest = found.reduce((best, item) => (item.untilMs < best.untilMs ? item : best));
386
+ const current = found.find((item) => item.isCurrent);
387
+ if (current && current.untilMs - earliest.untilMs <= exports.fallbackEarliestResetToleranceMs)
388
+ return current;
389
+ return earliest;
390
+ }
391
+ /**
392
+ * @description The rungs that may take a topic's work over, in CHAIN ORDER (the operator's priority): every
393
+ * available entry that is not the account the topic is on now (`current` — the one that just hit the limit;
394
+ * its other models are just as limited). A topic whose current position is not in the chain at all (a manual
395
+ * `/account` or `/model` pick) simply starts from the top: a manual choice is respected until it hits its own
396
+ * limit, then the chain decides.
397
+ */
398
+ function pickFallbackCandidates(input) {
399
+ return input.chain.filter((entry) => {
400
+ if (checkIsFallbackEntryDisabled(entry))
401
+ return false;
402
+ if (input.current && checkIsSameFallbackAccount(entry, input.current))
403
+ return false;
404
+ return getFallbackEntryAvailability(entry, input.detection, input.nowMs).status === 'available';
405
+ });
406
+ }
407
+ /**
408
+ * @description What a usage limit leads to, given the ranked candidates and the auto-switch toggle. No
409
+ * candidate is `none` whatever the toggle says — the auto-switch never loops onto an exhausted rung; the bot
410
+ * then waits for the reset as before.
411
+ */
412
+ function decideFallbackSwitch(input) {
413
+ if (input.candidates.length === 0)
414
+ return { action: 'none' };
415
+ if (input.isAutoSwitchEnabled)
416
+ return { action: 'auto', to: input.candidates[0] };
417
+ return { action: 'offer', candidates: input.candidates.slice(0, exports.fallbackSwitchMaxOffers) };
418
+ }
419
+ /**
420
+ * @description Until when an OpenCode provider/model that just hit a limit is marked limited: the instant the
421
+ * error named when it lies ahead, else `fallbackMs` from now (the retry's blind delay). A mark already further
422
+ * in the future is kept (the Claude twin is `resolveClaudeLimitedUntil`).
423
+ */
424
+ function resolveOpenCodeLimitedUntil(input) {
425
+ let untilMs = input.resetAtMs !== undefined && input.resetAtMs > input.nowMs ? input.resetAtMs : input.nowMs + input.fallbackMs;
426
+ const existingMs = input.existingLimitedUntil === undefined ? Number.NaN : Date.parse(input.existingLimitedUntil);
427
+ if (Number.isFinite(existingMs) && existingMs > untilMs)
428
+ untilMs = existingMs;
429
+ return new Date(untilMs).toISOString();
430
+ }
431
+ // ── the «switch to …» buttons of a limit notice ──
432
+ /** `callback_data` prefix of a «switch to <entry>» button on a limit notice. */
433
+ exports.fallbackSwitchCallbackPrefix = 'fbsw_';
434
+ /**
435
+ * Prefix + a 13-digit episode + `_` + a one- or two-digit index: under 25 bytes. The INDEX points into the
436
+ * candidate list the bot remembered for that EPISODE (an epoch ms that identifies the limit error), so an old
437
+ * notice can never pick a rung of a newer list — its episode is no longer the topic's open one.
438
+ */
439
+ exports.fallbackSwitchCallbackRe = new RegExp(`^${exports.fallbackSwitchCallbackPrefix}(\\d+)_(\\d{1,2})$`);
440
+ function buildFallbackSwitchCallbackData(episodeId, index) {
441
+ return `${exports.fallbackSwitchCallbackPrefix}${episodeId}_${index}`;
442
+ }
443
+ function parseFallbackSwitchCallbackData(data) {
444
+ const match = data.match(exports.fallbackSwitchCallbackRe);
445
+ if (!match)
446
+ return null;
447
+ return { episodeId: Number(match[1]), index: Number(match[2]) };
448
+ }
449
+ /**
450
+ * @description What a tap on a switch button does: `switch` to the candidate at `index` only while the topic's
451
+ * OPEN limit episode is the one the button was posted for and the index is inside that episode's list;
452
+ * `expired` otherwise (the operator wrote, the work resumed, the topic was switched already, a newer limit
453
+ * replaced the episode). `expired` changes nothing.
454
+ */
455
+ function getFallbackSwitchTapDecision(input) {
456
+ if (!input.openOffer || input.openOffer.episodeId !== input.requestedEpisodeId)
457
+ return { kind: 'expired' };
458
+ const to = input.openOffer.candidates[input.index];
459
+ return to ? { kind: 'switch', to } : { kind: 'expired' };
460
+ }
461
+ // ── the picker's buttons (`/fallback`) ──
462
+ const revisionGroup = '([0-9a-f]{8})';
463
+ const indexGroup = '(\\d{1,2})';
464
+ /** Reorder / remove a rung — the chain revision is baked in, so a stale keyboard is refused. */
465
+ exports.fallbackMoveUpCallbackRe = new RegExp(`^fbk_up_${indexGroup}_${revisionGroup}$`);
466
+ exports.fallbackMoveDownCallbackRe = new RegExp(`^fbk_dn_${indexGroup}_${revisionGroup}$`);
467
+ exports.fallbackRemoveCallbackRe = new RegExp(`^fbk_rm_${indexGroup}_${revisionGroup}$`);
468
+ /** Include / exclude a rung from automatic switching (revision baked like the other edits). */
469
+ exports.fallbackToggleCallbackRe = new RegExp(`^fbk_tg_${indexGroup}_${revisionGroup}$`);
470
+ /** Open a rung's detail view from the list (same baked revision + index). */
471
+ exports.fallbackOpenCallbackRe = new RegExp(`^fbk_op_${indexGroup}_${revisionGroup}$`);
472
+ /** Open the «add» sub-picker (accounts and providers), then a Claude account's model list. */
473
+ exports.fallbackAddCallback = 'fbk_add';
474
+ exports.fallbackAddClaudeCallbackRe = new RegExp(`^fbk_addc_([a-z0-9][a-z0-9_-]{0,31})$`);
475
+ /** A Claude account + model: `-` = keep the topic's model. */
476
+ exports.fallbackAddClaudeModelCallbackRe = new RegExp(`^fbk_addcm_([a-z0-9][a-z0-9_-]{0,31})_(-|[a-z0-9][a-z0-9._-]{0,31})$`);
477
+ /** An OpenCode provider by its index in the sub-picker's own snapshot; then a model by index on a page. */
478
+ exports.fallbackAddProviderCallbackRe = new RegExp(`^fbk_addp_${indexGroup}$`);
479
+ exports.fallbackAddModelPageCallbackRe = new RegExp(`^fbk_addpg_(\\d{1,3})$`);
480
+ exports.fallbackAddModelCallbackRe = new RegExp(`^fbk_addm_(\\d{1,3})$`);
481
+ /** Draft the chain from what is detected (confirmed when a chain exists), empty it, back to the main picker. */
482
+ exports.fallbackProposeCallback = 'fbk_prop';
483
+ exports.fallbackProposeConfirmCallback = 'fbk_propok';
484
+ exports.fallbackClearCallback = 'fbk_clear';
485
+ exports.fallbackBackCallback = 'fbk_back';
486
+ /** Flip the auto-switch-on-limit setting (shared with `/account`): the topic's override, in General the instance default. */
487
+ exports.fallbackAutoSwitchOnCallback = 'fbk_asw_on';
488
+ exports.fallbackAutoSwitchOffCallback = 'fbk_asw_off';
489
+ /** A topic returns to the General value of the switch setting (drops its override). */
490
+ exports.fallbackAutoSwitchSameCallback = 'fbk_asw_same';
491
+ /** The «wait for the reset and continue» setting (`/auto_continue_limits`, shown in `/limits`): on / off / same as General. */
492
+ exports.fallbackWaitOnCallback = 'fbk_wait_on';
493
+ exports.fallbackWaitOffCallback = 'fbk_wait_off';
494
+ exports.fallbackWaitSameCallback = 'fbk_wait_same';
495
+ /**
496
+ * A topic's button of a setting on the main screen: opens that setting's sub-menu (on / off / as in General,
497
+ * whose buttons are the callbacks above) in the same message. General has no sub-menu — its button flips the value.
498
+ */
499
+ exports.fallbackAutoSwitchOpenCallback = 'fbk_set_asw';
500
+ exports.fallbackWaitOpenCallback = 'fbk_set_wait';
501
+ function buildFallbackMoveUpCallback(index, revision) {
502
+ return `fbk_up_${index}_${revision}`;
503
+ }
504
+ function buildFallbackMoveDownCallback(index, revision) {
505
+ return `fbk_dn_${index}_${revision}`;
506
+ }
507
+ function buildFallbackRemoveCallback(index, revision) {
508
+ return `fbk_rm_${index}_${revision}`;
509
+ }
510
+ function buildFallbackOpenCallback(index, revision) {
511
+ return `fbk_op_${index}_${revision}`;
512
+ }
513
+ function buildFallbackToggleCallback(index, revision) {
514
+ return `fbk_tg_${index}_${revision}`;
515
+ }
516
+ function buildFallbackAddClaudeCallback(profile) {
517
+ return `fbk_addc_${profile}`;
518
+ }
519
+ function buildFallbackAddClaudeModelCallback(profile, model) {
520
+ return `fbk_addcm_${profile}_${model ?? '-'}`;
521
+ }
522
+ function buildFallbackAddProviderCallback(index) {
523
+ return `fbk_addp_${index}`;
524
+ }
525
+ function buildFallbackAddModelPageCallback(page) {
526
+ return `fbk_addpg_${page}`;
527
+ }
528
+ function buildFallbackAddModelCallback(index) {
529
+ return `fbk_addm_${index}`;
530
+ }
531
+ /**
532
+ * @description The index and revision an edit button carries, or `null` for foreign data. `isCurrent` says
533
+ * whether the revision is the chain's one NOW — `false` means the keyboard predates an edit and the tap must
534
+ * only re-render, never act.
535
+ */
536
+ function parseFallbackEditCallback(data, re, currentRevision) {
537
+ const match = data.match(re);
538
+ if (!match)
539
+ return null;
540
+ return { index: Number(match[1]), isCurrent: match[2] === currentRevision };
541
+ }
542
+ //# sourceMappingURL=fallbackChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallbackChain.js","sourceRoot":"","sources":["../../src/utils/fallbackChain.ts"],"names":[],"mappings":"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"}
@@ -91,10 +91,21 @@ export declare function parseJsonStreamTmuxSessionName(name: string): SessionKey
91
91
  * even if the tmux server environment carries a key. With an `environment`
92
92
  * (a tracker conversation, R32) claude gets exactly those variables instead —
93
93
  * `env -i`, so nothing of the tmux server's environment reaches it (no API key
94
- * either). All embedded strings are single-quoted; `claudePath` must be ABSOLUTE
95
- * (tmux server PATH differs).
94
+ * either). A non-default Claude account profile adds `CLAUDE_CONFIG_DIR=<dir>` to
95
+ * either `env` form (`utils/claudeProfiles.ts`); the default profile adds nothing,
96
+ * so the wrapper of a topic that never picked an account is byte-identical to
97
+ * the golden shape. The variable sits in the process environment — not only in
98
+ * the CLI's own reading of it — so a child `claude` the agent starts inherits the
99
+ * same account. All embedded strings are single-quoted; `claudePath` must be
100
+ * ABSOLUTE (tmux server PATH differs).
96
101
  */
97
- export declare function buildWrapperScript(claudePath: string, args: readonly string[], workDir: string, paths: JsonStreamSessionPaths, environment?: Readonly<Record<string, string>> | null): string;
102
+ export declare function buildWrapperScript(claudePath: string, args: readonly string[], workDir: string, paths: JsonStreamSessionPaths, environment?: Readonly<Record<string, string>> | null, configDir?: string | null): string;
103
+ /**
104
+ * @description The `CLAUDE_CONFIG_DIR` a persisted wrapper script starts claude with, `null` for the default
105
+ * profile or an unreadable script. Read at adopt: the running process keeps the account it was spawned with,
106
+ * and the bot compares it with the profile its topic has now.
107
+ */
108
+ export declare function readWrapperScriptConfigDir(wrapperFile: string): string | null;
98
109
  /**
99
110
  * @description Open the stdin FIFO for writing WITHOUT ever blocking: a plain
100
111
  * `open(O_WRONLY)` on a FIFO with no reader hangs forever (the P1 probe's first
@@ -1 +1 @@
1
- {"version":3,"file":"jsonStreamHost.d.ts","sourceRoot":"","sources":["../../src/utils/jsonStreamHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonStreamHost.d.ts","sourceRoot":"","sources":["../../src/utils/jsonStreamHost.ts"],"names":[],"mappings":"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"}