0xkobold 0.5.2 → 0.6.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 (64) hide show
  1. package/README.md +88 -11
  2. package/dist/package.json +3 -3
  3. package/dist/skills/session-resume-skill.js +121 -0
  4. package/dist/skills/session-resume-skill.js.map +1 -0
  5. package/dist/src/agent/DraconicRunRegistry.js +0 -9
  6. package/dist/src/agent/DraconicRunRegistry.js.map +1 -1
  7. package/dist/src/agent/auth-profiles.js +290 -0
  8. package/dist/src/agent/auth-profiles.js.map +1 -0
  9. package/dist/src/agent/embedded-runner.js +115 -29
  10. package/dist/src/agent/embedded-runner.js.map +1 -1
  11. package/dist/src/agent/index.js +4 -0
  12. package/dist/src/agent/index.js.map +1 -1
  13. package/dist/src/agent/model-fallback.js +173 -0
  14. package/dist/src/agent/model-fallback.js.map +1 -0
  15. package/dist/src/agent/tools/spawn-agent.js.map +1 -1
  16. package/dist/src/cli/commands/gateway.js +4 -8
  17. package/dist/src/cli/commands/gateway.js.map +1 -1
  18. package/dist/src/cron/notifications.js +15 -5
  19. package/dist/src/cron/notifications.js.map +1 -1
  20. package/dist/src/cron/runner.js +15 -6
  21. package/dist/src/cron/runner.js.map +1 -1
  22. package/dist/src/event-bus/index.js.map +1 -1
  23. package/dist/src/extensions/core/gateway-status-extension.js +54 -0
  24. package/dist/src/extensions/core/gateway-status-extension.js.map +1 -0
  25. package/dist/src/gateway/gateway-server.js +383 -0
  26. package/dist/src/gateway/gateway-server.js.map +1 -0
  27. package/dist/src/gateway/index.js +15 -8
  28. package/dist/src/gateway/index.js.map +1 -1
  29. package/dist/src/gateway/methods/agent.js +348 -0
  30. package/dist/src/gateway/methods/agent.js.map +1 -0
  31. package/dist/src/gateway/methods/index.js +30 -0
  32. package/dist/src/gateway/methods/index.js.map +1 -0
  33. package/dist/src/gateway/methods/types.js +7 -0
  34. package/dist/src/gateway/methods/types.js.map +1 -0
  35. package/dist/src/gateway/persistence/AgentStore.js +6 -0
  36. package/dist/src/gateway/persistence/AgentStore.js.map +1 -1
  37. package/dist/src/gateway/protocol/frames.js +43 -0
  38. package/dist/src/gateway/protocol/frames.js.map +1 -0
  39. package/dist/src/gateway/protocol/index.js +5 -0
  40. package/dist/src/gateway/protocol/index.js.map +1 -0
  41. package/dist/src/gateway/quickstart.js +34 -0
  42. package/dist/src/gateway/quickstart.js.map +1 -0
  43. package/dist/src/index.js +33 -0
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/memory/memory-integration.js +204 -0
  46. package/dist/src/memory/memory-integration.js.map +1 -0
  47. package/dist/src/memory/session-memory-bridge.js +177 -0
  48. package/dist/src/memory/session-memory-bridge.js.map +1 -0
  49. package/dist/src/memory/session-resume.js +265 -0
  50. package/dist/src/memory/session-resume.js.map +1 -0
  51. package/dist/src/memory/session-store.js +224 -0
  52. package/dist/src/memory/session-store.js.map +1 -0
  53. package/dist/src/skills/framework.js +104 -16
  54. package/dist/src/skills/framework.js.map +1 -1
  55. package/dist/src/tui/components/footer.js +106 -0
  56. package/dist/src/tui/components/footer.js.map +1 -0
  57. package/dist/src/tui/components/status-bar.js +82 -16
  58. package/dist/src/tui/components/status-bar.js.map +1 -1
  59. package/dist/src/tui/gateway-chat-client.js +218 -0
  60. package/dist/src/tui/gateway-chat-client.js.map +1 -0
  61. package/dist/src/tui/index.js +1 -0
  62. package/dist/src/tui/index.js.map +1 -1
  63. package/package.json +3 -3
  64. package/skills/session-resume-skill.ts +150 -0
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Auth Profiles (Phase 4)
3
+ *
4
+ * Multiple API keys per provider with automatic rotation.
5
+ * Similar to koclaw's auth profile system.
6
+ */
7
+ import { Database } from "bun:sqlite";
8
+ import { mkdirSync } from "node:fs";
9
+ import { dirname, join } from "node:path";
10
+ import { eventBus } from "../event-bus";
11
+ import { getConfig } from "../config/loader";
12
+ const DB_PATH = join(process.env.HOME || "~", ".0xkobold", "auth-profiles.db");
13
+ let db = null;
14
+ let profileCache = new Map();
15
+ let providerOrder = new Map();
16
+ function getDb() {
17
+ if (db)
18
+ return db;
19
+ mkdirSync(dirname(DB_PATH), { recursive: true });
20
+ db = new Database(DB_PATH);
21
+ db.run(`
22
+ CREATE TABLE IF NOT EXISTS auth_profiles (
23
+ id TEXT PRIMARY KEY,
24
+ provider TEXT NOT NULL,
25
+ name TEXT NOT NULL,
26
+ api_key TEXT NOT NULL,
27
+ base_url TEXT,
28
+ created_at INTEGER NOT NULL,
29
+ last_used INTEGER,
30
+ failure_count INTEGER DEFAULT 0,
31
+ total_requests INTEGER DEFAULT 0,
32
+ disabled INTEGER DEFAULT 0
33
+ )
34
+ `);
35
+ db.run(`
36
+ CREATE INDEX IF NOT EXISTS idx_profiles_provider
37
+ ON auth_profiles(provider)
38
+ `);
39
+ // Load into cache
40
+ const rows = db.query("SELECT * FROM auth_profiles").all();
41
+ for (const row of rows) {
42
+ const profile = rowToProfile(row);
43
+ profileCache.set(profile.id, profile);
44
+ if (!profile.disabled) {
45
+ const order = providerOrder.get(profile.provider) || [];
46
+ order.push(profile.id);
47
+ providerOrder.set(profile.provider, order);
48
+ }
49
+ }
50
+ return db;
51
+ }
52
+ function rowToProfile(row) {
53
+ return {
54
+ id: row.id,
55
+ provider: row.provider,
56
+ name: row.name,
57
+ apiKey: row.api_key,
58
+ baseUrl: row.base_url,
59
+ createdAt: row.created_at,
60
+ lastUsed: row.last_used,
61
+ failureCount: row.failure_count || 0,
62
+ totalRequests: row.total_requests || 0,
63
+ disabled: Boolean(row.disabled),
64
+ };
65
+ }
66
+ function profileToRow(profile) {
67
+ return [
68
+ profile.id,
69
+ profile.provider,
70
+ profile.name,
71
+ profile.apiKey,
72
+ profile.baseUrl ?? null,
73
+ profile.createdAt,
74
+ profile.lastUsed ?? null,
75
+ profile.failureCount,
76
+ profile.totalRequests,
77
+ profile.disabled ? 1 : 0,
78
+ ];
79
+ }
80
+ // Profile CRUD
81
+ export function addAuthProfile(provider, name, apiKey, baseUrl) {
82
+ const db = getDb();
83
+ const id = `${provider}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
84
+ const profile = {
85
+ id,
86
+ provider,
87
+ name,
88
+ apiKey,
89
+ baseUrl,
90
+ createdAt: Date.now(),
91
+ failureCount: 0,
92
+ totalRequests: 0,
93
+ disabled: false,
94
+ };
95
+ db.run(`
96
+ INSERT INTO auth_profiles (id, provider, name, api_key, base_url, created_at, last_used, failure_count, total_requests, disabled)
97
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
98
+ `, profileToRow(profile));
99
+ profileCache.set(id, profile);
100
+ // Add to provider order
101
+ const order = providerOrder.get(provider) || [];
102
+ order.push(id);
103
+ providerOrder.set(provider, order);
104
+ eventBus.emit("auth-profile:added", { profileId: id, provider });
105
+ return profile;
106
+ }
107
+ export function removeAuthProfile(profileId) {
108
+ const db = getDb();
109
+ const profile = profileCache.get(profileId);
110
+ if (!profile)
111
+ return false;
112
+ db.run("DELETE FROM auth_profiles WHERE id = ?", [profileId]);
113
+ profileCache.delete(profileId);
114
+ // Remove from provider order
115
+ const order = providerOrder.get(profile.provider) || [];
116
+ const idx = order.indexOf(profileId);
117
+ if (idx > -1) {
118
+ order.splice(idx, 1);
119
+ providerOrder.set(profile.provider, order);
120
+ }
121
+ eventBus.emit("auth-profile:removed", { profileId, provider: profile.provider });
122
+ return true;
123
+ }
124
+ export function getAuthProfile(profileId) {
125
+ return profileCache.get(profileId);
126
+ }
127
+ export function listAuthProfiles(provider) {
128
+ const profiles = Array.from(profileCache.values());
129
+ if (provider) {
130
+ return profiles.filter((p) => p.provider === provider);
131
+ }
132
+ return profiles;
133
+ }
134
+ // Auth resolution with rotation
135
+ export function resolveAuthProfileOrder(provider) {
136
+ const order = providerOrder.get(provider) || [];
137
+ // Update from cache (filter disabled)
138
+ return order
139
+ .map((id) => profileCache.get(id))
140
+ .filter((p) => !!p && !p.disabled)
141
+ .sort((a, b) => {
142
+ // Prioritize by failure count, then by last used (least recently used first)
143
+ if (a.failureCount !== b.failureCount) {
144
+ return a.failureCount - b.failureCount;
145
+ }
146
+ return (a.lastUsed || 0) - (b.lastUsed || 0);
147
+ })
148
+ .map((p) => p.id);
149
+ }
150
+ export function getApiKeyForProvider(provider) {
151
+ const order = resolveAuthProfileOrder(provider);
152
+ for (const profileId of order) {
153
+ const profile = profileCache.get(profileId);
154
+ if (profile && !profile.disabled) {
155
+ return {
156
+ profileId,
157
+ apiKey: profile.apiKey,
158
+ baseUrl: profile.baseUrl,
159
+ };
160
+ }
161
+ }
162
+ return undefined;
163
+ }
164
+ // Usage tracking
165
+ export function markAuthProfileUsed(profileId) {
166
+ const profile = profileCache.get(profileId);
167
+ if (!profile)
168
+ return;
169
+ profile.lastUsed = Date.now();
170
+ profile.totalRequests++;
171
+ const db = getDb();
172
+ db.run("UPDATE auth_profiles SET last_used = ?, total_requests = total_requests + 1 WHERE id = ?", [Date.now(), profileId]);
173
+ eventBus.emit("auth-profile:used", { profileId });
174
+ }
175
+ export function markAuthProfileFailure(profileId, reason) {
176
+ const profile = profileCache.get(profileId);
177
+ if (!profile)
178
+ return { shouldDisable: false };
179
+ profile.failureCount++;
180
+ const db = getDb();
181
+ db.run("UPDATE auth_profiles SET failure_count = ? WHERE id = ?", [
182
+ profile.failureCount,
183
+ profileId,
184
+ ]);
185
+ // Disable after 5 failures
186
+ const shouldDisable = profile.failureCount >= 5;
187
+ if (shouldDisable) {
188
+ profile.disabled = true;
189
+ db.run("UPDATE auth_profiles SET disabled = 1 WHERE id = ?", [profileId]);
190
+ // Remove from provider order
191
+ const order = providerOrder.get(profile.provider) || [];
192
+ const idx = order.indexOf(profileId);
193
+ if (idx > -1) {
194
+ order.splice(idx, 1);
195
+ providerOrder.set(profile.provider, order);
196
+ }
197
+ }
198
+ eventBus.emit("auth-profile:failed", {
199
+ profileId,
200
+ provider: profile.provider,
201
+ reason,
202
+ failureCount: profile.failureCount,
203
+ disabled: shouldDisable,
204
+ });
205
+ return { shouldDisable };
206
+ }
207
+ export function markAuthProfileGood(profileId) {
208
+ const profile = profileCache.get(profileId);
209
+ if (!profile)
210
+ return;
211
+ if (profile.failureCount > 0) {
212
+ profile.failureCount = 0;
213
+ const db = getDb();
214
+ db.run("UPDATE auth_profiles SET failure_count = 0 WHERE id = ?", [profileId]);
215
+ eventBus.emit("auth-profile:recovered", { profileId, provider: profile.provider });
216
+ }
217
+ }
218
+ // Check if profile is rate limited
219
+ export function isProfileInCooldown(profileId, cooldownMs = 60000) {
220
+ const profile = profileCache.get(profileId);
221
+ if (!profile?.lastUsed) {
222
+ return { inCooldown: false };
223
+ }
224
+ const elapsed = Date.now() - profile.lastUsed;
225
+ if (elapsed < cooldownMs) {
226
+ return { inCooldown: true, remainingMs: cooldownMs - elapsed };
227
+ }
228
+ return { inCooldown: false };
229
+ }
230
+ // Rotation helper
231
+ export function rotateApiKey(provider) {
232
+ const order = providerOrder.get(provider) || [];
233
+ if (order.length <= 1) {
234
+ return getApiKeyForProvider(provider);
235
+ }
236
+ // Move first to end
237
+ const first = order.shift();
238
+ if (first) {
239
+ order.push(first);
240
+ providerOrder.set(provider, order);
241
+ }
242
+ return getApiKeyForProvider(provider);
243
+ }
244
+ // Reason resolution
245
+ export function resolveProfilesUnavailableReason(provider) {
246
+ const profiles = listAuthProfiles(provider);
247
+ if (profiles.length === 0) {
248
+ return `No auth profiles configured for ${provider}`;
249
+ }
250
+ const enabled = profiles.filter((p) => !p.disabled);
251
+ if (enabled.length === 0) {
252
+ return `All ${provider} auth profiles are disabled due to failures`;
253
+ }
254
+ return undefined;
255
+ }
256
+ // Config integration - auto-create from config
257
+ export function ensureAuthProfilesFromConfig() {
258
+ const config = getConfig();
259
+ if (!config)
260
+ return;
261
+ // Check for Anthropic key
262
+ if (config.anthropic?.apiKey) {
263
+ const existing = listAuthProfiles("anthropic").find((p) => p.apiKey === config.anthropic?.apiKey);
264
+ if (!existing) {
265
+ addAuthProfile("anthropic", "default", config.anthropic.apiKey);
266
+ }
267
+ }
268
+ // Check for OpenAI key
269
+ if (config.openai?.apiKey) {
270
+ const existing = listAuthProfiles("openai").find((p) => p.apiKey === config.openai?.apiKey);
271
+ if (!existing) {
272
+ addAuthProfile("openai", "default", config.openai.apiKey);
273
+ }
274
+ }
275
+ // Check for Ollama
276
+ if (config.ollama?.host) {
277
+ const existing = listAuthProfiles("ollama").find((p) => p.baseUrl === config.ollama?.host);
278
+ if (!existing) {
279
+ addAuthProfile("ollama", "default", "", config.ollama.host);
280
+ }
281
+ }
282
+ }
283
+ // Clear all (for testing)
284
+ export function clearAuthProfiles() {
285
+ const db = getDb();
286
+ db.run("DELETE FROM auth_profiles");
287
+ profileCache.clear();
288
+ providerOrder.clear();
289
+ }
290
+ //# sourceMappingURL=auth-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-profiles.js","sourceRoot":"","sources":["../../../src/agent/auth-profiles.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,21 @@
1
1
  /**
2
- * Embedded Agent Runner - v0.2.0
2
+ * Embedded Agent Runner - v0.3.0
3
3
  *
4
- * Wraps pi-coding-agent with custom system prompt injection.
5
- * Provides OpenClaw-style embedded mode while keeping Pi TUI.
4
+ * Wraps pi-coding-agent with full TUI settings sharing.
5
+ * Shares: extensions, model config, persona from IDENTITY.md/SOUL.md
6
6
  */
7
7
  import { loadBootstrapFiles, ensureDefaultBootstrap } from "./bootstrap-loader.js";
8
8
  import { buildSystemPrompt } from "./system-prompt.js";
9
+ import { config as piConfig } from "../pi-config.js";
10
+ import { getConfigValue } from "../config/loader.js";
9
11
  /**
10
- * Run agent with embedded mode (custom system prompt)
12
+ * Run agent with embedded mode (shares TUI settings)
11
13
  *
12
- * This is a stub implementation showing the architecture.
13
- * Full implementation requires pi-coding-agent SDK integration.
14
+ * Loads:
15
+ * - Extensions from pi-config.ts
16
+ * - Model from config (with override support)
17
+ * - Persona from IDENTITY.md/SOUL.md
18
+ * - Keybindings and settings
14
19
  */
15
20
  export async function runEmbeddedAgent(config) {
16
21
  const startTime = Date.now();
@@ -18,45 +23,109 @@ export async function runEmbeddedAgent(config) {
18
23
  console.log("[Embedded] Starting embedded agent run");
19
24
  console.log(`[Embedded] Workspace: ${workspaceDir}`);
20
25
  console.log(`[Embedded] Mode: ${config.mode || "default"}`);
21
- // 1. Ensure bootstrap files exist
26
+ // Load shared settings if requested
27
+ let extensions = config.extensions || [];
28
+ let model = config.model || "";
29
+ if (config.useTuiSettings !== false) {
30
+ console.log("[Embedded] Loading TUI shared settings...");
31
+ // Load extensions from pi-config
32
+ if (piConfig.extensions && extensions.length === 0) {
33
+ extensions = piConfig.extensions.filter((e) =>
34
+ // Filter out TUI-specific extensions
35
+ !e.includes('tui-integration') &&
36
+ !e.includes('tui'));
37
+ console.log(`[Embedded] Loaded ${extensions.length} extensions from pi-config`);
38
+ }
39
+ // Load model preference from config
40
+ if (!model) {
41
+ try {
42
+ const koboldConfig = getConfigValue('agents.defaults.model') ||
43
+ process.env.KOBOLD_MODEL ||
44
+ "ollama/kimi-k2.5:cloud";
45
+ model = koboldConfig;
46
+ console.log(`[Embedded] Using model from config: ${model}`);
47
+ }
48
+ catch {
49
+ model = process.env.KOBOLD_MODEL || "ollama/kimi-k2.5:cloud";
50
+ console.log(`[Embedded] Using default model: ${model}`);
51
+ }
52
+ }
53
+ // Load keybindings from pi-config
54
+ if (piConfig.keybindings) {
55
+ console.log(`[Embedded] Loaded ${Object.keys(piConfig.keybindings).length} keybindings`);
56
+ }
57
+ }
58
+ else {
59
+ console.log("[Embedded] Using standalone mode (no TUI settings)");
60
+ model = config.model || process.env.KOBOLD_MODEL || "ollama/kimi-k2.5:cloud";
61
+ }
62
+ // 1. Ensure bootstrap files exist (checks global ~/.0xkobold/ first)
22
63
  await ensureDefaultBootstrap(workspaceDir);
23
64
  // 2. Load bootstrap files (SOUL.md, IDENTITY.md, etc.)
24
65
  const bootstrapFiles = await loadBootstrapFiles(workspaceDir);
25
66
  console.log(`[Embedded] Loaded ${bootstrapFiles.filter(f => f.exists).length} bootstrap files`);
26
- // 3. Build custom system prompt
67
+ // 3. Build custom system prompt with persona context
27
68
  const systemPrompt = buildSystemPrompt({
28
- basePrompt: undefined, // Uses default
69
+ basePrompt: undefined,
29
70
  bootstrapFiles,
30
71
  workspace: workspaceDir,
31
72
  mode: config.mode,
32
- tools: config.extensions?.flatMap(e => e.tools || []),
73
+ tools: [],
33
74
  });
34
75
  console.log(`[Embedded] System prompt: ${systemPrompt.length} chars`);
35
- // 4. TODO(v0.5.2+): Integrate with pi-coding-agent SDK
36
- // This requires SDK linkage and is a larger architectural change
37
- // const { session } = await createAgentSession({
38
- // cwd: config.cwd,
39
- // // ... other config
40
- // });
41
- //
42
- // // Apply custom system prompt
43
- // const override = createSystemPromptOverride(systemPrompt);
44
- // applySystemPromptOverride(session, override);
45
- //
46
- // // Run
47
- // const result = await session.prompt(config.prompt);
48
- // For now, simulate the structure
76
+ // 4. Try to integrate with pi-coding-agent SDK
77
+ try {
78
+ const { createAgentSession } = await import('@mariozechner/pi-coding-agent').catch(() => ({ createAgentSession: null }));
79
+ if (createAgentSession) {
80
+ console.log('[Embedded] Using pi-coding-agent SDK');
81
+ // Create agent session with shared settings
82
+ const { session } = await createAgentSession({
83
+ cwd: config.cwd,
84
+ systemPrompt: systemPrompt,
85
+ extensions: extensions.length > 0 ? extensions : undefined,
86
+ model: model, // Pass model preference
87
+ settings: {
88
+ ...piConfig.settings,
89
+ '0xkobold.embedded': true,
90
+ '0xkobold.mode': config.mode || 'default',
91
+ },
92
+ });
93
+ // Run the prompt
94
+ const maxIterations = config.mode === 'build' ? 30 : 15;
95
+ const result = await session.prompt(config.prompt, maxIterations);
96
+ const duration = Date.now() - startTime;
97
+ return {
98
+ text: result || 'No response',
99
+ toolCalls: [],
100
+ metadata: {
101
+ duration,
102
+ tokens: systemPrompt.length / 4,
103
+ model,
104
+ extensions: extensions.length > 0 ? extensions : undefined,
105
+ },
106
+ };
107
+ }
108
+ }
109
+ catch (sdkError) {
110
+ console.log('[Embedded] SDK integration failed, falling back to simulation:', sdkError.message);
111
+ }
112
+ // Fallback: Simulate the structure
113
+ console.log('[Embedded] Running in simulation mode (SDK not available)');
49
114
  const simulatedResult = {
50
115
  text: `[Embedded mode simulation]\n\n` +
51
116
  `Bootstrap files loaded:\n` +
52
117
  bootstrapFiles
53
118
  .filter(f => f.exists)
54
119
  .map(f => `- ${f.name} (${f.size} chars)`)
55
- .join("\n"),
120
+ .join("\n") +
121
+ (model ? `\n\nModel: ${model}` : '') +
122
+ (extensions.length > 0 ? `\nExtensions: ${extensions.length}` : ''),
56
123
  toolCalls: [],
57
124
  metadata: {
58
125
  duration: Date.now() - startTime,
59
- tokens: systemPrompt.length / 4, // Rough estimate
126
+ tokens: systemPrompt.length / 4,
127
+ model,
128
+ extensions: extensions.length > 0 ? extensions : undefined,
60
129
  },
61
130
  };
62
131
  console.log(`[Embedded] Completed in ${simulatedResult.metadata.duration}ms`);
@@ -64,10 +133,27 @@ export async function runEmbeddedAgent(config) {
64
133
  }
65
134
  /**
66
135
  * Check if embedded mode is available
136
+ *
137
+ * Verifies pi-coding-agent SDK is properly linked and functional.
138
+ * Attempts dynamic import to check for SDK presence.
67
139
  */
68
- export function isEmbeddedModeAvailable() {
69
- // TODO(v0.6.0): Check if pi-coding-agent SDK is properly linked
70
- return true;
140
+ export async function isEmbeddedModeAvailable() {
141
+ try {
142
+ // Try to import pi-coding-agent SDK
143
+ const { createAgentSession } = await import('@mariozechner/pi-coding-agent');
144
+ // Check for required API
145
+ const hasSessionAPI = typeof createAgentSession === 'function';
146
+ if (!hasSessionAPI) {
147
+ console.log('[Embedded] pi-coding-agent SDK found but createAgentSession API unavailable');
148
+ return false;
149
+ }
150
+ console.log('[Embedded] pi-coding-agent SDK fully available');
151
+ return true;
152
+ }
153
+ catch (error) {
154
+ console.log('[Embedded] pi-coding-agent SDK not found:', error.message);
155
+ return false;
156
+ }
71
157
  }
72
158
  /**
73
159
  * Initialize embedded mode
@@ -1 +1 @@
1
- {"version":3,"file":"embedded-runner.js","sourceRoot":"","sources":["../../../src/agent/embedded-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAA8B,MAAM,oBAAoB,CAAC;AAqBnF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAE5D,kCAAkC;IAClC,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAE3C,uDAAuD;IACvD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAEhG,gCAAgC;IAChC,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,UAAU,EAAE,SAAS,EAAE,eAAe;QACtC,cAAc;QACd,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtE,uDAAuD;IACvD,iEAAiE;IACjE,iDAAiD;IACjD,qBAAqB;IACrB,wBAAwB;IACxB,MAAM;IACN,GAAG;IACH,gCAAgC;IAChC,6DAA6D;IAC7D,gDAAgD;IAChD,EAAE;IACF,SAAS;IACT,sDAAsD;IAEtD,kCAAkC;IAClC,MAAM,eAAe,GAAsB;QACzC,IAAI,EAAE,gCAAgC;YAChC,2BAA2B;YAC3B,cAAc;iBACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;iBACzC,IAAI,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,iBAAiB;SACnD;KACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAe,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;IAE9E,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,gEAAgE;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IACzD,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"embedded-runner.js","sourceRoot":"","sources":["../../../src/agent/embedded-runner.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,8 @@ export { loadUserProfile, saveUserProfile, learnPreference, ensureUserProfile, g
13
13
  export { loadPersonalityState, savePersonalityState, recordInteraction, adaptPersonality, getDynamicPersona, getPersonalityInsights, resetPersonality } from "./dynamic-personality.js";
14
14
  // Context Pruning (Phase 1.3)
15
15
  export { calculateTokenUsage, shouldPrune, pruneContext, recommendStrategy, autoPrune, estimateTokens, oldestFirstStrategy, importanceStrategy, smartCompactionStrategy, smartestPruningStrategy, DEFAULT_BUDGET, BUDGET_PRESETS } from "./context-pruning.js";
16
+ // Model Fallback (Phase 3)
17
+ export { runWithModelFallback, runWithSimpleFallback, FailoverError, isRetryableError, classifyFailoverReason, computeBackoff } from "./model-fallback.js";
18
+ // Auth Profiles (Phase 4)
19
+ export { addAuthProfile, removeAuthProfile, getAuthProfile, listAuthProfiles, getApiKeyForProvider, markAuthProfileUsed, markAuthProfileFailure, markAuthProfileGood, rotateApiKey, ensureAuthProfilesFromConfig, isProfileInCooldown, resolveProfilesUnavailableReason, clearAuthProfiles, } from "./auth-profiles.js";
16
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAKnG,uBAAuB;AACvB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGrG,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGvG,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAGtI,kCAAkC;AAClC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAExL,8BAA8B;AAC9B,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACf,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAKnG,uBAAuB;AACvB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGrG,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGvG,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAGtI,kCAAkC;AAClC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAExL,8BAA8B;AAC9B,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACf,MAAM,sBAAsB,CAAC;AAG9B,2BAA2B;AAC3B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAQ7B,0BAA0B;AAC1B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,4BAA4B,EAC5B,mBAAmB,EACnB,gCAAgC,EAChC,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}