@moorline/core 0.0.1 → 0.0.2

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 (405) hide show
  1. package/dist/app/bootstrap/apiAdapterPackageLoader.d.ts +0 -10
  2. package/dist/app/bootstrap/apiAdapterPackageLoader.js +1 -1
  3. package/dist/app/bootstrap/apiAdapterPackageLoader.js.map +1 -1
  4. package/dist/app/bootstrap/operatorPackageService.d.ts +11 -4
  5. package/dist/app/bootstrap/operatorPackageService.js +231 -59
  6. package/dist/app/bootstrap/operatorPackageService.js.map +1 -1
  7. package/dist/app/bootstrap/runtimeBootstrap.d.ts +2 -1
  8. package/dist/app/bootstrap/runtimeBootstrap.js +14 -3
  9. package/dist/app/bootstrap/runtimeBootstrap.js.map +1 -1
  10. package/dist/app/control-api/services/actions.d.ts +12 -16
  11. package/dist/app/control-api/services/actions.js +89 -68
  12. package/dist/app/control-api/services/actions.js.map +1 -1
  13. package/dist/app/control-api/services/controlPlane.d.ts +17 -21
  14. package/dist/app/control-api/services/controlPlane.js +69 -74
  15. package/dist/app/control-api/services/controlPlane.js.map +1 -1
  16. package/dist/app/control-api/services/state.js +5 -9
  17. package/dist/app/control-api/services/state.js.map +1 -1
  18. package/dist/core/domain/memory/retrieval/indexTargets.js +6 -6
  19. package/dist/core/domain/memory/retrieval/indexTargets.js.map +1 -1
  20. package/dist/core/domain/memory/retrieval/schema.js +10 -6
  21. package/dist/core/domain/memory/retrieval/schema.js.map +1 -1
  22. package/dist/core/domain/memory/retrieval/scope.d.ts +2 -2
  23. package/dist/core/domain/memory/retrieval/scope.js +7 -7
  24. package/dist/core/domain/memory/retrieval/scope.js.map +1 -1
  25. package/dist/core/domain/memory/retrieval/types.d.ts +2 -7
  26. package/dist/core/domain/memory/retrieval/types.js.map +1 -1
  27. package/dist/core/domain/memory/retrieval.d.ts +1 -2
  28. package/dist/core/domain/memory/retrieval.js +9 -16
  29. package/dist/core/domain/memory/retrieval.js.map +1 -1
  30. package/dist/core/domain/memory/store.d.ts +1 -1
  31. package/dist/core/domain/memory/store.js +2 -2
  32. package/dist/core/domain/memory/store.js.map +1 -1
  33. package/dist/core/domain/sessions/managedWorkerSessions.d.ts +0 -1
  34. package/dist/core/domain/sessions/managedWorkerSessions.js.map +1 -1
  35. package/dist/core/domain/sessions/runtimeWorkManagementService.d.ts +17 -62
  36. package/dist/core/domain/sessions/runtimeWorkManagementService.js +97 -341
  37. package/dist/core/domain/sessions/runtimeWorkManagementService.js.map +1 -1
  38. package/dist/core/domain/sessions/sessionLifecycleService.d.ts +1 -1
  39. package/dist/core/domain/sessions/sessionLifecycleService.js +4 -4
  40. package/dist/core/domain/sessions/sessionLifecycleService.js.map +1 -1
  41. package/dist/core/domain/sessions/sessionState.d.ts +10 -8
  42. package/dist/core/domain/sessions/sessionState.js +38 -28
  43. package/dist/core/domain/sessions/sessionState.js.map +1 -1
  44. package/dist/core/domain/sessions/workManagement/transportResourceNames.d.ts +2 -0
  45. package/dist/core/domain/sessions/workManagement/{spaceNames.js → transportResourceNames.js} +2 -2
  46. package/dist/core/domain/sessions/workManagement/transportResourceNames.js.map +1 -0
  47. package/dist/core/extension/capabilities/capabilities.d.ts +1 -1
  48. package/dist/core/extension/capabilities/capabilities.js +8 -8
  49. package/dist/core/extension/capabilities/capabilities.js.map +1 -1
  50. package/dist/core/extension/packages/bundledArchiveResolver.d.ts +2 -0
  51. package/dist/core/extension/packages/{officialArchiveResolver.js → bundledArchiveResolver.js} +4 -4
  52. package/dist/core/extension/packages/bundledArchiveResolver.js.map +1 -0
  53. package/dist/core/extension/packages/npmRegistryClient.d.ts +3 -2
  54. package/dist/core/extension/packages/npmRegistryClient.js +9 -22
  55. package/dist/core/extension/packages/npmRegistryClient.js.map +1 -1
  56. package/dist/core/extension/packages/packageActivation.d.ts +0 -4
  57. package/dist/core/extension/packages/packageActivation.js +2 -12
  58. package/dist/core/extension/packages/packageActivation.js.map +1 -1
  59. package/dist/core/extension/packages/packageApplyPlanner.js +1 -4
  60. package/dist/core/extension/packages/packageApplyPlanner.js.map +1 -1
  61. package/dist/core/extension/packages/packageConfigSchema.js +0 -33
  62. package/dist/core/extension/packages/packageConfigSchema.js.map +1 -1
  63. package/dist/core/extension/packages/packageDependencyResolver.js +2 -20
  64. package/dist/core/extension/packages/packageDependencyResolver.js.map +1 -1
  65. package/dist/core/extension/packages/packageInstaller.js +3 -0
  66. package/dist/core/extension/packages/packageInstaller.js.map +1 -1
  67. package/dist/core/extension/packages/packageInventoryStore.js +20 -4
  68. package/dist/core/extension/packages/packageInventoryStore.js.map +1 -1
  69. package/dist/core/extension/packages/packageRegistryBlocklist.d.ts +2 -2
  70. package/dist/core/extension/packages/packageRegistryBlocklist.js +1 -1
  71. package/dist/core/extension/packages/packageRegistryBlocklist.js.map +1 -1
  72. package/dist/core/extension/packages/packageRegistryService.d.ts +8 -3
  73. package/dist/core/extension/packages/packageRegistryService.js +109 -49
  74. package/dist/core/extension/packages/packageRegistryService.js.map +1 -1
  75. package/dist/core/extension/packages/packageRegistryTypes.d.ts +14 -6
  76. package/dist/core/extension/packages/packageSource.js +120 -5
  77. package/dist/core/extension/packages/packageSource.js.map +1 -1
  78. package/dist/core/extension/packages/packageValidation.js +1 -1
  79. package/dist/core/extension/packages/packageValidation.js.map +1 -1
  80. package/dist/core/extension/packages/packageVersionResolver.d.ts +6 -11
  81. package/dist/core/extension/packages/packageVersionResolver.js +5 -5
  82. package/dist/core/extension/packages/packageVersionResolver.js.map +1 -1
  83. package/dist/core/extension/packages/runtimeStartability.d.ts +2 -2
  84. package/dist/core/extension/packages/runtimeStartability.js +26 -23
  85. package/dist/core/extension/packages/runtimeStartability.js.map +1 -1
  86. package/dist/core/extension/plugins/pluginHost.d.ts +9 -4
  87. package/dist/core/extension/plugins/pluginHost.js +33 -7
  88. package/dist/core/extension/plugins/pluginHost.js.map +1 -1
  89. package/dist/core/extension/plugins/pluginId.d.ts +0 -1
  90. package/dist/core/extension/plugins/pluginId.js +0 -3
  91. package/dist/core/extension/plugins/pluginId.js.map +1 -1
  92. package/dist/core/extension/plugins/runtimePluginLoader.d.ts +0 -1
  93. package/dist/core/extension/plugins/runtimePluginLoader.js +0 -7
  94. package/dist/core/extension/plugins/runtimePluginLoader.js.map +1 -1
  95. package/dist/core/extension/skills/skillRegistry.d.ts +3 -2
  96. package/dist/core/extension/skills/skillWriter.d.ts +1 -1
  97. package/dist/core/extension/skills/skillWriter.js +2 -2
  98. package/dist/core/runtime/execution/commandReactor.d.ts +5 -5
  99. package/dist/core/runtime/execution/commandReactor.js +10 -7
  100. package/dist/core/runtime/execution/commandReactor.js.map +1 -1
  101. package/dist/core/runtime/execution/defaultModelSelection.js +1 -1
  102. package/dist/core/runtime/execution/orchestrationEngine.js +10 -10
  103. package/dist/core/runtime/execution/orchestrationEngine.js.map +1 -1
  104. package/dist/core/runtime/execution/orchestrationHealth.d.ts +0 -7
  105. package/dist/core/runtime/execution/orchestrationHealth.js +1 -1
  106. package/dist/core/runtime/execution/orchestrationHealth.js.map +1 -1
  107. package/dist/core/runtime/execution/pluginContext/defaultSessionOwner.js +3 -5
  108. package/dist/core/runtime/execution/pluginContext/defaultSessionOwner.js.map +1 -1
  109. package/dist/core/runtime/execution/pluginContext/pluginCapabilities.d.ts +0 -2
  110. package/dist/core/runtime/execution/pluginContext/pluginCapabilities.js +0 -2
  111. package/dist/core/runtime/execution/pluginContext/pluginCapabilities.js.map +1 -1
  112. package/dist/core/runtime/execution/pluginContext/pluginContextFactory.d.ts +1 -2
  113. package/dist/core/runtime/execution/pluginContext/pluginContextFactory.js +1 -2
  114. package/dist/core/runtime/execution/pluginContext/pluginContextFactory.js.map +1 -1
  115. package/dist/core/runtime/execution/providerCoordination/providerSessionCoordinator.js +3 -3
  116. package/dist/core/runtime/execution/providerCoordination/providerSessionCoordinator.js.map +1 -1
  117. package/dist/core/runtime/execution/providerOrchestration/ports.d.ts +3 -13
  118. package/dist/core/runtime/execution/providerOrchestration/providerAttachmentResolver.d.ts +3 -3
  119. package/dist/core/runtime/execution/providerOrchestration/providerAttachmentResolver.js +4 -5
  120. package/dist/core/runtime/execution/providerOrchestration/providerAttachmentResolver.js.map +1 -1
  121. package/dist/core/runtime/execution/providerOrchestration/providerCompactionPolicy.d.ts +2 -1
  122. package/dist/core/runtime/execution/providerOrchestration/providerCompactionPolicy.js +5 -5
  123. package/dist/core/runtime/execution/providerOrchestration/providerCompactionPolicy.js.map +1 -1
  124. package/dist/core/runtime/execution/providerOrchestration/providerEventPipeline.d.ts +3 -5
  125. package/dist/core/runtime/execution/providerOrchestration/providerEventPipeline.js +10 -8
  126. package/dist/core/runtime/execution/providerOrchestration/providerEventPipeline.js.map +1 -1
  127. package/dist/core/runtime/execution/providerOrchestration/providerOrchestrator.d.ts +3 -3
  128. package/dist/core/runtime/execution/providerOrchestration/providerOrchestrator.js +0 -3
  129. package/dist/core/runtime/execution/providerOrchestration/providerOrchestrator.js.map +1 -1
  130. package/dist/core/runtime/execution/providerOrchestration/providerRequestProjector.d.ts +3 -2
  131. package/dist/core/runtime/execution/providerOrchestration/providerRequestProjector.js +6 -6
  132. package/dist/core/runtime/execution/providerOrchestration/providerRequestProjector.js.map +1 -1
  133. package/dist/core/runtime/execution/providerOrchestration/providerSessionOrchestrator.d.ts +9 -6
  134. package/dist/core/runtime/execution/providerOrchestration/providerSessionOrchestrator.js +36 -15
  135. package/dist/core/runtime/execution/providerOrchestration/providerSessionOrchestrator.js.map +1 -1
  136. package/dist/core/runtime/execution/providerOrchestration/providerTurnBroker.d.ts +9 -3
  137. package/dist/core/runtime/execution/providerOrchestration/providerTurnBroker.js +19 -7
  138. package/dist/core/runtime/execution/providerOrchestration/providerTurnBroker.js.map +1 -1
  139. package/dist/core/runtime/execution/providerProjectionTypes.d.ts +4 -2
  140. package/dist/core/runtime/execution/providerProjectionTypes.js +2 -0
  141. package/dist/core/runtime/execution/providerProjectionTypes.js.map +1 -1
  142. package/dist/core/runtime/execution/providerSessionDirectory.js +12 -4
  143. package/dist/core/runtime/execution/providerSessionDirectory.js.map +1 -1
  144. package/dist/core/runtime/execution/runtimeDomain.d.ts +11 -9
  145. package/dist/core/runtime/execution/runtimeDomain.js +10 -3
  146. package/dist/core/runtime/execution/runtimeDomain.js.map +1 -1
  147. package/dist/core/runtime/execution/runtimeIngestion.js +15 -13
  148. package/dist/core/runtime/execution/runtimeIngestion.js.map +1 -1
  149. package/dist/core/runtime/execution/runtimeInteractionService.d.ts +4 -18
  150. package/dist/core/runtime/execution/runtimeInteractionService.js +15 -93
  151. package/dist/core/runtime/execution/runtimeInteractionService.js.map +1 -1
  152. package/dist/core/runtime/execution/runtimeOrchestrationRequestService.d.ts +1 -1
  153. package/dist/core/runtime/execution/runtimeOrchestrationRequestService.js +8 -28
  154. package/dist/core/runtime/execution/runtimeOrchestrationRequestService.js.map +1 -1
  155. package/dist/core/runtime/execution/runtimeOrchestrationRequests.d.ts +7 -29
  156. package/dist/core/runtime/execution/runtimeOrchestrationRequests.js +21 -67
  157. package/dist/core/runtime/execution/runtimeOrchestrationRequests.js.map +1 -1
  158. package/dist/core/runtime/execution/runtimeOrchestrationResult.js +5 -0
  159. package/dist/core/runtime/execution/runtimeOrchestrationResult.js.map +1 -1
  160. package/dist/core/runtime/execution/runtimePendingRequestService.d.ts +2 -2
  161. package/dist/core/runtime/execution/runtimePendingRequestService.js +10 -10
  162. package/dist/core/runtime/execution/runtimePendingRequestService.js.map +1 -1
  163. package/dist/core/runtime/execution/runtimePluginContextService.d.ts +28 -15
  164. package/dist/core/runtime/execution/runtimePluginContextService.js +989 -166
  165. package/dist/core/runtime/execution/runtimePluginContextService.js.map +1 -1
  166. package/dist/core/runtime/execution/runtimeWorkerQueues.js +1 -1
  167. package/dist/core/runtime/execution/runtimeWorkerQueues.js.map +1 -1
  168. package/dist/core/runtime/hosting/managedTransportResourceMetadata.d.ts +6 -0
  169. package/dist/core/runtime/hosting/managedTransportResourceMetadata.js +8 -0
  170. package/dist/core/runtime/hosting/managedTransportResourceMetadata.js.map +1 -0
  171. package/dist/core/runtime/hosting/runtimeHostingService.d.ts +1 -1
  172. package/dist/core/runtime/hosting/runtimeHostingService.js +16 -20
  173. package/dist/core/runtime/hosting/runtimeHostingService.js.map +1 -1
  174. package/dist/core/runtime/hosting/runtimeLayout.js +1 -1
  175. package/dist/core/runtime/hosting/runtimeLayout.js.map +1 -1
  176. package/dist/core/runtime/hosting/runtimeTransportSurfaceService.d.ts +4 -4
  177. package/dist/core/runtime/hosting/runtimeTransportSurfaceService.js +17 -17
  178. package/dist/core/runtime/hosting/runtimeTransportSurfaceService.js.map +1 -1
  179. package/dist/core/runtime/hosting/systemEmbeds.d.ts +0 -1
  180. package/dist/core/runtime/hosting/systemEmbeds.js +0 -9
  181. package/dist/core/runtime/hosting/systemEmbeds.js.map +1 -1
  182. package/dist/core/runtime/lifecycle/{managedChannelLifecycleService.d.ts → managedTransportResourceLifecycleService.d.ts} +6 -9
  183. package/dist/core/runtime/lifecycle/managedTransportResourceLifecycleService.js +158 -0
  184. package/dist/core/runtime/lifecycle/managedTransportResourceLifecycleService.js.map +1 -0
  185. package/dist/core/runtime/lifecycle/packageJobSchedulerService.d.ts +21 -0
  186. package/dist/core/runtime/lifecycle/packageJobSchedulerService.js +84 -0
  187. package/dist/core/runtime/lifecycle/packageJobSchedulerService.js.map +1 -0
  188. package/dist/core/runtime/lifecycle/runtimeLifecycleService.d.ts +2 -13
  189. package/dist/core/runtime/lifecycle/runtimeLifecycleService.js +19 -250
  190. package/dist/core/runtime/lifecycle/runtimeLifecycleService.js.map +1 -1
  191. package/dist/core/runtime/moorlineRuntime.d.ts +7 -8
  192. package/dist/core/runtime/moorlineRuntime.js +71 -47
  193. package/dist/core/runtime/moorlineRuntime.js.map +1 -1
  194. package/dist/core/runtime/moorlineRuntimeBuilder.d.ts +17 -18
  195. package/dist/core/runtime/moorlineRuntimeBuilder.js +53 -93
  196. package/dist/core/runtime/moorlineRuntimeBuilder.js.map +1 -1
  197. package/dist/core/runtime/runtimeBootstrapRegistry.d.ts +0 -2
  198. package/dist/core/runtime/runtimeBootstrapRegistry.js +0 -6
  199. package/dist/core/runtime/runtimeBootstrapRegistry.js.map +1 -1
  200. package/dist/core/runtime/runtimeStatus.js +2 -2
  201. package/dist/core/runtime/runtimeStatus.js.map +1 -1
  202. package/dist/core/runtime/supervision/runtimeControlService.js +4 -1
  203. package/dist/core/runtime/supervision/runtimeControlService.js.map +1 -1
  204. package/dist/core/shared/errors/statusError.d.ts +5 -0
  205. package/dist/core/shared/errors/statusError.js +18 -0
  206. package/dist/core/shared/errors/statusError.js.map +1 -0
  207. package/dist/core/shared/fs/canonicalPathContainment.d.ts +0 -2
  208. package/dist/core/shared/fs/canonicalPathContainment.js +1 -6
  209. package/dist/core/shared/fs/canonicalPathContainment.js.map +1 -1
  210. package/dist/core/shared/fs/runtimeOwnedPath.d.ts +1 -1
  211. package/dist/core/shared/fs/runtimeOwnedPath.js +3 -3
  212. package/dist/core/shared/fs/runtimeOwnedPath.js.map +1 -1
  213. package/dist/core/shared/scheduling/packageSchedule.d.ts +22 -0
  214. package/dist/core/{domain/missions/missionSchedule.js → shared/scheduling/packageSchedule.js} +15 -18
  215. package/dist/core/shared/scheduling/packageSchedule.js.map +1 -0
  216. package/dist/core/shared/utils/childProcessEnv.js +1 -1
  217. package/dist/core/shared/utils/childProcessEnv.js.map +1 -1
  218. package/dist/core/shared/utils/payloadRedaction.d.ts +0 -12
  219. package/dist/core/shared/utils/payloadRedaction.js +0 -77
  220. package/dist/core/shared/utils/payloadRedaction.js.map +1 -1
  221. package/dist/core/shared/utils/remoteNetworkPolicy.d.ts +0 -4
  222. package/dist/core/shared/utils/remoteNetworkPolicy.js +1 -7
  223. package/dist/core/shared/utils/remoteNetworkPolicy.js.map +1 -1
  224. package/dist/core/shared/utils/runtimeMessageUtils.d.ts +0 -1
  225. package/dist/core/shared/utils/runtimeMessageUtils.js +0 -19
  226. package/dist/core/shared/utils/runtimeMessageUtils.js.map +1 -1
  227. package/dist/core/system/backup/runtimeBackupService.d.ts +0 -2
  228. package/dist/core/system/backup/runtimeBackupService.js +71 -2
  229. package/dist/core/system/backup/runtimeBackupService.js.map +1 -1
  230. package/dist/core/system/config/configStore.d.ts +3 -3
  231. package/dist/core/system/config/configStore.js +19 -20
  232. package/dist/core/system/config/configStore.js.map +1 -1
  233. package/dist/core/system/projection/managementReadModel/deps.d.ts +4 -5
  234. package/dist/core/system/projection/managementReadModel/objects/serviceObjects.d.ts +2 -1
  235. package/dist/core/system/projection/managementReadModel/objects/serviceObjects.js +13 -7
  236. package/dist/core/system/projection/managementReadModel/objects/serviceObjects.js.map +1 -1
  237. package/dist/core/system/projection/managementReadModel/packageTrust.d.ts +5 -0
  238. package/dist/core/system/projection/managementReadModel/packageTrust.js +40 -0
  239. package/dist/core/system/projection/managementReadModel/packageTrust.js.map +1 -0
  240. package/dist/core/system/projection/managementReadModel/pluginDiskRecords.d.ts +0 -1
  241. package/dist/core/system/projection/managementReadModel/pluginDiskRecords.js +1 -10
  242. package/dist/core/system/projection/managementReadModel/pluginDiskRecords.js.map +1 -1
  243. package/dist/core/system/projection/managementReadModelService.d.ts +3 -1
  244. package/dist/core/system/projection/managementReadModelService.js +133 -117
  245. package/dist/core/system/projection/managementReadModelService.js.map +1 -1
  246. package/dist/core/system/projection/pendingRequestProjectionStore.d.ts +1 -1
  247. package/dist/core/system/projection/pendingRequestProjectionStore.js +9 -9
  248. package/dist/core/system/projection/pendingRequestProjectionStore.js.map +1 -1
  249. package/dist/core/system/projection/runtimeActivityStore.d.ts +1 -1
  250. package/dist/core/system/projection/runtimeActivityStore.js +7 -7
  251. package/dist/core/system/projection/runtimeActivityStore.js.map +1 -1
  252. package/dist/core/system/projection/runtimeProjectionService.d.ts +1 -1
  253. package/dist/core/system/projection/runtimeProjectionService.js +3 -3
  254. package/dist/core/system/projection/runtimeProjectionService.js.map +1 -1
  255. package/dist/core/system/projection/runtimeReceiptStore.js +5 -5
  256. package/dist/core/system/projection/runtimeReceiptStore.js.map +1 -1
  257. package/dist/core/system/projection/runtimeReconciler.js +2 -2
  258. package/dist/core/system/projection/runtimeReconciler.js.map +1 -1
  259. package/dist/core/system/projection/runtimeSnapshotQuery.d.ts +6 -5
  260. package/dist/core/system/projection/runtimeSnapshotQuery.js +6 -6
  261. package/dist/core/system/projection/runtimeSnapshotQuery.js.map +1 -1
  262. package/dist/core/system/release/releaseArtifacts.d.ts +0 -2
  263. package/dist/core/system/release/releaseArtifacts.js +1 -12
  264. package/dist/core/system/release/releaseArtifacts.js.map +1 -1
  265. package/dist/core/system/release/runtimePackageLoadReport.d.ts +0 -1
  266. package/dist/core/system/release/runtimePackageLoadReport.js +0 -7
  267. package/dist/core/system/release/runtimePackageLoadReport.js.map +1 -1
  268. package/dist/core/system/state/canonicalEventLogStore.d.ts +1 -1
  269. package/dist/core/system/state/canonicalEventLogStore.js +7 -7
  270. package/dist/core/system/state/canonicalEventLogStore.js.map +1 -1
  271. package/dist/core/system/state/safeJson.d.ts +2 -1
  272. package/dist/core/system/state/sqlite/domainEventLogRepository.js +5 -5
  273. package/dist/core/system/state/sqlite/domainEventLogRepository.js.map +1 -1
  274. package/dist/core/system/state/sqlite/externalResourceRepository.d.ts +25 -0
  275. package/dist/core/system/state/sqlite/externalResourceRepository.js +105 -0
  276. package/dist/core/system/state/sqlite/externalResourceRepository.js.map +1 -0
  277. package/dist/core/system/state/sqlite/gateRunRepository.d.ts +13 -0
  278. package/dist/core/system/state/sqlite/gateRunRepository.js +66 -0
  279. package/dist/core/system/state/sqlite/gateRunRepository.js.map +1 -0
  280. package/dist/core/system/state/sqlite/orchestrationRepository.js +6 -6
  281. package/dist/core/system/state/sqlite/orchestrationRepository.js.map +1 -1
  282. package/dist/core/system/state/sqlite/packageJobRepository.d.ts +11 -0
  283. package/dist/core/system/state/sqlite/packageJobRepository.js +60 -0
  284. package/dist/core/system/state/sqlite/packageJobRepository.js.map +1 -0
  285. package/dist/core/system/state/sqlite/packageStateRepository.d.ts +10 -0
  286. package/dist/core/system/state/sqlite/packageStateRepository.js +45 -0
  287. package/dist/core/system/state/sqlite/packageStateRepository.js.map +1 -0
  288. package/dist/core/system/state/sqlite/pendingRequestRepository.d.ts +2 -2
  289. package/dist/core/system/state/sqlite/pendingRequestRepository.js +10 -10
  290. package/dist/core/system/state/sqlite/pendingRequestRepository.js.map +1 -1
  291. package/dist/core/system/state/sqlite/providerEventLogRepository.d.ts +1 -1
  292. package/dist/core/system/state/sqlite/providerEventLogRepository.js +6 -6
  293. package/dist/core/system/state/sqlite/providerEventLogRepository.js.map +1 -1
  294. package/dist/core/system/state/sqlite/rowMappers.d.ts +0 -1
  295. package/dist/core/system/state/sqlite/rowMappers.js +0 -3
  296. package/dist/core/system/state/sqlite/rowMappers.js.map +1 -1
  297. package/dist/core/system/state/sqlite/runtimeReceiptRepository.js +4 -4
  298. package/dist/core/system/state/sqlite/runtimeReceiptRepository.js.map +1 -1
  299. package/dist/core/system/state/sqlite/sessionRepository.d.ts +1 -1
  300. package/dist/core/system/state/sqlite/sessionRepository.js +13 -10
  301. package/dist/core/system/state/sqlite/sessionRepository.js.map +1 -1
  302. package/dist/core/system/state/sqlite/types.d.ts +91 -48
  303. package/dist/core/system/state/sqlite/types.js +86 -31
  304. package/dist/core/system/state/sqlite/types.js.map +1 -1
  305. package/dist/core/system/state/sqlite/workItemRepository.d.ts +25 -0
  306. package/dist/core/system/state/sqlite/workItemRepository.js +200 -0
  307. package/dist/core/system/state/sqlite/workItemRepository.js.map +1 -0
  308. package/dist/core/system/state/sqliteSessionStore.d.ts +62 -24
  309. package/dist/core/system/state/sqliteSessionStore.js +77 -41
  310. package/dist/core/system/state/sqliteSessionStore.js.map +1 -1
  311. package/dist/core/system/vcs/gitIgnoreTemplate.js +1 -1
  312. package/dist/core/system/vcs/gitIgnoreTemplate.js.map +1 -1
  313. package/dist/core/system/vcs/gitTrackedPaths.js +1 -1
  314. package/dist/core/system/vcs/gitTrackedPaths.js.map +1 -1
  315. package/dist/types/app.d.ts +35 -36
  316. package/dist/types/config.d.ts +14 -19
  317. package/dist/types/config.js +16 -22
  318. package/dist/types/config.js.map +1 -1
  319. package/dist/types/distro.d.ts +1 -1
  320. package/dist/types/distro.js.map +1 -1
  321. package/dist/types/external.d.ts +1 -0
  322. package/dist/types/external.js +2 -0
  323. package/dist/types/external.js.map +1 -0
  324. package/dist/types/package.d.ts +4 -4
  325. package/dist/types/provider.d.ts +2 -2
  326. package/dist/types/provider.js +1 -1
  327. package/dist/types/provider.js.map +1 -1
  328. package/dist/types/runtime.d.ts +2 -2
  329. package/dist/types/runtime.js +1 -1
  330. package/dist/types/runtime.js.map +1 -1
  331. package/dist/types/transport.d.ts +1 -1
  332. package/dist/types/transport.js.map +1 -1
  333. package/package.json +2 -2
  334. package/resources/migrations/001_sessions.sql +8 -9
  335. package/resources/migrations/003_provider_projections.sql +2 -2
  336. package/resources/migrations/004_runtime_projection_state.sql +1 -1
  337. package/resources/migrations/007_package_state_jobs.sql +28 -0
  338. package/resources/migrations/{009_session_orchestration.sql → 008_session_orchestration.sql} +1 -1
  339. package/resources/migrations/010_scope_space_terminology.sql +2 -0
  340. package/resources/migrations/015_external_work_spine.sql +92 -0
  341. package/resources/migrations/016_provider_profiles.sql +4 -0
  342. package/resources/migrations/017_nullable_session_workspace.sql +49 -0
  343. package/resources/policies/default-secure.json +13 -95
  344. package/dist/app/bootstrap/officialCatalog.d.ts +0 -1
  345. package/dist/app/bootstrap/officialCatalog.js +0 -2
  346. package/dist/app/bootstrap/officialCatalog.js.map +0 -1
  347. package/dist/core/domain/memory/operatorMemoryService.d.ts +0 -36
  348. package/dist/core/domain/memory/operatorMemoryService.js +0 -81
  349. package/dist/core/domain/memory/operatorMemoryService.js.map +0 -1
  350. package/dist/core/domain/missions/missionDraftSetup.d.ts +0 -12
  351. package/dist/core/domain/missions/missionDraftSetup.js +0 -92
  352. package/dist/core/domain/missions/missionDraftSetup.js.map +0 -1
  353. package/dist/core/domain/missions/missionHookService.d.ts +0 -41
  354. package/dist/core/domain/missions/missionHookService.js +0 -161
  355. package/dist/core/domain/missions/missionHookService.js.map +0 -1
  356. package/dist/core/domain/missions/missionHookValidation.d.ts +0 -8
  357. package/dist/core/domain/missions/missionHookValidation.js +0 -59
  358. package/dist/core/domain/missions/missionHookValidation.js.map +0 -1
  359. package/dist/core/domain/missions/missionRegistry.d.ts +0 -55
  360. package/dist/core/domain/missions/missionRegistry.js +0 -204
  361. package/dist/core/domain/missions/missionRegistry.js.map +0 -1
  362. package/dist/core/domain/missions/missionSchedule.d.ts +0 -24
  363. package/dist/core/domain/missions/missionSchedule.js.map +0 -1
  364. package/dist/core/domain/sessions/workManagement/spaceNames.d.ts +0 -2
  365. package/dist/core/domain/sessions/workManagement/spaceNames.js.map +0 -1
  366. package/dist/core/extension/packages/officialArchiveResolver.d.ts +0 -2
  367. package/dist/core/extension/packages/officialArchiveResolver.js.map +0 -1
  368. package/dist/core/extension/packages/officialCatalog.d.ts +0 -9
  369. package/dist/core/extension/packages/officialCatalog.js +0 -198
  370. package/dist/core/extension/packages/officialCatalog.js.map +0 -1
  371. package/dist/core/extension/packages/packageDistroMetadata.d.ts +0 -14
  372. package/dist/core/extension/packages/packageDistroMetadata.js +0 -153
  373. package/dist/core/extension/packages/packageDistroMetadata.js.map +0 -1
  374. package/dist/core/runtime/execution/providerCoordination/providerCompactionCoordinator.d.ts +0 -7
  375. package/dist/core/runtime/execution/providerCoordination/providerCompactionCoordinator.js +0 -25
  376. package/dist/core/runtime/execution/providerCoordination/providerCompactionCoordinator.js.map +0 -1
  377. package/dist/core/runtime/execution/providerCoordination/providerRecoveryService.d.ts +0 -7
  378. package/dist/core/runtime/execution/providerCoordination/providerRecoveryService.js +0 -6
  379. package/dist/core/runtime/execution/providerCoordination/providerRecoveryService.js.map +0 -1
  380. package/dist/core/runtime/execution/providerCoordination/providerTurnCoordinator.d.ts +0 -3
  381. package/dist/core/runtime/execution/providerCoordination/providerTurnCoordinator.js +0 -6
  382. package/dist/core/runtime/execution/providerCoordination/providerTurnCoordinator.js.map +0 -1
  383. package/dist/core/runtime/execution/providerOrchestration/providerMissionEventProjector.d.ts +0 -12
  384. package/dist/core/runtime/execution/providerOrchestration/providerMissionEventProjector.js +0 -71
  385. package/dist/core/runtime/execution/providerOrchestration/providerMissionEventProjector.js.map +0 -1
  386. package/dist/core/runtime/hosting/managedSpaceMetadata.d.ts +0 -7
  387. package/dist/core/runtime/hosting/managedSpaceMetadata.js +0 -14
  388. package/dist/core/runtime/hosting/managedSpaceMetadata.js.map +0 -1
  389. package/dist/core/runtime/lifecycle/managedChannelLifecycleService.js +0 -256
  390. package/dist/core/runtime/lifecycle/managedChannelLifecycleService.js.map +0 -1
  391. package/dist/core/system/state/sqlite/missionRepository.d.ts +0 -24
  392. package/dist/core/system/state/sqlite/missionRepository.js +0 -252
  393. package/dist/core/system/state/sqlite/missionRepository.js.map +0 -1
  394. package/resources/migrations/007_missions.sql +0 -41
  395. package/resources/migrations/008_mission_schedule_anchor.sql +0 -5
  396. package/resources/migrations/010_mission_archival.sql +0 -1
  397. package/resources/migrations/012_scope_space_terminology.sql +0 -19
  398. package/resources/migrations/015_mission_schedule_meta.sql +0 -9
  399. package/resources/migrations/016_mission_hook_bindings.sql +0 -16
  400. package/resources/official-catalog.json +0 -444
  401. /package/resources/migrations/{011_managed_sidecars.sql → 009_managed_sidecars.sql} +0 -0
  402. /package/resources/migrations/{013_orchestration_dedupe.sql → 011_orchestration_dedupe.sql} +0 -0
  403. /package/resources/migrations/{014_orchestration_execution_claims.sql → 012_orchestration_execution_claims.sql} +0 -0
  404. /package/resources/migrations/{017_domain_event_provenance.sql → 013_domain_event_provenance.sql} +0 -0
  405. /package/resources/migrations/{018_provider_event_processing.sql → 014_provider_event_processing.sql} +0 -0
@@ -0,0 +1,158 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ function sameName(left, right) {
3
+ return left.trim() === right.trim();
4
+ }
5
+ export class ManagedTransportResourceLifecycleService {
6
+ deps;
7
+ constructor(deps) {
8
+ this.deps = deps;
9
+ }
10
+ async handleEvent(event) {
11
+ if (event.type !== 'resource.lifecycle') {
12
+ return;
13
+ }
14
+ const surface = this.deps.getSurfaceState();
15
+ if (!surface || event.scopeId !== this.deps.config.transport.scopeId) {
16
+ return;
17
+ }
18
+ if (event.resource.kind !== 'conversation' && event.resource.kind !== 'item') {
19
+ this.recordTransportActivity({
20
+ threadId: null,
21
+ sessionId: null,
22
+ transportResourceId: event.resource.id,
23
+ kind: `transport.resource.${event.action}`,
24
+ title: 'Transport lifecycle observed',
25
+ detail: `Observed ${event.resource.kind} ${event.resource.name}.`
26
+ });
27
+ return;
28
+ }
29
+ await this.deps.queue(`transport:lifecycle:${event.resource.id}`, async () => {
30
+ const session = this.deps.sessionRegistry.getByTransportResourceId(event.resource.id);
31
+ if (session) {
32
+ await this.handleSessionEvent(session, event, surface);
33
+ return;
34
+ }
35
+ if ((event.action === 'created' || event.action === 'updated') && event.resource.parentId === surface.sessionsCategoryId) {
36
+ await this.adoptSessionResource(event.resource.id, event.resource.name);
37
+ return;
38
+ }
39
+ });
40
+ }
41
+ async handleSessionEvent(session, event, surface) {
42
+ if (event.action === 'deleted') {
43
+ await this.preserveDeletedSession(session);
44
+ return;
45
+ }
46
+ if (!sameName(session.transportResourceName, event.resource.name)) {
47
+ const updated = this.deps.sessionRegistry.updateSession({
48
+ ...session,
49
+ transportResourceName: event.resource.name,
50
+ updatedAt: this.deps.now()
51
+ });
52
+ this.deps.appendAuditEvent('session.resource.renamed', {
53
+ sessionId: updated.sessionId,
54
+ transportResourceId: updated.transportResourceId,
55
+ previousName: session.transportResourceName,
56
+ nextName: updated.transportResourceName,
57
+ actorId: 'runtime:transport/resource-lifecycle'
58
+ });
59
+ this.recordTransportActivity({
60
+ threadId: updated.threadId,
61
+ sessionId: updated.sessionId,
62
+ transportResourceId: updated.transportResourceId,
63
+ kind: 'transport.session_resource.renamed',
64
+ title: 'Session resource renamed from transport',
65
+ detail: `${session.transportResourceName} -> ${updated.transportResourceName}`
66
+ });
67
+ session = updated;
68
+ }
69
+ if (event.resource.parentId === surface.archiveCategoryId && session.lifecycleStatus !== 'archived') {
70
+ await this.deps.workManagement.archiveManagedSession({
71
+ actorId: 'runtime:transport/resource-lifecycle',
72
+ transportResourceId: session.transportResourceId,
73
+ sessionId: session.sessionId
74
+ });
75
+ this.recordTransportActivity({
76
+ threadId: session.threadId,
77
+ sessionId: session.sessionId,
78
+ transportResourceId: session.transportResourceId,
79
+ kind: 'transport.session_resource.archived',
80
+ title: 'Session archived from transport move',
81
+ detail: `${session.transportResourceName} moved into the managed archive group.`
82
+ });
83
+ }
84
+ }
85
+ async adoptSessionResource(transportResourceId, transportResourceName) {
86
+ if (this.deps.sessionRegistry.getByTransportResourceId(transportResourceId)) {
87
+ return;
88
+ }
89
+ const session = this.deps.sessionRegistry.create({
90
+ scopeId: this.deps.config.transport.scopeId,
91
+ transportResourceId,
92
+ transportResourceName,
93
+ requestedName: transportResourceName,
94
+ runtimeMode: this.deps.config.defaults.runtimeMode,
95
+ nowIso: this.deps.now(),
96
+ providerAutoStartEnabled: this.deps.getProviderAutoStartDefault(),
97
+ createdBy: 'runtime:transport/resource-lifecycle'
98
+ });
99
+ this.deps.appendAuditEvent('session.adopted_from_transport', {
100
+ sessionId: session.sessionId,
101
+ transportResourceId: session.transportResourceId,
102
+ actorId: 'runtime:transport/resource-lifecycle'
103
+ });
104
+ this.recordTransportActivity({
105
+ threadId: session.threadId,
106
+ sessionId: session.sessionId,
107
+ transportResourceId: session.transportResourceId,
108
+ kind: 'transport.session_resource.adopted',
109
+ title: 'Session adopted from transport',
110
+ detail: `Adopted ${transportResourceName} as managed session ${session.sessionId}.`
111
+ });
112
+ }
113
+ async preserveDeletedSession(session) {
114
+ const nowIso = this.deps.now();
115
+ this.deps.providerService.stopSession(session.threadId);
116
+ this.deps.providerDirectory.delete(session.threadId);
117
+ this.deps.rejectTurnWaitersForThread(session.threadId, `Session ${session.sessionId} lost its transport resource.`);
118
+ await this.deps.cleanupScopedSidecars('session', session.sessionId, `session ${session.sessionId} lost its transport resource`);
119
+ const updated = this.deps.sessionRegistry.updateSession({
120
+ ...session,
121
+ lifecycleStatus: 'archived',
122
+ archivedAt: session.archivedAt ?? nowIso,
123
+ providerThreadId: null,
124
+ resumeCursor: null,
125
+ providerStatus: 'closed',
126
+ activeTurnId: null,
127
+ lastError: 'Managed transport resource deleted outside Moorline.',
128
+ updatedAt: nowIso
129
+ });
130
+ this.deps.appendAuditEvent('session.resource.deleted_externally', {
131
+ sessionId: updated.sessionId,
132
+ transportResourceId: updated.transportResourceId,
133
+ actorId: 'runtime:transport/resource-lifecycle'
134
+ });
135
+ this.recordTransportActivity({
136
+ threadId: updated.threadId,
137
+ sessionId: updated.sessionId,
138
+ transportResourceId: updated.transportResourceId,
139
+ kind: 'transport.session_resource.deleted',
140
+ title: 'Session resource deleted externally',
141
+ detail: `Preserved session ${updated.sessionId} after its managed transport resource was deleted.`
142
+ });
143
+ }
144
+ recordTransportActivity(input) {
145
+ this.deps.recordRuntimeActivity({
146
+ threadId: input.threadId ?? `transport:${input.transportResourceId ?? 'unknown'}`,
147
+ sessionId: input.sessionId,
148
+ transportResourceId: input.transportResourceId,
149
+ sourceEventId: randomUUID(),
150
+ kind: input.kind,
151
+ severity: 'info',
152
+ title: input.title,
153
+ detail: input.detail,
154
+ createdAt: this.deps.now()
155
+ });
156
+ }
157
+ }
158
+ //# sourceMappingURL=managedTransportResourceLifecycleService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedTransportResourceLifecycleService.js","sourceRoot":"","sources":["../../../../../../../src/core/runtime/lifecycle/managedTransportResourceLifecycleService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { PluginHost } from '../../extension/plugins/pluginHost.js';
2
+ import type { SqliteSessionStore } from '../../system/state/sqliteSessionStore.js';
3
+ import type { RuntimePluginContext } from '../../../types/plugin.js';
4
+ interface PackageJobSchedulerServiceDeps {
5
+ store: SqliteSessionStore;
6
+ getPluginHost(): PluginHost;
7
+ createPluginContext(actorId: string): RuntimePluginContext;
8
+ queue<T>(key: string, work: () => Promise<T>): Promise<T>;
9
+ now(): string;
10
+ appendAuditEvent(event: string, payload: Record<string, unknown>): void;
11
+ }
12
+ export declare class PackageJobSchedulerService {
13
+ private readonly deps;
14
+ private timer;
15
+ constructor(deps: PackageJobSchedulerServiceDeps);
16
+ start(): void;
17
+ stop(): void;
18
+ private tick;
19
+ private reschedule;
20
+ }
21
+ export {};
@@ -0,0 +1,84 @@
1
+ import { computeNextPackageJobRunAtWithMeta, parsePackageScheduleMeta } from '../../shared/scheduling/packageSchedule.js';
2
+ function readPayload(row) {
3
+ try {
4
+ const parsed = JSON.parse(row.payloadJson);
5
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
6
+ }
7
+ catch {
8
+ return {};
9
+ }
10
+ }
11
+ export class PackageJobSchedulerService {
12
+ deps;
13
+ timer = null;
14
+ constructor(deps) {
15
+ this.deps = deps;
16
+ }
17
+ start() {
18
+ this.stop();
19
+ const tick = () => {
20
+ void this.tick().catch((error) => {
21
+ this.deps.appendAuditEvent('package_job.tick.failed', {
22
+ error: error instanceof Error ? error.message : String(error),
23
+ occurredAt: this.deps.now()
24
+ });
25
+ });
26
+ };
27
+ tick();
28
+ this.timer = setInterval(tick, 60_000);
29
+ }
30
+ stop() {
31
+ if (this.timer) {
32
+ clearInterval(this.timer);
33
+ this.timer = null;
34
+ }
35
+ }
36
+ async tick() {
37
+ const nowIso = this.deps.now();
38
+ for (const job of this.deps.store.listDuePackageJobs(nowIso)) {
39
+ await this.deps.queue(`package-job:${job.packageId}:${job.jobId}`, async () => {
40
+ const current = this.deps.store.getPackageJob(job.packageId, job.jobId);
41
+ if (!current || !current.nextRunAt || Date.parse(current.nextRunAt) > Date.parse(this.deps.now())) {
42
+ return;
43
+ }
44
+ const payload = readPayload(current);
45
+ const actor = {
46
+ actorId: 'runtime:package-job',
47
+ displayName: 'Package Job'
48
+ };
49
+ try {
50
+ await this.deps.getPluginHost().executeAction(current.actionId, {
51
+ ...payload,
52
+ jobId: current.jobId,
53
+ scheduledAt: current.nextRunAt
54
+ }, {
55
+ scopeId: 'runtime',
56
+ actorId: actor.actorId,
57
+ displayName: actor.displayName
58
+ }, (pluginId) => this.deps.createPluginContext(`plugin:${pluginId}`));
59
+ this.reschedule(current);
60
+ }
61
+ catch (error) {
62
+ this.deps.appendAuditEvent('package_job.dispatch.failed', {
63
+ packageId: current.packageId,
64
+ jobId: current.jobId,
65
+ actionId: current.actionId,
66
+ error: error instanceof Error ? error.message : String(error),
67
+ occurredAt: this.deps.now()
68
+ });
69
+ this.reschedule(current);
70
+ }
71
+ });
72
+ }
73
+ }
74
+ reschedule(job) {
75
+ const nowIso = this.deps.now();
76
+ const nextRunAt = computeNextPackageJobRunAtWithMeta(job.scheduleAnchorAt, job.cadenceMinutes, job.nextRunAt ?? nowIso, parsePackageScheduleMeta(job.scheduleMetaJson));
77
+ this.deps.store.upsertPackageJob({
78
+ ...job,
79
+ nextRunAt,
80
+ updatedAt: nowIso
81
+ });
82
+ }
83
+ }
84
+ //# sourceMappingURL=packageJobSchedulerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageJobSchedulerService.js","sourceRoot":"","sources":["../../../../../../../src/core/runtime/lifecycle/packageJobSchedulerService.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,20 @@
1
1
  import type { SessionLifecycleService } from '../../domain/sessions/sessionLifecycleService.js';
2
2
  import type { RuntimeMessagePayload, RuntimeTransport } from '../../../types/transport.js';
3
- import type { RuntimeMissionRow, RuntimeMissionRunRow, RuntimeSessionRow, SqliteSessionStore } from '../../system/state/sqliteSessionStore.js';
4
- import type { MissionRegistry } from '../../domain/missions/missionRegistry.js';
3
+ import type { SqliteSessionStore } from '../../system/state/sqliteSessionStore.js';
5
4
  import type { SessionRegistry } from '../../domain/sessions/sessionState.js';
6
5
  import type { RuntimeActionGuard } from '../../system/policy/runtimeActionGuard.js';
7
- import type { ProviderOrchestrator } from '../execution/providerOrchestration/providerOrchestrator.js';
8
6
  import type { RuntimeSurfaceState } from '../../../types/config.js';
9
7
  import type { SidecarScopeKind } from '../supervision/managedSidecar.js';
10
8
  interface RuntimeLifecycleServiceDeps {
11
9
  store: SqliteSessionStore;
12
10
  transport: RuntimeTransport;
13
11
  transportScopeId: string;
14
- providerPackageId: string;
15
12
  sessionLifecycle: SessionLifecycleService;
16
13
  sessionRegistry: SessionRegistry;
17
- missionRegistry: MissionRegistry;
18
- providerOrchestrator: ProviderOrchestrator;
19
14
  requireGuard(): RuntimeActionGuard;
20
- getNamespaceState(): RuntimeSurfaceState | null;
21
- queue<T>(key: string, work: () => Promise<T>): Promise<T>;
15
+ getSurfaceState(): RuntimeSurfaceState | null;
22
16
  now(): string;
23
- postTransportMessage(actor: string, spaceId: string, payload: RuntimeMessagePayload): Promise<void>;
24
17
  sendStatusUpdate(payload: RuntimeMessagePayload): Promise<void>;
25
- normalizeReply(text: string): string;
26
18
  appendAuditEvent(event: string, payload: Record<string, unknown>): void;
27
19
  reportLifecycleFailure(error: unknown): void;
28
20
  cleanupScopedSidecars(scopeKind: SidecarScopeKind, scopeKey: string, reason: string): Promise<void>;
@@ -34,9 +26,6 @@ export declare class RuntimeLifecycleService {
34
26
  constructor(deps: RuntimeLifecycleServiceDeps);
35
27
  start(): void;
36
28
  stop(): void;
37
- missionAsSession(mission: RuntimeMissionRow): RuntimeSessionRow;
38
- runMissionTurn(missionId: string, trigger: RuntimeMissionRunRow['trigger'], actorId: string, requesterUserId?: string | null): Promise<void>;
39
- private resolveManualNextRunAt;
40
29
  private tick;
41
30
  private archiveTransitionSession;
42
31
  }
@@ -32,222 +32,10 @@ export class RuntimeLifecycleService {
32
32
  this.timer = null;
33
33
  }
34
34
  }
35
- missionAsSession(mission) {
36
- return {
37
- sessionId: `mission-${mission.missionId}`,
38
- scopeId: mission.scopeId,
39
- spaceId: mission.spaceId,
40
- threadId: mission.threadId,
41
- spaceName: mission.spaceName,
42
- workspacePath: mission.workspacePath,
43
- runtimeMode: mission.runtimeMode,
44
- lifecycleStatus: 'hot',
45
- summary: mission.goal,
46
- provider: this.deps.providerPackageId,
47
- providerThreadId: null,
48
- resumeThreadId: null,
49
- providerStatus: mission.lifecycleStatus === 'failed' ? 'error' : 'ready',
50
- providerAutoStartEnabled: true,
51
- activeTurnId: this.deps.missionRegistry.getActiveRun(mission.missionId)?.runId ?? null,
52
- createdAt: mission.createdAt,
53
- updatedAt: mission.updatedAt,
54
- lastActivityAt: mission.lastRunAt ?? mission.createdAt,
55
- archivedAt: null,
56
- lastError: mission.lastError
57
- };
58
- }
59
- async runMissionTurn(missionId, trigger, actorId, requesterUserId = null) {
60
- await this.deps.queue(`mission:${missionId}`, async () => {
61
- const mission = this.deps.missionRegistry.getById(missionId);
62
- if (!mission ||
63
- mission.archivedAt ||
64
- mission.pausedAt ||
65
- mission.lifecycleStatus === 'draft' ||
66
- mission.lifecycleStatus === 'stopped' ||
67
- mission.lifecycleStatus === 'completed') {
68
- return;
69
- }
70
- if (this.deps.missionRegistry.getActiveRun(missionId)) {
71
- return;
72
- }
73
- const preservedNextRunAt = trigger === 'schedule' ? null : mission.nextRunAt;
74
- const nowIso = this.deps.now();
75
- const runId = randomUUID();
76
- this.deps.store.upsertMissionRun({
77
- runId,
78
- missionId,
79
- trigger,
80
- lifecycleStatus: 'running',
81
- summary: null,
82
- errorMessage: null,
83
- startedAt: nowIso,
84
- finishedAt: null
85
- });
86
- this.deps.missionRegistry.update({
87
- ...mission,
88
- lifecycleStatus: 'active',
89
- lastRunAt: nowIso,
90
- nextRunAt: trigger === 'schedule' ? null : mission.nextRunAt,
91
- updatedAt: nowIso,
92
- lastError: null
93
- });
94
- try {
95
- const prompt = [
96
- 'You are executing a long-lived Moorline mission.',
97
- `Mission ID: ${mission.missionId}`,
98
- `Title: ${mission.title}`,
99
- `Goal: ${mission.goal}`,
100
- `Schedule: ${mission.scheduleText}`,
101
- `Workspace: ${mission.workspacePath}`,
102
- `Trigger: ${trigger}`,
103
- '',
104
- 'Do one bounded execution pass toward the goal.',
105
- 'If there is nothing useful to do, say so briefly.',
106
- 'Be concise and include concrete next steps for the next scheduled run when relevant.'
107
- ].join('\n');
108
- const result = await this.deps.providerOrchestrator.runTurn({
109
- actorId,
110
- session: this.missionAsSession(mission),
111
- spaceId: mission.spaceId,
112
- surface: 'mission',
113
- promptContent: prompt,
114
- authorId: requesterUserId ?? actorId,
115
- providerInput: { text: prompt }
116
- });
117
- const formatted = this.deps.normalizeReply(result.text || (result.attachments?.length ? '' : 'Mission completed without a textual result.'));
118
- const completedAt = this.deps.now();
119
- this.deps.store.upsertMissionRun({
120
- runId,
121
- missionId,
122
- trigger,
123
- lifecycleStatus: 'completed',
124
- summary: formatted,
125
- errorMessage: null,
126
- startedAt: nowIso,
127
- finishedAt: completedAt
128
- });
129
- const latestMission = this.deps.missionRegistry.getById(missionId);
130
- if (!latestMission || latestMission.archivedAt) {
131
- return;
132
- }
133
- const nextRunAt = trigger === 'schedule'
134
- ? this.deps.missionRegistry.nextRunAt(mission, completedAt)
135
- : this.resolveManualNextRunAt(mission, preservedNextRunAt, completedAt);
136
- const oneShotCompleted = trigger === 'schedule' && this.deps.missionRegistry.isOneShotSchedule(mission) && !nextRunAt;
137
- this.deps.missionRegistry.update({
138
- ...latestMission,
139
- lifecycleStatus: oneShotCompleted ? 'completed' : 'sleeping',
140
- pausedAt: null,
141
- nextRunAt,
142
- lastSuccessAt: completedAt,
143
- completedAt: oneShotCompleted ? completedAt : latestMission.completedAt,
144
- updatedAt: completedAt,
145
- lastError: null
146
- });
147
- try {
148
- await this.deps.postTransportMessage(actorId, mission.spaceId, {
149
- text: formatted,
150
- blocks: [
151
- {
152
- kind: 'fields',
153
- title: 'Mission Run Complete',
154
- fields: [
155
- { label: 'Mission', value: mission.title },
156
- { label: 'Trigger', value: trigger, inline: true },
157
- { label: 'Next Run', value: nextRunAt ?? 'unscheduled', inline: true }
158
- ],
159
- tone: 'success',
160
- metadata: { completedAt }
161
- }
162
- ]
163
- });
164
- }
165
- catch (notificationError) {
166
- this.deps.appendAuditEvent('mission.run.notification_failed', {
167
- missionId,
168
- runId,
169
- trigger,
170
- spaceId: mission.spaceId,
171
- actorId,
172
- error: notificationError instanceof Error ? notificationError.message : String(notificationError),
173
- occurredAt: this.deps.now()
174
- });
175
- }
176
- }
177
- catch (error) {
178
- const message = error instanceof Error ? error.message : String(error);
179
- const failedAt = this.deps.now();
180
- const nextRetryAt = trigger === 'schedule'
181
- ? this.deps.missionRegistry.nextRunAt(mission, failedAt)
182
- : this.resolveManualNextRunAt(mission, preservedNextRunAt, failedAt);
183
- this.deps.store.upsertMissionRun({
184
- runId,
185
- missionId,
186
- trigger,
187
- lifecycleStatus: 'failed',
188
- summary: null,
189
- errorMessage: message,
190
- startedAt: nowIso,
191
- finishedAt: failedAt
192
- });
193
- const latestMission = this.deps.missionRegistry.getById(missionId);
194
- if (!latestMission || latestMission.archivedAt) {
195
- return;
196
- }
197
- this.deps.missionRegistry.update({
198
- ...latestMission,
199
- lifecycleStatus: 'failed',
200
- nextRunAt: nextRetryAt,
201
- updatedAt: failedAt,
202
- lastError: message
203
- });
204
- try {
205
- await this.deps.postTransportMessage(actorId, mission.spaceId, {
206
- text: `Mission run failed: ${message}`,
207
- blocks: [
208
- {
209
- kind: 'fields',
210
- title: 'Mission Run Failed',
211
- fields: [
212
- { label: 'Mission', value: mission.title },
213
- { label: 'Trigger', value: trigger, inline: true },
214
- { label: 'Next Retry', value: nextRetryAt ?? 'unscheduled', inline: true },
215
- { label: 'Detail', value: message.slice(0, 1024) }
216
- ],
217
- tone: 'danger',
218
- metadata: { failedAt }
219
- }
220
- ]
221
- });
222
- }
223
- catch (notificationError) {
224
- this.deps.appendAuditEvent('mission.run.failure_notification_failed', {
225
- missionId,
226
- runId,
227
- trigger,
228
- spaceId: mission.spaceId,
229
- actorId,
230
- originalError: message,
231
- error: notificationError instanceof Error ? notificationError.message : String(notificationError),
232
- occurredAt: this.deps.now()
233
- });
234
- }
235
- }
236
- });
237
- }
238
- resolveManualNextRunAt(mission, preservedNextRunAt, anchorIso) {
239
- const preservedMs = preservedNextRunAt ? Date.parse(preservedNextRunAt) : Number.NaN;
240
- const anchorMs = Date.parse(anchorIso);
241
- if (Number.isFinite(preservedMs) && Number.isFinite(anchorMs) && preservedMs > anchorMs) {
242
- return preservedNextRunAt;
243
- }
244
- return this.deps.missionRegistry.runAtOrAfter(mission, anchorIso);
245
- }
246
35
  async tick() {
247
36
  if (this.deps.runMaintenance) {
248
37
  await this.deps.runMaintenance();
249
38
  }
250
- const nowIso = this.deps.now();
251
39
  const transitions = this.deps.sessionLifecycle.sweep(this.deps.now());
252
40
  for (const transition of transitions) {
253
41
  const session = this.deps.sessionRegistry.getByThreadId(transition.threadId);
@@ -261,62 +49,43 @@ export class RuntimeLifecycleService {
261
49
  await this.deps.sendStatusUpdate(buildLifecycleNotification({
262
50
  state: transition.to,
263
51
  sessionId: transition.sessionId,
264
- detail: `${session.spaceName} moved to ${lifecycleStatusLabel(transition.to)}.`,
52
+ detail: `${session.transportResourceName} moved to ${lifecycleStatusLabel(transition.to)}.`,
265
53
  nowIso: transition.at
266
54
  }));
267
55
  }
268
- for (const mission of this.deps.missionRegistry.list()) {
269
- if (mission.archivedAt ||
270
- mission.pausedAt ||
271
- mission.lifecycleStatus === 'draft' ||
272
- mission.lifecycleStatus === 'stopped' ||
273
- mission.lifecycleStatus === 'completed' ||
274
- mission.lifecycleStatus === 'active' ||
275
- mission.lifecycleStatus === 'waiting_on_user' ||
276
- !mission.nextRunAt ||
277
- Date.parse(mission.nextRunAt) > Date.parse(nowIso)) {
278
- continue;
279
- }
280
- await this.runMissionTurn(mission.missionId, 'schedule', 'runtime:mission/scheduler');
281
- }
282
56
  }
283
57
  async archiveTransitionSession(session, transition) {
284
58
  const current = this.deps.sessionRegistry.getByThreadId(session.threadId);
285
59
  if (!current || current.lifecycleStatus === 'archived') {
286
60
  return;
287
61
  }
288
- const namespace = this.deps.getNamespaceState();
289
- if (namespace) {
62
+ const surface = this.deps.getSurfaceState();
63
+ if (surface) {
290
64
  await this.deps.requireGuard().run({
291
- action: 'transport.space.update',
65
+ action: 'transport.resource.update',
292
66
  actor: 'runtime:lifecycle/archive',
293
- target: current.spaceId,
294
- execute: async () => this.deps.transport.updateSpace?.({
67
+ target: current.transportResourceId,
68
+ execute: async () => this.deps.transport.updateTransportResource?.({
295
69
  scopeId: this.deps.transportScopeId,
296
- spaceId: current.spaceId,
297
- parentId: namespace.archiveCategoryId
70
+ transportResourceId: current.transportResourceId,
71
+ parentId: surface.archiveCategoryId
298
72
  })
299
73
  });
300
74
  }
301
- this.deps.providerOrchestrator.teardownThread(current.threadId, `Session ${current.sessionId} was archived by lifecycle sweep.`);
302
- await this.deps.cleanupScopedSidecars('session', current.sessionId, `session ${current.sessionId} archived by lifecycle sweep`);
303
- const nowIso = this.deps.now();
304
- this.deps.sessionRegistry.updateSession({
75
+ const archived = this.deps.sessionRegistry.updateSession({
305
76
  ...current,
306
77
  lifecycleStatus: 'archived',
307
- archivedAt: nowIso,
308
- providerThreadId: null,
309
- resumeThreadId: null,
310
- providerStatus: 'closed',
311
- activeTurnId: null,
312
- updatedAt: nowIso
78
+ archivedAt: transition.at,
79
+ updatedAt: transition.at
80
+ });
81
+ await this.deps.cleanupScopedSidecars('session', archived.sessionId, `session ${archived.sessionId} archived by lifecycle`);
82
+ this.deps.appendAuditEvent('session.archived.lifecycle', {
83
+ sessionId: archived.sessionId,
84
+ transportResourceId: archived.transportResourceId,
85
+ previousState: transition.from,
86
+ actorId: 'runtime:lifecycle/archive',
87
+ sourceEventId: randomUUID()
313
88
  });
314
- await this.deps.sendStatusUpdate(buildLifecycleNotification({
315
- state: transition.to,
316
- sessionId: transition.sessionId,
317
- detail: `${current.spaceName} moved to ${lifecycleStatusLabel(transition.to)}.`,
318
- nowIso: nowIso
319
- }));
320
89
  }
321
90
  }
322
91
  //# sourceMappingURL=runtimeLifecycleService.js.map