@konitif/workbench 0.284.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +54 -0
- package/dist/application/boot/applicationBoot.d.ts +48 -0
- package/dist/application/boot/applicationBoot.js +174 -0
- package/dist/application/experiment/ControlledExperimentCampaign.d.ts +12 -0
- package/dist/application/experiment/ControlledExperimentCampaign.js +159 -0
- package/dist/application/experiment/ControlledExperimentRecorder.d.ts +17 -0
- package/dist/application/experiment/ControlledExperimentRecorder.js +215 -0
- package/dist/application/i18n/WorkbenchTranslationRegistry.d.ts +19 -0
- package/dist/application/i18n/WorkbenchTranslationRegistry.js +179 -0
- package/dist/application/layout/surfaceCommandRouter.d.ts +18 -0
- package/dist/application/layout/surfaceCommandRouter.js +247 -0
- package/dist/application/physics/NoopPhysicsBackend.d.ts +2 -0
- package/dist/application/physics/NoopPhysicsBackend.js +2 -0
- package/dist/application/physics/PhysicsService.d.ts +2 -0
- package/dist/application/physics/PhysicsService.js +2 -0
- package/dist/application/project/ProjectManifest.d.ts +15 -0
- package/dist/application/project/ProjectManifest.js +107 -0
- package/dist/application/repository/RepositoryPreflightEngine.d.ts +6 -0
- package/dist/application/repository/RepositoryPreflightEngine.js +301 -0
- package/dist/application/runtime/RuntimeBackendConnection.d.ts +9 -0
- package/dist/application/runtime/RuntimeBackendConnection.js +34 -0
- package/dist/application/runtime/RuntimeBackendSubscription.d.ts +8 -0
- package/dist/application/runtime/RuntimeBackendSubscription.js +52 -0
- package/dist/application/runtime/RuntimeCheckpointStore.d.ts +20 -0
- package/dist/application/runtime/RuntimeCheckpointStore.js +65 -0
- package/dist/application/runtime/RuntimeLaunchProgress.d.ts +3 -0
- package/dist/application/runtime/RuntimeLaunchProgress.js +38 -0
- package/dist/application/runtime/RuntimeLaunchStateSnapshot.d.ts +48 -0
- package/dist/application/runtime/RuntimeLaunchStateSnapshot.js +73 -0
- package/dist/application/runtime/RuntimeObservabilityHub.d.ts +28 -0
- package/dist/application/runtime/RuntimeObservabilityHub.js +262 -0
- package/dist/application/runtime/RuntimeObservationEvents.d.ts +15 -0
- package/dist/application/runtime/RuntimeObservationEvents.js +18 -0
- package/dist/application/runtime/RuntimeOffloadManager.d.ts +24 -0
- package/dist/application/runtime/RuntimeOffloadManager.js +96 -0
- package/dist/application/runtime/RuntimePlanEngine.d.ts +11 -0
- package/dist/application/runtime/RuntimePlanEngine.js +67 -0
- package/dist/application/runtime/RuntimeProjectionCatalog.d.ts +5 -0
- package/dist/application/runtime/RuntimeProjectionCatalog.js +48 -0
- package/dist/application/runtime/RuntimeProjectionSession.d.ts +5 -0
- package/dist/application/runtime/RuntimeProjectionSession.js +4 -0
- package/dist/application/runtime/RuntimeProjectionSessionKeys.d.ts +5 -0
- package/dist/application/runtime/RuntimeProjectionSessionKeys.js +10 -0
- package/dist/application/runtime/RuntimeProjectionSessionReducers.d.ts +7 -0
- package/dist/application/runtime/RuntimeProjectionSessionReducers.js +101 -0
- package/dist/application/runtime/RuntimeProjectionSessionSerialization.d.ts +5 -0
- package/dist/application/runtime/RuntimeProjectionSessionSerialization.js +89 -0
- package/dist/application/runtime/RuntimeProjectionSessionSharedState.d.ts +3 -0
- package/dist/application/runtime/RuntimeProjectionSessionSharedState.js +53 -0
- package/dist/application/runtime/RuntimeProjectionSessionTypes.d.ts +38 -0
- package/dist/application/runtime/RuntimeProjectionSessionTypes.js +1 -0
- package/dist/application/runtime/RuntimeProjectionViewerSessionSync.d.ts +29 -0
- package/dist/application/runtime/RuntimeProjectionViewerSessionSync.js +39 -0
- package/dist/application/runtime/RuntimeProjectionViewerSessionUpdates.d.ts +27 -0
- package/dist/application/runtime/RuntimeProjectionViewerSessionUpdates.js +38 -0
- package/dist/application/runtime/RuntimeRegistryOwner.d.ts +20 -0
- package/dist/application/runtime/RuntimeRegistryOwner.js +71 -0
- package/dist/application/runtime/RuntimeRegistrySnapshots.d.ts +6 -0
- package/dist/application/runtime/RuntimeRegistrySnapshots.js +51 -0
- package/dist/application/runtime/RuntimeRegistryTypes.d.ts +29 -0
- package/dist/application/runtime/RuntimeRegistryTypes.js +1 -0
- package/dist/application/runtime/RuntimeSharedState.d.ts +6 -0
- package/dist/application/runtime/RuntimeSharedState.js +47 -0
- package/dist/application/runtime/WorkbenchRuntimeCore.d.ts +82 -0
- package/dist/application/runtime/WorkbenchRuntimeCore.js +463 -0
- package/dist/application/runtime/WorkbenchRuntimeSanitizers.d.ts +9 -0
- package/dist/application/runtime/WorkbenchRuntimeSanitizers.js +62 -0
- package/dist/application/shell/state.d.ts +22 -0
- package/dist/application/shell/state.js +308 -0
- package/dist/application/widgets/createWorkbenchWidgetAdapter.d.ts +9 -0
- package/dist/application/widgets/createWorkbenchWidgetAdapter.js +30 -0
- package/dist/application/workspace/canonicalizeLayout.d.ts +2 -0
- package/dist/application/workspace/canonicalizeLayout.js +91 -0
- package/dist/application/workspace/closePanel.d.ts +6 -0
- package/dist/application/workspace/closePanel.js +43 -0
- package/dist/application/workspace/collapseSplit.d.ts +7 -0
- package/dist/application/workspace/collapseSplit.js +45 -0
- package/dist/application/workspace/collapseSplitBoundary.d.ts +8 -0
- package/dist/application/workspace/collapseSplitBoundary.js +106 -0
- package/dist/application/workspace/commands.d.ts +71 -0
- package/dist/application/workspace/commands.js +216 -0
- package/dist/application/workspace/createPeripheralBands.d.ts +14 -0
- package/dist/application/workspace/createPeripheralBands.js +62 -0
- package/dist/application/workspace/createWorkspace.d.ts +7 -0
- package/dist/application/workspace/createWorkspace.js +12 -0
- package/dist/application/workspace/detachPanelToWindow.d.ts +12 -0
- package/dist/application/workspace/detachPanelToWindow.js +57 -0
- package/dist/application/workspace/dockPanel.d.ts +10 -0
- package/dist/application/workspace/dockPanel.js +399 -0
- package/dist/application/workspace/finalizeWorkspace.d.ts +4 -0
- package/dist/application/workspace/finalizeWorkspace.js +23 -0
- package/dist/application/workspace/focusPanel.d.ts +2 -0
- package/dist/application/workspace/focusPanel.js +19 -0
- package/dist/application/workspace/joinPanelArea.d.ts +13 -0
- package/dist/application/workspace/joinPanelArea.js +281 -0
- package/dist/application/workspace/layoutInteraction.d.ts +176 -0
- package/dist/application/workspace/layoutInteraction.js +852 -0
- package/dist/application/workspace/layoutTree.d.ts +34 -0
- package/dist/application/workspace/layoutTree.js +135 -0
- package/dist/application/workspace/openTool.d.ts +15 -0
- package/dist/application/workspace/openTool.js +89 -0
- package/dist/application/workspace/presetArtifacts.d.ts +60 -0
- package/dist/application/workspace/presetArtifacts.js +231 -0
- package/dist/application/workspace/presets.d.ts +5 -0
- package/dist/application/workspace/presets.js +12 -0
- package/dist/application/workspace/reattachWorkspaceWindow.d.ts +7 -0
- package/dist/application/workspace/reattachWorkspaceWindow.js +24 -0
- package/dist/application/workspace/resizeSplit.d.ts +7 -0
- package/dist/application/workspace/resizeSplit.js +12 -0
- package/dist/application/workspace/resizeSplitBoundary.d.ts +10 -0
- package/dist/application/workspace/resizeSplitBoundary.js +115 -0
- package/dist/application/workspace/runToolShellCommand.d.ts +11 -0
- package/dist/application/workspace/runToolShellCommand.js +133 -0
- package/dist/application/workspace/session.d.ts +9 -0
- package/dist/application/workspace/session.js +36 -0
- package/dist/application/workspace/setActiveStackChild.d.ts +7 -0
- package/dist/application/workspace/setActiveStackChild.js +12 -0
- package/dist/application/workspace/setDesignSystemThemeSession.d.ts +3 -0
- package/dist/application/workspace/setDesignSystemThemeSession.js +12 -0
- package/dist/application/workspace/setPanelFullscreenToggleVisibility.d.ts +7 -0
- package/dist/application/workspace/setPanelFullscreenToggleVisibility.js +7 -0
- package/dist/application/workspace/setStackHeaderVisibility.d.ts +7 -0
- package/dist/application/workspace/setStackHeaderVisibility.js +7 -0
- package/dist/application/workspace/setToolPanelTitleOverride.d.ts +9 -0
- package/dist/application/workspace/setToolPanelTitleOverride.js +33 -0
- package/dist/application/workspace/setToolShellStatus.d.ts +8 -0
- package/dist/application/workspace/setToolShellStatus.js +32 -0
- package/dist/application/workspace/setWorkspaceFullscreenPanel.d.ts +3 -0
- package/dist/application/workspace/setWorkspaceFullscreenPanel.js +26 -0
- package/dist/application/workspace/snapshots.d.ts +10 -0
- package/dist/application/workspace/snapshots.js +34 -0
- package/dist/application/workspace/splitPanel.d.ts +10 -0
- package/dist/application/workspace/splitPanel.js +21 -0
- package/dist/application/workspace/subdividePanel.d.ts +39 -0
- package/dist/application/workspace/subdividePanel.js +128 -0
- package/dist/application/workspace/swapPanelArea.d.ts +11 -0
- package/dist/application/workspace/swapPanelArea.js +163 -0
- package/dist/application/workspace/targetWindow.d.ts +4 -0
- package/dist/application/workspace/targetWindow.js +22 -0
- package/dist/application/workspace/toolCapabilities.d.ts +11 -0
- package/dist/application/workspace/toolCapabilities.js +59 -0
- package/dist/application/workspace/toolRuntime.d.ts +32 -0
- package/dist/application/workspace/toolRuntime.js +65 -0
- package/dist/application/workspace/updateToolState.d.ts +8 -0
- package/dist/application/workspace/updateToolState.js +20 -0
- package/dist/boot/applicationBoot.d.ts +1 -0
- package/dist/boot/applicationBoot.js +2 -0
- package/dist/boot/events.d.ts +43 -0
- package/dist/boot/events.js +16 -0
- package/dist/boot/executor.d.ts +13 -0
- package/dist/boot/executor.js +210 -0
- package/dist/boot/graph.d.ts +16 -0
- package/dist/boot/graph.js +126 -0
- package/dist/boot/index.d.ts +2 -0
- package/dist/boot/index.js +3 -0
- package/dist/boot/mechanism.d.ts +5 -0
- package/dist/boot/mechanism.js +6 -0
- package/dist/boot/projection.d.ts +72 -0
- package/dist/boot/projection.js +398 -0
- package/dist/boot/types.d.ts +80 -0
- package/dist/boot/types.js +46 -0
- package/dist/domain/composition/dockArrangement.d.ts +57 -0
- package/dist/domain/composition/dockArrangement.js +304 -0
- package/dist/domain/composition/docking.d.ts +68 -0
- package/dist/domain/composition/docking.js +187 -0
- package/dist/domain/design-system/themeSession.d.ts +12 -0
- package/dist/domain/design-system/themeSession.js +42 -0
- package/dist/domain/experiment/model.d.ts +149 -0
- package/dist/domain/experiment/model.js +1 -0
- package/dist/domain/i18n/languageRegistry.d.ts +57 -0
- package/dist/domain/i18n/languageRegistry.js +1 -0
- package/dist/domain/i18n/model.d.ts +31 -0
- package/dist/domain/i18n/model.js +1 -0
- package/dist/domain/icon/model.d.ts +8 -0
- package/dist/domain/icon/model.js +1 -0
- package/dist/domain/input/interactionBindings.d.ts +2 -0
- package/dist/domain/input/interactionBindings.js +2 -0
- package/dist/domain/launch/model.d.ts +58 -0
- package/dist/domain/launch/model.js +109 -0
- package/dist/domain/layout/interaction.d.ts +90 -0
- package/dist/domain/layout/interaction.js +1 -0
- package/dist/domain/layout/model.d.ts +28 -0
- package/dist/domain/layout/model.js +1 -0
- package/dist/domain/layout/selectors.d.ts +12 -0
- package/dist/domain/layout/selectors.js +84 -0
- package/dist/domain/layout/surfaceProjection.d.ts +56 -0
- package/dist/domain/layout/surfaceProjection.js +249 -0
- package/dist/domain/layout/validation.d.ts +9 -0
- package/dist/domain/layout/validation.js +71 -0
- package/dist/domain/panel/model.d.ts +9 -0
- package/dist/domain/panel/model.js +1 -0
- package/dist/domain/physics/colliderGeometry.d.ts +2 -0
- package/dist/domain/physics/colliderGeometry.js +1 -0
- package/dist/domain/physics/contracts.d.ts +2 -0
- package/dist/domain/physics/contracts.js +1 -0
- package/dist/domain/physics/kinematicBinding.d.ts +22 -0
- package/dist/domain/physics/kinematicBinding.js +1 -0
- package/dist/domain/physics/model.d.ts +4 -0
- package/dist/domain/physics/model.js +1 -0
- package/dist/domain/physics/mujoco.d.ts +5 -0
- package/dist/domain/physics/mujoco.js +1 -0
- package/dist/domain/physics/observationProfile.d.ts +2 -0
- package/dist/domain/physics/observationProfile.js +1 -0
- package/dist/domain/physics/presentationBinding.d.ts +6 -0
- package/dist/domain/physics/presentationBinding.js +1 -0
- package/dist/domain/physics/simulationProfile.d.ts +2 -0
- package/dist/domain/physics/simulationProfile.js +1 -0
- package/dist/domain/physics/visualAlignment.d.ts +17 -0
- package/dist/domain/physics/visualAlignment.js +1 -0
- package/dist/domain/presentation/readingLevel.d.ts +12 -0
- package/dist/domain/presentation/readingLevel.js +29 -0
- package/dist/domain/project/model.d.ts +55 -0
- package/dist/domain/project/model.js +1 -0
- package/dist/domain/repo-quality/model.d.ts +111 -0
- package/dist/domain/repo-quality/model.js +1 -0
- package/dist/domain/repository/model.d.ts +110 -0
- package/dist/domain/repository/model.js +1 -0
- package/dist/domain/runtime/checkpoint.d.ts +37 -0
- package/dist/domain/runtime/checkpoint.js +87 -0
- package/dist/domain/runtime/hydration.d.ts +26 -0
- package/dist/domain/runtime/hydration.js +92 -0
- package/dist/domain/runtime/initialization.d.ts +25 -0
- package/dist/domain/runtime/initialization.js +87 -0
- package/dist/domain/runtime/lifecycle.d.ts +51 -0
- package/dist/domain/runtime/lifecycle.js +118 -0
- package/dist/domain/runtime/model.d.ts +252 -0
- package/dist/domain/runtime/model.js +13 -0
- package/dist/domain/runtime/observability.d.ts +142 -0
- package/dist/domain/runtime/observability.js +1 -0
- package/dist/domain/runtime/offload.d.ts +56 -0
- package/dist/domain/runtime/offload.js +129 -0
- package/dist/domain/runtime/plan.d.ts +26 -0
- package/dist/domain/runtime/plan.js +1 -0
- package/dist/domain/runtime/qualityPolicy.d.ts +28 -0
- package/dist/domain/runtime/qualityPolicy.js +97 -0
- package/dist/domain/runtime/recovery.d.ts +61 -0
- package/dist/domain/runtime/recovery.js +129 -0
- package/dist/domain/runtime/suspension.d.ts +32 -0
- package/dist/domain/runtime/suspension.js +107 -0
- package/dist/domain/runtime/teardown.d.ts +33 -0
- package/dist/domain/runtime/teardown.js +109 -0
- package/dist/domain/shared/id.d.ts +1 -0
- package/dist/domain/shared/id.js +5 -0
- package/dist/domain/shared/json.d.ts +9 -0
- package/dist/domain/shared/json.js +24 -0
- package/dist/domain/shell/model.d.ts +40 -0
- package/dist/domain/shell/model.js +1 -0
- package/dist/domain/shell/runtime.d.ts +76 -0
- package/dist/domain/shell/runtime.js +40 -0
- package/dist/domain/surface/model.d.ts +97 -0
- package/dist/domain/surface/model.js +71 -0
- package/dist/domain/temporal/model.d.ts +95 -0
- package/dist/domain/temporal/model.js +45 -0
- package/dist/domain/tool/internalTab.d.ts +11 -0
- package/dist/domain/tool/internalTab.js +20 -0
- package/dist/domain/tool/model.d.ts +207 -0
- package/dist/domain/tool/model.js +1 -0
- package/dist/domain/tool/runtime.d.ts +122 -0
- package/dist/domain/tool/runtime.js +2 -0
- package/dist/domain/tool/shell.d.ts +38 -0
- package/dist/domain/tool/shell.js +175 -0
- package/dist/domain/widget/composition.d.ts +79 -0
- package/dist/domain/widget/composition.js +250 -0
- package/dist/domain/widget/model.d.ts +35 -0
- package/dist/domain/widget/model.js +8 -0
- package/dist/domain/widget/toolDock.d.ts +30 -0
- package/dist/domain/widget/toolDock.js +52 -0
- package/dist/domain/workbench/model.d.ts +35 -0
- package/dist/domain/workbench/model.js +1 -0
- package/dist/domain/workbench/routing.d.ts +17 -0
- package/dist/domain/workbench/routing.js +72 -0
- package/dist/domain/workspace/factories.d.ts +9 -0
- package/dist/domain/workspace/factories.js +47 -0
- package/dist/domain/workspace/model.d.ts +23 -0
- package/dist/domain/workspace/model.js +1 -0
- package/dist/domain/workspace/persistence.d.ts +5 -0
- package/dist/domain/workspace/persistence.js +1 -0
- package/dist/domain/workspace/selectors.d.ts +19 -0
- package/dist/domain/workspace/selectors.js +90 -0
- package/dist/domain/workspace/session.d.ts +9 -0
- package/dist/domain/workspace/session.js +1 -0
- package/dist/domain/workspace/validation.d.ts +10 -0
- package/dist/domain/workspace/validation.js +231 -0
- package/dist/hosting.d.ts +15 -0
- package/dist/hosting.js +12 -0
- package/dist/index.d.ts +111 -0
- package/dist/index.js +111 -0
- package/dist/infrastructure/audio/WorkbenchAudioManager.d.ts +36 -0
- package/dist/infrastructure/audio/WorkbenchAudioManager.js +100 -0
- package/dist/infrastructure/backend/HttpWorkbenchBackendClient.d.ts +30 -0
- package/dist/infrastructure/backend/HttpWorkbenchBackendClient.js +314 -0
- package/dist/infrastructure/persistence/LocalWorkspacePersistence.d.ts +8 -0
- package/dist/infrastructure/persistence/LocalWorkspacePersistence.js +29 -0
- package/dist/infrastructure/surfaces/InMemorySurfaceViewerRegistry.d.ts +58 -0
- package/dist/infrastructure/surfaces/InMemorySurfaceViewerRegistry.js +121 -0
- package/dist/infrastructure/temporal/InMemoryTemporalDialectRegistry.d.ts +8 -0
- package/dist/infrastructure/temporal/InMemoryTemporalDialectRegistry.js +38 -0
- package/dist/infrastructure/tools/InMemoryToolRegistry.d.ts +46 -0
- package/dist/infrastructure/tools/InMemoryToolRegistry.js +82 -0
- package/dist/infrastructure/widgets/InMemoryShellWidgetRegistry.d.ts +42 -0
- package/dist/infrastructure/widgets/InMemoryShellWidgetRegistry.js +66 -0
- package/dist/infrastructure/widgets/InMemoryWorkbenchWidgetRegistry.d.ts +20 -0
- package/dist/infrastructure/widgets/InMemoryWorkbenchWidgetRegistry.js +35 -0
- package/dist/infrastructure/workbenches/InMemoryWorkbenchRegistry.d.ts +7 -0
- package/dist/infrastructure/workbenches/InMemoryWorkbenchRegistry.js +28 -0
- package/dist/physics-runtime.d.ts +4 -0
- package/dist/physics-runtime.js +2 -0
- package/dist/stage/easing.d.ts +5 -0
- package/dist/stage/easing.js +15 -0
- package/dist/stage/index.d.ts +6 -0
- package/dist/stage/index.js +6 -0
- package/dist/stage/projection.d.ts +4 -0
- package/dist/stage/projection.js +74 -0
- package/dist/stage/stageRuntime.d.ts +2 -0
- package/dist/stage/stageRuntime.js +32 -0
- package/dist/stage/timeline.d.ts +3 -0
- package/dist/stage/timeline.js +69 -0
- package/dist/stage/tween.d.ts +3 -0
- package/dist/stage/tween.js +104 -0
- package/dist/stage/types.d.ts +104 -0
- package/dist/stage/types.js +30 -0
- package/dist/temporal/clock/audioClock.d.ts +1 -0
- package/dist/temporal/clock/audioClock.js +1 -0
- package/dist/temporal/clock/clockGraph.d.ts +1 -0
- package/dist/temporal/clock/clockGraph.js +1 -0
- package/dist/temporal/clock/clockTypes.d.ts +1 -0
- package/dist/temporal/clock/clockTypes.js +1 -0
- package/dist/temporal/clock/fixedStepClock.d.ts +1 -0
- package/dist/temporal/clock/fixedStepClock.js +1 -0
- package/dist/temporal/clock/musicalClock.d.ts +7 -0
- package/dist/temporal/clock/musicalClock.js +35 -0
- package/dist/temporal/clock/rootClock.d.ts +1 -0
- package/dist/temporal/clock/rootClock.js +1 -0
- package/dist/temporal/clock/videoClock.d.ts +1 -0
- package/dist/temporal/clock/videoClock.js +1 -0
- package/dist/temporal/easing/easingFunctions.d.ts +2 -0
- package/dist/temporal/easing/easingFunctions.js +19 -0
- package/dist/temporal/easing/easingRegistry.d.ts +10 -0
- package/dist/temporal/easing/easingRegistry.js +32 -0
- package/dist/temporal/easing/easingShaderSource.d.ts +2 -0
- package/dist/temporal/easing/easingShaderSource.js +16 -0
- package/dist/temporal/easing/easingTypes.d.ts +9 -0
- package/dist/temporal/easing/easingTypes.js +1 -0
- package/dist/temporal/history/runtimeHistory.d.ts +77 -0
- package/dist/temporal/history/runtimeHistory.js +5 -0
- package/dist/temporal/history/temporalHistoryCore.d.ts +1 -0
- package/dist/temporal/history/temporalHistoryCore.js +1 -0
- package/dist/temporal/index.d.ts +20 -0
- package/dist/temporal/index.js +20 -0
- package/dist/temporal/invalidation/invalidationController.d.ts +1 -0
- package/dist/temporal/invalidation/invalidationController.js +1 -0
- package/dist/temporal/scheduler/browserSchedulerHost.d.ts +3 -0
- package/dist/temporal/scheduler/browserSchedulerHost.js +19 -0
- package/dist/temporal/scheduler/frameBudget.d.ts +1 -0
- package/dist/temporal/scheduler/frameBudget.js +1 -0
- package/dist/temporal/scheduler/temporalScheduler.d.ts +4 -0
- package/dist/temporal/scheduler/temporalScheduler.js +6 -0
- package/dist/temporal/scheduler/temporalSchedulerCore.d.ts +1 -0
- package/dist/temporal/scheduler/temporalSchedulerCore.js +1 -0
- package/dist/temporal/scheduler/visibilityPolicy.d.ts +2 -0
- package/dist/temporal/scheduler/visibilityPolicy.js +1 -0
- package/dist/temporal/transport/temporalTransport.d.ts +1 -0
- package/dist/temporal/transport/temporalTransport.js +1 -0
- package/dist/temporal/transport/transportScope.d.ts +7 -0
- package/dist/temporal/transport/transportScope.js +3 -0
- package/dist/temporal/transport/transportTimeline.d.ts +22 -0
- package/dist/temporal/transport/transportTimeline.js +36 -0
- package/dist/temporal/transport/transportTypes.d.ts +1 -0
- package/dist/temporal/transport/transportTypes.js +1 -0
- package/dist/workspace-contracts.d.ts +36 -0
- package/dist/workspace-contracts.js +28 -0
- package/package.json +57 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { resolveBootExecutionOrder, validateBootGraph } from "./graph.js";
|
|
2
|
+
import { createBootEventBus } from "./events.js";
|
|
3
|
+
export function createBootExecutor(options = {}) {
|
|
4
|
+
const eventBus = options.eventBus ?? createBootEventBus();
|
|
5
|
+
const now = options.now ?? (() => Date.now());
|
|
6
|
+
const createExecutionId = options.createExecutionId ??
|
|
7
|
+
(() => `boot-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`);
|
|
8
|
+
let state = createEmptyExecutionState('boot-idle');
|
|
9
|
+
let completedSteps = [];
|
|
10
|
+
return {
|
|
11
|
+
async run(graph, ctx) {
|
|
12
|
+
const executionId = createExecutionId();
|
|
13
|
+
state = createInitialExecutionState(graph, executionId, now());
|
|
14
|
+
completedSteps = [];
|
|
15
|
+
eventBus.emit({ type: 'boot:start', executionId, state });
|
|
16
|
+
const validation = validateBootGraph(graph);
|
|
17
|
+
if (!validation.valid) {
|
|
18
|
+
state.failed = true;
|
|
19
|
+
state.endedAt = now();
|
|
20
|
+
state.errors = validation.issues.map((issue) => ({ error: issue }));
|
|
21
|
+
eventBus.emit({
|
|
22
|
+
type: 'boot:failed',
|
|
23
|
+
executionId,
|
|
24
|
+
state,
|
|
25
|
+
error: validation.issues,
|
|
26
|
+
});
|
|
27
|
+
return state;
|
|
28
|
+
}
|
|
29
|
+
const order = resolveBootExecutionOrder(graph);
|
|
30
|
+
let activePhase = null;
|
|
31
|
+
for (const step of order) {
|
|
32
|
+
if (activePhase !== step.phase) {
|
|
33
|
+
activePhase = step.phase;
|
|
34
|
+
state.phase = step.phase;
|
|
35
|
+
eventBus.emit({ type: 'phase:start', executionId, phase: step.phase });
|
|
36
|
+
}
|
|
37
|
+
const blockedReason = getBlockedReason(step, state);
|
|
38
|
+
if (blockedReason) {
|
|
39
|
+
markStepBlocked(state, step, blockedReason, now());
|
|
40
|
+
eventBus.emit({
|
|
41
|
+
type: 'step:blocked',
|
|
42
|
+
executionId,
|
|
43
|
+
stepId: step.id,
|
|
44
|
+
reason: blockedReason,
|
|
45
|
+
});
|
|
46
|
+
if ((step.criticality ?? 'critical') === 'critical') {
|
|
47
|
+
state.failed = true;
|
|
48
|
+
state.endedAt = now();
|
|
49
|
+
state.errors.push({ stepId: step.id, error: blockedReason });
|
|
50
|
+
eventBus.emit({
|
|
51
|
+
type: 'boot:failed',
|
|
52
|
+
executionId,
|
|
53
|
+
state,
|
|
54
|
+
error: blockedReason,
|
|
55
|
+
});
|
|
56
|
+
return state;
|
|
57
|
+
}
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const node = state.nodes[step.id];
|
|
61
|
+
node.attempts += 1;
|
|
62
|
+
node.state.status = 'running';
|
|
63
|
+
node.state.startedAt = now();
|
|
64
|
+
delete node.state.endedAt;
|
|
65
|
+
delete node.state.error;
|
|
66
|
+
eventBus.emit({ type: 'step:start', executionId, stepId: step.id });
|
|
67
|
+
try {
|
|
68
|
+
const result = await step.run(ctx);
|
|
69
|
+
mergeStepResult(node, result);
|
|
70
|
+
node.state.status = 'success';
|
|
71
|
+
node.state.endedAt = now();
|
|
72
|
+
completedSteps.push(step);
|
|
73
|
+
eventBus.emit({ type: 'step:success', executionId, stepId: step.id });
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
node.state.status = 'failed';
|
|
77
|
+
node.state.endedAt = now();
|
|
78
|
+
node.state.error = error;
|
|
79
|
+
state.errors.push({ stepId: step.id, error });
|
|
80
|
+
eventBus.emit({ type: 'step:failed', executionId, stepId: step.id, error });
|
|
81
|
+
if ((step.criticality ?? 'critical') === 'optional') {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
await rollbackCompletedSteps(completedSteps, ctx, state, now);
|
|
85
|
+
state.failed = true;
|
|
86
|
+
state.endedAt = now();
|
|
87
|
+
eventBus.emit({ type: 'boot:failed', executionId, state, error });
|
|
88
|
+
return state;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
state.failed = false;
|
|
92
|
+
state.endedAt = now();
|
|
93
|
+
eventBus.emit({ type: 'boot:success', executionId, state });
|
|
94
|
+
return state;
|
|
95
|
+
},
|
|
96
|
+
async teardown(ctx) {
|
|
97
|
+
await teardownCompletedSteps(completedSteps, ctx, state, now);
|
|
98
|
+
completedSteps = [];
|
|
99
|
+
return state;
|
|
100
|
+
},
|
|
101
|
+
getState() {
|
|
102
|
+
return state;
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function createEmptyExecutionState(executionId) {
|
|
107
|
+
return {
|
|
108
|
+
executionId,
|
|
109
|
+
phase: 'plan',
|
|
110
|
+
steps: {},
|
|
111
|
+
nodes: {},
|
|
112
|
+
failed: false,
|
|
113
|
+
errors: [],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function createInitialExecutionState(graph, executionId, startedAt) {
|
|
117
|
+
const steps = {};
|
|
118
|
+
const nodes = {};
|
|
119
|
+
for (const step of graph.steps) {
|
|
120
|
+
if (steps[step.id]) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const state = {
|
|
124
|
+
id: step.id,
|
|
125
|
+
label: step.label,
|
|
126
|
+
phase: step.phase,
|
|
127
|
+
status: 'pending',
|
|
128
|
+
criticality: step.criticality ?? 'critical',
|
|
129
|
+
dependencies: step.dependsOn?.map((dependency) => ({ ...dependency })) ?? [],
|
|
130
|
+
};
|
|
131
|
+
steps[step.id] = state;
|
|
132
|
+
nodes[step.id] = {
|
|
133
|
+
state,
|
|
134
|
+
attempts: 0,
|
|
135
|
+
warnings: [],
|
|
136
|
+
metadata: {},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
executionId,
|
|
141
|
+
phase: 'plan',
|
|
142
|
+
steps,
|
|
143
|
+
nodes,
|
|
144
|
+
startedAt,
|
|
145
|
+
failed: false,
|
|
146
|
+
errors: [],
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function getBlockedReason(step, state) {
|
|
150
|
+
for (const dependency of step.dependsOn ?? []) {
|
|
151
|
+
const dependencyState = state.steps[dependency.stepId];
|
|
152
|
+
if (!dependencyState) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (dependency.optional) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (dependencyState.status === 'failed') {
|
|
159
|
+
return `Dependency "${dependency.stepId}" failed.`;
|
|
160
|
+
}
|
|
161
|
+
if (dependencyState.status === 'blocked') {
|
|
162
|
+
return `Dependency "${dependency.stepId}" is blocked.`;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
function markStepBlocked(state, step, reason, endedAt) {
|
|
168
|
+
const node = state.nodes[step.id];
|
|
169
|
+
node.state.status = 'blocked';
|
|
170
|
+
node.state.startedAt = endedAt;
|
|
171
|
+
node.state.endedAt = endedAt;
|
|
172
|
+
node.state.error = reason;
|
|
173
|
+
}
|
|
174
|
+
function mergeStepResult(node, result) {
|
|
175
|
+
if (!result) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
node.warnings.push(...(result.warnings ?? []));
|
|
179
|
+
Object.assign(node.metadata, result.metadata ?? {});
|
|
180
|
+
}
|
|
181
|
+
async function rollbackCompletedSteps(completedSteps, ctx, state, now) {
|
|
182
|
+
for (const step of [...completedSteps].reverse()) {
|
|
183
|
+
if (!step.rollback) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
const result = await step.rollback(ctx);
|
|
188
|
+
mergeStepResult(state.nodes[step.id], result);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
state.errors.push({ stepId: step.id, error });
|
|
192
|
+
state.nodes[step.id].warnings.push(`Rollback failed at ${now()}.`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
async function teardownCompletedSteps(completedSteps, ctx, state, now) {
|
|
197
|
+
for (const step of [...completedSteps].reverse()) {
|
|
198
|
+
if (!step.teardown) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
const result = await step.teardown(ctx);
|
|
203
|
+
mergeStepResult(state.nodes[step.id], result);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
state.errors.push({ stepId: step.id, error });
|
|
207
|
+
state.nodes[step.id].warnings.push(`Teardown failed at ${now()}.`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BootGraph, BootPhase, BootStep } from "./types.js";
|
|
2
|
+
export type BootGraphValidationIssueType = 'duplicate-id' | 'missing-dependency' | 'cycle';
|
|
3
|
+
export interface BootGraphValidationIssue {
|
|
4
|
+
type: BootGraphValidationIssueType;
|
|
5
|
+
stepId?: string;
|
|
6
|
+
dependencyId?: string;
|
|
7
|
+
cycle?: string[];
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
export interface BootGraphValidationResult {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
issues: BootGraphValidationIssue[];
|
|
13
|
+
}
|
|
14
|
+
export declare function validateBootGraph(graph: BootGraph): BootGraphValidationResult;
|
|
15
|
+
export declare function resolveBootExecutionOrder(graph: BootGraph): BootStep[];
|
|
16
|
+
export declare function groupBootStepsByPhase(steps: readonly BootStep[]): Record<BootPhase, BootStep[]>;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
export function validateBootGraph(graph) {
|
|
2
|
+
const issues = [];
|
|
3
|
+
const seen = new Set();
|
|
4
|
+
const duplicates = new Set();
|
|
5
|
+
const stepsById = new Map();
|
|
6
|
+
for (const step of graph.steps) {
|
|
7
|
+
if (seen.has(step.id)) {
|
|
8
|
+
duplicates.add(step.id);
|
|
9
|
+
issues.push({
|
|
10
|
+
type: 'duplicate-id',
|
|
11
|
+
stepId: step.id,
|
|
12
|
+
message: `Boot step id "${step.id}" is declared more than once.`,
|
|
13
|
+
});
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
seen.add(step.id);
|
|
17
|
+
stepsById.set(step.id, step);
|
|
18
|
+
}
|
|
19
|
+
for (const step of graph.steps) {
|
|
20
|
+
for (const dependency of step.dependsOn ?? []) {
|
|
21
|
+
if (!stepsById.has(dependency.stepId)) {
|
|
22
|
+
issues.push({
|
|
23
|
+
type: 'missing-dependency',
|
|
24
|
+
stepId: step.id,
|
|
25
|
+
dependencyId: dependency.stepId,
|
|
26
|
+
message: `Boot step "${step.id}" depends on missing step "${dependency.stepId}".`,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (duplicates.size === 0) {
|
|
32
|
+
const cycle = findCycle(graph.steps, stepsById);
|
|
33
|
+
if (cycle.length > 0) {
|
|
34
|
+
issues.push({
|
|
35
|
+
type: 'cycle',
|
|
36
|
+
cycle,
|
|
37
|
+
message: `Boot graph contains a dependency cycle: ${cycle.join(' -> ')}.`,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
valid: issues.length === 0,
|
|
43
|
+
issues,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function resolveBootExecutionOrder(graph) {
|
|
47
|
+
const validation = validateBootGraph(graph);
|
|
48
|
+
if (!validation.valid) {
|
|
49
|
+
throw new Error(validation.issues.map((issue) => issue.message).join('\n'));
|
|
50
|
+
}
|
|
51
|
+
const stepsById = new Map(graph.steps.map((step) => [step.id, step]));
|
|
52
|
+
const ordered = [];
|
|
53
|
+
const permanent = new Set();
|
|
54
|
+
const temporary = new Set();
|
|
55
|
+
const visit = (step) => {
|
|
56
|
+
if (permanent.has(step.id)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (temporary.has(step.id)) {
|
|
60
|
+
throw new Error(`Boot graph contains a dependency cycle at "${step.id}".`);
|
|
61
|
+
}
|
|
62
|
+
temporary.add(step.id);
|
|
63
|
+
for (const dependency of step.dependsOn ?? []) {
|
|
64
|
+
const dependencyStep = stepsById.get(dependency.stepId);
|
|
65
|
+
if (dependencyStep) {
|
|
66
|
+
visit(dependencyStep);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
temporary.delete(step.id);
|
|
70
|
+
permanent.add(step.id);
|
|
71
|
+
ordered.push(step);
|
|
72
|
+
};
|
|
73
|
+
for (const step of graph.steps) {
|
|
74
|
+
visit(step);
|
|
75
|
+
}
|
|
76
|
+
return ordered;
|
|
77
|
+
}
|
|
78
|
+
export function groupBootStepsByPhase(steps) {
|
|
79
|
+
const grouped = {
|
|
80
|
+
plan: [],
|
|
81
|
+
initialize: [],
|
|
82
|
+
hydrate: [],
|
|
83
|
+
run: [],
|
|
84
|
+
};
|
|
85
|
+
for (const step of steps) {
|
|
86
|
+
grouped[step.phase].push(step);
|
|
87
|
+
}
|
|
88
|
+
return grouped;
|
|
89
|
+
}
|
|
90
|
+
function findCycle(steps, stepsById) {
|
|
91
|
+
const visited = new Set();
|
|
92
|
+
const stack = new Set();
|
|
93
|
+
const path = [];
|
|
94
|
+
const visit = (step) => {
|
|
95
|
+
if (stack.has(step.id)) {
|
|
96
|
+
const cycleStart = path.indexOf(step.id);
|
|
97
|
+
return [...path.slice(cycleStart), step.id];
|
|
98
|
+
}
|
|
99
|
+
if (visited.has(step.id)) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
visited.add(step.id);
|
|
103
|
+
stack.add(step.id);
|
|
104
|
+
path.push(step.id);
|
|
105
|
+
for (const dependency of step.dependsOn ?? []) {
|
|
106
|
+
const dependencyStep = stepsById.get(dependency.stepId);
|
|
107
|
+
if (!dependencyStep) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const cycle = visit(dependencyStep);
|
|
111
|
+
if (cycle.length > 0) {
|
|
112
|
+
return cycle;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
stack.delete(step.id);
|
|
116
|
+
path.pop();
|
|
117
|
+
return [];
|
|
118
|
+
};
|
|
119
|
+
for (const step of steps) {
|
|
120
|
+
const cycle = visit(step);
|
|
121
|
+
if (cycle.length > 0) {
|
|
122
|
+
return cycle;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { BootEvent } from "./events.js";
|
|
2
|
+
import { type BootDependency, type BootExecutionState, type BootMode, type BootPhase, type BootStepStatus } from "./types.js";
|
|
3
|
+
export interface BootStepProjection {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
phase: BootPhase;
|
|
7
|
+
status: BootStepStatus;
|
|
8
|
+
criticality: 'critical' | 'optional';
|
|
9
|
+
dependencies: BootDependency[];
|
|
10
|
+
attempts: number;
|
|
11
|
+
warnings: string[];
|
|
12
|
+
metadata: Record<string, unknown>;
|
|
13
|
+
startedAt?: number;
|
|
14
|
+
endedAt?: number;
|
|
15
|
+
durationMs?: number;
|
|
16
|
+
error?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface BootPhaseProjection {
|
|
19
|
+
phase: BootPhase;
|
|
20
|
+
status: BootStepStatus | 'empty';
|
|
21
|
+
steps: BootStepProjection[];
|
|
22
|
+
counts: Record<BootStepStatus, number>;
|
|
23
|
+
startedAt?: number;
|
|
24
|
+
endedAt?: number;
|
|
25
|
+
durationMs?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface BootProjection {
|
|
28
|
+
executionId: string;
|
|
29
|
+
mode: BootMode;
|
|
30
|
+
currentPhase: BootPhase;
|
|
31
|
+
failed: boolean;
|
|
32
|
+
startedAt?: number;
|
|
33
|
+
endedAt?: number;
|
|
34
|
+
phases: BootPhaseProjection[];
|
|
35
|
+
steps: BootStepProjection[];
|
|
36
|
+
lastEvent?: BootEvent;
|
|
37
|
+
events: BootEvent[];
|
|
38
|
+
}
|
|
39
|
+
export interface BootExecutionProjection extends BootProjection {
|
|
40
|
+
phase: BootPhase;
|
|
41
|
+
status: 'idle' | 'running' | 'success' | 'failed';
|
|
42
|
+
durationMs?: number;
|
|
43
|
+
errors: Array<{
|
|
44
|
+
stepId?: string;
|
|
45
|
+
error: string;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
export type BootEventTimelineScope = 'boot' | 'phase' | 'step';
|
|
49
|
+
export type BootEventTimelineStatus = 'start' | 'success' | 'failed' | 'blocked' | 'event';
|
|
50
|
+
export type BootEventTimelineKind = 'open' | 'close' | 'error' | 'event';
|
|
51
|
+
export interface BootEventTimelineRow {
|
|
52
|
+
id: string;
|
|
53
|
+
executionId: string;
|
|
54
|
+
scope: BootEventTimelineScope;
|
|
55
|
+
scopeId: string;
|
|
56
|
+
scopeLabel: string;
|
|
57
|
+
level: number;
|
|
58
|
+
name: string;
|
|
59
|
+
status: BootEventTimelineStatus;
|
|
60
|
+
kind: BootEventTimelineKind;
|
|
61
|
+
eventTypes: string[];
|
|
62
|
+
startTime?: number;
|
|
63
|
+
endTime?: number;
|
|
64
|
+
durationMs?: number;
|
|
65
|
+
startPercent: number;
|
|
66
|
+
timelinePercent: number;
|
|
67
|
+
}
|
|
68
|
+
export declare function createBootExecutionProjection(state: BootExecutionState, mode?: BootMode, lastEvent?: BootEvent, events?: readonly BootEvent[]): BootExecutionProjection;
|
|
69
|
+
export declare function createBootProjection(state: BootExecutionState, mode?: BootMode, lastEvent?: BootEvent, events?: readonly BootEvent[]): BootProjection;
|
|
70
|
+
export declare function getBootStepDurationMs(step: Pick<BootStepProjection, 'startedAt' | 'endedAt' | 'status'>, now?: () => number): number | undefined;
|
|
71
|
+
export declare const getStepDurationMs: typeof getBootStepDurationMs;
|
|
72
|
+
export declare function createBootEventTimelineRows(projection: BootProjection | null | undefined, events?: readonly BootEvent[]): BootEventTimelineRow[];
|