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
@@ -67,6 +67,7 @@ exports.getJsonStreamSessionPaths = getJsonStreamSessionPaths;
67
67
  exports.buildJsonStreamTmuxSessionName = buildJsonStreamTmuxSessionName;
68
68
  exports.parseJsonStreamTmuxSessionName = parseJsonStreamTmuxSessionName;
69
69
  exports.buildWrapperScript = buildWrapperScript;
70
+ exports.readWrapperScriptConfigDir = readWrapperScriptConfigDir;
70
71
  exports.openFifoWriterNonBlocking = openFifoWriterNonBlocking;
71
72
  exports.writeFifoText = writeFifoText;
72
73
  exports.readPidFile = readPidFile;
@@ -89,6 +90,7 @@ const promises_1 = require("timers/promises");
89
90
  const sessionKey_1 = require("../sessionKey");
90
91
  const tmuxSessionName_1 = require("./tmuxSessionName");
91
92
  const tmuxExec_1 = require("./tmuxExec");
93
+ const claudeProfiles_1 = require("./claudeProfiles");
92
94
  /** Subdirectory of `DATA_DIR` that holds every thread's json-stream host dir. */
93
95
  exports.jsonStreamRootDirName = 'jsonstream';
94
96
  /** tmux session-name prefix for this backend — distinct from the scrape
@@ -173,14 +175,20 @@ function parseJsonStreamTmuxSessionName(name) {
173
175
  * even if the tmux server environment carries a key. With an `environment`
174
176
  * (a tracker conversation, R32) claude gets exactly those variables instead —
175
177
  * `env -i`, so nothing of the tmux server's environment reaches it (no API key
176
- * either). All embedded strings are single-quoted; `claudePath` must be ABSOLUTE
177
- * (tmux server PATH differs).
178
+ * either). A non-default Claude account profile adds `CLAUDE_CONFIG_DIR=<dir>` to
179
+ * either `env` form (`utils/claudeProfiles.ts`); the default profile adds nothing,
180
+ * so the wrapper of a topic that never picked an account is byte-identical to
181
+ * the golden shape. The variable sits in the process environment — not only in
182
+ * the CLI's own reading of it — so a child `claude` the agent starts inherits the
183
+ * same account. All embedded strings are single-quoted; `claudePath` must be
184
+ * ABSOLUTE (tmux server PATH differs).
178
185
  */
179
- function buildWrapperScript(claudePath, args, workDir, paths, environment = null) {
186
+ function buildWrapperScript(claudePath, args, workDir, paths, environment = null, configDir = null) {
180
187
  const command = [claudePath, ...args].map(tmuxExec_1.shellSingleQuote).join(' ');
188
+ const configDirAssignment = configDir === null ? [] : [(0, tmuxExec_1.shellSingleQuote)(`${claudeProfiles_1.claudeConfigDirVariableName}=${configDir}`)];
181
189
  const envCommand = environment === null
182
- ? 'env -u ANTHROPIC_API_KEY'
183
- : ['env', '-i', ...Object.entries(environment).map(([name, value]) => (0, tmuxExec_1.shellSingleQuote)(`${name}=${value}`))].join(' ');
190
+ ? ['env', '-u', 'ANTHROPIC_API_KEY', ...configDirAssignment].join(' ')
191
+ : ['env', '-i', ...Object.entries(environment).map(([name, value]) => (0, tmuxExec_1.shellSingleQuote)(`${name}=${value}`)), ...configDirAssignment].join(' ');
184
192
  return `#!/bin/sh
185
193
  cd ${(0, tmuxExec_1.shellSingleQuote)(workDir)} || exit ${exports.wrapperCdFailExitCode}
186
194
  ${envCommand} ${command} \\
@@ -191,6 +199,19 @@ wait $CHILD
191
199
  echo $? > ${(0, tmuxExec_1.shellSingleQuote)(paths.exitCodeFile)}
192
200
  `;
193
201
  }
202
+ /**
203
+ * @description The `CLAUDE_CONFIG_DIR` a persisted wrapper script starts claude with, `null` for the default
204
+ * profile or an unreadable script. Read at adopt: the running process keeps the account it was spawned with,
205
+ * and the bot compares it with the profile its topic has now.
206
+ */
207
+ function readWrapperScriptConfigDir(wrapperFile) {
208
+ try {
209
+ return (0, claudeProfiles_1.parseClaudeConfigDirFromCommand)(fs.readFileSync(wrapperFile, 'utf8'));
210
+ }
211
+ catch {
212
+ return null;
213
+ }
214
+ }
194
215
  /**
195
216
  * @description Open the stdin FIFO for writing WITHOUT ever blocking: a plain
196
217
  * `open(O_WRONLY)` on a FIFO with no reader hangs forever (the P1 probe's first
@@ -1 +1 @@
1
- {"version":3,"file":"jsonStreamHost.js","sourceRoot":"","sources":["../../src/utils/jsonStreamHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonStreamHost.js","sourceRoot":"","sources":["../../src/utils/jsonStreamHost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { ModelCatalog } from './modelPickerPlan';
2
+ /**
3
+ * @description How many entries the list keeps. Ten is one keyboard that needs
4
+ * no paging and matches the model level's page size, so the flat list is never
5
+ * taller than a provider page.
6
+ */
7
+ export declare const recentModelsLimit = 10;
8
+ /** Opens the flat list (provider level → recent level). */
9
+ export declare const recentModelsOpenCallback = "mdlrecent";
10
+ /** Anchored matcher for `bot.action(...)`, kept beside the builder so the wire
11
+ * format has one definition. */
12
+ export declare const recentModelPickCallbackRe: RegExp;
13
+ /**
14
+ * @description Put `modelId` at the head of the list: a repeat pick moves its
15
+ * entry to the front rather than duplicating it, and the oldest entry falls
16
+ * off once `limit` is reached. Never mutates `current`.
17
+ */
18
+ export declare function pushRecentModel(current: readonly string[], modelId: string, limit?: number): string[];
19
+ /**
20
+ * @description The entries the picker may offer: those whose `provider/model`
21
+ * still exists in the live catalog AND whose provider is not hidden.
22
+ *
23
+ * A provider that was disconnected (or a model the server stopped serving)
24
+ * leaves a stale id behind in `state.json`; rendering a button for it would
25
+ * resolve to nothing. The entry stays on disk — the provider may come back —
26
+ * it is just not shown. Hidden providers are excluded for the same reason
27
+ * they are excluded one level up: hiding must make a provider unreachable
28
+ * through the picker, not just invisible on its own level.
29
+ */
30
+ export declare function getRecentModelsInCatalog(recentModels: readonly string[], catalog: ModelCatalog): string[];
31
+ /**
32
+ * @description Short identity of a model id that fits the callback budget:
33
+ * the first 8 hex chars of its SHA-256. The full id (`openrouter/anthropic/
34
+ * claude-sonnet-4.5`) cannot ride in `callback_data` (64 bytes), and an index
35
+ * alone would re-point an old keyboard at a DIFFERENT model once the list is
36
+ * reordered by a newer pick — so the button carries both.
37
+ */
38
+ export declare function getRecentModelIdentity(modelId: string): string;
39
+ export declare function buildRecentModelPickCallback(index: number, modelId: string): string;
40
+ /** A position in the list paired with the identity of the entry shown there. */
41
+ export interface RecentModelPickRef {
42
+ index: number;
43
+ identity: string;
44
+ }
45
+ export declare function parseRecentModelPickCallback(callbackData: string): RecentModelPickRef | null;
46
+ /**
47
+ * @description Resolve a tapped recent-list button against the list AS IT IS
48
+ * NOW. The index is only a hint: it is trusted when the entry there still has
49
+ * the identity the button carries; otherwise the list is searched for that
50
+ * identity (a newer pick just moved the entry). `null` — never another
51
+ * model — when the entry left the list (evicted past the cap, or filtered
52
+ * out because its provider is gone or hidden); the caller turns that into
53
+ * the "expired" toast.
54
+ */
55
+ export declare function getRecentModelPick(recentModels: readonly string[], ref: RecentModelPickRef): string | null;
56
+ //# sourceMappingURL=modelRecentPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelRecentPlan.d.ts","sourceRoot":"","sources":["../../src/utils/modelRecentPlan.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,cAAc,CAAC;AAIpD;iCACiC;AACjC,eAAO,MAAM,yBAAyB,QAA+B,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAA0B,GAChC,MAAM,EAAE,CAKV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,OAAO,EAAE,YAAY,GACpB,MAAM,EAAE,CASV;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAI5F;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,GAAG,EAAE,kBAAkB,GACtB,MAAM,GAAG,IAAI,CAIf"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recentModelPickCallbackRe = exports.recentModelsOpenCallback = exports.recentModelsLimit = void 0;
4
+ exports.pushRecentModel = pushRecentModel;
5
+ exports.getRecentModelsInCatalog = getRecentModelsInCatalog;
6
+ exports.getRecentModelIdentity = getRecentModelIdentity;
7
+ exports.buildRecentModelPickCallback = buildRecentModelPickCallback;
8
+ exports.parseRecentModelPickCallback = parseRecentModelPickCallback;
9
+ exports.getRecentModelPick = getRecentModelPick;
10
+ /**
11
+ * @description Pure layer behind the "Recently used" shortcut of the `/model`
12
+ * picker: the most-recently-used list itself, its catalog filter, and the
13
+ * callback codec of the flat list it opens.
14
+ *
15
+ * Why it exists: the two-level picker (provider → that provider's models) is
16
+ * what keeps `/model` inside Telegram's message cap, but an operator who hops
17
+ * between a few favourite models of DIFFERENT providers pays the two taps
18
+ * every time. The shortcut sits first on the provider level and opens one
19
+ * flat list of `provider/model` ids that were actually picked before —
20
+ * instance-wide, most recent first, deduplicated, capped.
21
+ *
22
+ * Everything here is pure so `modelProviders.ts` stays wiring and the three
23
+ * rules — update/dedupe/cap, the stale-entry filter, the stale-tap safety of
24
+ * the callbacks — are unit-tested without a Telegram surface.
25
+ */
26
+ const node_crypto_1 = require("node:crypto");
27
+ /**
28
+ * @description How many entries the list keeps. Ten is one keyboard that needs
29
+ * no paging and matches the model level's page size, so the flat list is never
30
+ * taller than a provider page.
31
+ */
32
+ exports.recentModelsLimit = 10;
33
+ /** Opens the flat list (provider level → recent level). */
34
+ exports.recentModelsOpenCallback = 'mdlrecent';
35
+ const recentModelPickCallbackPrefix = 'mdlr_';
36
+ /** Anchored matcher for `bot.action(...)`, kept beside the builder so the wire
37
+ * format has one definition. */
38
+ exports.recentModelPickCallbackRe = /^mdlr_(\d+)_([0-9a-f]{8})$/;
39
+ /**
40
+ * @description Put `modelId` at the head of the list: a repeat pick moves its
41
+ * entry to the front rather than duplicating it, and the oldest entry falls
42
+ * off once `limit` is reached. Never mutates `current`.
43
+ */
44
+ function pushRecentModel(current, modelId, limit = exports.recentModelsLimit) {
45
+ const trimmed = modelId.trim();
46
+ const rest = current.filter((entry) => entry !== trimmed);
47
+ const next = trimmed ? [trimmed, ...rest] : rest;
48
+ return next.slice(0, Math.max(limit, 0));
49
+ }
50
+ /**
51
+ * @description The entries the picker may offer: those whose `provider/model`
52
+ * still exists in the live catalog AND whose provider is not hidden.
53
+ *
54
+ * A provider that was disconnected (or a model the server stopped serving)
55
+ * leaves a stale id behind in `state.json`; rendering a button for it would
56
+ * resolve to nothing. The entry stays on disk — the provider may come back —
57
+ * it is just not shown. Hidden providers are excluded for the same reason
58
+ * they are excluded one level up: hiding must make a provider unreachable
59
+ * through the picker, not just invisible on its own level.
60
+ */
61
+ function getRecentModelsInCatalog(recentModels, catalog) {
62
+ const hiddenSet = new Set(catalog.hiddenProviders);
63
+ return recentModels.filter((modelId) => {
64
+ const slashIndex = modelId.indexOf('/');
65
+ if (slashIndex <= 0)
66
+ return false;
67
+ const provider = modelId.slice(0, slashIndex);
68
+ if (hiddenSet.has(provider))
69
+ return false;
70
+ return catalog.byProvider.get(provider)?.includes(modelId) ?? false;
71
+ });
72
+ }
73
+ /**
74
+ * @description Short identity of a model id that fits the callback budget:
75
+ * the first 8 hex chars of its SHA-256. The full id (`openrouter/anthropic/
76
+ * claude-sonnet-4.5`) cannot ride in `callback_data` (64 bytes), and an index
77
+ * alone would re-point an old keyboard at a DIFFERENT model once the list is
78
+ * reordered by a newer pick — so the button carries both.
79
+ */
80
+ function getRecentModelIdentity(modelId) {
81
+ return (0, node_crypto_1.createHash)('sha256').update(modelId, 'utf8').digest('hex').slice(0, 8);
82
+ }
83
+ function buildRecentModelPickCallback(index, modelId) {
84
+ return `${recentModelPickCallbackPrefix}${index}_${getRecentModelIdentity(modelId)}`;
85
+ }
86
+ function parseRecentModelPickCallback(callbackData) {
87
+ const match = exports.recentModelPickCallbackRe.exec(callbackData);
88
+ if (!match)
89
+ return null;
90
+ return { index: Number(match[1]), identity: match[2] };
91
+ }
92
+ /**
93
+ * @description Resolve a tapped recent-list button against the list AS IT IS
94
+ * NOW. The index is only a hint: it is trusted when the entry there still has
95
+ * the identity the button carries; otherwise the list is searched for that
96
+ * identity (a newer pick just moved the entry). `null` — never another
97
+ * model — when the entry left the list (evicted past the cap, or filtered
98
+ * out because its provider is gone or hidden); the caller turns that into
99
+ * the "expired" toast.
100
+ */
101
+ function getRecentModelPick(recentModels, ref) {
102
+ const atIndex = recentModels[ref.index];
103
+ if (atIndex !== undefined && getRecentModelIdentity(atIndex) === ref.identity)
104
+ return atIndex;
105
+ return recentModels.find((modelId) => getRecentModelIdentity(modelId) === ref.identity) ?? null;
106
+ }
107
+ //# sourceMappingURL=modelRecentPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelRecentPlan.js","sourceRoot":"","sources":["../../src/utils/modelRecentPlan.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,21 @@
1
1
  import type { AgentRuntimeInfo } from '../types';
2
+ /** One Claude account profile as `/status` names it. */
3
+ export interface ThreadStatusAccountSource {
4
+ name: string;
5
+ /** What the last `claude auth status` read said; `null` when never probed. */
6
+ email: string | null;
7
+ /** That read's sign-in answer; `undefined` when never probed. A signed-out profile may keep an old email. */
8
+ loggedIn: boolean | undefined;
9
+ /** Raw ISO limit mark of the profile record; a mark in the past reads as no limit. */
10
+ limitedUntil: string | null;
11
+ }
12
+ export interface ThreadStatusAccount {
13
+ /** The account the live process runs on — or, with no live process, the one its next start uses. */
14
+ current: ThreadStatusAccountSource;
15
+ /** The account the topic is now set to while the live process still runs on another (a deferred switch). */
16
+ pending: ThreadStatusAccountSource | null;
17
+ nowMs: number;
18
+ }
2
19
  export interface ThreadStatusReportInput {
3
20
  agentLine: string;
4
21
  subdir: string;
@@ -10,6 +27,11 @@ export interface ThreadStatusReportInput {
10
27
  effort: string | null;
11
28
  startedAt: string | null;
12
29
  runtime: AgentRuntimeInfo | null;
30
+ /**
31
+ * The Claude profile the topic's agent runs on; `null`/absent for a topic with no agent or a non-Claude one
32
+ * (an OpenCode model label already names its provider).
33
+ */
34
+ account?: ThreadStatusAccount | null;
13
35
  /** The topic's view, already localized (`verbosity.view.*`). */
14
36
  view: string;
15
37
  /** Instance timezone, already resolved (stored pick, else the host zone). */
@@ -27,7 +49,9 @@ export interface ThreadStatusReportInput {
27
49
  * meaningless once the session stopped, so a stopped thread renders only the
28
50
  * header, the bound working directory, the topic's view and the timezone.
29
51
  */
30
- export declare function getThreadStatusReport({ agentLine, subdir, isActive, isSleeping, workDir, model, effort, startedAt, runtime, view, timezone, timezoneNow, }: ThreadStatusReportInput): string;
52
+ export declare function getThreadStatusReport({ agentLine, subdir, isActive, isSleeping, workDir, model, effort, startedAt, runtime, account, view, timezone, timezoneNow, }: ThreadStatusReportInput): string;
53
+ /** @description The `Account:` row (plus a pending-switch row) of the `/status` report. */
54
+ export declare function formatThreadStatusAccountLines({ current, pending, nowMs }: ThreadStatusAccount, timezone: string): string[];
31
55
  export interface ThreadStatusModelSources {
32
56
  /** Live model the adapter itself can name right now (`getCurrentModel`). */
33
57
  adapterModel: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"threadStatusReport.d.ts","sourceRoot":"","sources":["../../src/utils/threadStatusReport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,iGAAiG;IACjG,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,WAAW,GACZ,EAAE,uBAAuB,GAAG,MAAM,CA2BlC;AAED,MAAM,WAAW,wBAAwB;IACvC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uFAAuF;IACvF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,CAE1C"}
1
+ {"version":3,"file":"threadStatusReport.d.ts","sourceRoot":"","sources":["../../src/utils/threadStatusReport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD,wDAAwD;AACxD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,6GAA6G;IAC7G,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,sFAAsF;IACtF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,oGAAoG;IACpG,OAAO,EAAE,yBAAyB,CAAC;IACnC,4GAA4G;IAC5G,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,iGAAiG;IACjG,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,WAAW,GACZ,EAAE,uBAAuB,GAAG,MAAM,CA6BlC;AAcD,2FAA2F;AAC3F,wBAAgB,8BAA8B,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI3H;AAED,MAAM,WAAW,wBAAwB;IACvC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uFAAuF;IACvF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,CAE1C"}
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getThreadStatusReport = getThreadStatusReport;
4
+ exports.formatThreadStatusAccountLines = formatThreadStatusAccountLines;
4
5
  exports.getThreadStatusModel = getThreadStatusModel;
5
6
  const i18n_1 = require("../i18n");
7
+ const claudeUsage_1 = require("./claudeUsage");
6
8
  /**
7
9
  * @description Render the per-topic `/status` report. Pure (locale comes from
8
10
  * the caller's async i18n context) and kept OUT of `bot.ts` so it is unit-testable
@@ -13,7 +15,7 @@ const i18n_1 = require("../i18n");
13
15
  * meaningless once the session stopped, so a stopped thread renders only the
14
16
  * header, the bound working directory, the topic's view and the timezone.
15
17
  */
16
- function getThreadStatusReport({ agentLine, subdir, isActive, isSleeping, workDir, model, effort, startedAt, runtime, view, timezone, timezoneNow, }) {
18
+ function getThreadStatusReport({ agentLine, subdir, isActive, isSleeping, workDir, model, effort, startedAt, runtime, account, view, timezone, timezoneNow, }) {
17
19
  const lines = [
18
20
  (0, i18n_1.t)('status.thread_report', {
19
21
  agent: agentLine,
@@ -21,6 +23,9 @@ function getThreadStatusReport({ agentLine, subdir, isActive, isSleeping, workDi
21
23
  session: isActive ? (0, i18n_1.t)('status.thread_running') : isSleeping ? (0, i18n_1.t)('status.thread_sleeping') : (0, i18n_1.t)('status.thread_stopped'),
22
24
  }),
23
25
  ];
26
+ // A topic property like the folder: a stopped Claude topic still names the profile its next start uses.
27
+ if (account)
28
+ lines.push(...formatThreadStatusAccountLines(account, timezone));
24
29
  if (workDir !== null)
25
30
  lines.push((0, i18n_1.t)('status.thread_workdir', { workDir }));
26
31
  // A topic property, not a session one (S6): named whether or not an agent runs.
@@ -44,6 +49,24 @@ function getThreadStatusReport({ agentLine, subdir, isActive, isSleeping, workDi
44
49
  }));
45
50
  return lines.join('\n');
46
51
  }
52
+ /**
53
+ * @description `name · email` like an `/accounts` row (`name · not signed in` once a probe said so, the name
54
+ * alone when never probed), plus the `/accounts` limit mark while it lies in the future, reset in the instance zone.
55
+ */
56
+ function formatAccount({ name, email, loggedIn, limitedUntil }, timezone, nowMs) {
57
+ const detail = loggedIn === false ? (0, i18n_1.t)('account.row.loggedOut') : email;
58
+ const limited = limitedUntil !== null && Date.parse(limitedUntil) > nowMs
59
+ ? (0, i18n_1.t)('status.thread_account_limited', { until: (0, claudeUsage_1.formatClaudeUsageResetAt)(limitedUntil, timezone, nowMs) })
60
+ : '';
61
+ return `${detail ? `${name} · ${detail}` : name}${limited}`;
62
+ }
63
+ /** @description The `Account:` row (plus a pending-switch row) of the `/status` report. */
64
+ function formatThreadStatusAccountLines({ current, pending, nowMs }, timezone) {
65
+ const lines = [(0, i18n_1.t)('status.thread_account', { account: formatAccount(current, timezone, nowMs) })];
66
+ if (pending !== null)
67
+ lines.push((0, i18n_1.t)('status.thread_account_pending', { account: formatAccount(pending, timezone, nowMs) }));
68
+ return lines;
69
+ }
47
70
  /**
48
71
  * @description Resolve the model `/status` names for a live session, most
49
72
  * authoritative source first.
@@ -1 +1 @@
1
- {"version":3,"file":"threadStatusReport.js","sourceRoot":"","sources":["../../src/utils/threadStatusReport.ts"],"names":[],"mappings":";;AAgCA,sDAwCC;AA0BD,oDAMC;AAxGD,kCAA4B;AAsB5B;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,WAAW,GACa;IACxB,MAAM,KAAK,GAAG;QACZ,IAAA,QAAC,EAAC,sBAAsB,EAAE;YACxB,KAAK,EAAE,SAAS;YAChB,MAAM;YACN,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,uBAAuB,CAAC;SACvH,CAAC;KACH,CAAC;IACF,IAAI,OAAO,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1E,gFAAgF;IAChF,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,yEAAyE;IACzE,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,IAAA,QAAC,EAAC,iBAAiB,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,uBAAuB,EAAE;QACpC,IAAI,EAAE,OAAO,EAAE,iBAAiB,IAAI,WAAW;QAC/C,KAAK,EAAE,OAAO,EAAE,mBAAmB,IAAI,WAAW;KACnD,CAAC,CAAC,CAAC;IAEJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAWD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,YAAY,EACZ,cAAc,GACW;IACzB,OAAO,YAAY,IAAI,YAAY,IAAI,cAAc,IAAI,IAAI,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"threadStatusReport.js","sourceRoot":"","sources":["../../src/utils/threadStatusReport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "charness",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "license": "MIT",
5
5
  "author": "Sergei Solo",
6
6
  "description": "Charness (formerly TelegramCode): Telegram forum-supergroup bot for Claude Code / OpenCode — one topic per task, isolated sessions, per-thread MCP",