charness 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +8 -7
- package/DEVELOPMENT.md +12 -6
- package/MIGRATION_1_TO_2.md +1 -1
- package/MIGRATION_RENAME_TO_CHARNESS.md +133 -0
- package/README.md +221 -555
- package/SETUP.md +539 -0
- package/dist/adapters/claudeCliAdapter.d.ts +16 -1
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeCliAdapter.js +37 -2
- package/dist/adapters/claudeCliAdapter.js.map +1 -1
- package/dist/adapters/claudeConfigDir.d.ts +40 -0
- package/dist/adapters/claudeConfigDir.d.ts.map +1 -0
- package/dist/adapters/claudeConfigDir.js +3 -0
- package/dist/adapters/claudeConfigDir.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +32 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeJsonStreamAdapter.js +90 -8
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
- package/dist/adapters/claudePlatformFlags.d.ts +4 -4
- package/dist/adapters/claudePlatformFlags.js +4 -4
- package/dist/adapters/createAdapter.d.ts +8 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -1
- package/dist/adapters/createAdapter.js +37 -0
- package/dist/adapters/createAdapter.js.map +1 -1
- package/dist/adapters/openCodeAdapter.d.ts +23 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/openCodeAdapter.js +85 -2
- package/dist/adapters/openCodeAdapter.js.map +1 -1
- package/dist/agentLogin/agentLogin.d.ts +15 -2
- package/dist/agentLogin/agentLogin.d.ts.map +1 -1
- package/dist/agentLogin/agentLogin.js +53 -16
- package/dist/agentLogin/agentLogin.js.map +1 -1
- package/dist/apiErrorRetry.d.ts +8 -3
- package/dist/apiErrorRetry.d.ts.map +1 -1
- package/dist/apiErrorRetry.js +36 -5
- package/dist/apiErrorRetry.js.map +1 -1
- package/dist/apiRetryKick.d.ts +9 -0
- package/dist/apiRetryKick.d.ts.map +1 -1
- package/dist/apiRetryKick.js +16 -0
- package/dist/apiRetryKick.js.map +1 -1
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +642 -26
- package/dist/bot.js.map +1 -1
- package/dist/cli/bot.d.ts +4 -2
- package/dist/cli/bot.d.ts.map +1 -1
- package/dist/cli/bot.js +11 -3
- package/dist/cli/bot.js.map +1 -1
- package/dist/cli/botEntry.js +3 -1
- package/dist/cli/botEntry.js.map +1 -1
- package/dist/cli/claudeProfiles.d.ts +42 -0
- package/dist/cli/claudeProfiles.d.ts.map +1 -0
- package/dist/cli/claudeProfiles.js +106 -0
- package/dist/cli/claudeProfiles.js.map +1 -0
- package/dist/cli/envLoader.d.ts +6 -5
- package/dist/cli/envLoader.d.ts.map +1 -1
- package/dist/cli/envLoader.js +8 -27
- package/dist/cli/envLoader.js.map +1 -1
- package/dist/cli/hot.d.ts +2 -2
- package/dist/cli/hot.d.ts.map +1 -1
- package/dist/cli/hot.js +26 -16
- package/dist/cli/hot.js.map +1 -1
- package/dist/cli.js +19 -9
- package/dist/cli.js.map +1 -1
- package/dist/connectors/jira/adf.d.ts +23 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -1
- package/dist/connectors/jira/adf.js +44 -0
- package/dist/connectors/jira/adf.js.map +1 -1
- package/dist/connectors/jira/answerSink.d.ts +27 -3
- package/dist/connectors/jira/answerSink.d.ts.map +1 -1
- package/dist/connectors/jira/answerSink.js +145 -18
- package/dist/connectors/jira/answerSink.js.map +1 -1
- package/dist/connectors/jira/attachmentTool.d.ts +7 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -1
- package/dist/connectors/jira/attachmentTool.js +16 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -1
- package/dist/connectors/jira/client.d.ts +36 -0
- package/dist/connectors/jira/client.d.ts.map +1 -1
- package/dist/connectors/jira/client.js +46 -5
- package/dist/connectors/jira/client.js.map +1 -1
- package/dist/connectors/jira/config.d.ts +13 -17
- package/dist/connectors/jira/config.d.ts.map +1 -1
- package/dist/connectors/jira/config.js +15 -33
- package/dist/connectors/jira/config.js.map +1 -1
- package/dist/connectors/jira/connector.d.ts +10 -1
- package/dist/connectors/jira/connector.d.ts.map +1 -1
- package/dist/connectors/jira/connector.js +90 -16
- package/dist/connectors/jira/connector.js.map +1 -1
- package/dist/connectors/jira/contextLedger.d.ts +7 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -1
- package/dist/connectors/jira/contextLedger.js +18 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -1
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -1
- package/dist/connectors/jira/contextPreamble.js +6 -3
- package/dist/connectors/jira/contextPreamble.js.map +1 -1
- package/dist/connectors/jira/inbound.d.ts +72 -10
- package/dist/connectors/jira/inbound.d.ts.map +1 -1
- package/dist/connectors/jira/inbound.js +204 -36
- package/dist/connectors/jira/inbound.js.map +1 -1
- package/dist/connectors/jira/issueBlocks.d.ts +31 -3
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -1
- package/dist/connectors/jira/issueBlocks.js +108 -29
- package/dist/connectors/jira/issueBlocks.js.map +1 -1
- package/dist/connectors/jira/issueContext.d.ts +11 -5
- package/dist/connectors/jira/issueContext.d.ts.map +1 -1
- package/dist/connectors/jira/issueContext.js +23 -6
- package/dist/connectors/jira/issueContext.js.map +1 -1
- package/dist/connectors/jira/issueDelta.d.ts +3 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -1
- package/dist/connectors/jira/issueDelta.js +15 -6
- package/dist/connectors/jira/issueDelta.js.map +1 -1
- package/dist/connectors/jira/mediaPlaceholders.d.ts +2 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -1
- package/dist/connectors/jira/mediaPlaceholders.js +16 -3
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -1
- package/dist/connectors/jira/prompt.d.ts +4 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -1
- package/dist/connectors/jira/prompt.js +20 -1
- package/dist/connectors/jira/prompt.js.map +1 -1
- package/dist/connectors/jira/sessionKeyCodec.d.ts +2 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -1
- package/dist/connectors/jira/sessionKeyCodec.js +5 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -1
- package/dist/connectors/jira/trigger.d.ts +16 -3
- package/dist/connectors/jira/trigger.d.ts.map +1 -1
- package/dist/connectors/jira/trigger.js +17 -2
- package/dist/connectors/jira/trigger.js.map +1 -1
- package/dist/connectors/jira/triggerLog.d.ts +12 -3
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -1
- package/dist/connectors/jira/triggerLog.js +18 -2
- package/dist/connectors/jira/triggerLog.js.map +1 -1
- package/dist/connectors/jira/trustedGroup.d.ts +54 -0
- package/dist/connectors/jira/trustedGroup.d.ts.map +1 -0
- package/dist/connectors/jira/trustedGroup.js +98 -0
- package/dist/connectors/jira/trustedGroup.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +3 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/autoContinueLimits.js +15 -45
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -1
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts +58 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/claudeAccounts.js +591 -0
- package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -0
- package/dist/connectors/telegram/commands/fallbackChain.d.ts +49 -0
- package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/fallbackChain.js +624 -0
- package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +23 -1
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/modelProviders.js +131 -6
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -1
- package/dist/i18n/de.d.ts.map +1 -1
- package/dist/i18n/de.js +137 -9
- package/dist/i18n/de.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +137 -9
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +137 -9
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +137 -9
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/hi.d.ts.map +1 -1
- package/dist/i18n/hi.js +137 -9
- package/dist/i18n/hi.js.map +1 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +137 -9
- package/dist/i18n/ja.js.map +1 -1
- package/dist/i18n/ka.d.ts.map +1 -1
- package/dist/i18n/ka.js +137 -9
- package/dist/i18n/ka.js.map +1 -1
- package/dist/i18n/pt.d.ts.map +1 -1
- package/dist/i18n/pt.js +137 -9
- package/dist/i18n/pt.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +137 -9
- package/dist/i18n/ru.js.map +1 -1
- package/dist/i18n/uk.d.ts.map +1 -1
- package/dist/i18n/uk.js +137 -9
- package/dist/i18n/uk.js.map +1 -1
- package/dist/i18n/uz.d.ts.map +1 -1
- package/dist/i18n/uz.js +137 -9
- package/dist/i18n/uz.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +137 -9
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installManager.d.ts +16 -2
- package/dist/installManager.d.ts.map +1 -1
- package/dist/installManager.js +42 -12
- package/dist/installManager.js.map +1 -1
- package/dist/instanceLock.d.ts.map +1 -1
- package/dist/instanceLock.js +10 -8
- package/dist/instanceLock.js.map +1 -1
- package/dist/legacyMigration.d.ts +69 -0
- package/dist/legacyMigration.d.ts.map +1 -0
- package/dist/legacyMigration.js +338 -0
- package/dist/legacyMigration.js.map +1 -0
- package/dist/legacyNames.d.ts +107 -0
- package/dist/legacyNames.d.ts.map +1 -0
- package/dist/legacyNames.js +230 -0
- package/dist/legacyNames.js.map +1 -0
- package/dist/platform/answerSink.d.ts +5 -0
- package/dist/platform/answerSink.d.ts.map +1 -1
- package/dist/platform/answerSink.js.map +1 -1
- package/dist/requests/answerRequest.d.ts +2 -0
- package/dist/requests/answerRequest.d.ts.map +1 -1
- package/dist/requests/answerRequest.js +3 -1
- package/dist/requests/answerRequest.js.map +1 -1
- package/dist/requests/answerStyle.d.ts +11 -0
- package/dist/requests/answerStyle.d.ts.map +1 -0
- package/dist/requests/answerStyle.js +14 -0
- package/dist/requests/answerStyle.js.map +1 -0
- package/dist/requests/answerTail.d.ts.map +1 -1
- package/dist/requests/answerTail.js +2 -0
- package/dist/requests/answerTail.js.map +1 -1
- package/dist/requests/requestHeader.d.ts.map +1 -1
- package/dist/requests/requestHeader.js +3 -0
- package/dist/requests/requestHeader.js.map +1 -1
- package/dist/requests/requestLedger.js +1 -1
- package/dist/requests/requestLedger.js.map +1 -1
- package/dist/requests/types.d.ts +3 -1
- package/dist/requests/types.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.d.ts +17 -1
- package/dist/scheduler/mcpSurface.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.js +86 -13
- package/dist/scheduler/mcpSurface.js.map +1 -1
- package/dist/state.d.ts +175 -2
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +303 -2
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/autoContinueOnLimit.d.ts +7 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -1
- package/dist/utils/autoContinueOnLimit.js +10 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -1
- package/dist/utils/claudeAccountPickerPlan.d.ts +85 -0
- package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -0
- package/dist/utils/claudeAccountPickerPlan.js +123 -0
- package/dist/utils/claudeAccountPickerPlan.js.map +1 -0
- package/dist/utils/claudeLimitSwitch.d.ts +40 -0
- package/dist/utils/claudeLimitSwitch.d.ts.map +1 -0
- package/dist/utils/claudeLimitSwitch.js +54 -0
- package/dist/utils/claudeLimitSwitch.js.map +1 -0
- package/dist/utils/claudeProfileUsageLines.d.ts +15 -0
- package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -0
- package/dist/utils/claudeProfileUsageLines.js +42 -0
- package/dist/utils/claudeProfileUsageLines.js.map +1 -0
- package/dist/utils/claudeProfiles.d.ts +124 -0
- package/dist/utils/claudeProfiles.d.ts.map +1 -0
- package/dist/utils/claudeProfiles.js +304 -0
- package/dist/utils/claudeProfiles.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +13 -1
- package/dist/utils/claudeStreamJson.d.ts.map +1 -1
- package/dist/utils/claudeStreamJson.js +13 -0
- package/dist/utils/claudeStreamJson.js.map +1 -1
- package/dist/utils/claudeUsage.d.ts +209 -0
- package/dist/utils/claudeUsage.d.ts.map +1 -0
- package/dist/utils/claudeUsage.js +413 -0
- package/dist/utils/claudeUsage.js.map +1 -0
- package/dist/utils/claudeUsageRefresher.d.ts +44 -0
- package/dist/utils/claudeUsageRefresher.d.ts.map +1 -0
- package/dist/utils/claudeUsageRefresher.js +95 -0
- package/dist/utils/claudeUsageRefresher.js.map +1 -0
- package/dist/utils/fallbackBridge.d.ts +32 -0
- package/dist/utils/fallbackBridge.d.ts.map +1 -0
- package/dist/utils/fallbackBridge.js +62 -0
- package/dist/utils/fallbackBridge.js.map +1 -0
- package/dist/utils/fallbackChain.d.ts +299 -0
- package/dist/utils/fallbackChain.d.ts.map +1 -0
- package/dist/utils/fallbackChain.js +542 -0
- package/dist/utils/fallbackChain.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +14 -3
- package/dist/utils/jsonStreamHost.d.ts.map +1 -1
- package/dist/utils/jsonStreamHost.js +26 -5
- package/dist/utils/jsonStreamHost.js.map +1 -1
- package/dist/utils/modelRecentPlan.d.ts +56 -0
- package/dist/utils/modelRecentPlan.d.ts.map +1 -0
- package/dist/utils/modelRecentPlan.js +107 -0
- package/dist/utils/modelRecentPlan.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +11 -3
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -1
- package/dist/utils/openCodeCompactPlugin.js +37 -5
- package/dist/utils/openCodeCompactPlugin.js.map +1 -1
- package/dist/utils/threadStatusReport.d.ts +25 -1
- package/dist/utils/threadStatusReport.d.ts.map +1 -1
- package/dist/utils/threadStatusReport.js +24 -1
- package/dist/utils/threadStatusReport.js.map +1 -1
- package/examples/.env.example +7 -7
- package/examples/docker-compose.yml +15 -14
- package/package.json +3 -1
package/dist/types.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { OpenCodeAuthMethod } from './utils/openCodeAuthLogin';
|
|
|
4
4
|
import type { McpHealOutcome } from './utils/claudeMcpHeal';
|
|
5
5
|
import type { SessionKey } from './sessionKey';
|
|
6
6
|
import type { OutboundHints } from './platform/outbound';
|
|
7
|
+
import type { FallbackChainEntry } from './utils/fallbackChain';
|
|
7
8
|
export interface AgentSession {
|
|
8
9
|
id: string;
|
|
9
10
|
title: string;
|
|
@@ -242,6 +243,12 @@ export interface ApiRetryState {
|
|
|
242
243
|
attempt: number;
|
|
243
244
|
/** Epoch ms when the retry timer should fire. */
|
|
244
245
|
fireAt: number;
|
|
246
|
+
/**
|
|
247
|
+
* A usage-limit wait that ends on ANOTHER rung of the fallback chain (the one whose limit resets earliest,
|
|
248
|
+
* `utils/fallbackChain.ts`): the resume moves the topic there before the continue nudge. Absent = the topic
|
|
249
|
+
* continues where it is. Persisted, so a restart keeps the target.
|
|
250
|
+
*/
|
|
251
|
+
resumeOn?: FallbackChainEntry;
|
|
245
252
|
}
|
|
246
253
|
/**
|
|
247
254
|
* @description IDENTITY of a json-stream session's `stdout.jsonl` — its byte size
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
* unconditional, so ON is the behaviour-preserving default.
|
|
20
20
|
*/
|
|
21
21
|
export declare function resolveAutoContinueOnLimitEnabled(globalDefault: boolean | undefined, threadOverride: boolean | undefined): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* @description Resolve whether the bot may switch a limited topic to ANOTHER Claude account profile by itself
|
|
24
|
+
* (`/account` → auto-switch; the decisions live in `claudeLimitSwitch.ts`, which re-exports this). A per-thread
|
|
25
|
+
* override wins; otherwise the instance default; unset everywhere ⇒ OFF — moving work between subscriptions is
|
|
26
|
+
* an account-policy decision the operator opts into. Kept beside its sibling so `state.ts` loads no more than it did.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveClaudeAutoSwitchOnLimitEnabled(globalDefault: boolean | undefined, threadOverride: boolean | undefined): boolean;
|
|
22
29
|
/** `callback_data` prefix of the «skip this resume once» button. */
|
|
23
30
|
export declare const skipArmedRetryCallbackPrefix = "acl_skip_";
|
|
24
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoContinueOnLimit.d.ts","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,cAAc,EAAE,OAAO,GAAG,SAAS,GAClC,OAAO,CAET;AAED,oEAAoE;AACpE,eAAO,MAAM,4BAA4B,cAAc,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,mFAAmF;AACnF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,GAAG,SAAS,CAGrB"}
|
|
1
|
+
{"version":3,"file":"autoContinueOnLimit.d.ts","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,cAAc,EAAE,OAAO,GAAG,SAAS,GAClC,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CACnD,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,cAAc,EAAE,OAAO,GAAG,SAAS,GAClC,OAAO,CAET;AAED,oEAAoE;AACpE,eAAO,MAAM,4BAA4B,cAAc,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,mFAAmF;AACnF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,GAAG,SAAS,CAGrB"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.skipArmedRetryCallbackPrefix = void 0;
|
|
18
18
|
exports.resolveAutoContinueOnLimitEnabled = resolveAutoContinueOnLimitEnabled;
|
|
19
|
+
exports.resolveClaudeAutoSwitchOnLimitEnabled = resolveClaudeAutoSwitchOnLimitEnabled;
|
|
19
20
|
exports.buildSkipArmedRetryCallbackData = buildSkipArmedRetryCallbackData;
|
|
20
21
|
exports.parseSkipArmedRetryCallbackData = parseSkipArmedRetryCallbackData;
|
|
21
22
|
exports.getArmedRetrySkipDecision = getArmedRetrySkipDecision;
|
|
@@ -29,6 +30,15 @@ const threadToggle_1 = require("./threadToggle");
|
|
|
29
30
|
function resolveAutoContinueOnLimitEnabled(globalDefault, threadOverride) {
|
|
30
31
|
return (0, threadToggle_1.resolveDefaultOnThreadToggle)(globalDefault, threadOverride);
|
|
31
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* @description Resolve whether the bot may switch a limited topic to ANOTHER Claude account profile by itself
|
|
35
|
+
* (`/account` → auto-switch; the decisions live in `claudeLimitSwitch.ts`, which re-exports this). A per-thread
|
|
36
|
+
* override wins; otherwise the instance default; unset everywhere ⇒ OFF — moving work between subscriptions is
|
|
37
|
+
* an account-policy decision the operator opts into. Kept beside its sibling so `state.ts` loads no more than it did.
|
|
38
|
+
*/
|
|
39
|
+
function resolveClaudeAutoSwitchOnLimitEnabled(globalDefault, threadOverride) {
|
|
40
|
+
return (0, threadToggle_1.resolveThreadToggle)(globalDefault, threadOverride, false);
|
|
41
|
+
}
|
|
32
42
|
/** `callback_data` prefix of the «skip this resume once» button. */
|
|
33
43
|
exports.skipArmedRetryCallbackPrefix = 'acl_skip_';
|
|
34
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoContinueOnLimit.js","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAUH,8EAKC;AAaD,0EAEC;AAGD,0EAKC;AAYD,8DAMC;
|
|
1
|
+
{"version":3,"file":"autoContinueOnLimit.js","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAUH,8EAKC;AAQD,sFAKC;AAaD,0EAEC;AAGD,0EAKC;AAYD,8DAMC;AAnED,iDAAmF;AAEnF;;;;;GAKG;AACH,SAAgB,iCAAiC,CAC/C,aAAkC,EAClC,cAAmC;IAEnC,OAAO,IAAA,2CAA4B,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qCAAqC,CACnD,aAAkC,EAClC,cAAmC;IAEnC,OAAO,IAAA,kCAAmB,EAAC,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,oEAAoE;AACvD,QAAA,4BAA4B,GAAG,WAAW,CAAC;AAExD;;;;;;;GAOG;AACH,SAAgB,+BAA+B,CAAC,MAAc;IAC5D,OAAO,GAAG,oCAA4B,GAAG,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,mFAAmF;AACnF,SAAgB,+BAA+B,CAAC,IAAY;IAC1D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oCAA4B,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,oCAA4B,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,yBAAyB,CAAC,KAGzC;IACC,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure plan of the `/account` picker (`connectors/telegram/commands/claudeAccounts.ts`): the
|
|
3
|
+
* `callback_data` codecs and the per-profile row model. Profile names are slugs of at most 32 characters
|
|
4
|
+
* (`utils/claudeProfiles.ts`), so a button BAKES THE NAME into its data (`acct_use_<name>` is at most 41
|
|
5
|
+
* bytes, under Telegram's 64-byte cap) and an old keyboard can never act on a profile other than the one it
|
|
6
|
+
* named — a removed name simply resolves to "unknown profile".
|
|
7
|
+
*/
|
|
8
|
+
import type { ClaudeProfileRecord } from '../state';
|
|
9
|
+
import { type ClaudeAccountKind } from './claudeProfiles';
|
|
10
|
+
/** Switch the topic (General: the instance default) to the named profile. */
|
|
11
|
+
export declare const accountUseCallbackRe: RegExp;
|
|
12
|
+
/** Open the sub-picker that chooses a profile to sign in again / to remove. */
|
|
13
|
+
export declare const accountLoginMenuCallback = "acct_login_menu";
|
|
14
|
+
export declare const accountRemoveMenuCallback = "acct_rm_menu";
|
|
15
|
+
/** Start the sign-in of the named profile. */
|
|
16
|
+
export declare const accountLoginCallbackRe: RegExp;
|
|
17
|
+
/** Ask to confirm the removal of the named profile, then remove it. */
|
|
18
|
+
export declare const accountRemoveCallbackRe: RegExp;
|
|
19
|
+
export declare const accountRemoveConfirmCallbackRe: RegExp;
|
|
20
|
+
/** Ask for a new profile's name. */
|
|
21
|
+
export declare const accountAddCallback = "acct_add";
|
|
22
|
+
/** A topic drops its own pick and follows the instance default again. */
|
|
23
|
+
export declare const accountFollowDefaultCallback = "acct_follow";
|
|
24
|
+
/** Arm the OpenCode provider-id capture (the next plain message names the provider to connect). */
|
|
25
|
+
export declare const accountAddProviderCallback = "acct_ocadd";
|
|
26
|
+
/**
|
|
27
|
+
* Disconnect an OpenCode provider: the INDEX points into the provider list the screen listed, snapshotted per
|
|
28
|
+
* message (a provider id can be long and the list changes), then the confirmation of the same index.
|
|
29
|
+
*/
|
|
30
|
+
export declare const accountDisconnectCallbackRe: RegExp;
|
|
31
|
+
export declare const accountDisconnectConfirmCallbackRe: RegExp;
|
|
32
|
+
/** Connect an OpenCode provider again (the `/connect <provider>` method picker); same snapshot index. */
|
|
33
|
+
export declare const accountReconnectCallbackRe: RegExp;
|
|
34
|
+
/** Back to the main picker from a sub-picker. */
|
|
35
|
+
export declare const accountBackCallback = "acct_back";
|
|
36
|
+
/** Flip the auto-switch-on-limit setting (`utils/claudeLimitSwitch.ts`): the topic's override, in General the instance default. */
|
|
37
|
+
export declare const accountAutoSwitchOnCallback = "acct_autosw_on";
|
|
38
|
+
export declare const accountAutoSwitchOffCallback = "acct_autosw_off";
|
|
39
|
+
export declare function buildAccountUseCallback(name: string): string;
|
|
40
|
+
export declare function buildAccountLoginCallback(name: string): string;
|
|
41
|
+
export declare function buildAccountDisconnectCallback(index: number): string;
|
|
42
|
+
export declare function buildAccountReconnectCallback(index: number): string;
|
|
43
|
+
export declare function buildAccountDisconnectConfirmCallback(index: number): string;
|
|
44
|
+
export declare function buildAccountRemoveCallback(name: string): string;
|
|
45
|
+
export declare function buildAccountRemoveConfirmCallback(name: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* @description The name a callback's data carries, or `null` when the data is not that button's or names an
|
|
48
|
+
* impossible profile (`default` is a valid target for use / login / removal only where `allowDefault`).
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseAccountCallbackName(data: string, re: RegExp, options: {
|
|
51
|
+
allowDefault: boolean;
|
|
52
|
+
}): string | null;
|
|
53
|
+
/** One line / one button of the picker. */
|
|
54
|
+
export interface AccountPickerRow {
|
|
55
|
+
name: string;
|
|
56
|
+
/** The profile the topic (General: the instance) effectively uses. */
|
|
57
|
+
isActive: boolean;
|
|
58
|
+
/** The CLI's last answer; `undefined` when never read. */
|
|
59
|
+
loggedIn: boolean | undefined;
|
|
60
|
+
email: string | null;
|
|
61
|
+
subscriptionType: string | null;
|
|
62
|
+
kind: ClaudeAccountKind;
|
|
63
|
+
/** How many bound topics resolve to this profile. */
|
|
64
|
+
topicCount: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @description The picker's rows: `default` first, then the added profiles in creation order. `topicCounts`
|
|
68
|
+
* is the resolved use per profile (explicit picks AND topics that follow the instance default), so the count
|
|
69
|
+
* answers "which topics would a removal or re-login touch".
|
|
70
|
+
*/
|
|
71
|
+
export declare function buildAccountPickerRows(input: {
|
|
72
|
+
records: Readonly<Record<string, ClaudeProfileRecord>>;
|
|
73
|
+
defaultStatus: {
|
|
74
|
+
loggedIn: boolean | undefined;
|
|
75
|
+
email: string | null;
|
|
76
|
+
subscriptionType: string | null;
|
|
77
|
+
};
|
|
78
|
+
activeName: string;
|
|
79
|
+
topicCounts: ReadonlyMap<string, number>;
|
|
80
|
+
/** The operator removed (signed out) `default`: it has no row until it is signed in again. */
|
|
81
|
+
isDefaultRemoved?: boolean;
|
|
82
|
+
}): AccountPickerRow[];
|
|
83
|
+
/** The profile each bound topic resolves to, counted per profile name. */
|
|
84
|
+
export declare function countTopicsPerProfile(resolvedNames: Iterable<string>): Map<string, number>;
|
|
85
|
+
//# sourceMappingURL=claudeAccountPickerPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeAccountPickerPlan.d.ts","sourceRoot":"","sources":["../../src/utils/claudeAccountPickerPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Pure plan of the `/account` picker (`connectors/telegram/commands/claudeAccounts.ts`): the
|
|
4
|
+
* `callback_data` codecs and the per-profile row model. Profile names are slugs of at most 32 characters
|
|
5
|
+
* (`utils/claudeProfiles.ts`), so a button BAKES THE NAME into its data (`acct_use_<name>` is at most 41
|
|
6
|
+
* bytes, under Telegram's 64-byte cap) and an old keyboard can never act on a profile other than the one it
|
|
7
|
+
* named — a removed name simply resolves to "unknown profile".
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.accountAutoSwitchOffCallback = exports.accountAutoSwitchOnCallback = exports.accountBackCallback = exports.accountReconnectCallbackRe = exports.accountDisconnectConfirmCallbackRe = exports.accountDisconnectCallbackRe = exports.accountAddProviderCallback = exports.accountFollowDefaultCallback = exports.accountAddCallback = exports.accountRemoveConfirmCallbackRe = exports.accountRemoveCallbackRe = exports.accountLoginCallbackRe = exports.accountRemoveMenuCallback = exports.accountLoginMenuCallback = exports.accountUseCallbackRe = void 0;
|
|
11
|
+
exports.buildAccountUseCallback = buildAccountUseCallback;
|
|
12
|
+
exports.buildAccountLoginCallback = buildAccountLoginCallback;
|
|
13
|
+
exports.buildAccountDisconnectCallback = buildAccountDisconnectCallback;
|
|
14
|
+
exports.buildAccountReconnectCallback = buildAccountReconnectCallback;
|
|
15
|
+
exports.buildAccountDisconnectConfirmCallback = buildAccountDisconnectConfirmCallback;
|
|
16
|
+
exports.buildAccountRemoveCallback = buildAccountRemoveCallback;
|
|
17
|
+
exports.buildAccountRemoveConfirmCallback = buildAccountRemoveConfirmCallback;
|
|
18
|
+
exports.parseAccountCallbackName = parseAccountCallbackName;
|
|
19
|
+
exports.buildAccountPickerRows = buildAccountPickerRows;
|
|
20
|
+
exports.countTopicsPerProfile = countTopicsPerProfile;
|
|
21
|
+
const claudeProfiles_1 = require("./claudeProfiles");
|
|
22
|
+
const nameGroup = '([a-z0-9][a-z0-9_-]{0,31})';
|
|
23
|
+
/** Switch the topic (General: the instance default) to the named profile. */
|
|
24
|
+
exports.accountUseCallbackRe = new RegExp(`^acct_use_${nameGroup}$`);
|
|
25
|
+
/** Open the sub-picker that chooses a profile to sign in again / to remove. */
|
|
26
|
+
exports.accountLoginMenuCallback = 'acct_login_menu';
|
|
27
|
+
exports.accountRemoveMenuCallback = 'acct_rm_menu';
|
|
28
|
+
/** Start the sign-in of the named profile. */
|
|
29
|
+
exports.accountLoginCallbackRe = new RegExp(`^acct_login_${nameGroup}$`);
|
|
30
|
+
/** Ask to confirm the removal of the named profile, then remove it. */
|
|
31
|
+
exports.accountRemoveCallbackRe = new RegExp(`^acct_rm_${nameGroup}$`);
|
|
32
|
+
exports.accountRemoveConfirmCallbackRe = new RegExp(`^acct_rmok_${nameGroup}$`);
|
|
33
|
+
/** Ask for a new profile's name. */
|
|
34
|
+
exports.accountAddCallback = 'acct_add';
|
|
35
|
+
/** A topic drops its own pick and follows the instance default again. */
|
|
36
|
+
exports.accountFollowDefaultCallback = 'acct_follow';
|
|
37
|
+
/** Arm the OpenCode provider-id capture (the next plain message names the provider to connect). */
|
|
38
|
+
exports.accountAddProviderCallback = 'acct_ocadd';
|
|
39
|
+
/**
|
|
40
|
+
* Disconnect an OpenCode provider: the INDEX points into the provider list the screen listed, snapshotted per
|
|
41
|
+
* message (a provider id can be long and the list changes), then the confirmation of the same index.
|
|
42
|
+
*/
|
|
43
|
+
exports.accountDisconnectCallbackRe = /^acct_dc_(\d{1,2})$/;
|
|
44
|
+
exports.accountDisconnectConfirmCallbackRe = /^acct_dcok_(\d{1,2})$/;
|
|
45
|
+
/** Connect an OpenCode provider again (the `/connect <provider>` method picker); same snapshot index. */
|
|
46
|
+
exports.accountReconnectCallbackRe = /^acct_dcre_(\d{1,2})$/;
|
|
47
|
+
/** Back to the main picker from a sub-picker. */
|
|
48
|
+
exports.accountBackCallback = 'acct_back';
|
|
49
|
+
/** Flip the auto-switch-on-limit setting (`utils/claudeLimitSwitch.ts`): the topic's override, in General the instance default. */
|
|
50
|
+
exports.accountAutoSwitchOnCallback = 'acct_autosw_on';
|
|
51
|
+
exports.accountAutoSwitchOffCallback = 'acct_autosw_off';
|
|
52
|
+
function buildAccountUseCallback(name) {
|
|
53
|
+
return `acct_use_${name}`;
|
|
54
|
+
}
|
|
55
|
+
function buildAccountLoginCallback(name) {
|
|
56
|
+
return `acct_login_${name}`;
|
|
57
|
+
}
|
|
58
|
+
function buildAccountDisconnectCallback(index) {
|
|
59
|
+
return `acct_dc_${index}`;
|
|
60
|
+
}
|
|
61
|
+
function buildAccountReconnectCallback(index) {
|
|
62
|
+
return `acct_dcre_${index}`;
|
|
63
|
+
}
|
|
64
|
+
function buildAccountDisconnectConfirmCallback(index) {
|
|
65
|
+
return `acct_dcok_${index}`;
|
|
66
|
+
}
|
|
67
|
+
function buildAccountRemoveCallback(name) {
|
|
68
|
+
return `acct_rm_${name}`;
|
|
69
|
+
}
|
|
70
|
+
function buildAccountRemoveConfirmCallback(name) {
|
|
71
|
+
return `acct_rmok_${name}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* @description The name a callback's data carries, or `null` when the data is not that button's or names an
|
|
75
|
+
* impossible profile (`default` is a valid target for use / login / removal only where `allowDefault`).
|
|
76
|
+
*/
|
|
77
|
+
function parseAccountCallbackName(data, re, options) {
|
|
78
|
+
const match = data.match(re);
|
|
79
|
+
if (!match)
|
|
80
|
+
return null;
|
|
81
|
+
const name = match[1];
|
|
82
|
+
if (name === claudeProfiles_1.defaultClaudeProfileName)
|
|
83
|
+
return options.allowDefault ? name : null;
|
|
84
|
+
return (0, claudeProfiles_1.checkIsValidClaudeProfileName)(name) ? name : null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @description The picker's rows: `default` first, then the added profiles in creation order. `topicCounts`
|
|
88
|
+
* is the resolved use per profile (explicit picks AND topics that follow the instance default), so the count
|
|
89
|
+
* answers "which topics would a removal or re-login touch".
|
|
90
|
+
*/
|
|
91
|
+
function buildAccountPickerRows(input) {
|
|
92
|
+
const rows = input.isDefaultRemoved ? [] : [{
|
|
93
|
+
name: claudeProfiles_1.defaultClaudeProfileName,
|
|
94
|
+
isActive: input.activeName === claudeProfiles_1.defaultClaudeProfileName,
|
|
95
|
+
loggedIn: input.defaultStatus.loggedIn,
|
|
96
|
+
email: input.defaultStatus.email,
|
|
97
|
+
subscriptionType: input.defaultStatus.subscriptionType,
|
|
98
|
+
kind: (0, claudeProfiles_1.getClaudeAccountKind)(input.defaultStatus.subscriptionType),
|
|
99
|
+
topicCount: input.topicCounts.get(claudeProfiles_1.defaultClaudeProfileName) ?? 0,
|
|
100
|
+
}];
|
|
101
|
+
const added = Object.entries(input.records)
|
|
102
|
+
.sort(([, a], [, b]) => a.createdAt.localeCompare(b.createdAt));
|
|
103
|
+
for (const [name, record] of added) {
|
|
104
|
+
rows.push({
|
|
105
|
+
name,
|
|
106
|
+
isActive: input.activeName === name,
|
|
107
|
+
loggedIn: record.loggedIn,
|
|
108
|
+
email: record.email ?? null,
|
|
109
|
+
subscriptionType: record.subscriptionType ?? null,
|
|
110
|
+
kind: (0, claudeProfiles_1.getClaudeAccountKind)(record.subscriptionType ?? null),
|
|
111
|
+
topicCount: input.topicCounts.get(name) ?? 0,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return rows;
|
|
115
|
+
}
|
|
116
|
+
/** The profile each bound topic resolves to, counted per profile name. */
|
|
117
|
+
function countTopicsPerProfile(resolvedNames) {
|
|
118
|
+
const counts = new Map();
|
|
119
|
+
for (const name of resolvedNames)
|
|
120
|
+
counts.set(name, (counts.get(name) ?? 0) + 1);
|
|
121
|
+
return counts;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=claudeAccountPickerPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeAccountPickerPlan.js","sourceRoot":"","sources":["../../src/utils/claudeAccountPickerPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decisions behind SWITCHING A TOPIC TO ANOTHER CLAUDE ACCOUNT when its own hits a usage
|
|
3
|
+
* limit (`utils/claudeProfiles.ts`, `utils/claudeUsage.ts`): which profiles may take the work over, ranked by
|
|
4
|
+
* headroom, and until when the exhausted one is marked limited. This ranking is what the fallback chain
|
|
5
|
+
* (`utils/fallbackChain.ts`) falls back to when the operator configured no chain: the within-Claude
|
|
6
|
+
* account→account switch as it existed before the chain. The auto / offer decision, the notice's buttons and
|
|
7
|
+
* the auto-switch toggle (`/account`, `/fallback`; OFF by default — the operator opts in, because moving work
|
|
8
|
+
* between subscriptions is an account-policy decision) live in the chain module.
|
|
9
|
+
*
|
|
10
|
+
* No I/O, no `Date.now()`: the caller passes the clock and the profile views, so every rule is unit-tested.
|
|
11
|
+
*/
|
|
12
|
+
import { type ClaudeProfileUsageView, type ClaudeUsageSnapshot } from './claudeUsage';
|
|
13
|
+
/** The toggle's resolver (OFF when unset) lives beside `/auto_continue_limits`'s, where `state.ts` reads it. */
|
|
14
|
+
export { resolveClaudeAutoSwitchOnLimitEnabled } from './autoContinueOnLimit';
|
|
15
|
+
/**
|
|
16
|
+
* @description The profiles that may take a topic's work over, best first: signed in, not marked limited, with
|
|
17
|
+
* KNOWN and fresh usage that leaves headroom on the windows `model` drains, and not the profile that just hit
|
|
18
|
+
* the limit. A profile whose usage is unknown or stale is left out on purpose — the switch is sold as "this
|
|
19
|
+
* one has room", and a guess could land the topic in a second limit.
|
|
20
|
+
*/
|
|
21
|
+
export declare function pickClaudeLimitSwitchCandidates(input: {
|
|
22
|
+
profiles: readonly ClaudeProfileUsageView[];
|
|
23
|
+
/** The profile the topic runs on — the one at its limit. */
|
|
24
|
+
currentName: string;
|
|
25
|
+
model: string | null;
|
|
26
|
+
nowMs: number;
|
|
27
|
+
}): string[];
|
|
28
|
+
/**
|
|
29
|
+
* @description Until when the profile that hit the limit is marked limited, so the ranking skips it before the
|
|
30
|
+
* window resets: the instant the error named, else the profile's own session-window reset when that lies ahead,
|
|
31
|
+
* else `fallbackMs` from now (the retry's blind delay). A mark already further in the future is kept.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveClaudeLimitedUntil(input: {
|
|
34
|
+
resetAtMs: number | undefined;
|
|
35
|
+
usage: ClaudeUsageSnapshot | undefined;
|
|
36
|
+
existingLimitedUntil: string | null;
|
|
37
|
+
nowMs: number;
|
|
38
|
+
fallbackMs: number;
|
|
39
|
+
}): string;
|
|
40
|
+
//# sourceMappingURL=claudeLimitSwitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeLimitSwitch.d.ts","sourceRoot":"","sources":["../../src/utils/claudeLimitSwitch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAmD,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvI,gHAAgH;AAChH,OAAO,EAAE,qCAAqC,EAAE,MAAM,uBAAuB,CAAC;AAE9E;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC5C,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,EAAE,CAQX;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACvC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAWT"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Pure decisions behind SWITCHING A TOPIC TO ANOTHER CLAUDE ACCOUNT when its own hits a usage
|
|
4
|
+
* limit (`utils/claudeProfiles.ts`, `utils/claudeUsage.ts`): which profiles may take the work over, ranked by
|
|
5
|
+
* headroom, and until when the exhausted one is marked limited. This ranking is what the fallback chain
|
|
6
|
+
* (`utils/fallbackChain.ts`) falls back to when the operator configured no chain: the within-Claude
|
|
7
|
+
* account→account switch as it existed before the chain. The auto / offer decision, the notice's buttons and
|
|
8
|
+
* the auto-switch toggle (`/account`, `/fallback`; OFF by default — the operator opts in, because moving work
|
|
9
|
+
* between subscriptions is an account-policy decision) live in the chain module.
|
|
10
|
+
*
|
|
11
|
+
* No I/O, no `Date.now()`: the caller passes the clock and the profile views, so every rule is unit-tested.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.resolveClaudeAutoSwitchOnLimitEnabled = void 0;
|
|
15
|
+
exports.pickClaudeLimitSwitchCandidates = pickClaudeLimitSwitchCandidates;
|
|
16
|
+
exports.resolveClaudeLimitedUntil = resolveClaudeLimitedUntil;
|
|
17
|
+
const claudeUsage_1 = require("./claudeUsage");
|
|
18
|
+
/** The toggle's resolver (OFF when unset) lives beside `/auto_continue_limits`'s, where `state.ts` reads it. */
|
|
19
|
+
var autoContinueOnLimit_1 = require("./autoContinueOnLimit");
|
|
20
|
+
Object.defineProperty(exports, "resolveClaudeAutoSwitchOnLimitEnabled", { enumerable: true, get: function () { return autoContinueOnLimit_1.resolveClaudeAutoSwitchOnLimitEnabled; } });
|
|
21
|
+
/**
|
|
22
|
+
* @description The profiles that may take a topic's work over, best first: signed in, not marked limited, with
|
|
23
|
+
* KNOWN and fresh usage that leaves headroom on the windows `model` drains, and not the profile that just hit
|
|
24
|
+
* the limit. A profile whose usage is unknown or stale is left out on purpose — the switch is sold as "this
|
|
25
|
+
* one has room", and a guess could land the topic in a second limit.
|
|
26
|
+
*/
|
|
27
|
+
function pickClaudeLimitSwitchCandidates(input) {
|
|
28
|
+
const report = (0, claudeUsage_1.buildClaudeProfilesReport)(input.profiles, input.model, input.nowMs);
|
|
29
|
+
return report.profiles
|
|
30
|
+
.filter((entry) => entry.name !== input.currentName)
|
|
31
|
+
.filter((entry) => entry.isEligible && entry.loggedIn === true && !entry.isUsageStale)
|
|
32
|
+
.filter((entry) => entry.headroomPercent !== null && entry.headroomPercent > 0)
|
|
33
|
+
.sort((a, b) => (b.headroomPercent ?? 0) - (a.headroomPercent ?? 0))
|
|
34
|
+
.map((entry) => entry.name);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @description Until when the profile that hit the limit is marked limited, so the ranking skips it before the
|
|
38
|
+
* window resets: the instant the error named, else the profile's own session-window reset when that lies ahead,
|
|
39
|
+
* else `fallbackMs` from now (the retry's blind delay). A mark already further in the future is kept.
|
|
40
|
+
*/
|
|
41
|
+
function resolveClaudeLimitedUntil(input) {
|
|
42
|
+
const sessionReset = (0, claudeUsage_1.getClaudeUsageBucket)(input.usage, 'session')?.resetsAt ?? null;
|
|
43
|
+
const sessionResetMs = sessionReset === null ? Number.NaN : Date.parse(sessionReset);
|
|
44
|
+
let untilMs = input.resetAtMs !== undefined && input.resetAtMs > input.nowMs
|
|
45
|
+
? input.resetAtMs
|
|
46
|
+
: Number.isFinite(sessionResetMs) && sessionResetMs > input.nowMs
|
|
47
|
+
? sessionResetMs
|
|
48
|
+
: input.nowMs + input.fallbackMs;
|
|
49
|
+
const existingMs = input.existingLimitedUntil === null ? Number.NaN : Date.parse(input.existingLimitedUntil);
|
|
50
|
+
if (Number.isFinite(existingMs) && existingMs > untilMs)
|
|
51
|
+
untilMs = existingMs;
|
|
52
|
+
return new Date(untilMs).toISOString();
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=claudeLimitSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeLimitSwitch.js","sourceRoot":"","sources":["../../src/utils/claudeLimitSwitch.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAaH,0EAcC;AAOD,8DAiBC;AAjDD,+CAAuI;AAEvI,gHAAgH;AAChH,6DAA8E;AAArE,4IAAA,qCAAqC,OAAA;AAE9C;;;;;GAKG;AACH,SAAgB,+BAA+B,CAAC,KAM/C;IACC,MAAM,MAAM,GAAG,IAAA,uCAAyB,EAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC,QAAQ;SACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC;SACnD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;SACrF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;SAC9E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;SACnE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,KAMzC;IACC,MAAM,YAAY,GAAG,IAAA,kCAAoB,EAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;IACpF,MAAM,cAAc,GAAG,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACrF,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK;QAC1E,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,KAAK,CAAC,KAAK;YAC/D,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7G,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,OAAO;QAAE,OAAO,GAAG,UAAU,CAAC;IAC9E,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ClaudeUsageSnapshot } from './claudeUsage';
|
|
2
|
+
/** What the lines read of a profile: its usage snapshot and limit mark (a state record and a usage view both fit). */
|
|
3
|
+
export interface ClaudeProfileUsageSource {
|
|
4
|
+
usage?: ClaudeUsageSnapshot;
|
|
5
|
+
limitedUntil?: string | null;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @description The profile's usage as display lines: the windows as `used% 🔄 reset` — 5h and weekly always (`—`
|
|
9
|
+
* for one the snapshot lacks), Fable only when the account HAS that window (a corporate seat has none: nothing
|
|
10
|
+
* is written about it) — `(stale)` when the last poll could not refresh, and the limit mark while it holds, the
|
|
11
|
+
* reset instant in `timezone`. The lines carry the locale's own indentation (they hang under a row); empty for a
|
|
12
|
+
* profile never polled and not limited.
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatClaudeProfileUsageLines(source: ClaudeProfileUsageSource | undefined, timezone: string, nowMs: number): string[];
|
|
15
|
+
//# sourceMappingURL=claudeProfileUsageLines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeProfileUsageLines.d.ts","sourceRoot":"","sources":["../../src/utils/claudeProfileUsageLines.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,KAAK,mBAAmB,EACzB,MAAM,eAAe,CAAC;AAEvB,sHAAsH;AACtH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAOD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBrI"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatClaudeProfileUsageLines = formatClaudeProfileUsageLines;
|
|
4
|
+
/**
|
|
5
|
+
* The usage lines of one Claude account profile — what `/accounts` prints under a profile row and `/limits`
|
|
6
|
+
* prints at the top of its screen. ONE renderer for both, so the two screens can never word a window differently.
|
|
7
|
+
*/
|
|
8
|
+
const i18n_1 = require("../i18n");
|
|
9
|
+
const claudeUsage_1 = require("./claudeUsage");
|
|
10
|
+
/** The localised words of a relative reset («🔄 in 2h»). */
|
|
11
|
+
function getRelativeResetWords() {
|
|
12
|
+
return { pattern: (0, i18n_1.t)('usage.resetIn'), day: (0, i18n_1.t)('usage.unitDay'), hour: (0, i18n_1.t)('usage.unitHour'), minute: (0, i18n_1.t)('usage.unitMinute') };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @description The profile's usage as display lines: the windows as `used% 🔄 reset` — 5h and weekly always (`—`
|
|
16
|
+
* for one the snapshot lacks), Fable only when the account HAS that window (a corporate seat has none: nothing
|
|
17
|
+
* is written about it) — `(stale)` when the last poll could not refresh, and the limit mark while it holds, the
|
|
18
|
+
* reset instant in `timezone`. The lines carry the locale's own indentation (they hang under a row); empty for a
|
|
19
|
+
* profile never polled and not limited.
|
|
20
|
+
*/
|
|
21
|
+
function formatClaudeProfileUsageLines(source, timezone, nowMs) {
|
|
22
|
+
const lines = [];
|
|
23
|
+
const usage = source?.usage;
|
|
24
|
+
if (usage && usage.buckets.length > 0) {
|
|
25
|
+
const words = getRelativeResetWords();
|
|
26
|
+
// An unknown 5h reset shows the weekly window's instead (with neither, the bare percent).
|
|
27
|
+
const weeklyReset = (0, claudeUsage_1.getClaudeUsageBucket)(usage, 'weekly_all')?.resetsAt ?? null;
|
|
28
|
+
const read = (kind) => (0, claudeUsage_1.formatClaudeUsageBucket)((0, claudeUsage_1.getClaudeUsageBucket)(usage, kind), nowMs, {
|
|
29
|
+
words,
|
|
30
|
+
fallbackResetsAt: kind === 'session' ? weeklyReset : null,
|
|
31
|
+
});
|
|
32
|
+
const stale = usage.isStale ? (0, i18n_1.t)('account.row.usageStale') : '';
|
|
33
|
+
const hasFable = (0, claudeUsage_1.getClaudeUsageBucket)(usage, 'weekly_scoped') !== null;
|
|
34
|
+
const fable = hasFable ? (0, i18n_1.t)('account.row.usageFable', { fable: read('weekly_scoped') }) : '';
|
|
35
|
+
lines.push((0, i18n_1.t)('account.row.usage', { session: read('session'), weekly: read('weekly_all'), fable }) + stale);
|
|
36
|
+
}
|
|
37
|
+
if (source?.limitedUntil && Date.parse(source.limitedUntil) > nowMs) {
|
|
38
|
+
lines.push((0, i18n_1.t)('account.row.limited', { until: (0, claudeUsage_1.formatClaudeUsageResetAt)(source.limitedUntil, timezone, nowMs) }));
|
|
39
|
+
}
|
|
40
|
+
return lines;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=claudeProfileUsageLines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeProfileUsageLines.js","sourceRoot":"","sources":["../../src/utils/claudeProfileUsageLines.ts"],"names":[],"mappings":";;AAgCA,sEAoBC;AApDD;;;GAGG;AACH,kCAA4B;AAC5B,+CAOuB;AAQvB,4DAA4D;AAC5D,SAAS,qBAAqB;IAC5B,OAAO,EAAE,OAAO,EAAE,IAAA,QAAC,EAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAA,QAAC,EAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAA,QAAC,EAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAA,QAAC,EAAC,kBAAkB,CAAC,EAAE,CAAC;AAC5H,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,6BAA6B,CAAC,MAA4C,EAAE,QAAgB,EAAE,KAAa;IACzH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;IAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC;QACtC,0FAA0F;QAC1F,MAAM,WAAW,GAAG,IAAA,kCAAoB,EAAC,KAAK,EAAE,YAAY,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;QAChF,MAAM,IAAI,GAAG,CAAC,IAA2B,EAAE,EAAE,CAAC,IAAA,qCAAuB,EAAC,IAAA,kCAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE;YAC9G,KAAK;YACL,gBAAgB,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;SAC1D,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAA,kCAAoB,EAAC,KAAK,EAAE,eAAe,CAAC,KAAK,IAAI,CAAC;QACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,IAAA,QAAC,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,IAAA,sCAAwB,EAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|