@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.
- package/dist/app/bootstrap/apiAdapterPackageLoader.d.ts +0 -10
- package/dist/app/bootstrap/apiAdapterPackageLoader.js +1 -1
- package/dist/app/bootstrap/apiAdapterPackageLoader.js.map +1 -1
- package/dist/app/bootstrap/operatorPackageService.d.ts +11 -4
- package/dist/app/bootstrap/operatorPackageService.js +231 -59
- package/dist/app/bootstrap/operatorPackageService.js.map +1 -1
- package/dist/app/bootstrap/runtimeBootstrap.d.ts +2 -1
- package/dist/app/bootstrap/runtimeBootstrap.js +14 -3
- package/dist/app/bootstrap/runtimeBootstrap.js.map +1 -1
- package/dist/app/control-api/services/actions.d.ts +12 -16
- package/dist/app/control-api/services/actions.js +89 -68
- package/dist/app/control-api/services/actions.js.map +1 -1
- package/dist/app/control-api/services/controlPlane.d.ts +17 -21
- package/dist/app/control-api/services/controlPlane.js +69 -74
- package/dist/app/control-api/services/controlPlane.js.map +1 -1
- package/dist/app/control-api/services/state.js +5 -9
- package/dist/app/control-api/services/state.js.map +1 -1
- package/dist/core/domain/memory/retrieval/indexTargets.js +6 -6
- package/dist/core/domain/memory/retrieval/indexTargets.js.map +1 -1
- package/dist/core/domain/memory/retrieval/schema.js +10 -6
- package/dist/core/domain/memory/retrieval/schema.js.map +1 -1
- package/dist/core/domain/memory/retrieval/scope.d.ts +2 -2
- package/dist/core/domain/memory/retrieval/scope.js +7 -7
- package/dist/core/domain/memory/retrieval/scope.js.map +1 -1
- package/dist/core/domain/memory/retrieval/types.d.ts +2 -7
- package/dist/core/domain/memory/retrieval/types.js.map +1 -1
- package/dist/core/domain/memory/retrieval.d.ts +1 -2
- package/dist/core/domain/memory/retrieval.js +9 -16
- package/dist/core/domain/memory/retrieval.js.map +1 -1
- package/dist/core/domain/memory/store.d.ts +1 -1
- package/dist/core/domain/memory/store.js +2 -2
- package/dist/core/domain/memory/store.js.map +1 -1
- package/dist/core/domain/sessions/managedWorkerSessions.d.ts +0 -1
- package/dist/core/domain/sessions/managedWorkerSessions.js.map +1 -1
- package/dist/core/domain/sessions/runtimeWorkManagementService.d.ts +17 -62
- package/dist/core/domain/sessions/runtimeWorkManagementService.js +97 -341
- package/dist/core/domain/sessions/runtimeWorkManagementService.js.map +1 -1
- package/dist/core/domain/sessions/sessionLifecycleService.d.ts +1 -1
- package/dist/core/domain/sessions/sessionLifecycleService.js +4 -4
- package/dist/core/domain/sessions/sessionLifecycleService.js.map +1 -1
- package/dist/core/domain/sessions/sessionState.d.ts +10 -8
- package/dist/core/domain/sessions/sessionState.js +38 -28
- package/dist/core/domain/sessions/sessionState.js.map +1 -1
- package/dist/core/domain/sessions/workManagement/transportResourceNames.d.ts +2 -0
- package/dist/core/domain/sessions/workManagement/{spaceNames.js → transportResourceNames.js} +2 -2
- package/dist/core/domain/sessions/workManagement/transportResourceNames.js.map +1 -0
- package/dist/core/extension/capabilities/capabilities.d.ts +1 -1
- package/dist/core/extension/capabilities/capabilities.js +8 -8
- package/dist/core/extension/capabilities/capabilities.js.map +1 -1
- package/dist/core/extension/packages/bundledArchiveResolver.d.ts +2 -0
- package/dist/core/extension/packages/{officialArchiveResolver.js → bundledArchiveResolver.js} +4 -4
- package/dist/core/extension/packages/bundledArchiveResolver.js.map +1 -0
- package/dist/core/extension/packages/npmRegistryClient.d.ts +3 -2
- package/dist/core/extension/packages/npmRegistryClient.js +9 -22
- package/dist/core/extension/packages/npmRegistryClient.js.map +1 -1
- package/dist/core/extension/packages/packageActivation.d.ts +0 -4
- package/dist/core/extension/packages/packageActivation.js +2 -12
- package/dist/core/extension/packages/packageActivation.js.map +1 -1
- package/dist/core/extension/packages/packageApplyPlanner.js +1 -4
- package/dist/core/extension/packages/packageApplyPlanner.js.map +1 -1
- package/dist/core/extension/packages/packageConfigSchema.js +0 -33
- package/dist/core/extension/packages/packageConfigSchema.js.map +1 -1
- package/dist/core/extension/packages/packageDependencyResolver.js +2 -20
- package/dist/core/extension/packages/packageDependencyResolver.js.map +1 -1
- package/dist/core/extension/packages/packageInstaller.js +3 -0
- package/dist/core/extension/packages/packageInstaller.js.map +1 -1
- package/dist/core/extension/packages/packageInventoryStore.js +20 -4
- package/dist/core/extension/packages/packageInventoryStore.js.map +1 -1
- package/dist/core/extension/packages/packageRegistryBlocklist.d.ts +2 -2
- package/dist/core/extension/packages/packageRegistryBlocklist.js +1 -1
- package/dist/core/extension/packages/packageRegistryBlocklist.js.map +1 -1
- package/dist/core/extension/packages/packageRegistryService.d.ts +8 -3
- package/dist/core/extension/packages/packageRegistryService.js +109 -49
- package/dist/core/extension/packages/packageRegistryService.js.map +1 -1
- package/dist/core/extension/packages/packageRegistryTypes.d.ts +14 -6
- package/dist/core/extension/packages/packageSource.js +120 -5
- package/dist/core/extension/packages/packageSource.js.map +1 -1
- package/dist/core/extension/packages/packageValidation.js +1 -1
- package/dist/core/extension/packages/packageValidation.js.map +1 -1
- package/dist/core/extension/packages/packageVersionResolver.d.ts +6 -11
- package/dist/core/extension/packages/packageVersionResolver.js +5 -5
- package/dist/core/extension/packages/packageVersionResolver.js.map +1 -1
- package/dist/core/extension/packages/runtimeStartability.d.ts +2 -2
- package/dist/core/extension/packages/runtimeStartability.js +26 -23
- package/dist/core/extension/packages/runtimeStartability.js.map +1 -1
- package/dist/core/extension/plugins/pluginHost.d.ts +9 -4
- package/dist/core/extension/plugins/pluginHost.js +33 -7
- package/dist/core/extension/plugins/pluginHost.js.map +1 -1
- package/dist/core/extension/plugins/pluginId.d.ts +0 -1
- package/dist/core/extension/plugins/pluginId.js +0 -3
- package/dist/core/extension/plugins/pluginId.js.map +1 -1
- package/dist/core/extension/plugins/runtimePluginLoader.d.ts +0 -1
- package/dist/core/extension/plugins/runtimePluginLoader.js +0 -7
- package/dist/core/extension/plugins/runtimePluginLoader.js.map +1 -1
- package/dist/core/extension/skills/skillRegistry.d.ts +3 -2
- package/dist/core/extension/skills/skillWriter.d.ts +1 -1
- package/dist/core/extension/skills/skillWriter.js +2 -2
- package/dist/core/runtime/execution/commandReactor.d.ts +5 -5
- package/dist/core/runtime/execution/commandReactor.js +10 -7
- package/dist/core/runtime/execution/commandReactor.js.map +1 -1
- package/dist/core/runtime/execution/defaultModelSelection.js +1 -1
- package/dist/core/runtime/execution/orchestrationEngine.js +10 -10
- package/dist/core/runtime/execution/orchestrationEngine.js.map +1 -1
- package/dist/core/runtime/execution/orchestrationHealth.d.ts +0 -7
- package/dist/core/runtime/execution/orchestrationHealth.js +1 -1
- package/dist/core/runtime/execution/orchestrationHealth.js.map +1 -1
- package/dist/core/runtime/execution/pluginContext/defaultSessionOwner.js +3 -5
- package/dist/core/runtime/execution/pluginContext/defaultSessionOwner.js.map +1 -1
- package/dist/core/runtime/execution/pluginContext/pluginCapabilities.d.ts +0 -2
- package/dist/core/runtime/execution/pluginContext/pluginCapabilities.js +0 -2
- package/dist/core/runtime/execution/pluginContext/pluginCapabilities.js.map +1 -1
- package/dist/core/runtime/execution/pluginContext/pluginContextFactory.d.ts +1 -2
- package/dist/core/runtime/execution/pluginContext/pluginContextFactory.js +1 -2
- package/dist/core/runtime/execution/pluginContext/pluginContextFactory.js.map +1 -1
- package/dist/core/runtime/execution/providerCoordination/providerSessionCoordinator.js +3 -3
- package/dist/core/runtime/execution/providerCoordination/providerSessionCoordinator.js.map +1 -1
- package/dist/core/runtime/execution/providerOrchestration/ports.d.ts +3 -13
- package/dist/core/runtime/execution/providerOrchestration/providerAttachmentResolver.d.ts +3 -3
- package/dist/core/runtime/execution/providerOrchestration/providerAttachmentResolver.js +4 -5
- package/dist/core/runtime/execution/providerOrchestration/providerAttachmentResolver.js.map +1 -1
- package/dist/core/runtime/execution/providerOrchestration/providerCompactionPolicy.d.ts +2 -1
- package/dist/core/runtime/execution/providerOrchestration/providerCompactionPolicy.js +5 -5
- package/dist/core/runtime/execution/providerOrchestration/providerCompactionPolicy.js.map +1 -1
- package/dist/core/runtime/execution/providerOrchestration/providerEventPipeline.d.ts +3 -5
- package/dist/core/runtime/execution/providerOrchestration/providerEventPipeline.js +10 -8
- package/dist/core/runtime/execution/providerOrchestration/providerEventPipeline.js.map +1 -1
- package/dist/core/runtime/execution/providerOrchestration/providerOrchestrator.d.ts +3 -3
- package/dist/core/runtime/execution/providerOrchestration/providerOrchestrator.js +0 -3
- package/dist/core/runtime/execution/providerOrchestration/providerOrchestrator.js.map +1 -1
- package/dist/core/runtime/execution/providerOrchestration/providerRequestProjector.d.ts +3 -2
- package/dist/core/runtime/execution/providerOrchestration/providerRequestProjector.js +6 -6
- package/dist/core/runtime/execution/providerOrchestration/providerRequestProjector.js.map +1 -1
- package/dist/core/runtime/execution/providerOrchestration/providerSessionOrchestrator.d.ts +9 -6
- package/dist/core/runtime/execution/providerOrchestration/providerSessionOrchestrator.js +36 -15
- package/dist/core/runtime/execution/providerOrchestration/providerSessionOrchestrator.js.map +1 -1
- package/dist/core/runtime/execution/providerOrchestration/providerTurnBroker.d.ts +9 -3
- package/dist/core/runtime/execution/providerOrchestration/providerTurnBroker.js +19 -7
- package/dist/core/runtime/execution/providerOrchestration/providerTurnBroker.js.map +1 -1
- package/dist/core/runtime/execution/providerProjectionTypes.d.ts +4 -2
- package/dist/core/runtime/execution/providerProjectionTypes.js +2 -0
- package/dist/core/runtime/execution/providerProjectionTypes.js.map +1 -1
- package/dist/core/runtime/execution/providerSessionDirectory.js +12 -4
- package/dist/core/runtime/execution/providerSessionDirectory.js.map +1 -1
- package/dist/core/runtime/execution/runtimeDomain.d.ts +11 -9
- package/dist/core/runtime/execution/runtimeDomain.js +10 -3
- package/dist/core/runtime/execution/runtimeDomain.js.map +1 -1
- package/dist/core/runtime/execution/runtimeIngestion.js +15 -13
- package/dist/core/runtime/execution/runtimeIngestion.js.map +1 -1
- package/dist/core/runtime/execution/runtimeInteractionService.d.ts +4 -18
- package/dist/core/runtime/execution/runtimeInteractionService.js +15 -93
- package/dist/core/runtime/execution/runtimeInteractionService.js.map +1 -1
- package/dist/core/runtime/execution/runtimeOrchestrationRequestService.d.ts +1 -1
- package/dist/core/runtime/execution/runtimeOrchestrationRequestService.js +8 -28
- package/dist/core/runtime/execution/runtimeOrchestrationRequestService.js.map +1 -1
- package/dist/core/runtime/execution/runtimeOrchestrationRequests.d.ts +7 -29
- package/dist/core/runtime/execution/runtimeOrchestrationRequests.js +21 -67
- package/dist/core/runtime/execution/runtimeOrchestrationRequests.js.map +1 -1
- package/dist/core/runtime/execution/runtimeOrchestrationResult.js +5 -0
- package/dist/core/runtime/execution/runtimeOrchestrationResult.js.map +1 -1
- package/dist/core/runtime/execution/runtimePendingRequestService.d.ts +2 -2
- package/dist/core/runtime/execution/runtimePendingRequestService.js +10 -10
- package/dist/core/runtime/execution/runtimePendingRequestService.js.map +1 -1
- package/dist/core/runtime/execution/runtimePluginContextService.d.ts +28 -15
- package/dist/core/runtime/execution/runtimePluginContextService.js +989 -166
- package/dist/core/runtime/execution/runtimePluginContextService.js.map +1 -1
- package/dist/core/runtime/execution/runtimeWorkerQueues.js +1 -1
- package/dist/core/runtime/execution/runtimeWorkerQueues.js.map +1 -1
- package/dist/core/runtime/hosting/managedTransportResourceMetadata.d.ts +6 -0
- package/dist/core/runtime/hosting/managedTransportResourceMetadata.js +8 -0
- package/dist/core/runtime/hosting/managedTransportResourceMetadata.js.map +1 -0
- package/dist/core/runtime/hosting/runtimeHostingService.d.ts +1 -1
- package/dist/core/runtime/hosting/runtimeHostingService.js +16 -20
- package/dist/core/runtime/hosting/runtimeHostingService.js.map +1 -1
- package/dist/core/runtime/hosting/runtimeLayout.js +1 -1
- package/dist/core/runtime/hosting/runtimeLayout.js.map +1 -1
- package/dist/core/runtime/hosting/runtimeTransportSurfaceService.d.ts +4 -4
- package/dist/core/runtime/hosting/runtimeTransportSurfaceService.js +17 -17
- package/dist/core/runtime/hosting/runtimeTransportSurfaceService.js.map +1 -1
- package/dist/core/runtime/hosting/systemEmbeds.d.ts +0 -1
- package/dist/core/runtime/hosting/systemEmbeds.js +0 -9
- package/dist/core/runtime/hosting/systemEmbeds.js.map +1 -1
- package/dist/core/runtime/lifecycle/{managedChannelLifecycleService.d.ts → managedTransportResourceLifecycleService.d.ts} +6 -9
- package/dist/core/runtime/lifecycle/managedTransportResourceLifecycleService.js +158 -0
- package/dist/core/runtime/lifecycle/managedTransportResourceLifecycleService.js.map +1 -0
- package/dist/core/runtime/lifecycle/packageJobSchedulerService.d.ts +21 -0
- package/dist/core/runtime/lifecycle/packageJobSchedulerService.js +84 -0
- package/dist/core/runtime/lifecycle/packageJobSchedulerService.js.map +1 -0
- package/dist/core/runtime/lifecycle/runtimeLifecycleService.d.ts +2 -13
- package/dist/core/runtime/lifecycle/runtimeLifecycleService.js +19 -250
- package/dist/core/runtime/lifecycle/runtimeLifecycleService.js.map +1 -1
- package/dist/core/runtime/moorlineRuntime.d.ts +7 -8
- package/dist/core/runtime/moorlineRuntime.js +71 -47
- package/dist/core/runtime/moorlineRuntime.js.map +1 -1
- package/dist/core/runtime/moorlineRuntimeBuilder.d.ts +17 -18
- package/dist/core/runtime/moorlineRuntimeBuilder.js +53 -93
- package/dist/core/runtime/moorlineRuntimeBuilder.js.map +1 -1
- package/dist/core/runtime/runtimeBootstrapRegistry.d.ts +0 -2
- package/dist/core/runtime/runtimeBootstrapRegistry.js +0 -6
- package/dist/core/runtime/runtimeBootstrapRegistry.js.map +1 -1
- package/dist/core/runtime/runtimeStatus.js +2 -2
- package/dist/core/runtime/runtimeStatus.js.map +1 -1
- package/dist/core/runtime/supervision/runtimeControlService.js +4 -1
- package/dist/core/runtime/supervision/runtimeControlService.js.map +1 -1
- package/dist/core/shared/errors/statusError.d.ts +5 -0
- package/dist/core/shared/errors/statusError.js +18 -0
- package/dist/core/shared/errors/statusError.js.map +1 -0
- package/dist/core/shared/fs/canonicalPathContainment.d.ts +0 -2
- package/dist/core/shared/fs/canonicalPathContainment.js +1 -6
- package/dist/core/shared/fs/canonicalPathContainment.js.map +1 -1
- package/dist/core/shared/fs/runtimeOwnedPath.d.ts +1 -1
- package/dist/core/shared/fs/runtimeOwnedPath.js +3 -3
- package/dist/core/shared/fs/runtimeOwnedPath.js.map +1 -1
- package/dist/core/shared/scheduling/packageSchedule.d.ts +22 -0
- package/dist/core/{domain/missions/missionSchedule.js → shared/scheduling/packageSchedule.js} +15 -18
- package/dist/core/shared/scheduling/packageSchedule.js.map +1 -0
- package/dist/core/shared/utils/childProcessEnv.js +1 -1
- package/dist/core/shared/utils/childProcessEnv.js.map +1 -1
- package/dist/core/shared/utils/payloadRedaction.d.ts +0 -12
- package/dist/core/shared/utils/payloadRedaction.js +0 -77
- package/dist/core/shared/utils/payloadRedaction.js.map +1 -1
- package/dist/core/shared/utils/remoteNetworkPolicy.d.ts +0 -4
- package/dist/core/shared/utils/remoteNetworkPolicy.js +1 -7
- package/dist/core/shared/utils/remoteNetworkPolicy.js.map +1 -1
- package/dist/core/shared/utils/runtimeMessageUtils.d.ts +0 -1
- package/dist/core/shared/utils/runtimeMessageUtils.js +0 -19
- package/dist/core/shared/utils/runtimeMessageUtils.js.map +1 -1
- package/dist/core/system/backup/runtimeBackupService.d.ts +0 -2
- package/dist/core/system/backup/runtimeBackupService.js +71 -2
- package/dist/core/system/backup/runtimeBackupService.js.map +1 -1
- package/dist/core/system/config/configStore.d.ts +3 -3
- package/dist/core/system/config/configStore.js +19 -20
- package/dist/core/system/config/configStore.js.map +1 -1
- package/dist/core/system/projection/managementReadModel/deps.d.ts +4 -5
- package/dist/core/system/projection/managementReadModel/objects/serviceObjects.d.ts +2 -1
- package/dist/core/system/projection/managementReadModel/objects/serviceObjects.js +13 -7
- package/dist/core/system/projection/managementReadModel/objects/serviceObjects.js.map +1 -1
- package/dist/core/system/projection/managementReadModel/packageTrust.d.ts +5 -0
- package/dist/core/system/projection/managementReadModel/packageTrust.js +40 -0
- package/dist/core/system/projection/managementReadModel/packageTrust.js.map +1 -0
- package/dist/core/system/projection/managementReadModel/pluginDiskRecords.d.ts +0 -1
- package/dist/core/system/projection/managementReadModel/pluginDiskRecords.js +1 -10
- package/dist/core/system/projection/managementReadModel/pluginDiskRecords.js.map +1 -1
- package/dist/core/system/projection/managementReadModelService.d.ts +3 -1
- package/dist/core/system/projection/managementReadModelService.js +133 -117
- package/dist/core/system/projection/managementReadModelService.js.map +1 -1
- package/dist/core/system/projection/pendingRequestProjectionStore.d.ts +1 -1
- package/dist/core/system/projection/pendingRequestProjectionStore.js +9 -9
- package/dist/core/system/projection/pendingRequestProjectionStore.js.map +1 -1
- package/dist/core/system/projection/runtimeActivityStore.d.ts +1 -1
- package/dist/core/system/projection/runtimeActivityStore.js +7 -7
- package/dist/core/system/projection/runtimeActivityStore.js.map +1 -1
- package/dist/core/system/projection/runtimeProjectionService.d.ts +1 -1
- package/dist/core/system/projection/runtimeProjectionService.js +3 -3
- package/dist/core/system/projection/runtimeProjectionService.js.map +1 -1
- package/dist/core/system/projection/runtimeReceiptStore.js +5 -5
- package/dist/core/system/projection/runtimeReceiptStore.js.map +1 -1
- package/dist/core/system/projection/runtimeReconciler.js +2 -2
- package/dist/core/system/projection/runtimeReconciler.js.map +1 -1
- package/dist/core/system/projection/runtimeSnapshotQuery.d.ts +6 -5
- package/dist/core/system/projection/runtimeSnapshotQuery.js +6 -6
- package/dist/core/system/projection/runtimeSnapshotQuery.js.map +1 -1
- package/dist/core/system/release/releaseArtifacts.d.ts +0 -2
- package/dist/core/system/release/releaseArtifacts.js +1 -12
- package/dist/core/system/release/releaseArtifacts.js.map +1 -1
- package/dist/core/system/release/runtimePackageLoadReport.d.ts +0 -1
- package/dist/core/system/release/runtimePackageLoadReport.js +0 -7
- package/dist/core/system/release/runtimePackageLoadReport.js.map +1 -1
- package/dist/core/system/state/canonicalEventLogStore.d.ts +1 -1
- package/dist/core/system/state/canonicalEventLogStore.js +7 -7
- package/dist/core/system/state/canonicalEventLogStore.js.map +1 -1
- package/dist/core/system/state/safeJson.d.ts +2 -1
- package/dist/core/system/state/sqlite/domainEventLogRepository.js +5 -5
- package/dist/core/system/state/sqlite/domainEventLogRepository.js.map +1 -1
- package/dist/core/system/state/sqlite/externalResourceRepository.d.ts +25 -0
- package/dist/core/system/state/sqlite/externalResourceRepository.js +105 -0
- package/dist/core/system/state/sqlite/externalResourceRepository.js.map +1 -0
- package/dist/core/system/state/sqlite/gateRunRepository.d.ts +13 -0
- package/dist/core/system/state/sqlite/gateRunRepository.js +66 -0
- package/dist/core/system/state/sqlite/gateRunRepository.js.map +1 -0
- package/dist/core/system/state/sqlite/orchestrationRepository.js +6 -6
- package/dist/core/system/state/sqlite/orchestrationRepository.js.map +1 -1
- package/dist/core/system/state/sqlite/packageJobRepository.d.ts +11 -0
- package/dist/core/system/state/sqlite/packageJobRepository.js +60 -0
- package/dist/core/system/state/sqlite/packageJobRepository.js.map +1 -0
- package/dist/core/system/state/sqlite/packageStateRepository.d.ts +10 -0
- package/dist/core/system/state/sqlite/packageStateRepository.js +45 -0
- package/dist/core/system/state/sqlite/packageStateRepository.js.map +1 -0
- package/dist/core/system/state/sqlite/pendingRequestRepository.d.ts +2 -2
- package/dist/core/system/state/sqlite/pendingRequestRepository.js +10 -10
- package/dist/core/system/state/sqlite/pendingRequestRepository.js.map +1 -1
- package/dist/core/system/state/sqlite/providerEventLogRepository.d.ts +1 -1
- package/dist/core/system/state/sqlite/providerEventLogRepository.js +6 -6
- package/dist/core/system/state/sqlite/providerEventLogRepository.js.map +1 -1
- package/dist/core/system/state/sqlite/rowMappers.d.ts +0 -1
- package/dist/core/system/state/sqlite/rowMappers.js +0 -3
- package/dist/core/system/state/sqlite/rowMappers.js.map +1 -1
- package/dist/core/system/state/sqlite/runtimeReceiptRepository.js +4 -4
- package/dist/core/system/state/sqlite/runtimeReceiptRepository.js.map +1 -1
- package/dist/core/system/state/sqlite/sessionRepository.d.ts +1 -1
- package/dist/core/system/state/sqlite/sessionRepository.js +13 -10
- package/dist/core/system/state/sqlite/sessionRepository.js.map +1 -1
- package/dist/core/system/state/sqlite/types.d.ts +91 -48
- package/dist/core/system/state/sqlite/types.js +86 -31
- package/dist/core/system/state/sqlite/types.js.map +1 -1
- package/dist/core/system/state/sqlite/workItemRepository.d.ts +25 -0
- package/dist/core/system/state/sqlite/workItemRepository.js +200 -0
- package/dist/core/system/state/sqlite/workItemRepository.js.map +1 -0
- package/dist/core/system/state/sqliteSessionStore.d.ts +62 -24
- package/dist/core/system/state/sqliteSessionStore.js +77 -41
- package/dist/core/system/state/sqliteSessionStore.js.map +1 -1
- package/dist/core/system/vcs/gitIgnoreTemplate.js +1 -1
- package/dist/core/system/vcs/gitIgnoreTemplate.js.map +1 -1
- package/dist/core/system/vcs/gitTrackedPaths.js +1 -1
- package/dist/core/system/vcs/gitTrackedPaths.js.map +1 -1
- package/dist/types/app.d.ts +35 -36
- package/dist/types/config.d.ts +14 -19
- package/dist/types/config.js +16 -22
- package/dist/types/config.js.map +1 -1
- package/dist/types/distro.d.ts +1 -1
- package/dist/types/distro.js.map +1 -1
- package/dist/types/external.d.ts +1 -0
- package/dist/types/external.js +2 -0
- package/dist/types/external.js.map +1 -0
- package/dist/types/package.d.ts +4 -4
- package/dist/types/provider.d.ts +2 -2
- package/dist/types/provider.js +1 -1
- package/dist/types/provider.js.map +1 -1
- package/dist/types/runtime.d.ts +2 -2
- package/dist/types/runtime.js +1 -1
- package/dist/types/runtime.js.map +1 -1
- package/dist/types/transport.d.ts +1 -1
- package/dist/types/transport.js.map +1 -1
- package/package.json +2 -2
- package/resources/migrations/001_sessions.sql +8 -9
- package/resources/migrations/003_provider_projections.sql +2 -2
- package/resources/migrations/004_runtime_projection_state.sql +1 -1
- package/resources/migrations/007_package_state_jobs.sql +28 -0
- package/resources/migrations/{009_session_orchestration.sql → 008_session_orchestration.sql} +1 -1
- package/resources/migrations/010_scope_space_terminology.sql +2 -0
- package/resources/migrations/015_external_work_spine.sql +92 -0
- package/resources/migrations/016_provider_profiles.sql +4 -0
- package/resources/migrations/017_nullable_session_workspace.sql +49 -0
- package/resources/policies/default-secure.json +13 -95
- package/dist/app/bootstrap/officialCatalog.d.ts +0 -1
- package/dist/app/bootstrap/officialCatalog.js +0 -2
- package/dist/app/bootstrap/officialCatalog.js.map +0 -1
- package/dist/core/domain/memory/operatorMemoryService.d.ts +0 -36
- package/dist/core/domain/memory/operatorMemoryService.js +0 -81
- package/dist/core/domain/memory/operatorMemoryService.js.map +0 -1
- package/dist/core/domain/missions/missionDraftSetup.d.ts +0 -12
- package/dist/core/domain/missions/missionDraftSetup.js +0 -92
- package/dist/core/domain/missions/missionDraftSetup.js.map +0 -1
- package/dist/core/domain/missions/missionHookService.d.ts +0 -41
- package/dist/core/domain/missions/missionHookService.js +0 -161
- package/dist/core/domain/missions/missionHookService.js.map +0 -1
- package/dist/core/domain/missions/missionHookValidation.d.ts +0 -8
- package/dist/core/domain/missions/missionHookValidation.js +0 -59
- package/dist/core/domain/missions/missionHookValidation.js.map +0 -1
- package/dist/core/domain/missions/missionRegistry.d.ts +0 -55
- package/dist/core/domain/missions/missionRegistry.js +0 -204
- package/dist/core/domain/missions/missionRegistry.js.map +0 -1
- package/dist/core/domain/missions/missionSchedule.d.ts +0 -24
- package/dist/core/domain/missions/missionSchedule.js.map +0 -1
- package/dist/core/domain/sessions/workManagement/spaceNames.d.ts +0 -2
- package/dist/core/domain/sessions/workManagement/spaceNames.js.map +0 -1
- package/dist/core/extension/packages/officialArchiveResolver.d.ts +0 -2
- package/dist/core/extension/packages/officialArchiveResolver.js.map +0 -1
- package/dist/core/extension/packages/officialCatalog.d.ts +0 -9
- package/dist/core/extension/packages/officialCatalog.js +0 -198
- package/dist/core/extension/packages/officialCatalog.js.map +0 -1
- package/dist/core/extension/packages/packageDistroMetadata.d.ts +0 -14
- package/dist/core/extension/packages/packageDistroMetadata.js +0 -153
- package/dist/core/extension/packages/packageDistroMetadata.js.map +0 -1
- package/dist/core/runtime/execution/providerCoordination/providerCompactionCoordinator.d.ts +0 -7
- package/dist/core/runtime/execution/providerCoordination/providerCompactionCoordinator.js +0 -25
- package/dist/core/runtime/execution/providerCoordination/providerCompactionCoordinator.js.map +0 -1
- package/dist/core/runtime/execution/providerCoordination/providerRecoveryService.d.ts +0 -7
- package/dist/core/runtime/execution/providerCoordination/providerRecoveryService.js +0 -6
- package/dist/core/runtime/execution/providerCoordination/providerRecoveryService.js.map +0 -1
- package/dist/core/runtime/execution/providerCoordination/providerTurnCoordinator.d.ts +0 -3
- package/dist/core/runtime/execution/providerCoordination/providerTurnCoordinator.js +0 -6
- package/dist/core/runtime/execution/providerCoordination/providerTurnCoordinator.js.map +0 -1
- package/dist/core/runtime/execution/providerOrchestration/providerMissionEventProjector.d.ts +0 -12
- package/dist/core/runtime/execution/providerOrchestration/providerMissionEventProjector.js +0 -71
- package/dist/core/runtime/execution/providerOrchestration/providerMissionEventProjector.js.map +0 -1
- package/dist/core/runtime/hosting/managedSpaceMetadata.d.ts +0 -7
- package/dist/core/runtime/hosting/managedSpaceMetadata.js +0 -14
- package/dist/core/runtime/hosting/managedSpaceMetadata.js.map +0 -1
- package/dist/core/runtime/lifecycle/managedChannelLifecycleService.js +0 -256
- package/dist/core/runtime/lifecycle/managedChannelLifecycleService.js.map +0 -1
- package/dist/core/system/state/sqlite/missionRepository.d.ts +0 -24
- package/dist/core/system/state/sqlite/missionRepository.js +0 -252
- package/dist/core/system/state/sqlite/missionRepository.js.map +0 -1
- package/resources/migrations/007_missions.sql +0 -41
- package/resources/migrations/008_mission_schedule_anchor.sql +0 -5
- package/resources/migrations/010_mission_archival.sql +0 -1
- package/resources/migrations/012_scope_space_terminology.sql +0 -19
- package/resources/migrations/015_mission_schedule_meta.sql +0 -9
- package/resources/migrations/016_mission_hook_bindings.sql +0 -16
- package/resources/official-catalog.json +0 -444
- /package/resources/migrations/{011_managed_sidecars.sql → 009_managed_sidecars.sql} +0 -0
- /package/resources/migrations/{013_orchestration_dedupe.sql → 011_orchestration_dedupe.sql} +0 -0
- /package/resources/migrations/{014_orchestration_execution_claims.sql → 012_orchestration_execution_claims.sql} +0 -0
- /package/resources/migrations/{017_domain_event_provenance.sql → 013_domain_event_provenance.sql} +0 -0
- /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 {
|
|
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
|
-
|
|
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.
|
|
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
|
|
289
|
-
if (
|
|
62
|
+
const surface = this.deps.getSurfaceState();
|
|
63
|
+
if (surface) {
|
|
290
64
|
await this.deps.requireGuard().run({
|
|
291
|
-
action: 'transport.
|
|
65
|
+
action: 'transport.resource.update',
|
|
292
66
|
actor: 'runtime:lifecycle/archive',
|
|
293
|
-
target: current.
|
|
294
|
-
execute: async () => this.deps.transport.
|
|
67
|
+
target: current.transportResourceId,
|
|
68
|
+
execute: async () => this.deps.transport.updateTransportResource?.({
|
|
295
69
|
scopeId: this.deps.transportScopeId,
|
|
296
|
-
|
|
297
|
-
parentId:
|
|
70
|
+
transportResourceId: current.transportResourceId,
|
|
71
|
+
parentId: surface.archiveCategoryId
|
|
298
72
|
})
|
|
299
73
|
});
|
|
300
74
|
}
|
|
301
|
-
this.deps.
|
|
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:
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|