@vybestack/llxprt-code-core 0.4.8 → 0.5.0-nightly.251102.f115237d

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 (210) hide show
  1. package/dist/prompt-config/defaults/default-prompts.json +4 -17
  2. package/dist/src/auth/precedence.d.ts +69 -9
  3. package/dist/src/auth/precedence.js +467 -69
  4. package/dist/src/auth/precedence.js.map +1 -1
  5. package/dist/src/auth/types.d.ts +2 -2
  6. package/dist/src/config/config.d.ts +15 -1
  7. package/dist/src/config/config.js +118 -6
  8. package/dist/src/config/config.js.map +1 -1
  9. package/dist/src/config/index.d.ts +6 -0
  10. package/dist/src/config/index.js +5 -0
  11. package/dist/src/config/index.js.map +1 -1
  12. package/dist/src/config/profileManager.d.ts +23 -3
  13. package/dist/src/config/profileManager.js +54 -7
  14. package/dist/src/config/profileManager.js.map +1 -1
  15. package/dist/src/config/subagentManager.d.ts +96 -0
  16. package/dist/src/config/subagentManager.js +371 -0
  17. package/dist/src/config/subagentManager.js.map +1 -0
  18. package/dist/src/config/types.d.ts +18 -0
  19. package/dist/src/config/types.js +3 -0
  20. package/dist/src/config/types.js.map +1 -0
  21. package/dist/src/core/client.d.ts +27 -7
  22. package/dist/src/core/client.js +217 -55
  23. package/dist/src/core/client.js.map +1 -1
  24. package/dist/src/core/contentGenerator.d.ts +3 -1
  25. package/dist/src/core/contentGenerator.js +3 -0
  26. package/dist/src/core/contentGenerator.js.map +1 -1
  27. package/dist/src/core/coreToolScheduler.d.ts +1 -5
  28. package/dist/src/core/coreToolScheduler.js +95 -23
  29. package/dist/src/core/coreToolScheduler.js.map +1 -1
  30. package/dist/src/core/geminiChat.d.ts +42 -12
  31. package/dist/src/core/geminiChat.js +405 -205
  32. package/dist/src/core/geminiChat.js.map +1 -1
  33. package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -2
  34. package/dist/src/core/nonInteractiveToolExecutor.js +94 -10
  35. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  36. package/dist/src/core/subagent.d.ts +86 -7
  37. package/dist/src/core/subagent.js +809 -79
  38. package/dist/src/core/subagent.js.map +1 -1
  39. package/dist/src/core/subagentOrchestrator.d.ts +73 -0
  40. package/dist/src/core/subagentOrchestrator.js +383 -0
  41. package/dist/src/core/subagentOrchestrator.js.map +1 -0
  42. package/dist/src/core/subagentScheduler.d.ts +16 -0
  43. package/dist/src/core/subagentScheduler.js +7 -0
  44. package/dist/src/core/subagentScheduler.js.map +1 -0
  45. package/dist/src/core/turn.d.ts +5 -1
  46. package/dist/src/core/turn.js +5 -1
  47. package/dist/src/core/turn.js.map +1 -1
  48. package/dist/src/hooks/tool-render-suppression-hook.js +6 -1
  49. package/dist/src/hooks/tool-render-suppression-hook.js.map +1 -1
  50. package/dist/src/ide/ideContext.d.ts +32 -32
  51. package/dist/src/index.d.ts +19 -1
  52. package/dist/src/index.js +15 -2
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/interfaces/index.d.ts +1 -0
  55. package/dist/src/interfaces/index.js +4 -0
  56. package/dist/src/interfaces/index.js.map +1 -0
  57. package/dist/src/interfaces/nodejs-error.interface.d.ts +4 -0
  58. package/dist/src/interfaces/nodejs-error.interface.js +2 -0
  59. package/dist/src/interfaces/nodejs-error.interface.js.map +1 -0
  60. package/dist/src/parsers/TextToolCallParser.js +41 -1
  61. package/dist/src/parsers/TextToolCallParser.js.map +1 -1
  62. package/dist/src/prompt-config/defaults/core.md +15 -0
  63. package/dist/src/prompt-config/defaults/providers/gemini/core.md +203 -119
  64. package/dist/src/prompt-config/defaults/tool-defaults.js +2 -0
  65. package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -1
  66. package/dist/src/prompt-config/defaults/tools/list-subagents.md +7 -0
  67. package/dist/src/prompt-config/defaults/tools/task.md +8 -0
  68. package/dist/src/providers/BaseProvider.d.ts +115 -30
  69. package/dist/src/providers/BaseProvider.js +445 -109
  70. package/dist/src/providers/BaseProvider.js.map +1 -1
  71. package/dist/src/providers/IProvider.d.ts +50 -18
  72. package/dist/src/providers/LoggingProviderWrapper.d.ts +60 -16
  73. package/dist/src/providers/LoggingProviderWrapper.js +213 -60
  74. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  75. package/dist/src/providers/ProviderManager.d.ts +73 -2
  76. package/dist/src/providers/ProviderManager.js +492 -40
  77. package/dist/src/providers/ProviderManager.js.map +1 -1
  78. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +35 -38
  79. package/dist/src/providers/anthropic/AnthropicProvider.js +222 -227
  80. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  81. package/dist/src/providers/errors.d.ts +86 -0
  82. package/dist/src/providers/errors.js +89 -0
  83. package/dist/src/providers/errors.js.map +1 -1
  84. package/dist/src/providers/gemini/GeminiProvider.d.ts +101 -41
  85. package/dist/src/providers/gemini/GeminiProvider.js +386 -311
  86. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  87. package/dist/src/providers/openai/ConversationCache.d.ts +5 -3
  88. package/dist/src/providers/openai/ConversationCache.js +93 -32
  89. package/dist/src/providers/openai/ConversationCache.js.map +1 -1
  90. package/dist/src/providers/openai/OpenAIProvider.d.ts +82 -42
  91. package/dist/src/providers/openai/OpenAIProvider.js +373 -532
  92. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  93. package/dist/src/providers/openai/getOpenAIProviderInfo.d.ts +1 -1
  94. package/dist/src/providers/openai/getOpenAIProviderInfo.js +52 -22
  95. package/dist/src/providers/openai/getOpenAIProviderInfo.js.map +1 -1
  96. package/dist/src/providers/openai/openaiRequestParams.d.ts +7 -0
  97. package/dist/src/providers/openai/openaiRequestParams.js +66 -0
  98. package/dist/src/providers/openai/openaiRequestParams.js.map +1 -0
  99. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +6 -33
  100. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +84 -183
  101. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -1
  102. package/dist/src/providers/types/providerRuntime.d.ts +17 -0
  103. package/dist/src/providers/types/providerRuntime.js +7 -0
  104. package/dist/src/providers/types/providerRuntime.js.map +1 -0
  105. package/dist/src/providers/utils/authToken.d.ts +12 -0
  106. package/dist/src/providers/utils/authToken.js +17 -0
  107. package/dist/src/providers/utils/authToken.js.map +1 -0
  108. package/dist/src/providers/utils/userMemory.d.ts +8 -0
  109. package/dist/src/providers/utils/userMemory.js +34 -0
  110. package/dist/src/providers/utils/userMemory.js.map +1 -0
  111. package/dist/src/runtime/AgentRuntimeContext.d.ts +213 -0
  112. package/dist/src/runtime/AgentRuntimeContext.js +17 -0
  113. package/dist/src/runtime/AgentRuntimeContext.js.map +1 -0
  114. package/dist/src/runtime/AgentRuntimeLoader.d.ts +47 -0
  115. package/dist/src/runtime/AgentRuntimeLoader.js +122 -0
  116. package/dist/src/runtime/AgentRuntimeLoader.js.map +1 -0
  117. package/dist/src/runtime/AgentRuntimeState.d.ts +232 -0
  118. package/dist/src/runtime/AgentRuntimeState.js +439 -0
  119. package/dist/src/runtime/AgentRuntimeState.js.map +1 -0
  120. package/dist/src/runtime/RuntimeInvocationContext.d.ts +51 -0
  121. package/dist/src/runtime/RuntimeInvocationContext.js +52 -0
  122. package/dist/src/runtime/RuntimeInvocationContext.js.map +1 -0
  123. package/dist/src/runtime/createAgentRuntimeContext.d.ts +7 -0
  124. package/dist/src/runtime/createAgentRuntimeContext.js +58 -0
  125. package/dist/src/runtime/createAgentRuntimeContext.js.map +1 -0
  126. package/dist/src/runtime/index.d.ts +13 -0
  127. package/dist/src/runtime/index.js +14 -0
  128. package/dist/src/runtime/index.js.map +1 -0
  129. package/dist/src/runtime/providerRuntimeContext.d.ts +30 -0
  130. package/dist/src/runtime/providerRuntimeContext.js +70 -0
  131. package/dist/src/runtime/providerRuntimeContext.js.map +1 -0
  132. package/dist/src/runtime/runtimeAdapters.d.ts +22 -0
  133. package/dist/src/runtime/runtimeAdapters.js +81 -0
  134. package/dist/src/runtime/runtimeAdapters.js.map +1 -0
  135. package/dist/src/runtime/runtimeStateFactory.d.ts +21 -0
  136. package/dist/src/runtime/runtimeStateFactory.js +104 -0
  137. package/dist/src/runtime/runtimeStateFactory.js.map +1 -0
  138. package/dist/src/services/todo-context-tracker.d.ts +10 -8
  139. package/dist/src/services/todo-context-tracker.js +26 -10
  140. package/dist/src/services/todo-context-tracker.js.map +1 -1
  141. package/dist/src/services/tool-call-tracker-service.d.ts +11 -7
  142. package/dist/src/services/tool-call-tracker-service.js +89 -29
  143. package/dist/src/services/tool-call-tracker-service.js.map +1 -1
  144. package/dist/src/settings/SettingsService.d.ts +4 -0
  145. package/dist/src/settings/SettingsService.js +58 -2
  146. package/dist/src/settings/SettingsService.js.map +1 -1
  147. package/dist/src/settings/settingsServiceInstance.d.ts +6 -1
  148. package/dist/src/settings/settingsServiceInstance.js +28 -8
  149. package/dist/src/settings/settingsServiceInstance.js.map +1 -1
  150. package/dist/src/telemetry/loggers.d.ts +5 -1
  151. package/dist/src/telemetry/loggers.js.map +1 -1
  152. package/dist/src/telemetry/loggers.test.circular.js +4 -0
  153. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  154. package/dist/src/telemetry/metrics.d.ts +3 -1
  155. package/dist/src/telemetry/metrics.js.map +1 -1
  156. package/dist/src/telemetry/types.d.ts +1 -0
  157. package/dist/src/telemetry/types.js +3 -0
  158. package/dist/src/telemetry/types.js.map +1 -1
  159. package/dist/src/test-utils/index.d.ts +2 -0
  160. package/dist/src/test-utils/index.js +2 -0
  161. package/dist/src/test-utils/index.js.map +1 -1
  162. package/dist/src/test-utils/mockWorkspaceContext.d.ts +0 -3
  163. package/dist/src/test-utils/mockWorkspaceContext.js +3 -4
  164. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -1
  165. package/dist/src/test-utils/providerCallOptions.d.ts +43 -0
  166. package/dist/src/test-utils/providerCallOptions.js +137 -0
  167. package/dist/src/test-utils/providerCallOptions.js.map +1 -0
  168. package/dist/src/test-utils/runtime.d.ts +92 -0
  169. package/dist/src/test-utils/runtime.js +226 -0
  170. package/dist/src/test-utils/runtime.js.map +1 -0
  171. package/dist/src/test-utils/tools.d.ts +4 -4
  172. package/dist/src/test-utils/tools.js +20 -10
  173. package/dist/src/test-utils/tools.js.map +1 -1
  174. package/dist/src/tools/list-subagents.d.ts +31 -0
  175. package/dist/src/tools/list-subagents.js +109 -0
  176. package/dist/src/tools/list-subagents.js.map +1 -0
  177. package/dist/src/tools/task.d.ts +87 -0
  178. package/dist/src/tools/task.js +427 -0
  179. package/dist/src/tools/task.js.map +1 -0
  180. package/dist/src/tools/todo-read.js +1 -1
  181. package/dist/src/tools/todo-read.js.map +1 -1
  182. package/dist/src/tools/todo-store.js +4 -2
  183. package/dist/src/tools/todo-store.js.map +1 -1
  184. package/dist/src/tools/todo-write.js +4 -2
  185. package/dist/src/tools/todo-write.js.map +1 -1
  186. package/dist/src/tools/tool-error.d.ts +1 -0
  187. package/dist/src/tools/tool-error.js +1 -0
  188. package/dist/src/tools/tool-error.js.map +1 -1
  189. package/dist/src/tools/tool-registry.d.ts +2 -0
  190. package/dist/src/tools/tool-registry.js +46 -21
  191. package/dist/src/tools/tool-registry.js.map +1 -1
  192. package/dist/src/types/modelParams.d.ts +4 -0
  193. package/dist/src/utils/gitIgnoreParser.js +15 -3
  194. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  195. package/package.json +1 -1
  196. package/dist/src/prompt-config/defaults/providers/anthropic/core.md +0 -97
  197. package/dist/src/prompt-config/defaults/providers/anthropic/tools/glob.md +0 -34
  198. package/dist/src/prompt-config/defaults/providers/anthropic/tools/list-directory.md +0 -11
  199. package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-file.md +0 -14
  200. package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-many-files.md +0 -31
  201. package/dist/src/prompt-config/defaults/providers/anthropic/tools/replace.md +0 -41
  202. package/dist/src/prompt-config/defaults/providers/anthropic/tools/run-shell-command.md +0 -32
  203. package/dist/src/prompt-config/defaults/providers/anthropic/tools/save-memory.md +0 -35
  204. package/dist/src/prompt-config/defaults/providers/anthropic/tools/search-file-content.md +0 -44
  205. package/dist/src/prompt-config/defaults/providers/anthropic/tools/todo-write.md +0 -45
  206. package/dist/src/prompt-config/defaults/providers/anthropic/tools/write-file.md +0 -11
  207. package/dist/src/prompt-config/defaults/providers/openai/core.md +0 -97
  208. package/dist/src/prompt-config/defaults/providers/openai/tools/todo-pause.md +0 -28
  209. package/dist/src/prompt-config/defaults/providers/openai/tools/todo-read.md +0 -5
  210. package/dist/src/prompt-config/defaults/providers/openai/tools/todo-write.md +0 -45
@@ -17,7 +17,288 @@
17
17
  import * as fs from 'node:fs/promises';
18
18
  import * as path from 'node:path';
19
19
  import * as os from 'node:os';
20
- import { getSettingsService } from '../settings/settingsServiceInstance.js';
20
+ import { getActiveProviderRuntimeContext, } from '../runtime/providerRuntimeContext.js';
21
+ const runtimeScopedStates = new Map();
22
+ let legacyRuntimeScopeWarningEmitted = false;
23
+ function maskToken(token) {
24
+ if (!token) {
25
+ return '[redacted]';
26
+ }
27
+ const trimmed = token.replace(/\s+/g, '');
28
+ if (trimmed.length <= 4) {
29
+ return '*'.repeat(trimmed.length);
30
+ }
31
+ if (trimmed.length <= 8) {
32
+ return `${trimmed.slice(0, 2)}***${trimmed.slice(-2)}`;
33
+ }
34
+ return `${trimmed.slice(0, 4)}…${trimmed.slice(-4)}`;
35
+ }
36
+ function normalizeExpiry(expiry) {
37
+ if (!expiry || Number.isNaN(expiry)) {
38
+ return undefined;
39
+ }
40
+ return expiry > 1_000_000_000_000 ? expiry : expiry * 1000;
41
+ }
42
+ function resolveProfileId(settingsService) {
43
+ // Prefer explicit profile tracking, fall back to stored value or default.
44
+ const maybeGetName = settingsService.getCurrentProfileName;
45
+ if (typeof maybeGetName === 'function') {
46
+ const profileName = maybeGetName.call(settingsService);
47
+ if (profileName && profileName.trim()) {
48
+ return profileName.trim();
49
+ }
50
+ }
51
+ const currentProfile = settingsService.get('currentProfile');
52
+ if (typeof currentProfile === 'string' && currentProfile.trim()) {
53
+ return currentProfile.trim();
54
+ }
55
+ return 'default';
56
+ }
57
+ function buildCacheKey(runtimeId, providerId, profileId) {
58
+ return `${runtimeId}::${providerId}::${profileId}`;
59
+ }
60
+ function toPublicEntry(entry, overrides) {
61
+ const summary = {
62
+ key: entry.key,
63
+ providerId: entry.providerId,
64
+ profileId: entry.profileId,
65
+ runtimeAuthScopeId: entry.runtimeAuthScopeId,
66
+ createdAt: entry.createdAt,
67
+ expiresAt: entry.expiresAt,
68
+ preview: maskToken(entry.token),
69
+ stale: entry.stale,
70
+ };
71
+ return overrides ? { ...summary, ...overrides } : summary;
72
+ }
73
+ function updateMetadataEntry(state, entry, summary) {
74
+ const snapshot = summary ?? toPublicEntry(entry);
75
+ const existingIndex = state.metadata.cacheEntries.findIndex((item) => item.key === snapshot.key);
76
+ if (existingIndex >= 0) {
77
+ state.metadata.cacheEntries[existingIndex] = snapshot;
78
+ }
79
+ else {
80
+ state.metadata.cacheEntries.push(snapshot);
81
+ }
82
+ state.metadata.metrics.lastUpdated = Date.now();
83
+ }
84
+ function ensureRuntimeState(context) {
85
+ const runtimeId = context.runtimeId ?? 'legacy-singleton';
86
+ let state = runtimeScopedStates.get(runtimeId);
87
+ if (!state) {
88
+ const metadata = {
89
+ runtimeAuthScopeId: runtimeId,
90
+ cacheEntries: [],
91
+ cancellationHooks: [],
92
+ revokedTokens: [],
93
+ metrics: {
94
+ hits: 0,
95
+ misses: 0,
96
+ lastUpdated: Date.now(),
97
+ },
98
+ };
99
+ state = {
100
+ runtimeAuthScopeId: runtimeId,
101
+ entries: new Map(),
102
+ metadata,
103
+ settingsSubscriptions: [],
104
+ };
105
+ runtimeScopedStates.set(runtimeId, state);
106
+ }
107
+ if (!context.metadata) {
108
+ context.metadata = {};
109
+ }
110
+ context.metadata.runtimeAuthScope = state.metadata;
111
+ if (runtimeId === 'legacy-singleton' &&
112
+ !legacyRuntimeScopeWarningEmitted &&
113
+ process.env.DEBUG) {
114
+ console.warn('AuthPrecedenceResolver invoked without runtimeId; using legacy singleton auth cache.');
115
+ legacyRuntimeScopeWarningEmitted = true;
116
+ }
117
+ return state;
118
+ }
119
+ function recordCacheHit(state) {
120
+ state.metadata.metrics.hits += 1;
121
+ state.metadata.metrics.lastUpdated = Date.now();
122
+ }
123
+ function recordCacheMiss(state) {
124
+ state.metadata.metrics.misses += 1;
125
+ state.metadata.metrics.lastUpdated = Date.now();
126
+ }
127
+ function getValidCachedEntry(state, providerId, profileId) {
128
+ const cacheKey = buildCacheKey(state.runtimeAuthScopeId, providerId, profileId);
129
+ const entry = state.entries.get(cacheKey);
130
+ if (!entry) {
131
+ return null;
132
+ }
133
+ if (entry.stale) {
134
+ return null;
135
+ }
136
+ if (entry.expiresAt && entry.expiresAt <= Date.now()) {
137
+ invalidateEntry(state, cacheKey, 'expired');
138
+ return null;
139
+ }
140
+ entry.updatedAt = Date.now();
141
+ updateMetadataEntry(state, entry);
142
+ return entry;
143
+ }
144
+ function registerSettingsSubscriptions(state, settingsService, providerId) {
145
+ if (state.settingsService === settingsService) {
146
+ return;
147
+ }
148
+ for (const unsubscribe of state.settingsSubscriptions) {
149
+ try {
150
+ unsubscribe();
151
+ }
152
+ catch (error) {
153
+ if (process.env.DEBUG) {
154
+ console.debug('Failed to remove runtime auth scope subscription:', error);
155
+ }
156
+ }
157
+ }
158
+ state.settingsSubscriptions = [];
159
+ state.settingsService = settingsService;
160
+ const handleProviderChange = (...args) => {
161
+ const [event] = args;
162
+ const payload = (event ?? {});
163
+ if (payload.provider === providerId) {
164
+ invalidateMatchingEntries(state, (entry) => entry.providerId === providerId, 'provider-change');
165
+ }
166
+ };
167
+ settingsService.on('provider-change', handleProviderChange);
168
+ state.settingsSubscriptions.push(() => settingsService.off('provider-change', handleProviderChange));
169
+ const handleProfileChange = (...args) => {
170
+ const [event] = args;
171
+ const payload = (event ?? {});
172
+ if (payload.key === 'currentProfile') {
173
+ invalidateMatchingEntries(state, () => true, 'profile-change');
174
+ }
175
+ };
176
+ settingsService.on('change', handleProfileChange);
177
+ state.settingsSubscriptions.push(() => settingsService.off('change', handleProfileChange));
178
+ const handleCleared = (..._args) => {
179
+ invalidateMatchingEntries(state, () => true, 'settings-cleared');
180
+ };
181
+ settingsService.on('cleared', handleCleared);
182
+ state.settingsSubscriptions.push(() => settingsService.off('cleared', handleCleared));
183
+ }
184
+ function invalidateMatchingEntries(state, predicate, reason) {
185
+ const summaries = [];
186
+ for (const entry of [...state.entries.values()]) {
187
+ if (predicate(entry)) {
188
+ summaries.push(invalidateEntry(state, entry.key, reason));
189
+ }
190
+ }
191
+ return summaries;
192
+ }
193
+ function storeRuntimeScopedToken(state, providerId, profileId, token, oauthToken) {
194
+ const cacheKey = buildCacheKey(state.runtimeAuthScopeId, providerId, profileId);
195
+ const expiresAt = normalizeExpiry(oauthToken?.expiry ?? null);
196
+ const now = Date.now();
197
+ let entry = state.entries.get(cacheKey);
198
+ if (!entry) {
199
+ entry = {
200
+ key: cacheKey,
201
+ providerId,
202
+ profileId,
203
+ runtimeAuthScopeId: state.runtimeAuthScopeId,
204
+ token,
205
+ createdAt: now,
206
+ updatedAt: now,
207
+ expiresAt,
208
+ stale: false,
209
+ };
210
+ state.entries.set(cacheKey, entry);
211
+ }
212
+ else {
213
+ entry.token = token;
214
+ entry.updatedAt = now;
215
+ entry.expiresAt = expiresAt;
216
+ entry.stale = false;
217
+ }
218
+ if (entry.cancellationHook) {
219
+ state.metadata.cancellationHooks = state.metadata.cancellationHooks.filter((hook) => hook !== entry.cancellationHook);
220
+ }
221
+ const cancellationHook = () => {
222
+ invalidateEntry(state, cacheKey, 'cancellation-hook');
223
+ };
224
+ entry.cancellationHook = cancellationHook;
225
+ state.metadata.cancellationHooks.push(cancellationHook);
226
+ updateMetadataEntry(state, entry, toPublicEntry(entry));
227
+ }
228
+ function invalidateEntry(state, cacheKey, reason) {
229
+ const entry = state.entries.get(cacheKey);
230
+ if (!entry) {
231
+ const summary = {
232
+ key: cacheKey,
233
+ providerId: 'unknown',
234
+ profileId: 'default',
235
+ runtimeAuthScopeId: state.runtimeAuthScopeId,
236
+ preview: '[revoked]',
237
+ createdAt: Date.now(),
238
+ expiresAt: undefined,
239
+ stale: true,
240
+ reason,
241
+ };
242
+ state.metadata.revokedTokens.push(summary);
243
+ state.metadata.metrics.lastUpdated = Date.now();
244
+ return summary;
245
+ }
246
+ entry.stale = true;
247
+ entry.updatedAt = Date.now();
248
+ const summary = toPublicEntry(entry, { stale: true, reason });
249
+ state.entries.delete(cacheKey);
250
+ updateMetadataEntry(state, entry, summary);
251
+ if (entry.cancellationHook) {
252
+ state.metadata.cancellationHooks = state.metadata.cancellationHooks.filter((hook) => hook !== entry.cancellationHook);
253
+ }
254
+ state.metadata.revokedTokens.push(summary);
255
+ state.metadata.metrics.lastUpdated = Date.now();
256
+ entry.token = '';
257
+ entry.expiresAt = undefined;
258
+ entry.cancellationHook = undefined;
259
+ return summary;
260
+ }
261
+ /**
262
+ * @plan PLAN-20251018-STATELESSPROVIDER2.P18
263
+ * @requirement REQ-SP2-004
264
+ * @pseudocode auth-runtime-scope.md lines 7-7
265
+ * Flush scoped credentials for a runtime and return revocation metadata.
266
+ */
267
+ export function flushRuntimeAuthScope(runtimeId) {
268
+ const state = runtimeScopedStates.get(runtimeId);
269
+ if (!state) {
270
+ return { runtimeId, revokedTokens: [] };
271
+ }
272
+ const revokedTokens = [];
273
+ for (const key of [...state.entries.keys()]) {
274
+ revokedTokens.push(invalidateEntry(state, key, 'runtime-dispose'));
275
+ }
276
+ for (const unsubscribe of state.settingsSubscriptions) {
277
+ try {
278
+ unsubscribe();
279
+ }
280
+ catch (error) {
281
+ if (process.env.DEBUG) {
282
+ console.debug('Failed to clean runtime auth scope subscription:', error);
283
+ }
284
+ }
285
+ }
286
+ state.settingsSubscriptions = [];
287
+ state.settingsService = undefined;
288
+ state.metadata.cancellationHooks = [];
289
+ state.metadata.cacheEntries = state.metadata.cacheEntries.map((entry) => ({
290
+ ...entry,
291
+ stale: true,
292
+ }));
293
+ state.metadata.metrics.lastUpdated = Date.now();
294
+ runtimeScopedStates.delete(runtimeId);
295
+ return { runtimeId, revokedTokens };
296
+ }
297
+ /**
298
+ * Check if authOnly mode is enabled (OAuth-only authentication)
299
+ * @param value The authOnly setting value from SettingsService
300
+ * @returns true if authOnly is enabled, false otherwise
301
+ */
21
302
  function isAuthOnlyEnabled(value) {
22
303
  if (typeof value === 'boolean') {
23
304
  return value;
@@ -36,24 +317,59 @@ function isAuthOnlyEnabled(value) {
36
317
  export class AuthPrecedenceResolver {
37
318
  config;
38
319
  oauthManager;
39
- constructor(config, oauthManager) {
320
+ settingsService;
321
+ constructor(config, oauthManager, settingsService) {
40
322
  this.config = config;
41
323
  this.oauthManager = oauthManager;
324
+ this.settingsService = settingsService;
42
325
  }
43
326
  /**
327
+ * @plan PLAN-20251018-STATELESSPROVIDER2.P06
328
+ * @requirement REQ-SP2-001
329
+ * @pseudocode base-provider-call-contract.md lines 1-2
330
+ */
331
+ setSettingsService(settingsService) {
332
+ if (!settingsService) {
333
+ this.settingsService = undefined;
334
+ return;
335
+ }
336
+ this.settingsService = settingsService;
337
+ }
338
+ /**
339
+ * @plan PLAN-20251018-STATELESSPROVIDER2.P06
340
+ * @requirement REQ-SP2-001
341
+ * @pseudocode base-provider-call-contract.md lines 1-2
342
+ */
343
+ resolveSettingsService(override) {
344
+ if (override) {
345
+ return override;
346
+ }
347
+ if (this.settingsService) {
348
+ return this.settingsService;
349
+ }
350
+ const context = getActiveProviderRuntimeContext();
351
+ if (!context?.settingsService) {
352
+ throw new Error('Active provider runtime context not available');
353
+ }
354
+ this.settingsService = context.settingsService;
355
+ return this.settingsService;
356
+ }
357
+ /**
358
+ * @plan PLAN-20251018-STATELESSPROVIDER2.P06
359
+ * @requirement REQ-SP2-001
360
+ * @pseudocode base-provider-call-contract.md lines 1-3
44
361
  * Resolves authentication using the full precedence chain
45
362
  * Returns the first available authentication method or null if none found
46
363
  */
47
- async resolveAuthentication() {
48
- const settingsService = getSettingsService();
364
+ async resolveAuthentication(options) {
365
+ const includeOAuth = options?.includeOAuth ?? true;
366
+ const settingsService = this.resolveSettingsService(options?.settingsService ?? undefined);
49
367
  const authOnly = isAuthOnlyEnabled(settingsService.get('authOnly'));
50
368
  if (!authOnly) {
51
- // 1. Check /key command key (highest priority) - stored in SettingsService
52
369
  const authKey = settingsService.get('auth-key');
53
370
  if (authKey && typeof authKey === 'string' && authKey.trim() !== '') {
54
371
  return authKey;
55
372
  }
56
- // 2. Check /keyfile command keyfile - stored in SettingsService
57
373
  const authKeyfile = settingsService.get('auth-keyfile');
58
374
  if (authKeyfile && typeof authKeyfile === 'string') {
59
375
  try {
@@ -68,7 +384,11 @@ export class AuthPrecedenceResolver {
68
384
  }
69
385
  }
70
386
  }
71
- // 3. Check environment variables
387
+ if (this.config.apiKey &&
388
+ typeof this.config.apiKey === 'string' &&
389
+ this.config.apiKey.trim() !== '') {
390
+ return this.config.apiKey;
391
+ }
72
392
  if (this.config.envKeyNames && this.config.envKeyNames.length > 0) {
73
393
  for (const envVarName of this.config.envKeyNames) {
74
394
  const envValue = process.env[envVarName];
@@ -78,104 +398,182 @@ export class AuthPrecedenceResolver {
78
398
  }
79
399
  }
80
400
  }
81
- // 4. OAuth (if enabled and supported, or forced via authOnly)
82
- const oauthToken = await this.resolveOAuthAuthentication();
83
- if (oauthToken) {
84
- return oauthToken;
401
+ if (includeOAuth &&
402
+ this.config.isOAuthEnabled &&
403
+ this.config.supportsOAuth &&
404
+ this.oauthManager &&
405
+ this.config.oauthProvider) {
406
+ const providerId = this.config.providerId ??
407
+ this.config.oauthProvider ??
408
+ this.config.envKeyNames?.[0] ??
409
+ 'unknown-provider';
410
+ const profileId = resolveProfileId(settingsService);
411
+ let runtimeContext = null;
412
+ let runtimeState = null;
413
+ try {
414
+ runtimeContext = getActiveProviderRuntimeContext();
415
+ runtimeState = ensureRuntimeState(runtimeContext);
416
+ registerSettingsSubscriptions(runtimeState, settingsService, providerId);
417
+ }
418
+ catch {
419
+ runtimeContext = null;
420
+ runtimeState = null;
421
+ }
422
+ const managerWithCheck = this.oauthManager;
423
+ if (managerWithCheck.isOAuthEnabled &&
424
+ typeof managerWithCheck.isOAuthEnabled === 'function') {
425
+ let isEnabledByManager;
426
+ try {
427
+ const enabledResult = managerWithCheck.isOAuthEnabled(this.config.oauthProvider);
428
+ isEnabledByManager =
429
+ typeof enabledResult === 'boolean'
430
+ ? enabledResult
431
+ : await enabledResult;
432
+ }
433
+ catch (error) {
434
+ if (process.env.DEBUG) {
435
+ console.debug(`Failed to determine OAuth enablement for ${this.config.oauthProvider}:`, error);
436
+ }
437
+ isEnabledByManager = undefined;
438
+ }
439
+ if (isEnabledByManager === false) {
440
+ if (runtimeState) {
441
+ const cacheKey = buildCacheKey(runtimeState.runtimeAuthScopeId, providerId, profileId);
442
+ if (runtimeState.entries.has(cacheKey)) {
443
+ invalidateEntry(runtimeState, cacheKey, 'oauth-disabled');
444
+ }
445
+ }
446
+ return null;
447
+ }
448
+ }
449
+ if (runtimeState) {
450
+ const cachedEntry = getValidCachedEntry(runtimeState, providerId, profileId);
451
+ if (cachedEntry) {
452
+ recordCacheHit(runtimeState);
453
+ return cachedEntry.token;
454
+ }
455
+ recordCacheMiss(runtimeState);
456
+ }
457
+ try {
458
+ const requestMetadata = {
459
+ runtimeAuthScopeId: runtimeState?.runtimeAuthScopeId ?? 'no-runtime',
460
+ providerId,
461
+ profileId,
462
+ cliScope: runtimeContext?.metadata &&
463
+ typeof runtimeContext.metadata === 'object'
464
+ ? runtimeContext.metadata
465
+ : undefined,
466
+ runtimeMetadata: runtimeContext?.metadata &&
467
+ typeof runtimeContext.metadata === 'object'
468
+ ? runtimeContext.metadata
469
+ : undefined,
470
+ };
471
+ const token = await this.oauthManager.getToken(this.config.oauthProvider, requestMetadata);
472
+ if (token) {
473
+ let oauthToken;
474
+ if (typeof this.oauthManager.getOAuthToken === 'function') {
475
+ try {
476
+ oauthToken = await this.oauthManager.getOAuthToken(this.config.oauthProvider, requestMetadata);
477
+ }
478
+ catch (tokenError) {
479
+ if (process.env.DEBUG) {
480
+ console.debug(`Failed to fetch OAuth token metadata for ${this.config.oauthProvider}:`, tokenError);
481
+ }
482
+ oauthToken = null;
483
+ }
484
+ }
485
+ if (runtimeState) {
486
+ storeRuntimeScopedToken(runtimeState, providerId, profileId, token, oauthToken ?? null);
487
+ }
488
+ return token;
489
+ }
490
+ }
491
+ catch (error) {
492
+ if (process.env.DEBUG) {
493
+ console.warn(`Failed to get OAuth token for ${this.config.oauthProvider}:`, error);
494
+ }
495
+ }
85
496
  }
86
- // No authentication method available
87
497
  return null;
88
498
  }
89
499
  /**
500
+ * @plan PLAN-20251018-STATELESSPROVIDER2.P06
501
+ * @requirement REQ-SP2-001
502
+ * @pseudocode base-provider-call-contract.md lines 1-3
90
503
  * Check if any authentication method is available without triggering OAuth
91
504
  */
92
- async hasNonOAuthAuthentication() {
93
- // Check all precedence levels except OAuth
94
- const tempConfig = { ...this.config, isOAuthEnabled: false };
95
- const tempResolver = new AuthPrecedenceResolver(tempConfig, undefined);
96
- const auth = await tempResolver.resolveAuthentication();
505
+ async hasNonOAuthAuthentication(options) {
506
+ const auth = await this.resolveAuthentication({
507
+ ...options,
508
+ includeOAuth: false,
509
+ });
97
510
  return auth !== null;
98
511
  }
99
512
  /**
513
+ * @plan PLAN-20251018-STATELESSPROVIDER2.P06
514
+ * @requirement REQ-SP2-001
515
+ * @pseudocode base-provider-call-contract.md lines 1-3
100
516
  * Check if OAuth is the only available authentication method
101
517
  */
102
- async isOAuthOnlyAvailable() {
103
- const hasNonOAuth = await this.hasNonOAuthAuthentication();
518
+ async isOAuthOnlyAvailable(options) {
519
+ const hasNonOAuth = await this.hasNonOAuthAuthentication(options);
104
520
  return (!hasNonOAuth &&
105
521
  this.config.isOAuthEnabled === true &&
106
522
  this.config.supportsOAuth === true);
107
523
  }
108
524
  /**
525
+ * @plan PLAN-20251018-STATELESSPROVIDER2.P06
526
+ * @requirement REQ-SP2-001
527
+ * @pseudocode base-provider-call-contract.md lines 1-3
109
528
  * Get authentication method name for debugging/logging
110
529
  */
111
- async getAuthMethodName() {
112
- const settingsService = getSettingsService();
113
- const authOnly = isAuthOnlyEnabled(settingsService.get('authOnly'));
114
- if (!authOnly) {
115
- // Check precedence levels and return method name
116
- const authKey = settingsService.get('auth-key');
117
- if (authKey && typeof authKey === 'string' && authKey.trim() !== '') {
118
- return 'command-key';
119
- }
120
- const authKeyfile = settingsService.get('auth-keyfile');
121
- if (authKeyfile && typeof authKeyfile === 'string') {
122
- try {
123
- const keyFromFile = await this.readKeyFile(authKeyfile);
124
- if (keyFromFile) {
125
- return 'command-keyfile';
126
- }
127
- }
128
- catch {
129
- // Ignore errors for method detection
530
+ async getAuthMethodName(options) {
531
+ const settingsService = this.resolveSettingsService(options?.settingsService ?? undefined);
532
+ // Check precedence levels and return method name
533
+ const authKey = settingsService.get('auth-key');
534
+ if (authKey && typeof authKey === 'string' && authKey.trim() !== '') {
535
+ return 'command-key';
536
+ }
537
+ const authKeyfile = settingsService.get('auth-keyfile');
538
+ if (authKeyfile && typeof authKeyfile === 'string') {
539
+ try {
540
+ const keyFromFile = await this.readKeyFile(authKeyfile);
541
+ if (keyFromFile) {
542
+ return 'command-keyfile';
130
543
  }
131
544
  }
132
- if (this.config.envKeyNames && this.config.envKeyNames.length > 0) {
133
- for (const envVarName of this.config.envKeyNames) {
134
- const envValue = process.env[envVarName];
135
- if (envValue && envValue.trim() !== '') {
136
- return `env-${envVarName.toLowerCase()}`;
137
- }
138
- }
545
+ catch {
546
+ // Ignore errors for method detection
139
547
  }
140
548
  }
141
- if (await this.isOAuthAvailable()) {
142
- return `oauth-${this.config.oauthProvider}`;
549
+ if (this.config.apiKey &&
550
+ typeof this.config.apiKey === 'string' &&
551
+ this.config.apiKey.trim() !== '') {
552
+ return 'constructor-apikey';
143
553
  }
144
- return null;
145
- }
146
- async resolveOAuthAuthentication() {
147
- if (this.config.isOAuthEnabled &&
148
- this.config.supportsOAuth &&
149
- this.oauthManager &&
150
- this.config.oauthProvider) {
151
- try {
152
- const token = await this.oauthManager.getToken(this.config.oauthProvider);
153
- if (token) {
154
- return token;
155
- }
156
- }
157
- catch (error) {
158
- if (process.env.DEBUG) {
159
- console.warn(`Failed to get OAuth token for ${this.config.oauthProvider}:`, error);
554
+ if (this.config.envKeyNames && this.config.envKeyNames.length > 0) {
555
+ for (const envVarName of this.config.envKeyNames) {
556
+ const envValue = process.env[envVarName];
557
+ if (envValue && envValue.trim() !== '') {
558
+ return `env-${envVarName.toLowerCase()}`;
160
559
  }
161
560
  }
162
561
  }
163
- return null;
164
- }
165
- async isOAuthAvailable() {
166
562
  if (this.config.isOAuthEnabled &&
167
563
  this.config.supportsOAuth &&
168
564
  this.oauthManager &&
169
565
  this.config.oauthProvider) {
170
566
  try {
171
567
  const isAuthenticated = await this.oauthManager.isAuthenticated(this.config.oauthProvider);
172
- return isAuthenticated;
568
+ if (isAuthenticated) {
569
+ return `oauth-${this.config.oauthProvider}`;
570
+ }
173
571
  }
174
572
  catch {
175
- return false;
573
+ // Ignore errors for method detection
176
574
  }
177
575
  }
178
- return false;
576
+ return null;
179
577
  }
180
578
  /**
181
579
  * Reads API key from a file path, handling tilde expansion, absolute and relative paths
@@ -1 +1 @@
1
- {"version":3,"file":"precedence.js","sourceRoot":"","sources":["../../../src/auth/precedence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"precedence.js","sourceRoot":"","sources":["../../../src/auth/precedence.ts"],"names":[],"mappings":"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"}