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

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 (213) 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 +231 -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 +387 -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.d.ts +17 -1
  61. package/dist/src/parsers/TextToolCallParser.js +542 -148
  62. package/dist/src/parsers/TextToolCallParser.js.map +1 -1
  63. package/dist/src/prompt-config/defaults/core.md +15 -0
  64. package/dist/src/prompt-config/defaults/providers/gemini/core.md +203 -119
  65. package/dist/src/prompt-config/defaults/tool-defaults.js +2 -0
  66. package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -1
  67. package/dist/src/prompt-config/defaults/tools/list-subagents.md +7 -0
  68. package/dist/src/prompt-config/defaults/tools/task.md +8 -0
  69. package/dist/src/providers/BaseProvider.d.ts +115 -30
  70. package/dist/src/providers/BaseProvider.js +445 -109
  71. package/dist/src/providers/BaseProvider.js.map +1 -1
  72. package/dist/src/providers/IProvider.d.ts +50 -18
  73. package/dist/src/providers/LoggingProviderWrapper.d.ts +60 -16
  74. package/dist/src/providers/LoggingProviderWrapper.js +213 -60
  75. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  76. package/dist/src/providers/ProviderManager.d.ts +73 -2
  77. package/dist/src/providers/ProviderManager.js +492 -40
  78. package/dist/src/providers/ProviderManager.js.map +1 -1
  79. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +35 -38
  80. package/dist/src/providers/anthropic/AnthropicProvider.js +222 -227
  81. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  82. package/dist/src/providers/errors.d.ts +86 -0
  83. package/dist/src/providers/errors.js +89 -0
  84. package/dist/src/providers/errors.js.map +1 -1
  85. package/dist/src/providers/gemini/GeminiProvider.d.ts +101 -41
  86. package/dist/src/providers/gemini/GeminiProvider.js +386 -311
  87. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  88. package/dist/src/providers/openai/ConversationCache.d.ts +5 -3
  89. package/dist/src/providers/openai/ConversationCache.js +93 -32
  90. package/dist/src/providers/openai/ConversationCache.js.map +1 -1
  91. package/dist/src/providers/openai/OpenAIProvider.d.ts +82 -42
  92. package/dist/src/providers/openai/OpenAIProvider.js +391 -536
  93. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  94. package/dist/src/providers/openai/getOpenAIProviderInfo.d.ts +1 -1
  95. package/dist/src/providers/openai/getOpenAIProviderInfo.js +52 -22
  96. package/dist/src/providers/openai/getOpenAIProviderInfo.js.map +1 -1
  97. package/dist/src/providers/openai/openaiRequestParams.d.ts +7 -0
  98. package/dist/src/providers/openai/openaiRequestParams.js +66 -0
  99. package/dist/src/providers/openai/openaiRequestParams.js.map +1 -0
  100. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +6 -33
  101. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +84 -183
  102. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -1
  103. package/dist/src/providers/types/providerRuntime.d.ts +17 -0
  104. package/dist/src/providers/types/providerRuntime.js +7 -0
  105. package/dist/src/providers/types/providerRuntime.js.map +1 -0
  106. package/dist/src/providers/utils/authToken.d.ts +12 -0
  107. package/dist/src/providers/utils/authToken.js +17 -0
  108. package/dist/src/providers/utils/authToken.js.map +1 -0
  109. package/dist/src/providers/utils/userMemory.d.ts +8 -0
  110. package/dist/src/providers/utils/userMemory.js +34 -0
  111. package/dist/src/providers/utils/userMemory.js.map +1 -0
  112. package/dist/src/runtime/AgentRuntimeContext.d.ts +213 -0
  113. package/dist/src/runtime/AgentRuntimeContext.js +17 -0
  114. package/dist/src/runtime/AgentRuntimeContext.js.map +1 -0
  115. package/dist/src/runtime/AgentRuntimeLoader.d.ts +47 -0
  116. package/dist/src/runtime/AgentRuntimeLoader.js +122 -0
  117. package/dist/src/runtime/AgentRuntimeLoader.js.map +1 -0
  118. package/dist/src/runtime/AgentRuntimeState.d.ts +232 -0
  119. package/dist/src/runtime/AgentRuntimeState.js +439 -0
  120. package/dist/src/runtime/AgentRuntimeState.js.map +1 -0
  121. package/dist/src/runtime/RuntimeInvocationContext.d.ts +51 -0
  122. package/dist/src/runtime/RuntimeInvocationContext.js +52 -0
  123. package/dist/src/runtime/RuntimeInvocationContext.js.map +1 -0
  124. package/dist/src/runtime/createAgentRuntimeContext.d.ts +7 -0
  125. package/dist/src/runtime/createAgentRuntimeContext.js +65 -0
  126. package/dist/src/runtime/createAgentRuntimeContext.js.map +1 -0
  127. package/dist/src/runtime/index.d.ts +13 -0
  128. package/dist/src/runtime/index.js +14 -0
  129. package/dist/src/runtime/index.js.map +1 -0
  130. package/dist/src/runtime/providerRuntimeContext.d.ts +30 -0
  131. package/dist/src/runtime/providerRuntimeContext.js +70 -0
  132. package/dist/src/runtime/providerRuntimeContext.js.map +1 -0
  133. package/dist/src/runtime/runtimeAdapters.d.ts +22 -0
  134. package/dist/src/runtime/runtimeAdapters.js +81 -0
  135. package/dist/src/runtime/runtimeAdapters.js.map +1 -0
  136. package/dist/src/runtime/runtimeStateFactory.d.ts +21 -0
  137. package/dist/src/runtime/runtimeStateFactory.js +104 -0
  138. package/dist/src/runtime/runtimeStateFactory.js.map +1 -0
  139. package/dist/src/services/todo-context-tracker.d.ts +10 -8
  140. package/dist/src/services/todo-context-tracker.js +26 -10
  141. package/dist/src/services/todo-context-tracker.js.map +1 -1
  142. package/dist/src/services/tool-call-tracker-service.d.ts +11 -7
  143. package/dist/src/services/tool-call-tracker-service.js +89 -29
  144. package/dist/src/services/tool-call-tracker-service.js.map +1 -1
  145. package/dist/src/settings/SettingsService.d.ts +4 -0
  146. package/dist/src/settings/SettingsService.js +65 -2
  147. package/dist/src/settings/SettingsService.js.map +1 -1
  148. package/dist/src/settings/settingsServiceInstance.d.ts +6 -1
  149. package/dist/src/settings/settingsServiceInstance.js +28 -8
  150. package/dist/src/settings/settingsServiceInstance.js.map +1 -1
  151. package/dist/src/telemetry/loggers.d.ts +5 -1
  152. package/dist/src/telemetry/loggers.js.map +1 -1
  153. package/dist/src/telemetry/loggers.test.circular.js +4 -0
  154. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  155. package/dist/src/telemetry/metrics.d.ts +3 -1
  156. package/dist/src/telemetry/metrics.js.map +1 -1
  157. package/dist/src/telemetry/types.d.ts +1 -0
  158. package/dist/src/telemetry/types.js +3 -0
  159. package/dist/src/telemetry/types.js.map +1 -1
  160. package/dist/src/test-utils/index.d.ts +2 -0
  161. package/dist/src/test-utils/index.js +2 -0
  162. package/dist/src/test-utils/index.js.map +1 -1
  163. package/dist/src/test-utils/mockWorkspaceContext.d.ts +0 -3
  164. package/dist/src/test-utils/mockWorkspaceContext.js +3 -4
  165. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -1
  166. package/dist/src/test-utils/providerCallOptions.d.ts +43 -0
  167. package/dist/src/test-utils/providerCallOptions.js +137 -0
  168. package/dist/src/test-utils/providerCallOptions.js.map +1 -0
  169. package/dist/src/test-utils/runtime.d.ts +92 -0
  170. package/dist/src/test-utils/runtime.js +226 -0
  171. package/dist/src/test-utils/runtime.js.map +1 -0
  172. package/dist/src/test-utils/tools.d.ts +4 -4
  173. package/dist/src/test-utils/tools.js +20 -10
  174. package/dist/src/test-utils/tools.js.map +1 -1
  175. package/dist/src/tools/list-subagents.d.ts +31 -0
  176. package/dist/src/tools/list-subagents.js +109 -0
  177. package/dist/src/tools/list-subagents.js.map +1 -0
  178. package/dist/src/tools/task.d.ts +87 -0
  179. package/dist/src/tools/task.js +427 -0
  180. package/dist/src/tools/task.js.map +1 -0
  181. package/dist/src/tools/todo-read.js +1 -1
  182. package/dist/src/tools/todo-read.js.map +1 -1
  183. package/dist/src/tools/todo-store.js +4 -2
  184. package/dist/src/tools/todo-store.js.map +1 -1
  185. package/dist/src/tools/todo-write.js +4 -2
  186. package/dist/src/tools/todo-write.js.map +1 -1
  187. package/dist/src/tools/tool-error.d.ts +1 -0
  188. package/dist/src/tools/tool-error.js +1 -0
  189. package/dist/src/tools/tool-error.js.map +1 -1
  190. package/dist/src/tools/tool-registry.d.ts +2 -0
  191. package/dist/src/tools/tool-registry.js +46 -21
  192. package/dist/src/tools/tool-registry.js.map +1 -1
  193. package/dist/src/types/modelParams.d.ts +4 -0
  194. package/dist/src/utils/editor.js +10 -8
  195. package/dist/src/utils/editor.js.map +1 -1
  196. package/dist/src/utils/gitIgnoreParser.js +15 -3
  197. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  198. package/package.json +1 -1
  199. package/dist/src/prompt-config/defaults/providers/anthropic/core.md +0 -97
  200. package/dist/src/prompt-config/defaults/providers/anthropic/tools/glob.md +0 -34
  201. package/dist/src/prompt-config/defaults/providers/anthropic/tools/list-directory.md +0 -11
  202. package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-file.md +0 -14
  203. package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-many-files.md +0 -31
  204. package/dist/src/prompt-config/defaults/providers/anthropic/tools/replace.md +0 -41
  205. package/dist/src/prompt-config/defaults/providers/anthropic/tools/run-shell-command.md +0 -32
  206. package/dist/src/prompt-config/defaults/providers/anthropic/tools/save-memory.md +0 -35
  207. package/dist/src/prompt-config/defaults/providers/anthropic/tools/search-file-content.md +0 -44
  208. package/dist/src/prompt-config/defaults/providers/anthropic/tools/todo-write.md +0 -45
  209. package/dist/src/prompt-config/defaults/providers/anthropic/tools/write-file.md +0 -11
  210. package/dist/src/prompt-config/defaults/providers/openai/core.md +0 -97
  211. package/dist/src/prompt-config/defaults/providers/openai/tools/todo-pause.md +0 -28
  212. package/dist/src/prompt-config/defaults/providers/openai/tools/todo-read.md +0 -5
  213. package/dist/src/prompt-config/defaults/providers/openai/tools/todo-write.md +0 -45
@@ -0,0 +1,439 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * @plan PLAN-20251027-STATELESS5.P03
8
+ * @requirement REQ-STAT5-001
9
+ * @pseudocode runtime-state.md lines 18-48
10
+ *
11
+ * AgentRuntimeState abstraction to replace stateful Config usage.
12
+ * This is a STUB implementation for Phase 03 (TDD preparation).
13
+ * Actual implementation happens in Phase 05.
14
+ */
15
+ import { AuthType } from '../core/contentGenerator.js';
16
+ /**
17
+ * @plan PLAN-20251027-STATELESS5.P03
18
+ * @requirement REQ-STAT5-001.1
19
+ * @pseudocode runtime-state.md lines 366-381
20
+ *
21
+ * Error codes for runtime state validation failures.
22
+ */
23
+ export var RuntimeStateErrorCode;
24
+ (function (RuntimeStateErrorCode) {
25
+ RuntimeStateErrorCode["RUNTIME_ID_MISSING"] = "runtimeId.missing";
26
+ RuntimeStateErrorCode["PROVIDER_MISSING"] = "provider.missing";
27
+ RuntimeStateErrorCode["PROVIDER_INVALID"] = "provider.invalid";
28
+ RuntimeStateErrorCode["MODEL_MISSING"] = "model.missing";
29
+ RuntimeStateErrorCode["MODEL_INVALID"] = "model.invalid";
30
+ RuntimeStateErrorCode["AUTH_TYPE_INVALID"] = "authType.invalid";
31
+ RuntimeStateErrorCode["AUTH_API_KEY_MISSING"] = "auth.apiKey.missing";
32
+ RuntimeStateErrorCode["AUTH_TOKEN_MISSING"] = "auth.token.missing";
33
+ RuntimeStateErrorCode["BASE_URL_INVALID"] = "baseUrl.invalid";
34
+ RuntimeStateErrorCode["UPDATE_UNSUPPORTED"] = "update.unsupported";
35
+ RuntimeStateErrorCode["NOT_IMPLEMENTED"] = "not.implemented";
36
+ })(RuntimeStateErrorCode || (RuntimeStateErrorCode = {}));
37
+ /**
38
+ * @plan PLAN-20251027-STATELESS5.P03
39
+ * @requirement REQ-STAT5-001.1
40
+ * @pseudocode runtime-state.md lines 366-381
41
+ *
42
+ * Error thrown during runtime state validation or update.
43
+ */
44
+ export class RuntimeStateError extends Error {
45
+ code;
46
+ details;
47
+ constructor(code, details) {
48
+ const message = `RuntimeStateError: ${code}`;
49
+ super(message);
50
+ this.code = code;
51
+ this.details = details;
52
+ this.name = 'RuntimeStateError';
53
+ }
54
+ }
55
+ // Global registry for runtime state instances
56
+ const runtimeStateRegistry = new Map();
57
+ // Global subscription registry
58
+ const subscriptionRegistry = new Map();
59
+ // Last timestamp to ensure monotonic increasing timestamps within same runtime
60
+ let lastTimestamp = 0;
61
+ /**
62
+ * Get timestamp for runtime state operations.
63
+ * Ensures monotonic increase even when called in same millisecond.
64
+ * Bounded to stay within 2ms of actual time to handle test timing windows.
65
+ */
66
+ function getTimestamp() {
67
+ const now = Date.now();
68
+ // If time has naturally advanced, use it and reset tracking
69
+ if (now > lastTimestamp) {
70
+ lastTimestamp = now;
71
+ return now;
72
+ }
73
+ // If same millisecond or very close, increment by 1
74
+ // But cap at now + 1 to prevent drifting too far from actual time
75
+ lastTimestamp = Math.min(lastTimestamp + 1, now + 1);
76
+ return lastTimestamp;
77
+ }
78
+ /**
79
+ * @plan PLAN-20251027-STATELESS5.P05
80
+ * @requirement REQ-STAT5-001.1
81
+ * @pseudocode runtime-state.md lines 73-105
82
+ *
83
+ * Creates a new immutable runtime state instance.
84
+ * Validates all required fields and auth consistency.
85
+ */
86
+ export function createAgentRuntimeState(params) {
87
+ // Validate runtimeId (lines 75-76)
88
+ if (!params.runtimeId || typeof params.runtimeId !== 'string') {
89
+ throw new RuntimeStateError(RuntimeStateErrorCode.RUNTIME_ID_MISSING);
90
+ }
91
+ // Validate provider (lines 77-78)
92
+ if (!params.provider || typeof params.provider !== 'string') {
93
+ throw new RuntimeStateError(RuntimeStateErrorCode.PROVIDER_MISSING);
94
+ }
95
+ // Validate model (lines 79-80)
96
+ if (!params.model || typeof params.model !== 'string') {
97
+ throw new RuntimeStateError(RuntimeStateErrorCode.MODEL_MISSING);
98
+ }
99
+ // Validate authType (lines 81-82)
100
+ const validAuthTypes = Object.values(AuthType);
101
+ if (!validAuthTypes.includes(params.authType)) {
102
+ throw new RuntimeStateError(RuntimeStateErrorCode.AUTH_TYPE_INVALID, {
103
+ authType: params.authType,
104
+ });
105
+ }
106
+ // Validate API_KEY auth payload (lines 83-85)
107
+ if (params.authType === AuthType.API_KEY) {
108
+ if (!params.authPayload?.apiKey) {
109
+ throw new RuntimeStateError(RuntimeStateErrorCode.AUTH_API_KEY_MISSING);
110
+ }
111
+ }
112
+ // Validate OAUTH auth payload (lines 86-88)
113
+ if (params.authType === AuthType.OAUTH) {
114
+ if (!params.authPayload?.token) {
115
+ throw new RuntimeStateError(RuntimeStateErrorCode.AUTH_TOKEN_MISSING);
116
+ }
117
+ }
118
+ // Validate baseUrl if provided (lines 89-91)
119
+ if (params.baseUrl) {
120
+ try {
121
+ new URL(params.baseUrl);
122
+ }
123
+ catch {
124
+ throw new RuntimeStateError(RuntimeStateErrorCode.BASE_URL_INVALID, {
125
+ baseUrl: params.baseUrl,
126
+ });
127
+ }
128
+ }
129
+ // Generate sessionId if not provided (line 101)
130
+ const sessionId = params.sessionId ||
131
+ `session-${Date.now()}-${Math.random().toString(36).substring(7)}`;
132
+ // Create frozen state object (lines 92-103)
133
+ const state = Object.freeze({
134
+ runtimeId: params.runtimeId,
135
+ provider: params.provider,
136
+ model: params.model,
137
+ authType: params.authType,
138
+ authPayload: params.authPayload
139
+ ? deepFreeze(params.authPayload)
140
+ : undefined,
141
+ baseUrl: params.baseUrl,
142
+ proxyUrl: params.proxyUrl,
143
+ modelParams: params.modelParams
144
+ ? deepFreeze(params.modelParams)
145
+ : undefined,
146
+ sessionId,
147
+ updatedAt: getTimestamp(),
148
+ });
149
+ // Register state in global registry (line 103)
150
+ runtimeStateRegistry.set(params.runtimeId, state);
151
+ return state;
152
+ }
153
+ /**
154
+ * Deep freeze helper for immutable objects
155
+ */
156
+ function deepFreeze(obj) {
157
+ Object.freeze(obj);
158
+ Object.getOwnPropertyNames(obj).forEach((prop) => {
159
+ const value = obj[prop];
160
+ if (value && typeof value === 'object') {
161
+ deepFreeze(value);
162
+ }
163
+ });
164
+ return obj;
165
+ }
166
+ /**
167
+ * @plan PLAN-20251027-STATELESS5.P05
168
+ * @requirement REQ-STAT5-001.2
169
+ * @pseudocode runtime-state.md lines 209-243
170
+ *
171
+ * Updates runtime state immutably, returning a new instance.
172
+ * Validates updates and emits synchronous change events.
173
+ */
174
+ export function updateAgentRuntimeState(oldState, updates) {
175
+ // Validate update keys are allowed (lines 214-218)
176
+ const allowedKeys = [
177
+ 'provider',
178
+ 'model',
179
+ 'authType',
180
+ 'authPayload',
181
+ 'baseUrl',
182
+ 'proxyUrl',
183
+ 'modelParams',
184
+ ];
185
+ for (const key of Object.keys(updates)) {
186
+ if (!allowedKeys.includes(key)) {
187
+ throw new RuntimeStateError(RuntimeStateErrorCode.UPDATE_UNSUPPORTED, {
188
+ key,
189
+ });
190
+ }
191
+ }
192
+ // Validate updated fields (lines 219-225)
193
+ if (updates.provider !== undefined) {
194
+ if (!updates.provider || typeof updates.provider !== 'string') {
195
+ throw new RuntimeStateError(RuntimeStateErrorCode.PROVIDER_INVALID, {
196
+ provider: updates.provider,
197
+ });
198
+ }
199
+ }
200
+ if (updates.model !== undefined) {
201
+ if (!updates.model || typeof updates.model !== 'string') {
202
+ throw new RuntimeStateError(RuntimeStateErrorCode.MODEL_INVALID, {
203
+ model: updates.model,
204
+ });
205
+ }
206
+ }
207
+ if (updates.authType !== undefined) {
208
+ const validAuthTypes = Object.values(AuthType);
209
+ if (!validAuthTypes.includes(updates.authType)) {
210
+ throw new RuntimeStateError(RuntimeStateErrorCode.AUTH_TYPE_INVALID, {
211
+ authType: updates.authType,
212
+ });
213
+ }
214
+ }
215
+ // Get timestamp ensuring it's > oldState.updatedAt (lines 226)
216
+ const now = Date.now();
217
+ let updatedAt = now;
218
+ // If we're in the same millisecond as the previous state, wait briefly
219
+ // This ensures timestamps are both monotonically increasing AND bounded by actual time
220
+ if (now <= oldState.updatedAt) {
221
+ // Busy wait for next millisecond (max 1ms wait)
222
+ const target = oldState.updatedAt + 1;
223
+ while (Date.now() < target) {
224
+ // Spin wait
225
+ }
226
+ updatedAt = Date.now();
227
+ }
228
+ // Create new state (lines 226-227)
229
+ const newState = Object.freeze({
230
+ ...oldState,
231
+ ...updates,
232
+ authPayload: updates.authPayload
233
+ ? deepFreeze(updates.authPayload)
234
+ : oldState.authPayload,
235
+ modelParams: updates.modelParams
236
+ ? deepFreeze(updates.modelParams)
237
+ : oldState.modelParams,
238
+ updatedAt,
239
+ });
240
+ // Register new state (line 228)
241
+ runtimeStateRegistry.set(newState.runtimeId, newState);
242
+ // Compute changeset (lines 229-233)
243
+ const changes = {};
244
+ for (const key of Object.keys(updates)) {
245
+ const oldValue = oldState[key];
246
+ const newValue = newState[key];
247
+ if (oldValue !== newValue) {
248
+ changes[key] = { old: oldValue, new: newValue };
249
+ }
250
+ }
251
+ // Emit event (lines 234-241)
252
+ const event = {
253
+ runtimeId: newState.runtimeId,
254
+ changes,
255
+ snapshot: getAgentRuntimeStateSnapshot(newState),
256
+ timestamp: newState.updatedAt,
257
+ };
258
+ invokeSubscribers(newState.runtimeId, event);
259
+ return newState;
260
+ }
261
+ /**
262
+ * @plan PLAN-20251027-STATELESS5.P05
263
+ * @requirement REQ-STAT5-002.3
264
+ * @pseudocode runtime-state.md lines 252-278
265
+ *
266
+ * Batch update for atomic multi-field changes (e.g., provider switch).
267
+ * All updates validated together, single event emitted.
268
+ */
269
+ export function updateAgentRuntimeStateBatch(oldState, updates) {
270
+ // Reuse the same validation and update logic from updateAgentRuntimeState
271
+ // This ensures atomic behavior - if validation fails, nothing is mutated (lines 257-258)
272
+ return updateAgentRuntimeState(oldState, updates);
273
+ }
274
+ /**
275
+ * @plan PLAN-20251027-STATELESS5.P05
276
+ * @requirement REQ-STAT5-001.3
277
+ * @pseudocode runtime-state.md lines 329-355
278
+ *
279
+ * Returns a frozen snapshot of runtime state for diagnostics.
280
+ * Sanitizes sensitive auth data.
281
+ */
282
+ export function getAgentRuntimeStateSnapshot(state) {
283
+ // Sanitize auth payload (lines 335, 344-352)
284
+ const sanitizedAuthPayload = sanitizeAuthPayload(state.authPayload);
285
+ // Return frozen snapshot (lines 330-342)
286
+ return Object.freeze({
287
+ runtimeId: state.runtimeId,
288
+ provider: state.provider,
289
+ model: state.model,
290
+ authType: state.authType,
291
+ authPayload: sanitizedAuthPayload,
292
+ baseUrl: state.baseUrl,
293
+ proxyUrl: state.proxyUrl,
294
+ modelParams: state.modelParams ? { ...state.modelParams } : undefined,
295
+ sessionId: state.sessionId,
296
+ updatedAt: state.updatedAt,
297
+ version: 1, // Schema version (line 341)
298
+ });
299
+ }
300
+ /**
301
+ * @plan PLAN-20251027-STATELESS5.P05
302
+ * @requirement REQ-STAT5-001.3
303
+ * @pseudocode runtime-state.md lines 344-352
304
+ *
305
+ * Sanitizes auth payload for diagnostics by masking sensitive data.
306
+ */
307
+ function sanitizeAuthPayload(payload) {
308
+ if (!payload) {
309
+ return undefined;
310
+ }
311
+ const result = {};
312
+ // Mask API key - show only last 4 chars (lines 348-349)
313
+ if (payload.apiKey) {
314
+ const apiKey = payload.apiKey;
315
+ if (apiKey.length > 4) {
316
+ result.apiKey = `***${apiKey.slice(-4)}`;
317
+ }
318
+ else {
319
+ result.apiKey = '***';
320
+ }
321
+ }
322
+ // Redact OAuth token (lines 350-351)
323
+ if (payload.token) {
324
+ result.token = '[REDACTED]';
325
+ }
326
+ return result;
327
+ }
328
+ /**
329
+ * @plan PLAN-20251027-STATELESS5.P05
330
+ * @requirement REQ-STAT5-003.2
331
+ * @pseudocode runtime-state.md lines 289-318
332
+ *
333
+ * Subscribes to runtime state change events.
334
+ * Returns unsubscribe function to remove callback.
335
+ */
336
+ export function subscribeToAgentRuntimeState(runtimeId, callback, options) {
337
+ // Validate inputs (lines 294-295)
338
+ if (!runtimeId || typeof runtimeId !== 'string') {
339
+ throw new Error('runtimeId must be a non-empty string');
340
+ }
341
+ if (typeof callback !== 'function') {
342
+ throw new Error('callback must be a function');
343
+ }
344
+ // Get or create subscriber list (line 296)
345
+ let subscribers = subscriptionRegistry.get(runtimeId);
346
+ if (!subscribers) {
347
+ subscribers = new Map();
348
+ subscriptionRegistry.set(runtimeId, subscribers);
349
+ }
350
+ // Generate unique subscription ID (line 297)
351
+ const subscriptionId = `sub-${Date.now()}-${Math.random().toString(36).substring(7)}`;
352
+ // Store subscription (lines 298-302)
353
+ subscribers.set(subscriptionId, {
354
+ callback,
355
+ async: options?.async || false,
356
+ });
357
+ // Return unsubscribe function (lines 303-306)
358
+ return () => {
359
+ const subs = subscriptionRegistry.get(runtimeId);
360
+ if (subs) {
361
+ subs.delete(subscriptionId);
362
+ }
363
+ };
364
+ }
365
+ /**
366
+ * @plan PLAN-20251027-STATELESS5.P05
367
+ * @requirement REQ-STAT5-003.2
368
+ * @pseudocode runtime-state.md lines 308-316
369
+ *
370
+ * Invokes all subscribers for a given runtime ID.
371
+ * Handles both synchronous and async callbacks with error isolation.
372
+ */
373
+ function invokeSubscribers(runtimeId, event) {
374
+ const subscribers = subscriptionRegistry.get(runtimeId);
375
+ if (!subscribers || subscribers.size === 0) {
376
+ return;
377
+ }
378
+ // Invoke each subscriber (lines 309-315)
379
+ for (const subscription of subscribers.values()) {
380
+ try {
381
+ if (subscription.async) {
382
+ // Async callback - queue as microtask (line 311-312)
383
+ queueMicrotask(() => {
384
+ try {
385
+ subscription.callback(event);
386
+ }
387
+ catch (error) {
388
+ // Error handling to prevent cascade failures (line 315)
389
+ console.error('Error in async runtime state callback:', error);
390
+ }
391
+ });
392
+ }
393
+ else {
394
+ // Synchronous callback (line 313-314)
395
+ subscription.callback(event);
396
+ }
397
+ }
398
+ catch (error) {
399
+ // Error handling to prevent cascade failures (line 315)
400
+ console.error('Error in runtime state callback:', error);
401
+ }
402
+ }
403
+ }
404
+ /**
405
+ * @plan PLAN-20251027-STATELESS5.P03
406
+ * @requirement REQ-STAT5-003.1
407
+ * @pseudocode runtime-state.md lines 150-173
408
+ *
409
+ * Synchronous accessors for runtime state fields.
410
+ * STUB: Minimal implementations for type safety.
411
+ */
412
+ export function getProvider(state) {
413
+ return state.provider;
414
+ }
415
+ export function getModel(state) {
416
+ return state.model;
417
+ }
418
+ export function getAuthType(state) {
419
+ return state.authType;
420
+ }
421
+ export function getAuthPayload(state) {
422
+ if (!state.authPayload) {
423
+ return undefined;
424
+ }
425
+ return Object.freeze({ ...state.authPayload });
426
+ }
427
+ export function getBaseUrl(state) {
428
+ return state.baseUrl;
429
+ }
430
+ export function getSessionId(state) {
431
+ return state.sessionId;
432
+ }
433
+ export function getModelParams(state) {
434
+ if (!state.modelParams) {
435
+ return undefined;
436
+ }
437
+ return Object.freeze({ ...state.modelParams });
438
+ }
439
+ //# sourceMappingURL=AgentRuntimeState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRuntimeState.js","sourceRoot":"","sources":["../../../src/runtime/AgentRuntimeState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * RuntimeInvocationContext captures immutable, per-call metadata that providers
8
+ * need to construct stateless requests without reading from Config directly.
9
+ *
10
+ * @plan PLAN-20251029-STATELESS8.P01
11
+ * @requirement REQ-STAT8-001
12
+ */
13
+ import type { RedactionConfig } from '../config/config.js';
14
+ import type { SettingsService } from '../settings/SettingsService.js';
15
+ import type { ProviderTelemetryContext } from '../providers/types/providerRuntime.js';
16
+ import type { ProviderRuntimeContext } from './providerRuntimeContext.js';
17
+ export interface RuntimeInvocationContext {
18
+ /** Stable identifier for the invocation/runtime */
19
+ readonly runtimeId: string;
20
+ /** Immutable metadata merged from caller + provider manager layers */
21
+ readonly metadata: Readonly<Record<string, unknown>>;
22
+ /** Per-call settings service (stateless view) */
23
+ readonly settings: SettingsService;
24
+ /** Snapshot of global ephemeral overrides for this invocation */
25
+ readonly ephemerals: Readonly<Record<string, unknown>>;
26
+ /** Optional telemetry context derived during normalization */
27
+ readonly telemetry?: ProviderTelemetryContext;
28
+ /** Optional user memory snapshot for providers that need it */
29
+ readonly userMemory?: string;
30
+ /** Optional redaction configuration for logging/telemetry surfaces */
31
+ readonly redaction?: Readonly<RedactionConfig>;
32
+ /** Helper to read a strongly-typed ephemeral override */
33
+ getEphemeral<T = unknown>(key: string): T | undefined;
34
+ /** Helper to read nested provider-specific overrides (e.g. "openai") */
35
+ getProviderOverrides<T = Record<string, unknown>>(providerName: string): T | undefined;
36
+ }
37
+ export interface RuntimeInvocationContextInit {
38
+ runtime: ProviderRuntimeContext;
39
+ settings: SettingsService;
40
+ providerName: string;
41
+ telemetry?: ProviderTelemetryContext;
42
+ metadata?: Record<string, unknown>;
43
+ ephemeralsSnapshot?: Record<string, unknown>;
44
+ /** Optional snapshot of user memory for downstream prompt resolution */
45
+ userMemory?: string;
46
+ /** Optional redaction configuration override */
47
+ redaction?: RedactionConfig;
48
+ /** Optional fallback runtime id when runtime.runtimeId is missing */
49
+ fallbackRuntimeId?: string;
50
+ }
51
+ export declare function createRuntimeInvocationContext(init: RuntimeInvocationContextInit): RuntimeInvocationContext;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ function cloneAndFreeze(value) {
7
+ if (!value) {
8
+ return undefined;
9
+ }
10
+ const clone = Object.assign({}, value);
11
+ return Object.freeze(clone);
12
+ }
13
+ export function createRuntimeInvocationContext(init) {
14
+ const runtimeId = typeof init.runtime.runtimeId === 'string' &&
15
+ init.runtime.runtimeId.trim() !== ''
16
+ ? init.runtime.runtimeId
17
+ : (init.fallbackRuntimeId ?? '');
18
+ if (!runtimeId) {
19
+ throw new Error('RuntimeInvocationContext requires a non-empty runtimeId.');
20
+ }
21
+ const mergedMetadata = Object.freeze({
22
+ ...(init.runtime.metadata ?? {}),
23
+ ...(init.metadata ?? {}),
24
+ });
25
+ if (init.ephemeralsSnapshot === undefined) {
26
+ throw new Error(`RuntimeInvocationContext requires provider ephemerals for provider "${init.providerName}".`);
27
+ }
28
+ const ephemerals = Object.freeze({ ...init.ephemeralsSnapshot });
29
+ const redaction = cloneAndFreeze(init.redaction) ?? undefined;
30
+ const userMemory = init.userMemory;
31
+ const context = {
32
+ runtimeId,
33
+ metadata: mergedMetadata,
34
+ settings: init.settings,
35
+ ephemerals,
36
+ telemetry: init.telemetry,
37
+ userMemory,
38
+ redaction,
39
+ getEphemeral(key) {
40
+ return ephemerals[key];
41
+ },
42
+ getProviderOverrides(providerName) {
43
+ const raw = ephemerals[providerName];
44
+ if (!raw || typeof raw !== 'object') {
45
+ return undefined;
46
+ }
47
+ return raw;
48
+ },
49
+ };
50
+ return Object.freeze(context);
51
+ }
52
+ //# sourceMappingURL=RuntimeInvocationContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeInvocationContext.js","sourceRoot":"","sources":["../../../src/runtime/RuntimeInvocationContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqDH,SAAS,cAAc,CACrB,KAAoB;IAEpB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAM,CAAC;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAgB,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,IAAkC;IAElC,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ;QAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QAClC,CAAC,CAAE,IAAI,CAAC,OAAO,CAAC,SAAoB;QACpC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAErC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;KACzB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,uEAAuE,IAAI,CAAC,YAAY,IAAI,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IAE9D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAEnC,MAAM,OAAO,GAA6B;QACxC,SAAS;QACT,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU;QACV,SAAS;QACT,YAAY,CAAc,GAAW;YACnC,OAAO,UAAU,CAAC,GAAG,CAAkB,CAAC;QAC1C,CAAC;QACD,oBAAoB,CAClB,YAAoB;YAEpB,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,GAAQ,CAAC;QAClB,CAAC;KACF,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { AgentRuntimeContext, AgentRuntimeContextFactoryOptions } from './AgentRuntimeContext.js';
7
+ export declare function createAgentRuntimeContext(options: AgentRuntimeContextFactoryOptions): AgentRuntimeContext;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * @plan PLAN-20251028-STATELESS6.P06
8
+ * @requirement REQ-STAT6-001.1, REQ-STAT6-001.3, REQ-STAT6-002.2, REQ-STAT6-002.3
9
+ * @pseudocode agent-runtime-context.md lines 64-81
10
+ *
11
+ * Factory for creating immutable agent runtime contexts.
12
+ */
13
+ import { HistoryService } from '../services/history/HistoryService.js';
14
+ import { tokenLimit } from '../core/tokenLimits.js';
15
+ const EPHEMERAL_DEFAULTS = {
16
+ compressionThreshold: 0.8,
17
+ contextLimit: 60_000,
18
+ preserveThreshold: 0.2,
19
+ };
20
+ export function createAgentRuntimeContext(options) {
21
+ if (!options.provider) {
22
+ throw new Error('AgentRuntimeContext requires a provider adapter. Supply options.provider.');
23
+ }
24
+ if (!options.telemetry) {
25
+ throw new Error('AgentRuntimeContext requires a telemetry adapter. Supply options.telemetry.');
26
+ }
27
+ if (!options.tools) {
28
+ throw new Error('AgentRuntimeContext requires a tools view. Supply options.tools.');
29
+ }
30
+ if (!options.providerRuntime) {
31
+ throw new Error('AgentRuntimeContext requires a provider runtime context. Supply options.providerRuntime.');
32
+ }
33
+ const history = options.history ?? new HistoryService();
34
+ const contextLimitOverride = typeof options.settings.contextLimit === 'number' &&
35
+ Number.isFinite(options.settings.contextLimit) &&
36
+ options.settings.contextLimit > 0
37
+ ? options.settings.contextLimit
38
+ : undefined;
39
+ const resolvedContextLimit = tokenLimit(options.state.model, contextLimitOverride);
40
+ const ephemerals = {
41
+ compressionThreshold: () => options.settings.compressionThreshold ??
42
+ EPHEMERAL_DEFAULTS.compressionThreshold,
43
+ contextLimit: () => resolvedContextLimit,
44
+ preserveThreshold: () => options.settings.preserveThreshold ??
45
+ EPHEMERAL_DEFAULTS.preserveThreshold,
46
+ toolFormatOverride: () => options.settings.toolFormatOverride,
47
+ };
48
+ const providerRuntime = Object.freeze({
49
+ ...options.providerRuntime,
50
+ metadata: options.providerRuntime.metadata
51
+ ? Object.freeze({ ...options.providerRuntime.metadata })
52
+ : undefined,
53
+ });
54
+ const context = {
55
+ state: options.state,
56
+ history,
57
+ ephemerals,
58
+ telemetry: options.telemetry,
59
+ provider: options.provider,
60
+ tools: options.tools,
61
+ providerRuntime,
62
+ };
63
+ return Object.freeze(context);
64
+ }
65
+ //# sourceMappingURL=createAgentRuntimeContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAgentRuntimeContext.js","sourceRoot":"","sources":["../../../src/runtime/createAgentRuntimeContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAMvE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,kBAAkB,GAAG;IACzB,oBAAoB,EAAE,GAAG;IACzB,YAAY,EAAE,MAAM;IACpB,iBAAiB,EAAE,GAAG;CACd,CAAC;AAEX,MAAM,UAAU,yBAAyB,CACvC,OAA0C;IAE1C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,cAAc,EAAE,CAAC;IAExD,MAAM,oBAAoB,GACxB,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,KAAK,QAAQ;QACjD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC;QAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,oBAAoB,GAAG,UAAU,CACrC,OAAO,CAAC,KAAK,CAAC,KAAK,EACnB,oBAAoB,CACrB,CAAC;IAEF,MAAM,UAAU,GAAG;QACjB,oBAAoB,EAAE,GAAW,EAAE,CACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;YACrC,kBAAkB,CAAC,oBAAoB;QACzC,YAAY,EAAE,GAAW,EAAE,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,GAAW,EAAE,CAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;YAClC,kBAAkB,CAAC,iBAAiB;QACtC,kBAAkB,EAAE,GAAuB,EAAE,CAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB;KACtC,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,GAAG,OAAO,CAAC,eAAe;QAC1B,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ;YACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YACxD,CAAC,CAAC,SAAS;KACd,CAA2B,CAAC;IAE7B,MAAM,OAAO,GAAwB;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO;QACP,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,eAAe;KAChB,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * @plan PLAN-20251027-STATELESS5.P03
8
+ *
9
+ * Runtime module exports.
10
+ */
11
+ export * from './providerRuntimeContext.js';
12
+ export * from './AgentRuntimeState.js';
13
+ export * from './AgentRuntimeLoader.js';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * @plan PLAN-20251027-STATELESS5.P03
8
+ *
9
+ * Runtime module exports.
10
+ */
11
+ export * from './providerRuntimeContext.js';
12
+ export * from './AgentRuntimeState.js';
13
+ export * from './AgentRuntimeLoader.js';
14
+ //# sourceMappingURL=index.js.map