mcp-subagents-opencode 1.0.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/LICENSE +21 -0
- package/README.md +602 -0
- package/build/config/timeouts.d.ts +9 -0
- package/build/config/timeouts.d.ts.map +1 -0
- package/build/config/timeouts.js +18 -0
- package/build/config/timeouts.js.map +1 -0
- package/build/helpers.d.ts +6 -0
- package/build/helpers.d.ts.map +1 -0
- package/build/helpers.js +47 -0
- package/build/helpers.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +245 -0
- package/build/index.js.map +1 -0
- package/build/models.d.ts +32 -0
- package/build/models.d.ts.map +1 -0
- package/build/models.js +58 -0
- package/build/models.js.map +1 -0
- package/build/server/register-notifications.d.ts +3 -0
- package/build/server/register-notifications.d.ts.map +1 -0
- package/build/server/register-notifications.js +77 -0
- package/build/server/register-notifications.js.map +1 -0
- package/build/server/register-resources.d.ts +3 -0
- package/build/server/register-resources.d.ts.map +1 -0
- package/build/server/register-resources.js +210 -0
- package/build/server/register-resources.js.map +1 -0
- package/build/server/register-retry-execution.d.ts +2 -0
- package/build/server/register-retry-execution.d.ts.map +1 -0
- package/build/server/register-retry-execution.js +28 -0
- package/build/server/register-retry-execution.js.map +1 -0
- package/build/server/register-tasks.d.ts +3 -0
- package/build/server/register-tasks.d.ts.map +1 -0
- package/build/server/register-tasks.js +52 -0
- package/build/server/register-tasks.js.map +1 -0
- package/build/server/register-tools.d.ts +3 -0
- package/build/server/register-tools.d.ts.map +1 -0
- package/build/server/register-tools.js +32 -0
- package/build/server/register-tools.js.map +1 -0
- package/build/server/resource-helpers.d.ts +21 -0
- package/build/server/resource-helpers.d.ts.map +1 -0
- package/build/server/resource-helpers.js +84 -0
- package/build/server/resource-helpers.js.map +1 -0
- package/build/services/account-manager.d.ts +88 -0
- package/build/services/account-manager.d.ts.map +1 -0
- package/build/services/account-manager.js +239 -0
- package/build/services/account-manager.js.map +1 -0
- package/build/services/claude-code-runner.d.ts +15 -0
- package/build/services/claude-code-runner.d.ts.map +1 -0
- package/build/services/claude-code-runner.js +475 -0
- package/build/services/claude-code-runner.js.map +1 -0
- package/build/services/client-context.d.ts +31 -0
- package/build/services/client-context.d.ts.map +1 -0
- package/build/services/client-context.js +44 -0
- package/build/services/client-context.js.map +1 -0
- package/build/services/exhaustion-fallback.d.ts +27 -0
- package/build/services/exhaustion-fallback.d.ts.map +1 -0
- package/build/services/exhaustion-fallback.js +30 -0
- package/build/services/exhaustion-fallback.js.map +1 -0
- package/build/services/fallback-orchestrator.d.ts +16 -0
- package/build/services/fallback-orchestrator.d.ts.map +1 -0
- package/build/services/fallback-orchestrator.js +48 -0
- package/build/services/fallback-orchestrator.js.map +1 -0
- package/build/services/opencode-client.d.ts +40 -0
- package/build/services/opencode-client.d.ts.map +1 -0
- package/build/services/opencode-client.js +147 -0
- package/build/services/opencode-client.js.map +1 -0
- package/build/services/opencode-spawner.d.ts +56 -0
- package/build/services/opencode-spawner.d.ts.map +1 -0
- package/build/services/opencode-spawner.js +426 -0
- package/build/services/opencode-spawner.js.map +1 -0
- package/build/services/output-file.d.ts +24 -0
- package/build/services/output-file.d.ts.map +1 -0
- package/build/services/output-file.js +90 -0
- package/build/services/output-file.js.map +1 -0
- package/build/services/progress-registry.d.ts +12 -0
- package/build/services/progress-registry.d.ts.map +1 -0
- package/build/services/progress-registry.js +97 -0
- package/build/services/progress-registry.js.map +1 -0
- package/build/services/question-registry.d.ts +79 -0
- package/build/services/question-registry.d.ts.map +1 -0
- package/build/services/question-registry.js +249 -0
- package/build/services/question-registry.js.map +1 -0
- package/build/services/retry-queue.d.ts +41 -0
- package/build/services/retry-queue.d.ts.map +1 -0
- package/build/services/retry-queue.js +195 -0
- package/build/services/retry-queue.js.map +1 -0
- package/build/services/sdk-client-manager.d.ts +149 -0
- package/build/services/sdk-client-manager.d.ts.map +1 -0
- package/build/services/sdk-client-manager.js +632 -0
- package/build/services/sdk-client-manager.js.map +1 -0
- package/build/services/sdk-session-adapter.d.ts +203 -0
- package/build/services/sdk-session-adapter.d.ts.map +1 -0
- package/build/services/sdk-session-adapter.js +1088 -0
- package/build/services/sdk-session-adapter.js.map +1 -0
- package/build/services/sdk-spawner.d.ts +42 -0
- package/build/services/sdk-spawner.d.ts.map +1 -0
- package/build/services/sdk-spawner.js +488 -0
- package/build/services/sdk-spawner.js.map +1 -0
- package/build/services/session-hooks.d.ts +24 -0
- package/build/services/session-hooks.d.ts.map +1 -0
- package/build/services/session-hooks.js +130 -0
- package/build/services/session-hooks.js.map +1 -0
- package/build/services/session-snapshot.d.ts +19 -0
- package/build/services/session-snapshot.d.ts.map +1 -0
- package/build/services/session-snapshot.js +203 -0
- package/build/services/session-snapshot.js.map +1 -0
- package/build/services/subscription-registry.d.ts +12 -0
- package/build/services/subscription-registry.d.ts.map +1 -0
- package/build/services/subscription-registry.js +27 -0
- package/build/services/subscription-registry.js.map +1 -0
- package/build/services/task-manager.d.ts +150 -0
- package/build/services/task-manager.d.ts.map +1 -0
- package/build/services/task-manager.js +765 -0
- package/build/services/task-manager.js.map +1 -0
- package/build/services/task-persistence.d.ts +29 -0
- package/build/services/task-persistence.d.ts.map +1 -0
- package/build/services/task-persistence.js +159 -0
- package/build/services/task-persistence.js.map +1 -0
- package/build/services/task-status-mapper.d.ts +21 -0
- package/build/services/task-status-mapper.d.ts.map +1 -0
- package/build/services/task-status-mapper.js +171 -0
- package/build/services/task-status-mapper.js.map +1 -0
- package/build/templates/index.d.ts +22 -0
- package/build/templates/index.d.ts.map +1 -0
- package/build/templates/index.js +147 -0
- package/build/templates/index.js.map +1 -0
- package/build/templates/overlays/coder-csharp.mdx +58 -0
- package/build/templates/overlays/coder-go.mdx +53 -0
- package/build/templates/overlays/coder-java.mdx +54 -0
- package/build/templates/overlays/coder-kotlin.mdx +56 -0
- package/build/templates/overlays/coder-nextjs.mdx +65 -0
- package/build/templates/overlays/coder-python.mdx +53 -0
- package/build/templates/overlays/coder-react.mdx +55 -0
- package/build/templates/overlays/coder-ruby.mdx +59 -0
- package/build/templates/overlays/coder-rust.mdx +48 -0
- package/build/templates/overlays/coder-supabase.mdx +268 -0
- package/build/templates/overlays/coder-supastarter.mdx +313 -0
- package/build/templates/overlays/coder-swift.mdx +56 -0
- package/build/templates/overlays/coder-tauri.mdx +566 -0
- package/build/templates/overlays/coder-triggerdev.mdx +296 -0
- package/build/templates/overlays/coder-typescript.mdx +45 -0
- package/build/templates/overlays/coder-vue.mdx +62 -0
- package/build/templates/overlays/planner-architecture.mdx +78 -0
- package/build/templates/overlays/planner-bugfix.mdx +36 -0
- package/build/templates/overlays/planner-feature.mdx +38 -0
- package/build/templates/overlays/planner-migration.mdx +50 -0
- package/build/templates/overlays/planner-refactor.mdx +57 -0
- package/build/templates/overlays/researcher-library.mdx +59 -0
- package/build/templates/overlays/researcher-performance.mdx +68 -0
- package/build/templates/overlays/researcher-security.mdx +86 -0
- package/build/templates/overlays/tester-graphql.mdx +191 -0
- package/build/templates/overlays/tester-playwright.mdx +621 -0
- package/build/templates/overlays/tester-rest.mdx +101 -0
- package/build/templates/overlays/tester-suite.mdx +177 -0
- package/build/templates/super-coder.mdx +529 -0
- package/build/templates/super-planner.mdx +568 -0
- package/build/templates/super-researcher.mdx +406 -0
- package/build/templates/super-tester.mdx +243 -0
- package/build/tools/answer-question.d.ts +30 -0
- package/build/tools/answer-question.d.ts.map +1 -0
- package/build/tools/answer-question.js +108 -0
- package/build/tools/answer-question.js.map +1 -0
- package/build/tools/cancel-task.d.ts +44 -0
- package/build/tools/cancel-task.d.ts.map +1 -0
- package/build/tools/cancel-task.js +144 -0
- package/build/tools/cancel-task.js.map +1 -0
- package/build/tools/send-message.d.ts +39 -0
- package/build/tools/send-message.d.ts.map +1 -0
- package/build/tools/send-message.js +124 -0
- package/build/tools/send-message.js.map +1 -0
- package/build/tools/shared-spawn.d.ts +56 -0
- package/build/tools/shared-spawn.d.ts.map +1 -0
- package/build/tools/shared-spawn.js +114 -0
- package/build/tools/shared-spawn.js.map +1 -0
- package/build/tools/spawn-agent.d.ts +85 -0
- package/build/tools/spawn-agent.d.ts.map +1 -0
- package/build/tools/spawn-agent.js +133 -0
- package/build/tools/spawn-agent.js.map +1 -0
- package/build/tools/spawn-coder.d.ts +70 -0
- package/build/tools/spawn-coder.d.ts.map +1 -0
- package/build/tools/spawn-coder.js +71 -0
- package/build/tools/spawn-coder.js.map +1 -0
- package/build/tools/spawn-planner.d.ts +70 -0
- package/build/tools/spawn-planner.d.ts.map +1 -0
- package/build/tools/spawn-planner.js +71 -0
- package/build/tools/spawn-planner.js.map +1 -0
- package/build/tools/spawn-researcher.d.ts +70 -0
- package/build/tools/spawn-researcher.d.ts.map +1 -0
- package/build/tools/spawn-researcher.js +70 -0
- package/build/tools/spawn-researcher.js.map +1 -0
- package/build/tools/spawn-task.d.ts +74 -0
- package/build/tools/spawn-task.d.ts.map +1 -0
- package/build/tools/spawn-task.js +107 -0
- package/build/tools/spawn-task.js.map +1 -0
- package/build/tools/spawn-tester.d.ts +70 -0
- package/build/tools/spawn-tester.d.ts.map +1 -0
- package/build/tools/spawn-tester.js +69 -0
- package/build/tools/spawn-tester.js.map +1 -0
- package/build/types.d.ts +101 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +28 -0
- package/build/types.js.map +1 -0
- package/build/utils/brief-validator.d.ts +30 -0
- package/build/utils/brief-validator.d.ts.map +1 -0
- package/build/utils/brief-validator.js +254 -0
- package/build/utils/brief-validator.js.map +1 -0
- package/build/utils/format.d.ts +34 -0
- package/build/utils/format.d.ts.map +1 -0
- package/build/utils/format.js +55 -0
- package/build/utils/format.js.map +1 -0
- package/build/utils/sanitize.d.ts +240 -0
- package/build/utils/sanitize.d.ts.map +1 -0
- package/build/utils/sanitize.js +89 -0
- package/build/utils/sanitize.js.map +1 -0
- package/build/utils/task-id-generator.d.ts +10 -0
- package/build/utils/task-id-generator.d.ts.map +1 -0
- package/build/utils/task-id-generator.js +22 -0
- package/build/utils/task-id-generator.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Account Manager - In-memory round-robin rotation for GitHub PAT tokens.
|
|
3
|
+
*
|
|
4
|
+
* Supports up to 100 GitHub PAT tokens for failover on rate limits and errors.
|
|
5
|
+
* Key features:
|
|
6
|
+
* - Round-robin rotation through configured tokens
|
|
7
|
+
* - Automatic failover on rate limit (429) or server errors (5xx)
|
|
8
|
+
* - Reset to first token on MCP reconnect
|
|
9
|
+
* - Track failed tokens to skip them temporarily
|
|
10
|
+
*/
|
|
11
|
+
const MAX_ACCOUNTS = 100;
|
|
12
|
+
const FAILED_TOKEN_COOLDOWN_MS = 60 * 1000; // 1 minute cooldown for failed tokens
|
|
13
|
+
class AccountManager {
|
|
14
|
+
tokens = [];
|
|
15
|
+
currentIndex = 0;
|
|
16
|
+
rotationCount = 0;
|
|
17
|
+
lastRotationTime;
|
|
18
|
+
initialized = false;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the account manager with GitHub PAT tokens.
|
|
21
|
+
* Tokens can be provided via:
|
|
22
|
+
* - GITHUB_PAT_TOKENS env var (comma-separated)
|
|
23
|
+
* - GITHUB_PAT_TOKEN_1, GITHUB_PAT_TOKEN_2, ... env vars
|
|
24
|
+
* - Direct configuration via setTokens()
|
|
25
|
+
*/
|
|
26
|
+
initialize() {
|
|
27
|
+
if (this.initialized)
|
|
28
|
+
return;
|
|
29
|
+
const tokens = [];
|
|
30
|
+
// Method 1: Comma-separated tokens in GITHUB_PAT_TOKENS
|
|
31
|
+
const commaTokens = process.env.GITHUB_PAT_TOKENS;
|
|
32
|
+
if (commaTokens) {
|
|
33
|
+
const parsed = commaTokens.split(',').map(t => t.trim()).filter(t => t.length > 0);
|
|
34
|
+
tokens.push(...parsed);
|
|
35
|
+
}
|
|
36
|
+
// Method 2: Numbered env vars GITHUB_PAT_TOKEN_1, GITHUB_PAT_TOKEN_2, etc.
|
|
37
|
+
for (let i = 1; i <= MAX_ACCOUNTS; i++) {
|
|
38
|
+
const token = process.env[`GITHUB_PAT_TOKEN_${i}`];
|
|
39
|
+
if (token && token.trim()) {
|
|
40
|
+
// Avoid duplicates
|
|
41
|
+
if (!tokens.includes(token.trim())) {
|
|
42
|
+
tokens.push(token.trim());
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Method 3: GH_PAT_TOKEN (supports comma-separated for multi-account)
|
|
47
|
+
if (tokens.length === 0 && process.env.GH_PAT_TOKEN) {
|
|
48
|
+
const ghPatTokens = process.env.GH_PAT_TOKEN.split(',').map(t => t.trim()).filter(t => t.length > 0);
|
|
49
|
+
tokens.push(...ghPatTokens);
|
|
50
|
+
}
|
|
51
|
+
// Method 4: Single token fallback (GITHUB_TOKEN or GH_TOKEN)
|
|
52
|
+
if (tokens.length === 0) {
|
|
53
|
+
const singleToken = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;
|
|
54
|
+
if (singleToken && singleToken.trim()) {
|
|
55
|
+
tokens.push(singleToken.trim());
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
this.setTokens(tokens);
|
|
59
|
+
this.initialized = true;
|
|
60
|
+
console.error(`[account-manager] Initialized with ${this.tokens.length} account(s)`);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Set tokens directly (useful for testing or programmatic configuration).
|
|
64
|
+
*/
|
|
65
|
+
setTokens(tokens) {
|
|
66
|
+
// Limit to MAX_ACCOUNTS
|
|
67
|
+
const limitedTokens = tokens.slice(0, MAX_ACCOUNTS);
|
|
68
|
+
this.tokens = limitedTokens.map((token, index) => ({
|
|
69
|
+
token,
|
|
70
|
+
index,
|
|
71
|
+
failureCount: 0,
|
|
72
|
+
}));
|
|
73
|
+
this.currentIndex = 0;
|
|
74
|
+
this.rotationCount = 0;
|
|
75
|
+
this.lastRotationTime = undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the current active token.
|
|
79
|
+
* Returns undefined if no tokens configured.
|
|
80
|
+
*/
|
|
81
|
+
getCurrentToken() {
|
|
82
|
+
if (this.tokens.length === 0) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return this.tokens[this.currentIndex]?.token;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get the current token index.
|
|
89
|
+
*/
|
|
90
|
+
getCurrentIndex() {
|
|
91
|
+
return this.currentIndex;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get total number of configured tokens.
|
|
95
|
+
*/
|
|
96
|
+
getTokenCount() {
|
|
97
|
+
return this.tokens.length;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Check if multi-account mode is enabled (more than 1 token).
|
|
101
|
+
*/
|
|
102
|
+
isMultiAccountEnabled() {
|
|
103
|
+
return this.tokens.length > 1;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Reset to the first token (called on MCP reconnect).
|
|
107
|
+
*/
|
|
108
|
+
reset() {
|
|
109
|
+
this.currentIndex = 0;
|
|
110
|
+
this.rotationCount = 0;
|
|
111
|
+
this.lastRotationTime = undefined;
|
|
112
|
+
// Clear failure states
|
|
113
|
+
for (const state of this.tokens) {
|
|
114
|
+
state.failedAt = undefined;
|
|
115
|
+
state.failureReason = undefined;
|
|
116
|
+
state.failureCount = 0;
|
|
117
|
+
}
|
|
118
|
+
console.error(`[account-manager] Reset to first account (${this.tokens.length} total)`);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Rotate to the next available token.
|
|
122
|
+
* Called when current token encounters rate limit or error.
|
|
123
|
+
*
|
|
124
|
+
* @param reason - Reason for rotation (e.g., 'rate_limit', 'server_error')
|
|
125
|
+
* @returns Result with new token or exhausted status
|
|
126
|
+
*/
|
|
127
|
+
rotateToNext(reason = 'unknown') {
|
|
128
|
+
if (this.tokens.length === 0) {
|
|
129
|
+
return { success: false, error: 'No tokens configured' };
|
|
130
|
+
}
|
|
131
|
+
if (this.tokens.length === 1) {
|
|
132
|
+
// Single token mode - can't rotate
|
|
133
|
+
return { success: false, error: 'Single token mode - cannot rotate' };
|
|
134
|
+
}
|
|
135
|
+
// Mark current token as failed
|
|
136
|
+
const currentState = this.tokens[this.currentIndex];
|
|
137
|
+
if (currentState) {
|
|
138
|
+
currentState.failedAt = Date.now();
|
|
139
|
+
currentState.failureReason = reason;
|
|
140
|
+
currentState.failureCount++;
|
|
141
|
+
console.error(`[account-manager] Token #${this.currentIndex + 1} failed: ${reason} (count: ${currentState.failureCount})`);
|
|
142
|
+
}
|
|
143
|
+
// Find next available token
|
|
144
|
+
const startIndex = this.currentIndex;
|
|
145
|
+
let attempts = 0;
|
|
146
|
+
const now = Date.now();
|
|
147
|
+
while (attempts < this.tokens.length) {
|
|
148
|
+
// Move to next index (round-robin)
|
|
149
|
+
this.currentIndex = (this.currentIndex + 1) % this.tokens.length;
|
|
150
|
+
attempts++;
|
|
151
|
+
const nextState = this.tokens[this.currentIndex];
|
|
152
|
+
// Check if this token is in cooldown
|
|
153
|
+
if (nextState.failedAt) {
|
|
154
|
+
const cooldownRemaining = FAILED_TOKEN_COOLDOWN_MS - (now - nextState.failedAt);
|
|
155
|
+
if (cooldownRemaining > 0) {
|
|
156
|
+
// Still in cooldown, try next
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// Cooldown expired, clear failure state
|
|
160
|
+
nextState.failedAt = undefined;
|
|
161
|
+
nextState.failureReason = undefined;
|
|
162
|
+
}
|
|
163
|
+
// Found an available token
|
|
164
|
+
this.rotationCount++;
|
|
165
|
+
this.lastRotationTime = new Date();
|
|
166
|
+
console.error(`[account-manager] Rotated to token #${this.currentIndex + 1}/${this.tokens.length} (rotation #${this.rotationCount})`);
|
|
167
|
+
return {
|
|
168
|
+
success: true,
|
|
169
|
+
token: nextState.token,
|
|
170
|
+
tokenIndex: this.currentIndex,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// All tokens are in cooldown - all exhausted
|
|
174
|
+
console.error(`[account-manager] All ${this.tokens.length} tokens exhausted or in cooldown`);
|
|
175
|
+
// Reset to first token anyway (best effort)
|
|
176
|
+
this.currentIndex = 0;
|
|
177
|
+
return {
|
|
178
|
+
success: false,
|
|
179
|
+
allExhausted: true,
|
|
180
|
+
error: `All ${this.tokens.length} tokens are rate limited or failed`,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Check if rotation should happen based on error type.
|
|
185
|
+
* Returns true for rate limits (429) and server errors (5xx).
|
|
186
|
+
*/
|
|
187
|
+
shouldRotate(statusCode, errorMessage) {
|
|
188
|
+
// No rotation if single token
|
|
189
|
+
if (this.tokens.length <= 1) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
// Rate limit
|
|
193
|
+
if (statusCode === 429) {
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
// Server errors (5xx)
|
|
197
|
+
if (statusCode && statusCode >= 500 && statusCode < 600) {
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
// Check error message for rate limit patterns
|
|
201
|
+
if (errorMessage) {
|
|
202
|
+
const lowerMsg = errorMessage.toLowerCase();
|
|
203
|
+
if (lowerMsg.includes('rate limit') ||
|
|
204
|
+
lowerMsg.includes('too many requests') ||
|
|
205
|
+
lowerMsg.includes('quota exceeded')) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get statistics about token usage.
|
|
213
|
+
*/
|
|
214
|
+
getStats() {
|
|
215
|
+
const now = Date.now();
|
|
216
|
+
const failedCount = this.tokens.filter(t => t.failedAt && (now - t.failedAt) < FAILED_TOKEN_COOLDOWN_MS).length;
|
|
217
|
+
return {
|
|
218
|
+
totalTokens: this.tokens.length,
|
|
219
|
+
currentIndex: this.currentIndex,
|
|
220
|
+
rotationCount: this.rotationCount,
|
|
221
|
+
lastRotation: this.lastRotationTime?.toISOString(),
|
|
222
|
+
failedTokens: failedCount,
|
|
223
|
+
availableTokens: this.tokens.length - failedCount,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Get a masked version of the current token for logging.
|
|
228
|
+
*/
|
|
229
|
+
getMaskedCurrentToken() {
|
|
230
|
+
const token = this.getCurrentToken();
|
|
231
|
+
if (!token)
|
|
232
|
+
return '(none)';
|
|
233
|
+
if (token.length <= 8)
|
|
234
|
+
return '****';
|
|
235
|
+
return `${token.slice(0, 4)}...${token.slice(-4)}`;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
export const accountManager = new AccountManager();
|
|
239
|
+
//# sourceMappingURL=account-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-manager.js","sourceRoot":"","sources":["../../src/services/account-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,sCAAsC;AAkBlF,MAAM,cAAc;IACV,MAAM,GAAiB,EAAE,CAAC;IAC1B,YAAY,GAAG,CAAC,CAAC;IACjB,aAAa,GAAG,CAAC,CAAC;IAClB,gBAAgB,CAAQ;IACxB,WAAW,GAAG,KAAK,CAAC;IAE5B;;;;;;OAMG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,wDAAwD;QACxD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,2EAA2E;QAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,mBAAmB;gBACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC9B,CAAC;QAED,6DAA6D;QAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrE,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,OAAO,CAAC,KAAK,CAAC,sCAAsC,IAAI,CAAC,MAAM,CAAC,MAAM,aAAa,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAgB;QACxB,wBAAwB;QACxB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACjD,KAAK;YACL,KAAK;YACL,YAAY,EAAE,CAAC;SAChB,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAElC,uBAAuB;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC3B,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;YAChC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC1F,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,SAAiB,SAAS;QACrC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,mCAAmC;YACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;QACxE,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC;YACpC,YAAY,CAAC,YAAY,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,MAAM,YAAY,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;QAC7H,CAAC;QAED,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,mCAAmC;YACnC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACjE,QAAQ,EAAE,CAAC;YAEX,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjD,qCAAqC;YACrC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,MAAM,iBAAiB,GAAG,wBAAwB,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAChF,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;oBAC1B,8BAA8B;oBAC9B,SAAS;gBACX,CAAC;gBACD,wCAAwC;gBACxC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC/B,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;YACtC,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;YAEnC,OAAO,CAAC,KAAK,CAAC,uCAAuC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,eAAe,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YAEtI,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,UAAU,EAAE,IAAI,CAAC,YAAY;aAC9B,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,MAAM,kCAAkC,CAAC,CAAC;QAE7F,4CAA4C;QAC5C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAEtB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,oCAAoC;SACrE,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,UAAmB,EAAE,YAAqB;QACrD,8BAA8B;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,aAAa;QACb,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sBAAsB;QACtB,IAAI,UAAU,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8CAA8C;QAC9C,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC/B,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACtC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ;QAQN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzC,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,wBAAwB,CAC5D,CAAC,MAAM,CAAC;QAET,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;YAClD,YAAY,EAAE,WAAW;YACzB,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW;SAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,QAAQ,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QACrC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code Fallback Runner (ai-sdk-provider-claude-code)
|
|
3
|
+
*
|
|
4
|
+
* Executes fallback tasks through the ben-vargas provider, which wraps
|
|
5
|
+
* @anthropic-ai/claude-agent-sdk with richer streaming, metadata, and errors.
|
|
6
|
+
*/
|
|
7
|
+
import { type FallbackReason } from '../types.js';
|
|
8
|
+
export interface ClaudeCodeRunOptions {
|
|
9
|
+
resumeSessionId?: string;
|
|
10
|
+
fallbackReason?: FallbackReason;
|
|
11
|
+
preferredModel?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function abortClaudeCodeSession(taskId: string, reason?: string): boolean;
|
|
14
|
+
export declare function runClaudeCodeSession(taskId: string, prompt: string, cwd: string, timeout: number, optionsOrResume?: string | ClaudeCodeRunOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=claude-code-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-runner.d.ts","sourceRoot":"","sources":["../../src/services/claude-code-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAS7F,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA6HD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiC,GAAG,OAAO,CAOzG;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GAAG,oBAAoB,GAC9C,OAAO,CAAC,IAAI,CAAC,CAgYf"}
|