@orion-agents/orion-code 0.2.2 → 0.3.1

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 (217) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/README.md +89 -14
  3. package/README.zh-CN.md +77 -14
  4. package/bin/orion +15 -4
  5. package/dist/cli.js +51 -172
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/model-command-handlers.d.ts +2 -2
  8. package/dist/commands/model-command-handlers.d.ts.map +1 -1
  9. package/dist/commands/model-command-handlers.js +113 -32
  10. package/dist/commands/model-command-handlers.js.map +1 -1
  11. package/dist/commands/session-command-handlers.d.ts.map +1 -1
  12. package/dist/commands/session-command-handlers.js +106 -15
  13. package/dist/commands/session-command-handlers.js.map +1 -1
  14. package/dist/commands/types.d.ts +13 -3
  15. package/dist/commands/types.d.ts.map +1 -1
  16. package/dist/commands/types.js +1 -1
  17. package/dist/commands/types.js.map +1 -1
  18. package/dist/core/tool-artifacts.d.ts +2 -0
  19. package/dist/core/tool-artifacts.d.ts.map +1 -1
  20. package/dist/core/tool-artifacts.js +27 -1
  21. package/dist/core/tool-artifacts.js.map +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/runtime/agent-loop.d.ts.map +1 -1
  25. package/dist/runtime/agent-loop.js +3 -3
  26. package/dist/runtime/agent-loop.js.map +1 -1
  27. package/dist/runtime/agent-runtime-controller.d.ts +32 -1
  28. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  29. package/dist/runtime/agent-runtime-controller.js +241 -27
  30. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  31. package/dist/runtime/agent-runtime-protocol.d.ts +4 -0
  32. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  33. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  34. package/dist/runtime/agent-runtime-runner.d.ts +2 -1
  35. package/dist/runtime/agent-runtime-runner.d.ts.map +1 -1
  36. package/dist/runtime/durable-tool-receipt-reader.d.ts +32 -0
  37. package/dist/runtime/durable-tool-receipt-reader.d.ts.map +1 -0
  38. package/dist/runtime/durable-tool-receipt-reader.js +130 -0
  39. package/dist/runtime/durable-tool-receipt-reader.js.map +1 -0
  40. package/dist/runtime/legacy-thread-materializer.d.ts +31 -0
  41. package/dist/runtime/legacy-thread-materializer.d.ts.map +1 -1
  42. package/dist/runtime/legacy-thread-materializer.js +71 -17
  43. package/dist/runtime/legacy-thread-materializer.js.map +1 -1
  44. package/dist/runtime/orion-runtime-v1.d.ts +2 -0
  45. package/dist/runtime/orion-runtime-v1.d.ts.map +1 -1
  46. package/dist/runtime/orion-runtime-v1.js +7 -1
  47. package/dist/runtime/orion-runtime-v1.js.map +1 -1
  48. package/dist/runtime/orion-session-runner.d.ts +7 -2
  49. package/dist/runtime/orion-session-runner.d.ts.map +1 -1
  50. package/dist/runtime/orion-session-runner.js +16 -6
  51. package/dist/runtime/orion-session-runner.js.map +1 -1
  52. package/dist/runtime/product-bootstrap.d.ts +22 -0
  53. package/dist/runtime/product-bootstrap.d.ts.map +1 -0
  54. package/dist/runtime/product-bootstrap.js +374 -0
  55. package/dist/runtime/product-bootstrap.js.map +1 -0
  56. package/dist/runtime/product-orion-runtime.d.ts +2 -1
  57. package/dist/runtime/product-orion-runtime.d.ts.map +1 -1
  58. package/dist/runtime/product-orion-runtime.js +83 -13
  59. package/dist/runtime/product-orion-runtime.js.map +1 -1
  60. package/dist/runtime/protocol/runtime-protocol-v1.d.ts +1 -1
  61. package/dist/runtime/protocol/runtime-protocol-v1.js +1 -1
  62. package/dist/runtime/protocol/runtime-protocol-v1.js.map +1 -1
  63. package/dist/runtime/release-receipts.d.ts +66 -3
  64. package/dist/runtime/release-receipts.d.ts.map +1 -1
  65. package/dist/runtime/release-receipts.js +340 -7
  66. package/dist/runtime/release-receipts.js.map +1 -1
  67. package/dist/runtime/step-snapshot.d.ts.map +1 -1
  68. package/dist/runtime/step-snapshot.js +22 -2
  69. package/dist/runtime/step-snapshot.js.map +1 -1
  70. package/dist/runtime/subagents/runtime-integration.d.ts +1 -1
  71. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
  72. package/dist/runtime/subagents/runtime-integration.js +5 -2
  73. package/dist/runtime/subagents/runtime-integration.js.map +1 -1
  74. package/dist/runtime/thread-event-store.d.ts +80 -0
  75. package/dist/runtime/thread-event-store.d.ts.map +1 -1
  76. package/dist/runtime/thread-event-store.js +456 -22
  77. package/dist/runtime/thread-event-store.js.map +1 -1
  78. package/dist/runtime/thread-projection.d.ts +10 -0
  79. package/dist/runtime/thread-projection.d.ts.map +1 -1
  80. package/dist/runtime/thread-projection.js +40 -0
  81. package/dist/runtime/thread-projection.js.map +1 -1
  82. package/dist/runtime/thread-runtime.d.ts +3 -1
  83. package/dist/runtime/thread-runtime.d.ts.map +1 -1
  84. package/dist/runtime/thread-runtime.js +6 -0
  85. package/dist/runtime/thread-runtime.js.map +1 -1
  86. package/dist/runtime/thread-session-index.d.ts +84 -0
  87. package/dist/runtime/thread-session-index.d.ts.map +1 -0
  88. package/dist/runtime/thread-session-index.js +503 -0
  89. package/dist/runtime/thread-session-index.js.map +1 -0
  90. package/dist/runtime/thread-session-view.d.ts +70 -9
  91. package/dist/runtime/thread-session-view.d.ts.map +1 -1
  92. package/dist/runtime/thread-session-view.js +200 -82
  93. package/dist/runtime/thread-session-view.js.map +1 -1
  94. package/dist/runtime/thread-ui-adapter.d.ts +2 -0
  95. package/dist/runtime/thread-ui-adapter.d.ts.map +1 -1
  96. package/dist/runtime/thread-ui-adapter.js +86 -4
  97. package/dist/runtime/thread-ui-adapter.js.map +1 -1
  98. package/dist/runtime/tool-detail-repository.d.ts.map +1 -1
  99. package/dist/runtime/tool-detail-repository.js +23 -19
  100. package/dist/runtime/tool-detail-repository.js.map +1 -1
  101. package/dist/runtime/tool-receipt-validator.d.ts +21 -0
  102. package/dist/runtime/tool-receipt-validator.d.ts.map +1 -0
  103. package/dist/runtime/tool-receipt-validator.js +157 -0
  104. package/dist/runtime/tool-receipt-validator.js.map +1 -0
  105. package/dist/runtime/ui-events.d.ts +35 -0
  106. package/dist/runtime/ui-events.d.ts.map +1 -1
  107. package/dist/runtime/ui-events.js +1 -0
  108. package/dist/runtime/ui-events.js.map +1 -1
  109. package/dist/runtime/ui-view-model.d.ts +2 -0
  110. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  111. package/dist/runtime/ui-view-model.js +7 -3
  112. package/dist/runtime/ui-view-model.js.map +1 -1
  113. package/dist/services/global-config.d.ts +25 -0
  114. package/dist/services/global-config.d.ts.map +1 -1
  115. package/dist/services/global-config.js +373 -5
  116. package/dist/services/global-config.js.map +1 -1
  117. package/dist/services/redaction.d.ts +4 -0
  118. package/dist/services/redaction.d.ts.map +1 -1
  119. package/dist/services/redaction.js +63 -0
  120. package/dist/services/redaction.js.map +1 -1
  121. package/dist/services/session-index.d.ts +16 -0
  122. package/dist/services/session-index.d.ts.map +1 -1
  123. package/dist/services/session-index.js +45 -36
  124. package/dist/services/session-index.js.map +1 -1
  125. package/dist/services/session-storage.d.ts +59 -0
  126. package/dist/services/session-storage.d.ts.map +1 -1
  127. package/dist/services/session-storage.js +306 -107
  128. package/dist/services/session-storage.js.map +1 -1
  129. package/dist/services/settings-coordinator.d.ts +174 -0
  130. package/dist/services/settings-coordinator.d.ts.map +1 -0
  131. package/dist/services/settings-coordinator.js +605 -0
  132. package/dist/services/settings-coordinator.js.map +1 -0
  133. package/dist/services/settings-document-repository.d.ts +138 -0
  134. package/dist/services/settings-document-repository.d.ts.map +1 -0
  135. package/dist/services/settings-document-repository.js +551 -0
  136. package/dist/services/settings-document-repository.js.map +1 -0
  137. package/dist/services/workspace-registry.d.ts +42 -0
  138. package/dist/services/workspace-registry.d.ts.map +1 -0
  139. package/dist/services/workspace-registry.js +222 -0
  140. package/dist/services/workspace-registry.js.map +1 -0
  141. package/dist/terminal-ui/launch.d.ts.map +1 -1
  142. package/dist/terminal-ui/launch.js +5 -0
  143. package/dist/terminal-ui/launch.js.map +1 -1
  144. package/dist/tui-ui/state.d.ts.map +1 -1
  145. package/dist/tui-ui/state.js +5 -0
  146. package/dist/tui-ui/state.js.map +1 -1
  147. package/dist/web/errors.d.ts +6 -0
  148. package/dist/web/errors.d.ts.map +1 -0
  149. package/dist/web/errors.js +13 -0
  150. package/dist/web/errors.js.map +1 -0
  151. package/dist/web/event-hub.d.ts +43 -0
  152. package/dist/web/event-hub.d.ts.map +1 -0
  153. package/dist/web/event-hub.js +323 -0
  154. package/dist/web/event-hub.js.map +1 -0
  155. package/dist/web/file-read-service.d.ts +55 -0
  156. package/dist/web/file-read-service.d.ts.map +1 -0
  157. package/dist/web/file-read-service.js +399 -0
  158. package/dist/web/file-read-service.js.map +1 -0
  159. package/dist/web/git-read-model-service.d.ts +77 -0
  160. package/dist/web/git-read-model-service.d.ts.map +1 -0
  161. package/dist/web/git-read-model-service.js +631 -0
  162. package/dist/web/git-read-model-service.js.map +1 -0
  163. package/dist/web/index.d.ts +6 -0
  164. package/dist/web/index.d.ts.map +1 -0
  165. package/dist/web/index.js +28 -0
  166. package/dist/web/index.js.map +1 -0
  167. package/dist/web/launch.d.ts +9 -0
  168. package/dist/web/launch.d.ts.map +1 -0
  169. package/dist/web/launch.js +64 -0
  170. package/dist/web/launch.js.map +1 -0
  171. package/dist/web/protocol.d.ts +408 -0
  172. package/dist/web/protocol.d.ts.map +1 -0
  173. package/dist/web/protocol.js +369 -0
  174. package/dist/web/protocol.js.map +1 -0
  175. package/dist/web/review-service.d.ts +38 -0
  176. package/dist/web/review-service.d.ts.map +1 -0
  177. package/dist/web/review-service.js +74 -0
  178. package/dist/web/review-service.js.map +1 -0
  179. package/dist/web/server.d.ts +20 -0
  180. package/dist/web/server.d.ts.map +1 -0
  181. package/dist/web/server.js +744 -0
  182. package/dist/web/server.js.map +1 -0
  183. package/dist/web/terminal-manager.d.ts +155 -0
  184. package/dist/web/terminal-manager.d.ts.map +1 -0
  185. package/dist/web/terminal-manager.js +728 -0
  186. package/dist/web/terminal-manager.js.map +1 -0
  187. package/dist/web/terminal-server.d.ts +8 -0
  188. package/dist/web/terminal-server.d.ts.map +1 -0
  189. package/dist/web/terminal-server.js +275 -0
  190. package/dist/web/terminal-server.js.map +1 -0
  191. package/dist/web/workbench-controller.d.ts +99 -0
  192. package/dist/web/workbench-controller.d.ts.map +1 -0
  193. package/dist/web/workbench-controller.js +1267 -0
  194. package/dist/web/workbench-controller.js.map +1 -0
  195. package/dist/web-client/assets/DiffViewer-DpKoD07C.js +5 -0
  196. package/dist/web-client/assets/FilesPanel-BkoLmgjR.js +2 -0
  197. package/dist/web-client/assets/GitPanel-D20StcdG.js +1 -0
  198. package/dist/web-client/assets/ReviewPanel-3MVWbMQV.js +1 -0
  199. package/dist/web-client/assets/TerminalPanel-BLQ592Fb.js +21 -0
  200. package/dist/web-client/assets/TerminalPanel-DLuoa74B.css +1 -0
  201. package/dist/web-client/assets/index-BkIDl_xk.js +16 -0
  202. package/dist/web-client/assets/index-DXMpnWE8.css +1 -0
  203. package/dist/web-client/index.html +16 -0
  204. package/docs/architecture/v0.3.0-web-api.yaml +1340 -0
  205. package/docs/architecture/v0.3.1-web-api.yaml +2290 -0
  206. package/docs/migration/v0.2.2-to-v0.3.0-settings.md +114 -0
  207. package/docs/migration/v0.2.2-to-v0.3.0.md +55 -0
  208. package/docs/migration/v0.3.0-to-v0.3.1.md +88 -0
  209. package/docs/orion.example.json +9 -2
  210. package/docs/plan/v0.3.0-node-runtime-compatibility-plan.md +57 -0
  211. package/docs/plan/v0.3.0-settings-integration-plan.md +740 -0
  212. package/docs/plan/v0.3.0-web-workbench-plan.md +376 -0
  213. package/docs/plan/v0.3.1-web-workbench-professional-shell-plan.md +848 -0
  214. package/docs/readme.md +22 -1
  215. package/docs/test/v0.3.1-web-workbench-e2e-plan.md +140 -0
  216. package/npm-shrinkwrap.json +1229 -45
  217. package/package.json +47 -11
@@ -0,0 +1,374 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProductUiRuntime = createProductUiRuntime;
4
+ const prompt_context_1 = require("../memory/prompt-context");
5
+ const store_1 = require("../framework/store");
6
+ const compact_1 = require("../services/compact");
7
+ const config_1 = require("../services/config");
8
+ const config_dir_1 = require("../services/config-dir");
9
+ const global_config_1 = require("../services/global-config");
10
+ const llm_1 = require("../services/llm");
11
+ const effort_1 = require("../services/effort");
12
+ const model_context_1 = require("../services/model-context");
13
+ const model_registry_1 = require("../services/model-registry");
14
+ const project_instructions_1 = require("../services/project-instructions");
15
+ const provider_resilience_1 = require("../services/provider-resilience");
16
+ const settings_coordinator_1 = require("../services/settings-coordinator");
17
+ const session_storage_1 = require("../services/session-storage");
18
+ const usage_state_1 = require("../services/usage-state");
19
+ const version_1 = require("../product/version");
20
+ const first_party_tool_universe_1 = require("./first-party-tool-universe");
21
+ const mcp_1 = require("./mcp");
22
+ const model_coordinator_1 = require("./model-coordinator");
23
+ const orion_session_runner_1 = require("./orion-session-runner");
24
+ const product_orion_runtime_1 = require("./product-orion-runtime");
25
+ const skills_1 = require("./skills");
26
+ /**
27
+ * Shared product composition root for TUI, terminal, print and Web surfaces.
28
+ *
29
+ * Renderers receive the same Store, session runner, OrionRuntime and permission
30
+ * bridge. Presentation layers must not construct an alternate agent loop.
31
+ */
32
+ async function createProductUiRuntime(options) {
33
+ (0, config_dir_1.ensureConfigDir)();
34
+ (0, global_config_1.recordFirstStartTime)();
35
+ const cwd = options.cwd;
36
+ const config = (0, config_1.loadConfig)(options.uiRenderer ? { ui: { renderer: options.uiRenderer } } : {});
37
+ const memoryContent = (0, prompt_context_1.buildMemoryPromptContext)('', cwd).content;
38
+ const projectInstructionsContent = (0, project_instructions_1.loadProjectInstructions)(cwd);
39
+ const firstPartyTools = (0, first_party_tool_universe_1.createProductionFirstPartyToolUniverseV1)({
40
+ context: { cwd, config: { name: config.name, mode: config.mode } },
41
+ });
42
+ const toolCatalog = firstPartyTools.catalog;
43
+ const skillProvider = (0, skills_1.createProductionFilesystemSkillProviderV1)({
44
+ cwd,
45
+ configuredPaths: config.skills?.paths,
46
+ });
47
+ const mcpAdapter = (0, mcp_1.createFirstPartyMcpAdapterV1)({
48
+ config: (0, mcp_1.loadFirstPartyMcpConfigurationV1)(),
49
+ baseDirectory: cwd,
50
+ });
51
+ const profileFor = (selector) => config.modelRegistry ? ((0, model_registry_1.lookupProfile)(config.modelRegistry, selector) ?? undefined) : undefined;
52
+ // `config.model` is already resolved through the explicit durable
53
+ // `defaultModel`. Keep the product default separate so unset agrees with
54
+ // loadConfig() on the next Host bootstrap.
55
+ const internalDefaultModelSelector = 'gpt-4o';
56
+ const initialProfile = profileFor(config.model) ?? config.modelRegistry?.defaultProfile ?? undefined;
57
+ let defaultModelSelector = config.modelRegistry?.defaultProfile?.id ?? config.model;
58
+ const resolveRuntimeEffort = (session) => (0, effort_1.resolveProfileEffort)(profileFor(session?.model ?? defaultModelSelector) ?? initialProfile, {
59
+ session: session?.effortPreference,
60
+ project: (0, global_config_1.getProjectConfig)(cwd).defaultEffort,
61
+ global: (0, global_config_1.loadGlobalConfig)().defaultEffort ?? config.defaultEffort,
62
+ });
63
+ const initialEffort = resolveRuntimeEffort();
64
+ const store = new store_1.Store({
65
+ config,
66
+ tools: toolCatalog.entries.map(entry => entry.tool),
67
+ currentModel: config.model,
68
+ effortPreference: initialEffort.requested,
69
+ resolvedEffort: initialEffort,
70
+ memoryContent,
71
+ skillsContent: '',
72
+ projectInstructionsContent,
73
+ });
74
+ let llm = null;
75
+ let modelCoordinator;
76
+ const configured = config.modelRegistry
77
+ ? config.modelRegistry.defaultProfile !== null
78
+ : (0, config_1.isConfigured)(config);
79
+ if (configured) {
80
+ const defaultProvider = initialProfile
81
+ ? config.modelRegistry?.providers.get(initialProfile.provider)
82
+ : null;
83
+ llm = new llm_1.LLMService({
84
+ apiKey: defaultProvider
85
+ ? defaultProvider.apiKey.startsWith('$')
86
+ ? (process.env[defaultProvider.apiKey.slice(1)] ?? '')
87
+ : defaultProvider.apiKey
88
+ : config.apiKey,
89
+ baseUrl: defaultProvider?.baseUrl ?? config.apiBaseUrl,
90
+ model: initialProfile?.model ?? config.model,
91
+ fallbackModel: config.modelRegistry?.fallbackProfile?.model ?? config.fallbackModel,
92
+ providerProtocol: defaultProvider?.protocol,
93
+ reasoningCapability: initialProfile?.reasoningCapability,
94
+ fallbackReasoningCapability: config.modelRegistry?.fallbackProfile?.reasoningCapability,
95
+ effortPreference: initialEffort.requested,
96
+ });
97
+ llm.resilience = new provider_resilience_1.ProviderResilienceCoordinator();
98
+ modelCoordinator = new model_coordinator_1.ModelCoordinator();
99
+ if (config.modelRegistry && config.modelClientPool) {
100
+ modelCoordinator.bind(config.modelRegistry, config.modelClientPool);
101
+ modelCoordinator.initModel(initialProfile?.id ?? config.model);
102
+ }
103
+ if (config.apiBaseUrl) {
104
+ (0, model_context_1.discoverModelContexts)(config.apiBaseUrl, config.apiKey).catch(() => undefined);
105
+ }
106
+ }
107
+ const compactCoordinator = new compact_1.CompactCoordinator({
108
+ modelId: llm?.getModel() ?? config.model,
109
+ llm,
110
+ outputReserveTokens: llm?.getMaxTokens?.(),
111
+ compactInstructions: (0, global_config_1.getProjectConfig)(cwd).compactInstructions,
112
+ getContextCapsule: () => store.getSnapshot().harnessState?.capsule,
113
+ getHarnessState: () => store.getSnapshot().harnessState,
114
+ });
115
+ let currentSession = null;
116
+ let sessionRunner;
117
+ let settingsRuntimeIdleProbe = () => true;
118
+ let shuttingDown = false;
119
+ const applySessionState = (session, resolvedEffortOverride) => {
120
+ const selector = session?.model ?? defaultModelSelector;
121
+ const profile = profileFor(selector);
122
+ const provider = profile ? config.modelRegistry?.providers.get(profile.provider) : undefined;
123
+ const effort = resolvedEffortOverride ?? resolveRuntimeEffort(session);
124
+ if (profile) {
125
+ modelCoordinator?.initModel(profile.id);
126
+ if (provider && config.modelClientPool) {
127
+ llm?.setProviderClient(config.modelClientPool.getClient(provider));
128
+ }
129
+ llm?.setModel(profile.model);
130
+ }
131
+ else {
132
+ llm?.setModel(selector);
133
+ }
134
+ if (provider) {
135
+ llm?.setEffortContext({
136
+ preference: effort.requested,
137
+ protocol: provider.protocol,
138
+ capability: profile?.reasoningCapability,
139
+ fallbackCapability: config.modelRegistry?.fallbackProfile?.reasoningCapability,
140
+ });
141
+ }
142
+ store.setState({ currentModel: profile?.id ?? selector });
143
+ store.setEffort(effort.requested, effort);
144
+ compactCoordinator.configure({
145
+ modelId: profile?.model ?? selector,
146
+ llm,
147
+ outputReserveTokens: llm?.getMaxTokens?.(),
148
+ });
149
+ };
150
+ const setSession = (session) => {
151
+ applySessionState(session);
152
+ currentSession = session;
153
+ };
154
+ const currentSessionSettings = () => {
155
+ if (!currentSession)
156
+ return undefined;
157
+ return {
158
+ model: currentSession.model,
159
+ effort: resolveRuntimeEffort(currentSession).requested,
160
+ overridesProjectEffort: currentSession.effortPreference !== undefined,
161
+ };
162
+ };
163
+ const ensureSession = () => {
164
+ if (!currentSession) {
165
+ defaultModelSelector =
166
+ settingsCoordinator?.describe().sections.defaults.model.effectiveValue ??
167
+ defaultModelSelector;
168
+ const created = (0, session_storage_1.createSession)(cwd, defaultModelSelector);
169
+ (0, global_config_1.incrementSessionCount)();
170
+ setSession(created);
171
+ return created;
172
+ }
173
+ return currentSession;
174
+ };
175
+ const getSession = () => currentSession;
176
+ const prepareSettingsRuntime = (context) => {
177
+ const defaultModelOperation = context.operations.find(operation => operation.key === 'defaults.model');
178
+ const candidateDefaultModelSelector = defaultModelOperation?.op === 'set'
179
+ ? defaultModelOperation.value
180
+ : defaultModelOperation?.op === 'unset'
181
+ ? internalDefaultModelSelector
182
+ : defaultModelSelector;
183
+ const effortModelSelector = currentSession?.model ?? candidateDefaultModelSelector;
184
+ for (const operation of context.operations) {
185
+ if (operation.key === 'defaults.model') {
186
+ const candidate = operation.op === 'set' ? operation.value : internalDefaultModelSelector;
187
+ const configured = config.modelRegistry?.enabledProfiles.some(profile => profile.id === candidate);
188
+ if (config.modelRegistry && !configured) {
189
+ throw new Error(`Model ${candidate} is not enabled in the configured registry.`);
190
+ }
191
+ }
192
+ if ((operation.key === 'defaults.effort' || operation.key === 'defaults.globalEffort') &&
193
+ operation.op === 'set' &&
194
+ operation.value !== 'auto') {
195
+ const profile = profileFor(effortModelSelector);
196
+ const resolved = (0, effort_1.resolveProfileEffort)(profile, { request: operation.value });
197
+ if (!resolved.supported) {
198
+ throw new Error(`Effort ${operation.value} is unavailable for ${profile?.id ?? 'the active model'}.`);
199
+ }
200
+ }
201
+ }
202
+ };
203
+ const applySettingsRuntime = async (context) => {
204
+ const previousDefaultModel = defaultModelSelector;
205
+ const previousConfigModel = config.model;
206
+ const previousGlobalEffort = config.defaultEffort;
207
+ const previousToolConfirmation = config.toolConfirmation;
208
+ const changesDefaultModel = context.operations.some(operation => operation.key === 'defaults.model');
209
+ const changesEffort = context.operations.some(operation => operation.key === 'defaults.effort' || operation.key === 'defaults.globalEffort');
210
+ const changesToolConfirmation = context.operations.some(operation => operation.key === 'permissions.toolConfirmation');
211
+ try {
212
+ if (changesDefaultModel) {
213
+ defaultModelSelector = context.document.sections.defaults.model.effectiveValue;
214
+ config.model = defaultModelSelector;
215
+ }
216
+ const globalEffortOperation = context.operations.find(operation => operation.key === 'defaults.globalEffort');
217
+ if (globalEffortOperation) {
218
+ config.defaultEffort =
219
+ globalEffortOperation.op === 'set' ? globalEffortOperation.value : undefined;
220
+ }
221
+ if (changesToolConfirmation) {
222
+ config.toolConfirmation =
223
+ context.document.sections.permissions.toolConfirmation.effectiveValue;
224
+ }
225
+ if (changesDefaultModel || changesEffort)
226
+ applySessionState(currentSession);
227
+ if (changesToolConfirmation && sessionRunner && currentSession) {
228
+ await sessionRunner.restoreSession();
229
+ }
230
+ }
231
+ catch (error) {
232
+ const previousEffortField = context.before.sections.defaults.effort;
233
+ const previousResolvedEffort = (0, effort_1.resolveProfileEffort)(profileFor(currentSession?.model ?? previousDefaultModel) ?? initialProfile, {
234
+ session: currentSession?.effortPreference,
235
+ ...(previousEffortField.source === 'project'
236
+ ? { project: previousEffortField.effectiveValue }
237
+ : previousEffortField.source === 'global'
238
+ ? { global: previousEffortField.effectiveValue }
239
+ : {}),
240
+ });
241
+ defaultModelSelector = previousDefaultModel;
242
+ config.model = previousConfigModel;
243
+ config.defaultEffort = previousGlobalEffort;
244
+ config.toolConfirmation = previousToolConfirmation;
245
+ // Coordinator rolls durable bytes back only after this callback rejects.
246
+ // Restore the live effort from the pre-write view instead of rereading
247
+ // the still-new project/global bytes during this catch path.
248
+ applySessionState(currentSession, previousResolvedEffort);
249
+ if (changesToolConfirmation && sessionRunner && currentSession) {
250
+ await sessionRunner.restoreSession().catch(() => undefined);
251
+ }
252
+ throw error;
253
+ }
254
+ };
255
+ const settingsCoordinator = settings_coordinator_1.SettingsCoordinatorV1.create({
256
+ workspace: cwd,
257
+ onInvalidated: options.onSettingsInvalidated,
258
+ models: config.modelRegistry?.enabledProfiles.map(profile => ({
259
+ id: profile.id,
260
+ label: profile.displayName ?? profile.id,
261
+ provider: profile.provider,
262
+ })),
263
+ internalDefaultModel: internalDefaultModelSelector,
264
+ modelDefaultEffort: 'auto',
265
+ internalToolConfirmation: 'allow',
266
+ runtimeIdle: () => settingsRuntimeIdleProbe(),
267
+ runtimePrepare: prepareSettingsRuntime,
268
+ runtimeApply: applySettingsRuntime,
269
+ });
270
+ defaultModelSelector = settingsCoordinator.describe().sections.defaults.model.effectiveValue;
271
+ const describeSettings = () => settingsCoordinator.describe({
272
+ currentSession: currentSessionSettings(),
273
+ runtime: { busy: !settingsRuntimeIdleProbe() },
274
+ });
275
+ const updateSettings = input => settingsCoordinator.update({
276
+ ...input,
277
+ currentSession: currentSessionSettings(),
278
+ runtime: { busy: !settingsRuntimeIdleProbe() },
279
+ });
280
+ const synchronizeSettings = () => settingsCoordinator.synchronizeExternalChanges({
281
+ currentSession: currentSessionSettings(),
282
+ runtime: { busy: !settingsRuntimeIdleProbe() },
283
+ });
284
+ const bindSettingsRuntimeIdleProbe = probe => {
285
+ settingsRuntimeIdleProbe = probe;
286
+ return () => {
287
+ if (settingsRuntimeIdleProbe === probe)
288
+ settingsRuntimeIdleProbe = () => true;
289
+ };
290
+ };
291
+ const costTracker = store.getSnapshot().costTracker;
292
+ costTracker.setRecordSink(record => {
293
+ (0, usage_state_1.appendUsageRecord)(record, { sessionId: currentSession?.id, projectPath: cwd });
294
+ });
295
+ const unsubscribeLlmUsage = llm?.subscribeUsage(event => {
296
+ costTracker.record(event.usage, { model: event.model, requestKind: event.operation });
297
+ });
298
+ const shutdown = async () => {
299
+ if (shuttingDown)
300
+ return;
301
+ shuttingDown = true;
302
+ settingsCoordinator?.close();
303
+ await sessionRunner?.close(options.shutdownReason ?? 'Orion product runtime shutdown');
304
+ if (currentSession) {
305
+ const messages = (0, session_storage_1.readSessionMessages)(currentSession.id);
306
+ if (messages.length > 0)
307
+ (0, session_storage_1.updateSessionSummary)(currentSession.id, messages);
308
+ (0, session_storage_1.endSession)(currentSession.id);
309
+ }
310
+ unsubscribeLlmUsage?.();
311
+ };
312
+ const createAgentRunner = llm
313
+ ? (events, runnerOptions) => {
314
+ if (sessionRunner)
315
+ return sessionRunner;
316
+ sessionRunner = new orion_session_runner_1.OrionSessionRunnerV1({
317
+ eventSink: events,
318
+ getSessionId: () => ensureSession().id,
319
+ createRuntime: (sessionId, activation) => (0, product_orion_runtime_1.createProductOrionRuntimeV1)({
320
+ cwd,
321
+ config,
322
+ store,
323
+ llm: llm,
324
+ compactCoordinator,
325
+ toolCatalog,
326
+ skillProviders: [skillProvider],
327
+ mcpDescriptors: mcpAdapter.descriptors,
328
+ mcpConnector: mcpAdapter.connector,
329
+ approvalHandler: runnerOptions.approvalHandler,
330
+ }, sessionId, activation),
331
+ mode: () => {
332
+ const mode = store.getSnapshot().agentMode;
333
+ return mode === 'plan' ? 'plan' : mode === 'auto' ? 'auto' : 'build';
334
+ },
335
+ onActiveRuntime: options.onActiveSessionRuntime,
336
+ replayHistoryOnRestore: runnerOptions.replayHistoryOnRestore,
337
+ });
338
+ return sessionRunner;
339
+ }
340
+ : undefined;
341
+ const inspectSkills = async () => {
342
+ const controller = new AbortController();
343
+ const observation = await skillProvider.list({ id: `product:${cwd}`, sourceScopeOrder: undefined }, controller.signal);
344
+ return observation.descriptors;
345
+ };
346
+ return {
347
+ cwd,
348
+ version: version_1.PACKAGE_VERSION,
349
+ config,
350
+ store,
351
+ llm,
352
+ compactCoordinator,
353
+ modelCoordinator,
354
+ createAgentRunner,
355
+ getHarnessDiagnostics: async () => sessionRunner?.diagnostics(),
356
+ inspectSkills,
357
+ inspectMcp: () => mcpAdapter.descriptors,
358
+ rebindSessionRuntime: async () => {
359
+ if (sessionRunner && currentSession)
360
+ await sessionRunner.restoreSession();
361
+ },
362
+ settingsCoordinator,
363
+ describeSettings,
364
+ updateSettings,
365
+ synchronizeSettings,
366
+ bindSettingsRuntimeIdleProbe,
367
+ isConfigured: (0, config_1.isConfigured)(config),
368
+ ensureSession,
369
+ setSession,
370
+ getSession,
371
+ shutdown,
372
+ };
373
+ }
374
+ //# sourceMappingURL=product-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-bootstrap.js","sourceRoot":"","sources":["../../src/runtime/product-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import type { McpConnectorV1, McpServerDescriptorInputV1 } from './mcp';
7
7
  import { type OrionRuntimeV1 } from './orion-runtime-v1';
8
8
  import type { SkillProviderV1 } from './skills';
9
9
  import type { FirstPartyApprovalHandlerV1 } from './first-party-tool-services';
10
+ import type { ThreadSessionRuntimeActivationV1 } from './thread-session-view';
10
11
  import type { SubagentThreadReceiptV1 } from './subagent-thread-runtime';
11
12
  import { type SubagentRole } from './subagents/types';
12
13
  export interface ProductOrionRuntimeOptionsV1 {
@@ -31,5 +32,5 @@ export interface ProductOrionRuntimeOptionsV1 {
31
32
  readonly onSubagentReceipt?: (receipt: SubagentThreadReceiptV1) => void | Promise<void>;
32
33
  }
33
34
  /** Build one explicit OrionRuntime owner for a legacy Session/v2 Thread identity. */
34
- export declare function createProductOrionRuntimeV1(options: ProductOrionRuntimeOptionsV1, sessionId: string): OrionRuntimeV1;
35
+ export declare function createProductOrionRuntimeV1(options: ProductOrionRuntimeOptionsV1, sessionId: string, activation?: ThreadSessionRuntimeActivationV1): OrionRuntimeV1;
35
36
  //# sourceMappingURL=product-orion-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-orion-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/product-orion-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAK1E,OAAO,EAAE,UAAU,EAAgC,MAAM,iBAAiB,CAAC;AAI3E,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAMhG,OAAO,KAAK,EAIV,cAAc,EAEd,0BAA0B,EAC3B,MAAM,OAAO,CAAC;AACf,OAAO,EAIL,KAAK,cAAc,EAIpB,MAAM,oBAAoB,CAAC;AAU5B,OAAO,KAAK,EAKV,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAS/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAMzE,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASpG,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,uFAAuF;IACvF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,2BAA2B,CAAC;IACvD,8EAA8E;IAC9E,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE;QAC7C,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;KACnC,KAAK,UAAU,CAAC;IACjB,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzF;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,EACrC,SAAS,EAAE,MAAM,GAChB,cAAc,CAsKhB"}
1
+ {"version":3,"file":"product-orion-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/product-orion-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAK1E,OAAO,EAAE,UAAU,EAAgC,MAAM,iBAAiB,CAAC;AAU3E,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAUhG,OAAO,KAAK,EAIV,cAAc,EAEd,0BAA0B,EAC3B,MAAM,OAAO,CAAC;AACf,OAAO,EAIL,KAAK,cAAc,EAIpB,MAAM,oBAAoB,CAAC;AAU5B,OAAO,KAAK,EAKV,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAS9E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAMzE,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASpG,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,uFAAuF;IACvF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,2BAA2B,CAAC;IACvD,8EAA8E;IAC9E,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE;QAC7C,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;KACnC,KAAK,UAAU,CAAC;IACjB,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzF;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,EACrC,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,gCAAgC,GAC5C,cAAc,CA6KhB"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createProductOrionRuntimeV1 = createProductOrionRuntimeV1;
4
4
  const path_1 = require("path");
5
+ const fs_1 = require("fs");
5
6
  const prompt_1 = require("../framework/prompt");
6
7
  const stop_decision_1 = require("../framework/stop-decision");
7
8
  const prompt_context_1 = require("../memory/prompt-context");
@@ -9,11 +10,12 @@ const file_context_1 = require("../services/file-context");
9
10
  const goal_storage_1 = require("../services/goal-storage");
10
11
  const llm_1 = require("../services/llm");
11
12
  const session_storage_1 = require("../services/session-storage");
13
+ const model_registry_1 = require("../services/model-registry");
12
14
  const token_estimate_1 = require("../utils/token-estimate");
15
+ const debug_log_1 = require("../utils/debug-log");
13
16
  const paths_1 = require("../product/paths");
14
17
  const builtin_tool_provider_1 = require("./builtin-tool-provider");
15
18
  const legacy_thread_materializer_1 = require("./legacy-thread-materializer");
16
- const thread_event_store_1 = require("./thread-event-store");
17
19
  const orion_runtime_v1_1 = require("./orion-runtime-v1");
18
20
  const prompts_1 = require("./prompts");
19
21
  const canonical_1 = require("./protocol/canonical");
@@ -27,20 +29,27 @@ const presets_1 = require("./subagents/presets");
27
29
  const types_1 = require("./subagents/types");
28
30
  const turn_commit_1 = require("./turn-commit");
29
31
  /** Build one explicit OrionRuntime owner for a legacy Session/v2 Thread identity. */
30
- function createProductOrionRuntimeV1(options, sessionId) {
32
+ function createProductOrionRuntimeV1(options, sessionId, activation) {
31
33
  let promptState;
32
34
  const scheduledPlanReceipts = new Set();
33
- let storage = (0, legacy_thread_materializer_1.resolveSessionStorageV1)(options.cwd, sessionId);
34
- if (storage.kind === 'legacy') {
35
+ let openedStorage = activation
36
+ ? openedStorageFromActivation(options.cwd, sessionId, activation)
37
+ : (0, legacy_thread_materializer_1.openSessionStorageV1)(options.cwd, sessionId);
38
+ if (openedStorage.resolution.kind === 'legacy') {
35
39
  (0, legacy_thread_materializer_1.materializeLegacyThreadV1)({ projectPath: options.cwd, sessionId });
36
- storage = (0, legacy_thread_materializer_1.resolveSessionStorageV1)(options.cwd, sessionId);
40
+ openedStorage = (0, legacy_thread_materializer_1.openSessionStorageV1)(options.cwd, sessionId);
37
41
  }
38
- if (storage.kind !== 'thread') {
42
+ const { resolution: storage } = openedStorage;
43
+ if (storage.kind !== 'thread' || !('store' in openedStorage)) {
39
44
  throw new Error(`Session ${sessionId} did not cut over to a v2 Thread.`);
40
45
  }
41
- const existingProjection = new thread_event_store_1.ThreadEventStore((0, paths_1.getProjectThreadsV2Dir)(options.cwd), storage.threadId).loadProjection();
46
+ const existingProjection = openedStorage.store.loadProjection();
42
47
  const hasDurableTurnCommit = Object.values(existingProjection.turns).some(turn => turn.commit);
43
- const profile = options.config.modelRegistry?.defaultProfile;
48
+ const selectedModel = options.store.getSnapshot().currentModel;
49
+ const profile = options.config.modelRegistry
50
+ ? ((0, model_registry_1.lookupProfile)(options.config.modelRegistry, selectedModel) ??
51
+ options.config.modelRegistry.defaultProfile)
52
+ : undefined;
44
53
  const provider = profile
45
54
  ? options.config.modelRegistry?.providers.get(profile.provider)
46
55
  : undefined;
@@ -79,6 +88,7 @@ function createProductOrionRuntimeV1(options, sessionId) {
79
88
  eventStore: {
80
89
  rootDir: (0, paths_1.getProjectThreadsV2Dir)(options.cwd),
81
90
  threadId: storage.threadId,
91
+ store: openedStorage.store,
82
92
  },
83
93
  projectPath: options.cwd,
84
94
  taskContext: {
@@ -153,13 +163,15 @@ function createProductOrionRuntimeV1(options, sessionId) {
153
163
  harnessState: commit.taskContextState,
154
164
  conversationHistory: commit.history.map(message => ({ ...message })),
155
165
  });
166
+ synchronizeSessionThreadReadModel(sessionId, storage.generation, runtime.graph.eventStore);
156
167
  const planReceipt = planReceiptFromCommit(durableCommit);
157
168
  if (planReceipt) {
158
169
  projectPlanReceipt(options.store, planReceipt);
159
170
  schedulePlanExecution(runtime, planReceipt, scheduledPlanReceipts);
160
171
  }
161
172
  },
162
- onRuntimeStarted: ({ restoredCommit, thread }) => {
173
+ onRuntimeStarted: ({ restoredCommit, thread, eventStore }) => {
174
+ synchronizeSessionThreadReadModel(sessionId, storage.generation, eventStore);
163
175
  if (restoredCommit)
164
176
  projectRestoredTurnCommit(options.store, restoredCommit);
165
177
  const planReceipt = restoredCommit ? planReceiptFromCommit(restoredCommit) : undefined;
@@ -174,9 +186,67 @@ function createProductOrionRuntimeV1(options, sessionId) {
174
186
  });
175
187
  return runtime;
176
188
  }
189
+ function openedStorageFromActivation(projectPath, sessionId, activation) {
190
+ if (activation.version !== 1 ||
191
+ (0, fs_1.realpathSync)((0, path_1.resolve)(activation.projectPath)) !== (0, fs_1.realpathSync)((0, path_1.resolve)(projectPath)) ||
192
+ activation.sessionId !== sessionId ||
193
+ activation.store.threadId !== activation.threadId) {
194
+ throw new Error(`Session ${sessionId} Runtime activation does not match its target identity.`);
195
+ }
196
+ const index = (0, legacy_thread_materializer_1.loadThreadCutoverIndexV1)(projectPath);
197
+ const entry = index.sessions[sessionId];
198
+ if (!entry || entry.threadId !== activation.threadId) {
199
+ throw new Error(`Session ${sessionId} Runtime activation no longer matches the cutover index.`);
200
+ }
201
+ const projection = activation.store.loadProjection();
202
+ if (projection.cursor < activation.cursor ||
203
+ (projection.cursor === activation.cursor && projection.digest !== activation.projectionDigest)) {
204
+ throw new Error(`Session ${sessionId} Runtime activation moved behind its verified edge.`);
205
+ }
206
+ return Object.freeze({
207
+ resolution: Object.freeze({
208
+ kind: 'thread',
209
+ sessionId,
210
+ threadId: activation.threadId,
211
+ cursor: projection.cursor,
212
+ projectionDigest: projection.digest,
213
+ generation: index.generation,
214
+ }),
215
+ store: activation.store,
216
+ });
217
+ }
218
+ function synchronizeSessionThreadReadModel(sessionId, cutoverGeneration, eventStore) {
219
+ try {
220
+ const head = eventStore.captureReadModelHead();
221
+ const { projection } = head;
222
+ (0, session_storage_1.updateSessionThreadReadModel)(sessionId, {
223
+ threadId: projection.threadId,
224
+ cursor: projection.cursor,
225
+ projectionDigest: projection.digest,
226
+ cutoverGeneration,
227
+ lastRecordHash: head.lastRecordHash,
228
+ logDevice: head.log.device,
229
+ logInode: head.log.inode,
230
+ logMtimeNs: head.log.mtimeNs,
231
+ logCtimeNs: head.log.ctimeNs,
232
+ messageCount: Object.values(projection.items).filter(item => item.kind === 'message' && item.status !== 'started').length,
233
+ historySizeBytes: head.log.bytes,
234
+ updatedAt: head.lastEventTimestamp,
235
+ });
236
+ }
237
+ catch (error) {
238
+ // Session-list metadata is a rebuildable read model. A projection refresh
239
+ // must never turn a committed agent turn into a reported failure.
240
+ (0, debug_log_1.debugError)('product-orion-runtime.sessionReadModel', error, sessionId);
241
+ }
242
+ }
177
243
  function createProductSubagentCompositionV1(options, model) {
178
244
  const config = (0, policy_1.clampSubagentConfig)(options.config.subagents ?? types_1.DEFAULT_SUBAGENT_CONFIG);
179
- const rootLlmConfig = (0, runtime_integration_1.deriveRootLlmConfig)(options.config);
245
+ const selectedProfileId = options.store.getSnapshot().currentModel;
246
+ const selectedProfile = options.config.modelRegistry
247
+ ? (0, model_registry_1.lookupProfile)(options.config.modelRegistry, selectedProfileId)
248
+ : null;
249
+ const rootLlmConfig = (0, runtime_integration_1.deriveRootLlmConfig)(options.config, selectedProfileId);
180
250
  if (config.mode === 'off' || !rootLlmConfig.apiKey)
181
251
  return undefined;
182
252
  const allowedNames = new Set(presets_1.READ_ONLY_INVESTIGATION_TOOLS);
@@ -234,7 +304,7 @@ function createProductSubagentCompositionV1(options, model) {
234
304
  createModelExecutor: childInput => {
235
305
  const executor = options.createSubagentModelExecutor
236
306
  ? options.createSubagentModelExecutor(childInput)
237
- : createProductChildModelExecutor(options, rootLlmConfig, model.providerProtocol);
307
+ : createProductChildModelExecutor(options, rootLlmConfig, model.providerProtocol, selectedProfile?.reasoningCapability);
238
308
  if (executor === options.llm || issuedModels.has(executor)) {
239
309
  throw new Error('Subagent model factory must return a distinct LLMService for every child request.');
240
310
  }
@@ -335,11 +405,11 @@ function createProductSubagentRolePolicies(options, config) {
335
405
  ]);
336
406
  return Object.freeze(Object.fromEntries(entries));
337
407
  }
338
- function createProductChildModelExecutor(options, rootConfig, providerProtocol) {
408
+ function createProductChildModelExecutor(options, rootConfig, providerProtocol, reasoningCapability) {
339
409
  const executor = new llm_1.LLMService({
340
410
  ...(0, production_1.createChildLlmConfig)(rootConfig),
341
411
  providerProtocol,
342
- reasoningCapability: options.config.modelRegistry?.defaultProfile?.reasoningCapability,
412
+ reasoningCapability,
343
413
  fallbackReasoningCapability: options.config.modelRegistry?.fallbackProfile?.reasoningCapability,
344
414
  effortPreference: options.config.defaultEffort,
345
415
  });