@moorline/core 0.0.1 → 0.0.3
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 +41 -60
- package/dist/core/domain/sessions/runtimeWorkManagementService.js +169 -351
- 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 +14 -8
- package/dist/core/domain/sessions/sessionState.js +74 -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 +11 -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 +12 -37
- 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 +13 -8
- package/dist/core/extension/plugins/pluginHost.js +41 -13
- 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 +12 -26
- package/dist/core/runtime/execution/runtimeInteractionService.js +23 -113
- 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 +994 -165
- 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 +6 -4
- package/dist/core/runtime/hosting/runtimeHostingService.js +23 -46
- 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/runtimeTransportEffectService.d.ts +22 -0
- package/dist/core/runtime/hosting/runtimeTransportEffectService.js +86 -0
- package/dist/core/runtime/hosting/runtimeTransportEffectService.js.map +1 -0
- package/dist/core/runtime/hosting/runtimeTransportIntentService.d.ts +23 -0
- package/dist/core/runtime/hosting/runtimeTransportIntentService.js +144 -0
- package/dist/core/runtime/hosting/runtimeTransportIntentService.js.map +1 -0
- package/dist/core/runtime/hosting/runtimeTransportSurfaceService.d.ts +6 -7
- package/dist/core/runtime/hosting/runtimeTransportSurfaceService.js +15 -63
- 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/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 +12 -256
- 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 +73 -57
- package/dist/core/runtime/moorlineRuntime.js.map +1 -1
- package/dist/core/runtime/moorlineRuntimeBuilder.d.ts +19 -18
- package/dist/core/runtime/moorlineRuntimeBuilder.js +69 -109
- 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/transportIntentRepository.d.ts +12 -0
- package/dist/core/system/state/sqlite/transportIntentRepository.js +106 -0
- package/dist/core/system/state/sqlite/transportIntentRepository.js.map +1 -0
- 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 +68 -24
- package/dist/core/system/state/sqliteSessionStore.js +92 -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 -26
- 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 +6 -3
- 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/migrations/018_transport_intents.sql +18 -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.d.ts +0 -37
- 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
|
@@ -1,28 +1,23 @@
|
|
|
1
|
-
import { parseMissionSchedule, parseMissionStartTime } from '../missions/missionSchedule.js';
|
|
2
1
|
import { isManagedWorkerSession } from './managedWorkerSessions.js';
|
|
3
|
-
import {
|
|
2
|
+
import { slugifyResourceName, truncatePreview } from './workManagement/transportResourceNames.js';
|
|
4
3
|
import { enforceManagedSessionLimit } from './workManagement/managedSessionLimit.js';
|
|
5
|
-
import {
|
|
4
|
+
import { buildManagedTransportResourceMetadata } from '../../runtime/hosting/managedTransportResourceMetadata.js';
|
|
5
|
+
import { MoorlineStatusError } from '../../shared/errors/statusError.js';
|
|
6
6
|
const INITIAL_KICKOFF_PREVIEW_LIMIT = 700;
|
|
7
7
|
export class RuntimeWorkManagementService {
|
|
8
8
|
deps;
|
|
9
9
|
constructor(deps) {
|
|
10
10
|
this.deps = deps;
|
|
11
11
|
}
|
|
12
|
-
resolveMission(input) {
|
|
13
|
-
return (input.missionId ? this.deps.missionRegistry.getById(input.missionId) : null) ?? this.deps.missionRegistry.getBySpaceId(input.spaceId);
|
|
14
|
-
}
|
|
15
12
|
async createManagedSession(input) {
|
|
16
|
-
const namespace = this.deps.requireNamespaceState();
|
|
17
13
|
const owner = input.owner ?? this.deps.defaultSessionOwner(input.actorId);
|
|
18
|
-
const
|
|
19
|
-
const objective = input.objective ?? ownerMission?.goal ?? null;
|
|
14
|
+
const objective = input.objective ?? null;
|
|
20
15
|
enforceManagedSessionLimit(this.deps.snapshots, owner);
|
|
21
|
-
const
|
|
16
|
+
const transportResourceName = slugifyResourceName('session', input.requestedName);
|
|
22
17
|
await this.deps.getGuard().run({
|
|
23
18
|
action: 'session.create',
|
|
24
19
|
actor: input.actorId,
|
|
25
|
-
target: `${this.deps.config.transport.scopeId}:${
|
|
20
|
+
target: `${this.deps.config.transport.scopeId}:${transportResourceName}`,
|
|
26
21
|
payload: {
|
|
27
22
|
runtimeMode: input.runtimeMode,
|
|
28
23
|
owner,
|
|
@@ -31,43 +26,28 @@ export class RuntimeWorkManagementService {
|
|
|
31
26
|
},
|
|
32
27
|
execute: async () => undefined
|
|
33
28
|
});
|
|
34
|
-
const
|
|
35
|
-
action: 'transport.
|
|
29
|
+
const resource = await this.deps.getGuard().run({
|
|
30
|
+
action: 'transport.resource.create',
|
|
36
31
|
actor: input.actorId,
|
|
37
|
-
target: `${this.deps.config.transport.scopeId}:${
|
|
38
|
-
execute: async () => await this.
|
|
32
|
+
target: `${this.deps.config.transport.scopeId}:${transportResourceName}`,
|
|
33
|
+
execute: async () => await this.createRuntimeTransportResource(input.actorId, transportResourceName, null)
|
|
34
|
+
});
|
|
35
|
+
const session = this.deps.reactor.createSession({
|
|
36
|
+
scopeId: this.deps.config.transport.scopeId,
|
|
37
|
+
transportResourceId: resource.id,
|
|
38
|
+
transportResourceName: resource.name,
|
|
39
|
+
requestedName: input.requestedName,
|
|
40
|
+
runtimeMode: input.runtimeMode,
|
|
41
|
+
nowIso: this.deps.now(),
|
|
42
|
+
providerAutoStartEnabled: this.deps.getProviderAutoStartDefault(),
|
|
43
|
+
owner,
|
|
44
|
+
objective: objective ?? undefined,
|
|
45
|
+
tags: input.tags,
|
|
46
|
+
createdBy: input.actorId
|
|
39
47
|
});
|
|
40
|
-
let session;
|
|
41
|
-
try {
|
|
42
|
-
session = this.deps.reactor.createSession({
|
|
43
|
-
scopeId: this.deps.config.transport.scopeId,
|
|
44
|
-
spaceId: space.id,
|
|
45
|
-
spaceName: space.name,
|
|
46
|
-
requestedName: input.requestedName,
|
|
47
|
-
runtimeMode: input.runtimeMode,
|
|
48
|
-
nowIso: this.deps.now(),
|
|
49
|
-
providerAutoStartEnabled: this.deps.getProviderAutoStartDefault(),
|
|
50
|
-
owner,
|
|
51
|
-
objective: objective ?? undefined,
|
|
52
|
-
tags: input.tags,
|
|
53
|
-
createdBy: input.actorId
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
// Resource lifecycle adoption can race with explicit managed session creation.
|
|
58
|
-
// If adoption already persisted the session for this new space, reuse it.
|
|
59
|
-
const adopted = this.deps.sessionRegistry.getBySpaceId(space.id);
|
|
60
|
-
if (adopted) {
|
|
61
|
-
session = adopted;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
await this.deleteRuntimeSpace(space.id, 'best-effort');
|
|
65
|
-
throw error;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
48
|
this.deps.appendAuditEvent('session.created', {
|
|
69
49
|
sessionId: session.sessionId,
|
|
70
|
-
|
|
50
|
+
transportResourceId: session.transportResourceId,
|
|
71
51
|
runtimeMode: session.runtimeMode,
|
|
72
52
|
ownerKind: session.ownerKind,
|
|
73
53
|
ownerId: session.ownerId,
|
|
@@ -75,16 +55,9 @@ export class RuntimeWorkManagementService {
|
|
|
75
55
|
tags: session.tags ?? [],
|
|
76
56
|
actorId: input.actorId
|
|
77
57
|
});
|
|
78
|
-
if (session.createdBy === 'runtime:transport/space-lifecycle') {
|
|
79
|
-
this.deps.appendAuditEvent('session.created.race_recovered', {
|
|
80
|
-
sessionId: session.sessionId,
|
|
81
|
-
spaceId: session.spaceId,
|
|
82
|
-
actorId: input.actorId
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
58
|
if (input.initialInstruction?.trim()) {
|
|
86
59
|
try {
|
|
87
|
-
await this.deps.postTransportMessage(input.actorId, session.
|
|
60
|
+
await this.deps.postTransportMessage(input.actorId, session.transportResourceId, {
|
|
88
61
|
text: `Queued initial kickoff for ${session.sessionId}.`,
|
|
89
62
|
blocks: [
|
|
90
63
|
{
|
|
@@ -110,24 +83,82 @@ export class RuntimeWorkManagementService {
|
|
|
110
83
|
catch (error) {
|
|
111
84
|
this.deps.appendAuditEvent('session.created.notification_failed', {
|
|
112
85
|
sessionId: session.sessionId,
|
|
113
|
-
|
|
86
|
+
transportResourceId: session.transportResourceId,
|
|
114
87
|
actorId: input.actorId,
|
|
115
88
|
error: error instanceof Error ? error.message : String(error)
|
|
116
89
|
});
|
|
117
90
|
}
|
|
118
91
|
this.enqueueInitialManagedSessionKickoff({
|
|
119
92
|
actorId: input.actorId,
|
|
120
|
-
|
|
93
|
+
transportResourceId: session.transportResourceId,
|
|
121
94
|
sessionId: session.sessionId,
|
|
122
95
|
instruction: input.initialInstruction
|
|
123
96
|
});
|
|
124
97
|
}
|
|
125
|
-
return { session,
|
|
98
|
+
return { session, transportResourceId: resource.id };
|
|
99
|
+
}
|
|
100
|
+
async bindManagedSessionToTransportResource(input) {
|
|
101
|
+
const existing = this.deps.sessionRegistry.getByTransportResourceId(input.transportResourceId);
|
|
102
|
+
if (existing) {
|
|
103
|
+
const updated = this.deps.sessionRegistry.updateSession({
|
|
104
|
+
...existing,
|
|
105
|
+
transportResourceName: input.transportResourceName,
|
|
106
|
+
runtimeMode: input.runtimeMode,
|
|
107
|
+
ownerKind: input.owner?.kind ?? existing.ownerKind,
|
|
108
|
+
ownerId: input.owner?.id ?? existing.ownerId,
|
|
109
|
+
ownerLabel: input.owner?.label ?? existing.ownerLabel,
|
|
110
|
+
objective: input.objective ?? existing.objective,
|
|
111
|
+
tags: input.tags ?? existing.tags ?? [],
|
|
112
|
+
updatedAt: this.deps.now()
|
|
113
|
+
});
|
|
114
|
+
this.deps.appendAuditEvent('session.transport_binding.updated', {
|
|
115
|
+
sessionId: updated.sessionId,
|
|
116
|
+
transportResourceId: updated.transportResourceId,
|
|
117
|
+
actorId: input.actorId
|
|
118
|
+
});
|
|
119
|
+
return updated;
|
|
120
|
+
}
|
|
121
|
+
const owner = input.owner ?? this.deps.defaultSessionOwner(input.actorId);
|
|
122
|
+
const objective = input.objective ?? null;
|
|
123
|
+
enforceManagedSessionLimit(this.deps.snapshots, owner);
|
|
124
|
+
await this.deps.getGuard().run({
|
|
125
|
+
action: 'session.create',
|
|
126
|
+
actor: input.actorId,
|
|
127
|
+
target: `${this.deps.config.transport.scopeId}:${input.transportResourceId}`,
|
|
128
|
+
payload: {
|
|
129
|
+
runtimeMode: input.runtimeMode,
|
|
130
|
+
owner,
|
|
131
|
+
objective,
|
|
132
|
+
tags: input.tags ?? [],
|
|
133
|
+
source: 'transport-intent'
|
|
134
|
+
},
|
|
135
|
+
execute: async () => undefined
|
|
136
|
+
});
|
|
137
|
+
const session = this.deps.reactor.createSession({
|
|
138
|
+
scopeId: this.deps.config.transport.scopeId,
|
|
139
|
+
transportResourceId: input.transportResourceId,
|
|
140
|
+
transportResourceName: input.transportResourceName,
|
|
141
|
+
requestedName: input.requestedName ?? input.transportResourceName,
|
|
142
|
+
runtimeMode: input.runtimeMode,
|
|
143
|
+
nowIso: this.deps.now(),
|
|
144
|
+
providerAutoStartEnabled: this.deps.getProviderAutoStartDefault(),
|
|
145
|
+
owner,
|
|
146
|
+
objective: objective ?? undefined,
|
|
147
|
+
tags: input.tags,
|
|
148
|
+
createdBy: input.actorId
|
|
149
|
+
});
|
|
150
|
+
this.deps.appendAuditEvent('session.created.from_transport_intent', {
|
|
151
|
+
sessionId: session.sessionId,
|
|
152
|
+
transportResourceId: session.transportResourceId,
|
|
153
|
+
runtimeMode: session.runtimeMode,
|
|
154
|
+
actorId: input.actorId
|
|
155
|
+
});
|
|
156
|
+
return session;
|
|
126
157
|
}
|
|
127
158
|
async directManagedSession(input) {
|
|
128
159
|
const session = this.resolveManagedWorkerSession(input);
|
|
129
160
|
if (!session) {
|
|
130
|
-
throw new
|
|
161
|
+
throw new MoorlineStatusError(404, 'No matching managed worker session found.');
|
|
131
162
|
}
|
|
132
163
|
if (session.lifecycleStatus === 'archived') {
|
|
133
164
|
throw new Error(`Session ${session.sessionId} is archived.`);
|
|
@@ -148,17 +179,17 @@ export class RuntimeWorkManagementService {
|
|
|
148
179
|
: instruction;
|
|
149
180
|
const reply = await this.deps.runOrchestrationTurn(session, input.actorId, prompt);
|
|
150
181
|
const updatedSession = this.deps.sessionRegistry.markDirected({
|
|
151
|
-
|
|
182
|
+
transportResourceId: session.transportResourceId,
|
|
152
183
|
directedAt: this.deps.now(),
|
|
153
184
|
directedBy: input.actorId
|
|
154
185
|
}) ?? session;
|
|
155
186
|
this.deps.appendAuditEvent('session.directed', {
|
|
156
187
|
sessionId: session.sessionId,
|
|
157
|
-
|
|
188
|
+
transportResourceId: session.transportResourceId,
|
|
158
189
|
actorId: input.actorId,
|
|
159
190
|
reason: input.reason ?? null
|
|
160
191
|
});
|
|
161
|
-
await this.deps.postTransportMessage(input.actorId, session.
|
|
192
|
+
await this.deps.postTransportMessage(input.actorId, session.transportResourceId, reply);
|
|
162
193
|
return {
|
|
163
194
|
session: updatedSession,
|
|
164
195
|
reply
|
|
@@ -169,23 +200,12 @@ export class RuntimeWorkManagementService {
|
|
|
169
200
|
if (!session) {
|
|
170
201
|
return null;
|
|
171
202
|
}
|
|
172
|
-
const namespace = this.deps.requireNamespaceState();
|
|
173
203
|
await this.deps.getGuard().run({
|
|
174
204
|
action: 'session.archive',
|
|
175
205
|
actor: input.actorId,
|
|
176
206
|
target: session.sessionId,
|
|
177
207
|
execute: async () => undefined
|
|
178
208
|
});
|
|
179
|
-
await this.deps.getGuard().run({
|
|
180
|
-
action: 'transport.space.update',
|
|
181
|
-
actor: input.actorId,
|
|
182
|
-
target: session.spaceId,
|
|
183
|
-
execute: async () => this.deps.getTransport().updateSpace?.({
|
|
184
|
-
scopeId: this.deps.config.transport.scopeId,
|
|
185
|
-
spaceId: session.spaceId,
|
|
186
|
-
parentId: namespace.archiveCategoryId
|
|
187
|
-
})
|
|
188
|
-
});
|
|
189
209
|
this.deps.providerService.stopSession(session.threadId);
|
|
190
210
|
this.deps.providerDirectory.delete(session.threadId);
|
|
191
211
|
this.deps.rejectTurnWaitersForThread(session.threadId, `Session ${session.sessionId} was archived.`);
|
|
@@ -196,14 +216,14 @@ export class RuntimeWorkManagementService {
|
|
|
196
216
|
lifecycleStatus: 'archived',
|
|
197
217
|
archivedAt: nowIso,
|
|
198
218
|
providerThreadId: null,
|
|
199
|
-
|
|
219
|
+
resumeCursor: null,
|
|
200
220
|
providerStatus: 'closed',
|
|
201
221
|
activeTurnId: null,
|
|
202
222
|
updatedAt: nowIso
|
|
203
223
|
});
|
|
204
224
|
this.deps.appendAuditEvent('session.archived', {
|
|
205
225
|
sessionId: archived.sessionId,
|
|
206
|
-
|
|
226
|
+
transportResourceId: archived.transportResourceId,
|
|
207
227
|
actorId: input.actorId
|
|
208
228
|
});
|
|
209
229
|
return archived;
|
|
@@ -220,340 +240,136 @@ export class RuntimeWorkManagementService {
|
|
|
220
240
|
execute: async () => undefined
|
|
221
241
|
});
|
|
222
242
|
await this.deps.getGuard().run({
|
|
223
|
-
action: 'transport.
|
|
243
|
+
action: 'transport.resource.delete',
|
|
224
244
|
actor: input.actorId,
|
|
225
|
-
target: session.
|
|
226
|
-
execute: async () => await this.
|
|
245
|
+
target: session.transportResourceId,
|
|
246
|
+
execute: async () => await this.deleteRuntimeTransportResource(session.transportResourceId, 'best-effort')
|
|
227
247
|
});
|
|
228
248
|
this.deps.providerService.stopSession(session.threadId);
|
|
229
249
|
this.deps.providerDirectory.delete(session.threadId);
|
|
230
250
|
this.deps.rejectTurnWaitersForThread(session.threadId, `Session ${session.sessionId} was deleted.`);
|
|
231
251
|
await this.deps.cleanupScopedSidecars('session', session.sessionId, `session ${session.sessionId} deleted`);
|
|
232
|
-
const deleted = this.deps.sessionRegistry.deleteArchived(session.
|
|
252
|
+
const deleted = this.deps.sessionRegistry.deleteArchived(session.transportResourceId);
|
|
233
253
|
if (deleted) {
|
|
234
254
|
this.deps.appendAuditEvent('session.deleted', {
|
|
235
255
|
sessionId: deleted.sessionId,
|
|
236
|
-
|
|
256
|
+
transportResourceId: deleted.transportResourceId,
|
|
237
257
|
workspacePath: deleted.workspacePath,
|
|
238
258
|
actorId: input.actorId
|
|
239
259
|
});
|
|
240
260
|
}
|
|
241
261
|
return deleted;
|
|
242
262
|
}
|
|
243
|
-
async
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
parseMissionStartTime(input.startTime, this.deps.now());
|
|
248
|
-
await this.deps.getGuard().run({
|
|
249
|
-
action: 'mission.create',
|
|
250
|
-
actor: input.actorId,
|
|
251
|
-
target: `${this.deps.config.transport.scopeId}:${spaceName}`,
|
|
252
|
-
payload: { runtimeMode: input.runtimeMode, schedule: input.schedule, startTime: input.startTime ?? null },
|
|
253
|
-
execute: async () => undefined
|
|
254
|
-
});
|
|
255
|
-
const space = await this.deps.getGuard().run({
|
|
256
|
-
action: 'transport.space.create',
|
|
257
|
-
actor: input.actorId,
|
|
258
|
-
target: `${this.deps.config.transport.scopeId}:${spaceName}`,
|
|
259
|
-
execute: async () => await this.createRuntimeSpace(spaceName, namespace.missionsCategoryId)
|
|
260
|
-
});
|
|
261
|
-
let mission;
|
|
262
|
-
try {
|
|
263
|
-
mission = this.deps.missionRegistry.create({
|
|
264
|
-
scopeId: this.deps.config.transport.scopeId,
|
|
265
|
-
spaceId: space.id,
|
|
266
|
-
spaceName: space.name,
|
|
267
|
-
title: input.title,
|
|
268
|
-
goal: input.goal,
|
|
269
|
-
schedule: input.schedule,
|
|
270
|
-
...(input.startTime ? { startTime: input.startTime } : {}),
|
|
271
|
-
runtimeMode: input.runtimeMode,
|
|
272
|
-
nowIso: this.deps.now()
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
catch (error) {
|
|
276
|
-
await this.deleteRuntimeSpace(space.id, 'best-effort');
|
|
277
|
-
throw error;
|
|
278
|
-
}
|
|
279
|
-
this.deps.appendAuditEvent('mission.created', {
|
|
280
|
-
missionId: mission.missionId,
|
|
281
|
-
spaceId: mission.spaceId,
|
|
282
|
-
runtimeMode: mission.runtimeMode,
|
|
283
|
-
actorId: input.actorId
|
|
284
|
-
});
|
|
285
|
-
return { mission, spaceId: space.id };
|
|
286
|
-
}
|
|
287
|
-
async adoptMissionChannel(input) {
|
|
288
|
-
await this.deps.getGuard().run({
|
|
289
|
-
action: 'mission.create',
|
|
290
|
-
actor: input.actorId,
|
|
291
|
-
target: `${this.deps.config.transport.scopeId}:${input.spaceName}`,
|
|
292
|
-
execute: async () => undefined
|
|
293
|
-
});
|
|
294
|
-
const mission = this.deps.missionRegistry.createDraft({
|
|
295
|
-
scopeId: this.deps.config.transport.scopeId,
|
|
296
|
-
spaceId: input.spaceId,
|
|
297
|
-
spaceName: input.spaceName,
|
|
298
|
-
title: input.spaceName,
|
|
299
|
-
runtimeMode: this.deps.config.defaults.runtimeMode,
|
|
300
|
-
nowIso: this.deps.now()
|
|
301
|
-
});
|
|
302
|
-
this.deps.appendAuditEvent('mission.adopted_from_transport', {
|
|
303
|
-
missionId: mission.missionId,
|
|
304
|
-
spaceId: mission.spaceId,
|
|
305
|
-
actorId: input.actorId
|
|
306
|
-
});
|
|
307
|
-
return mission;
|
|
308
|
-
}
|
|
309
|
-
async configureDraftMission(input) {
|
|
310
|
-
const mission = this.resolveMission({ spaceId: input.spaceId, missionId: input.missionId });
|
|
311
|
-
if (!mission) {
|
|
312
|
-
throw new Error('No matching mission found.');
|
|
313
|
-
}
|
|
314
|
-
if (mission.lifecycleStatus !== 'draft') {
|
|
315
|
-
throw new Error(`Mission ${mission.missionId} is not waiting for initial setup.`);
|
|
316
|
-
}
|
|
317
|
-
const goal = input.goal.trim();
|
|
318
|
-
const schedule = input.schedule.trim();
|
|
319
|
-
if (!goal) {
|
|
320
|
-
throw new Error('goal is required');
|
|
321
|
-
}
|
|
322
|
-
if (!schedule) {
|
|
323
|
-
throw new Error('schedule is required');
|
|
263
|
+
async deleteManagedSessionNow(input) {
|
|
264
|
+
const session = this.resolveManagedWorkerSession(input);
|
|
265
|
+
if (!session) {
|
|
266
|
+
return null;
|
|
324
267
|
}
|
|
325
268
|
await this.deps.getGuard().run({
|
|
326
|
-
action: '
|
|
269
|
+
action: 'session.delete',
|
|
327
270
|
actor: input.actorId,
|
|
328
|
-
target:
|
|
271
|
+
target: session.sessionId,
|
|
329
272
|
payload: {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
runtimeMode: input.runtimeMode ?? mission.runtimeMode
|
|
273
|
+
deleteWorkspace: input.deleteWorkspace,
|
|
274
|
+
reason: input.reason ?? null
|
|
333
275
|
},
|
|
334
276
|
execute: async () => undefined
|
|
335
277
|
});
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
}
|
|
353
|
-
async archiveMission(input) {
|
|
354
|
-
const mission = this.resolveMission({ spaceId: input.spaceId, missionId: input.missionId });
|
|
355
|
-
if (!mission) {
|
|
356
|
-
return null;
|
|
278
|
+
this.deps.providerService.stopSession(session.threadId);
|
|
279
|
+
this.deps.providerDirectory.delete(session.threadId);
|
|
280
|
+
this.deps.rejectTurnWaitersForThread(session.threadId, input.reason ?? `Session ${session.sessionId} was deleted.`);
|
|
281
|
+
await this.deps.cleanupScopedSidecars('session', session.sessionId, `session ${session.sessionId} deleted`);
|
|
282
|
+
const deleted = input.deleteWorkspace
|
|
283
|
+
? this.deps.sessionRegistry.delete(session.transportResourceId)
|
|
284
|
+
: this.deleteSessionStateOnly(session);
|
|
285
|
+
if (deleted) {
|
|
286
|
+
this.deps.appendAuditEvent('session.deleted', {
|
|
287
|
+
sessionId: deleted.sessionId,
|
|
288
|
+
transportResourceId: deleted.transportResourceId,
|
|
289
|
+
workspacePath: deleted.workspacePath,
|
|
290
|
+
actorId: input.actorId,
|
|
291
|
+
deleteWorkspace: input.deleteWorkspace,
|
|
292
|
+
reason: input.reason ?? null
|
|
293
|
+
});
|
|
357
294
|
}
|
|
358
|
-
|
|
359
|
-
|
|
295
|
+
return deleted;
|
|
296
|
+
}
|
|
297
|
+
async resumeManagedSession(input) {
|
|
298
|
+
const session = this.resolveManagedWorkerSession(input);
|
|
299
|
+
if (!session) {
|
|
360
300
|
return null;
|
|
361
301
|
}
|
|
362
|
-
if (
|
|
363
|
-
return
|
|
302
|
+
if (session.lifecycleStatus !== 'archived' && session.lifecycleStatus !== 'cool') {
|
|
303
|
+
return session;
|
|
364
304
|
}
|
|
365
|
-
const namespace = this.deps.requireNamespaceState();
|
|
366
305
|
await this.deps.getGuard().run({
|
|
367
|
-
action: '
|
|
306
|
+
action: 'session.resume',
|
|
368
307
|
actor: input.actorId,
|
|
369
|
-
target:
|
|
308
|
+
target: session.sessionId,
|
|
309
|
+
payload: { reason: input.reason ?? null },
|
|
370
310
|
execute: async () => undefined
|
|
371
311
|
});
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
parentId: namespace.archiveCategoryId
|
|
380
|
-
})
|
|
381
|
-
});
|
|
382
|
-
this.deps.providerService.stopSession(currentMission.threadId);
|
|
383
|
-
this.deps.providerDirectory.delete(currentMission.threadId);
|
|
384
|
-
this.deps.rejectTurnWaitersForThread(currentMission.threadId, `Mission ${currentMission.missionId} was archived.`);
|
|
385
|
-
const archivedAt = this.deps.now();
|
|
386
|
-
const archived = this.deps.missionRegistry.update({
|
|
387
|
-
...currentMission,
|
|
388
|
-
lifecycleStatus: 'stopped',
|
|
389
|
-
pausedAt: null,
|
|
390
|
-
nextRunAt: null,
|
|
391
|
-
stoppedAt: currentMission.stoppedAt ?? archivedAt,
|
|
392
|
-
archivedAt,
|
|
393
|
-
updatedAt: archivedAt
|
|
394
|
-
});
|
|
395
|
-
this.deps.appendAuditEvent('mission.archived', {
|
|
396
|
-
missionId: archived.missionId,
|
|
397
|
-
spaceId: archived.spaceId,
|
|
398
|
-
actorId: input.actorId
|
|
399
|
-
});
|
|
400
|
-
return archived;
|
|
401
|
-
}
|
|
402
|
-
async deleteArchivedMission(input) {
|
|
403
|
-
const mission = this.resolveMission({ spaceId: input.spaceId, missionId: input.missionId });
|
|
404
|
-
if (!mission || !mission.archivedAt) {
|
|
405
|
-
return null;
|
|
406
|
-
}
|
|
407
|
-
return await this.deps.queue(`mission:${mission.missionId}`, async () => {
|
|
408
|
-
const currentMission = this.deps.missionRegistry.getById(mission.missionId);
|
|
409
|
-
if (!currentMission || !currentMission.archivedAt) {
|
|
410
|
-
return null;
|
|
411
|
-
}
|
|
412
|
-
await this.deps.getGuard().run({
|
|
413
|
-
action: 'mission.delete',
|
|
414
|
-
actor: input.actorId,
|
|
415
|
-
target: currentMission.missionId,
|
|
416
|
-
execute: async () => undefined
|
|
417
|
-
});
|
|
418
|
-
await this.deps.getGuard().run({
|
|
419
|
-
action: 'transport.space.delete',
|
|
420
|
-
actor: input.actorId,
|
|
421
|
-
target: currentMission.spaceId,
|
|
422
|
-
execute: async () => await this.deleteRuntimeSpace(currentMission.spaceId, 'strict')
|
|
312
|
+
const resumed = this.deps.sessionRegistry.resume(session.transportResourceId, this.deps.now());
|
|
313
|
+
if (resumed) {
|
|
314
|
+
this.deps.appendAuditEvent('session.resumed', {
|
|
315
|
+
sessionId: resumed.sessionId,
|
|
316
|
+
transportResourceId: resumed.transportResourceId,
|
|
317
|
+
actorId: input.actorId,
|
|
318
|
+
reason: input.reason ?? null
|
|
423
319
|
});
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
this.deps.rejectTurnWaitersForThread(currentMission.threadId, `Mission ${currentMission.missionId} was deleted.`);
|
|
427
|
-
const deleted = this.deps.missionRegistry.deleteArchived(currentMission.spaceId);
|
|
428
|
-
if (deleted) {
|
|
429
|
-
this.deps.appendAuditEvent('mission.deleted', {
|
|
430
|
-
missionId: deleted.missionId,
|
|
431
|
-
spaceId: deleted.spaceId,
|
|
432
|
-
workspacePath: deleted.workspacePath,
|
|
433
|
-
actorId: input.actorId
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
return deleted;
|
|
437
|
-
});
|
|
320
|
+
}
|
|
321
|
+
return resumed;
|
|
438
322
|
}
|
|
439
|
-
async
|
|
440
|
-
const target = this.
|
|
323
|
+
async archiveResourceTarget(input) {
|
|
324
|
+
const target = this.resolveArchivableResourceTarget(input.transportResourceId);
|
|
441
325
|
if (!target) {
|
|
442
326
|
return null;
|
|
443
327
|
}
|
|
444
328
|
if (target.kind === 'session') {
|
|
445
329
|
const session = await this.archiveManagedSession({
|
|
446
330
|
actorId: input.actorId,
|
|
447
|
-
|
|
331
|
+
transportResourceId: target.session.transportResourceId,
|
|
448
332
|
sessionId: target.session.sessionId
|
|
449
333
|
});
|
|
450
334
|
return session ? { kind: 'session', session } : null;
|
|
451
335
|
}
|
|
452
|
-
|
|
453
|
-
actorId: input.actorId,
|
|
454
|
-
spaceId: target.mission.spaceId,
|
|
455
|
-
missionId: target.mission.missionId
|
|
456
|
-
});
|
|
457
|
-
return mission ? { kind: 'mission', mission } : null;
|
|
336
|
+
return null;
|
|
458
337
|
}
|
|
459
|
-
async
|
|
460
|
-
const target = this.
|
|
338
|
+
async deleteArchivedResourceTarget(input) {
|
|
339
|
+
const target = this.resolveArchivableResourceTarget(input.transportResourceId);
|
|
461
340
|
if (!target) {
|
|
462
341
|
return null;
|
|
463
342
|
}
|
|
464
343
|
if (target.kind === 'session') {
|
|
465
344
|
const session = await this.deleteManagedSession({
|
|
466
345
|
actorId: input.actorId,
|
|
467
|
-
|
|
346
|
+
transportResourceId: target.session.transportResourceId,
|
|
468
347
|
sessionId: target.session.sessionId
|
|
469
348
|
});
|
|
470
349
|
return session ? { kind: 'session', session } : null;
|
|
471
350
|
}
|
|
472
|
-
|
|
473
|
-
actorId: input.actorId,
|
|
474
|
-
spaceId: target.mission.spaceId,
|
|
475
|
-
missionId: target.mission.missionId
|
|
476
|
-
});
|
|
477
|
-
return mission ? { kind: 'mission', mission } : null;
|
|
478
|
-
}
|
|
479
|
-
async updateMissionLifecycle(actorId, input, action) {
|
|
480
|
-
const mission = this.resolveMission(input);
|
|
481
|
-
if (!mission) {
|
|
482
|
-
return null;
|
|
483
|
-
}
|
|
484
|
-
await this.deps.getGuard().run({
|
|
485
|
-
action: 'mission.control',
|
|
486
|
-
actor: actorId,
|
|
487
|
-
target: mission.missionId,
|
|
488
|
-
execute: async () => undefined
|
|
489
|
-
});
|
|
490
|
-
const nowIso = this.deps.now();
|
|
491
|
-
if (mission.lifecycleStatus === 'draft') {
|
|
492
|
-
throw new Error(`Mission ${mission.missionId} still needs goal and schedule setup before lifecycle controls are available.`);
|
|
493
|
-
}
|
|
494
|
-
if (action === 'pause') {
|
|
495
|
-
if (mission.archivedAt) {
|
|
496
|
-
throw new Error(`Mission ${mission.missionId} is archived and cannot be paused.`);
|
|
497
|
-
}
|
|
498
|
-
if (mission.lifecycleStatus === 'active' || mission.lifecycleStatus === 'waiting_on_user') {
|
|
499
|
-
throw new Error(`Mission ${mission.missionId} is busy. Stop it before pausing.`);
|
|
500
|
-
}
|
|
501
|
-
return this.deps.missionRegistry.update({
|
|
502
|
-
...mission,
|
|
503
|
-
pausedAt: nowIso,
|
|
504
|
-
lifecycleStatus: 'sleeping',
|
|
505
|
-
updatedAt: nowIso
|
|
506
|
-
});
|
|
507
|
-
}
|
|
508
|
-
if (mission.archivedAt) {
|
|
509
|
-
throw new Error(`Mission ${mission.missionId} is archived and cannot be resumed.`);
|
|
510
|
-
}
|
|
511
|
-
if (action === 'resume') {
|
|
512
|
-
if (mission.lifecycleStatus === 'stopped' && mission.stoppedAt) {
|
|
513
|
-
throw new Error(`Mission ${mission.missionId} is stopped and cannot be resumed.`);
|
|
514
|
-
}
|
|
515
|
-
const resumedNextRunAt = this.deps.missionRegistry.runAtOrAfter(mission, nowIso);
|
|
516
|
-
const resumedOneShotComplete = this.deps.missionRegistry.isOneShotSchedule(mission) && !resumedNextRunAt;
|
|
517
|
-
return this.deps.missionRegistry.update({
|
|
518
|
-
...mission,
|
|
519
|
-
pausedAt: null,
|
|
520
|
-
lifecycleStatus: resumedOneShotComplete ? 'completed' : 'sleeping',
|
|
521
|
-
nextRunAt: resumedNextRunAt,
|
|
522
|
-
completedAt: resumedOneShotComplete ? nowIso : mission.completedAt,
|
|
523
|
-
updatedAt: nowIso
|
|
524
|
-
});
|
|
525
|
-
}
|
|
526
|
-
this.deps.providerService.stopSession(mission.threadId);
|
|
527
|
-
return this.deps.missionRegistry.update({
|
|
528
|
-
...mission,
|
|
529
|
-
pausedAt: null,
|
|
530
|
-
lifecycleStatus: 'stopped',
|
|
531
|
-
stoppedAt: nowIso,
|
|
532
|
-
nextRunAt: null,
|
|
533
|
-
updatedAt: nowIso
|
|
534
|
-
});
|
|
351
|
+
return null;
|
|
535
352
|
}
|
|
536
353
|
resolveSession(input) {
|
|
537
354
|
return ((input.sessionId ? this.deps.sessionRegistry.list().find((entry) => entry.sessionId === input.sessionId) : null) ??
|
|
538
|
-
(input.
|
|
355
|
+
(input.transportResourceId ? this.deps.sessionRegistry.getByTransportResourceId(input.transportResourceId) : null));
|
|
539
356
|
}
|
|
540
357
|
resolveManagedWorkerSession(input) {
|
|
541
358
|
const session = this.resolveSession(input);
|
|
542
359
|
return session && isManagedWorkerSession(session) ? session : null;
|
|
543
360
|
}
|
|
544
|
-
|
|
545
|
-
const session = this.resolveManagedWorkerSession({
|
|
361
|
+
resolveArchivableResourceTarget(transportResourceId) {
|
|
362
|
+
const session = this.resolveManagedWorkerSession({ transportResourceId });
|
|
546
363
|
if (session) {
|
|
547
364
|
return { kind: 'session', session };
|
|
548
365
|
}
|
|
549
|
-
const mission = this.deps.missionRegistry.getBySpaceId(spaceId);
|
|
550
|
-
if (mission) {
|
|
551
|
-
return { kind: 'mission', mission };
|
|
552
|
-
}
|
|
553
366
|
return null;
|
|
554
367
|
}
|
|
368
|
+
deleteSessionStateOnly(session) {
|
|
369
|
+
return this.deps.sessionRegistry.deleteRecordOnly(session.transportResourceId) ?? session;
|
|
370
|
+
}
|
|
555
371
|
enqueueInitialManagedSessionKickoff(input) {
|
|
556
|
-
void this.deps.queue(input.
|
|
372
|
+
void this.deps.queue(input.transportResourceId, async () => {
|
|
557
373
|
try {
|
|
558
374
|
await this.directManagedSession({
|
|
559
375
|
actorId: input.actorId,
|
|
@@ -573,7 +389,7 @@ export class RuntimeWorkManagementService {
|
|
|
573
389
|
if (session) {
|
|
574
390
|
try {
|
|
575
391
|
await this.deps.sendStatusUpdate({
|
|
576
|
-
text: `Initial kickoff failed for ${session.sessionId} in
|
|
392
|
+
text: `Initial kickoff failed for ${session.sessionId} in transport resource ${session.transportResourceId}: ${message}`
|
|
577
393
|
});
|
|
578
394
|
}
|
|
579
395
|
catch (statusError) {
|
|
@@ -588,31 +404,33 @@ export class RuntimeWorkManagementService {
|
|
|
588
404
|
}
|
|
589
405
|
});
|
|
590
406
|
}
|
|
591
|
-
async
|
|
407
|
+
async createRuntimeTransportResource(actor, name, parentId) {
|
|
592
408
|
const transport = this.deps.getTransport();
|
|
593
|
-
if (!transport.capabilities().
|
|
594
|
-
throw new Error('Managed
|
|
409
|
+
if (!transport.capabilities().resources.create) {
|
|
410
|
+
throw new Error('Managed resource creation requires transport support for resources.create. Configure a transport with managed resource creation or disable managed sessions.');
|
|
595
411
|
}
|
|
596
|
-
return await
|
|
412
|
+
return await this.deps.effects().createResource(actor, {
|
|
597
413
|
scopeId: this.deps.config.transport.scopeId,
|
|
598
414
|
name,
|
|
599
|
-
kind: '
|
|
600
|
-
metadata:
|
|
415
|
+
kind: 'conversation',
|
|
416
|
+
metadata: buildManagedTransportResourceMetadata({
|
|
601
417
|
scopeId: this.deps.config.transport.scopeId,
|
|
602
|
-
|
|
418
|
+
...(typeof this.deps.config.transport.config.applicationId === 'string'
|
|
419
|
+
? { ownerApplicationId: this.deps.config.transport.config.applicationId }
|
|
420
|
+
: {})
|
|
603
421
|
}),
|
|
604
422
|
parentId
|
|
605
423
|
});
|
|
606
424
|
}
|
|
607
|
-
async
|
|
425
|
+
async deleteRuntimeTransportResource(transportResourceId, mode) {
|
|
608
426
|
const transport = this.deps.getTransport();
|
|
609
|
-
if (!transport.capabilities().
|
|
427
|
+
if (!transport.capabilities().resources.delete) {
|
|
610
428
|
return;
|
|
611
429
|
}
|
|
612
430
|
try {
|
|
613
|
-
await
|
|
431
|
+
await this.deps.effects().deleteResource('runtime:work-management', {
|
|
614
432
|
scopeId: this.deps.config.transport.scopeId,
|
|
615
|
-
|
|
433
|
+
transportResourceId: transportResourceId
|
|
616
434
|
});
|
|
617
435
|
}
|
|
618
436
|
catch (error) {
|