@nosana/node 1.0.0-rc
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/README.md +92 -0
- package/dist/.env +7 -0
- package/dist/.env.dev +5 -0
- package/dist/.env.prd +4 -0
- package/dist/NodeManager/client/index.d.ts +4 -0
- package/dist/NodeManager/client/index.js +14 -0
- package/dist/NodeManager/configs/NodeConfigs.d.ts +14 -0
- package/dist/NodeManager/configs/NodeConfigs.js +32 -0
- package/dist/NodeManager/configs/__tests__/NodeConfigs.spec.d.ts +1 -0
- package/dist/NodeManager/configs/__tests__/NodeConfigs.spec.js +161 -0
- package/dist/NodeManager/configs/configs.d.ts +21 -0
- package/dist/NodeManager/configs/configs.js +23 -0
- package/dist/NodeManager/db/__tests__/index.spec.d.ts +1 -0
- package/dist/NodeManager/db/__tests__/index.spec.js +65 -0
- package/dist/NodeManager/db/index.d.ts +50 -0
- package/dist/NodeManager/db/index.js +64 -0
- package/dist/NodeManager/errors/NodeAlreadyActiveError.d.ts +3 -0
- package/dist/NodeManager/errors/NodeAlreadyActiveError.js +6 -0
- package/dist/NodeManager/index.d.ts +24 -0
- package/dist/NodeManager/index.js +317 -0
- package/dist/NodeManager/jobs/index.d.ts +6 -0
- package/dist/NodeManager/jobs/index.js +45 -0
- package/dist/NodeManager/monitoring/LogMonitoringRegistry.d.ts +9 -0
- package/dist/NodeManager/monitoring/LogMonitoringRegistry.js +23 -0
- package/dist/NodeManager/monitoring/log/NodeLog.d.ts +56 -0
- package/dist/NodeManager/monitoring/log/NodeLog.js +1357 -0
- package/dist/NodeManager/monitoring/log/console/ConsoleLogger.d.ts +20 -0
- package/dist/NodeManager/monitoring/log/console/ConsoleLogger.js +290 -0
- package/dist/NodeManager/monitoring/ping/PingHandler.d.ts +13 -0
- package/dist/NodeManager/monitoring/ping/PingHandler.js +68 -0
- package/dist/NodeManager/monitoring/proxy/loggingProxy.d.ts +15 -0
- package/dist/NodeManager/monitoring/proxy/loggingProxy.js +145 -0
- package/dist/NodeManager/monitoring/state/NodeState.d.ts +29 -0
- package/dist/NodeManager/monitoring/state/NodeState.js +680 -0
- package/dist/NodeManager/monitoring/state/classifyState.d.ts +14 -0
- package/dist/NodeManager/monitoring/state/classifyState.js +57 -0
- package/dist/NodeManager/monitoring/streaming/LogStreamer.d.ts +14 -0
- package/dist/NodeManager/monitoring/streaming/LogStreamer.js +58 -0
- package/dist/NodeManager/monitoring/streaming/StateStreamer.d.ts +15 -0
- package/dist/NodeManager/monitoring/streaming/StateStreamer.js +59 -0
- package/dist/NodeManager/node/Node.d.ts +44 -0
- package/dist/NodeManager/node/Node.js +321 -0
- package/dist/NodeManager/node/abort/NodeAbortController.d.ts +6 -0
- package/dist/NodeManager/node/abort/NodeAbortController.js +12 -0
- package/dist/NodeManager/node/abort/abortControllerSelector.d.ts +3 -0
- package/dist/NodeManager/node/abort/abortControllerSelector.js +13 -0
- package/dist/NodeManager/node/api/ApiEventEmitter.d.ts +8 -0
- package/dist/NodeManager/node/api/ApiEventEmitter.js +13 -0
- package/dist/NodeManager/node/api/ApiHandler.d.ts +28 -0
- package/dist/NodeManager/node/api/ApiHandler.js +193 -0
- package/dist/NodeManager/node/api/eventsource/index.d.ts +6 -0
- package/dist/NodeManager/node/api/eventsource/index.js +35 -0
- package/dist/NodeManager/node/api/middlewares/index.d.ts +5 -0
- package/dist/NodeManager/node/api/middlewares/index.js +7 -0
- package/dist/NodeManager/node/api/middlewares/rest/verifyBackendSignatureMiddleware.d.ts +3 -0
- package/dist/NodeManager/node/api/middlewares/rest/verifyBackendSignatureMiddleware.js +20 -0
- package/dist/NodeManager/node/api/middlewares/rest/verifyJobOwnerSignatureMiddleware.d.ts +5 -0
- package/dist/NodeManager/node/api/middlewares/rest/verifyJobOwnerSignatureMiddleware.js +28 -0
- package/dist/NodeManager/node/api/middlewares/ws/verifyWSJobOwnerSignatureMiddleware.d.ts +6 -0
- package/dist/NodeManager/node/api/middlewares/ws/verifyWSJobOwnerSignatureMiddleware.js +30 -0
- package/dist/NodeManager/node/api/middlewares/ws/verifyWSMiddleware.d.ts +6 -0
- package/dist/NodeManager/node/api/middlewares/ws/verifyWSMiddleware.js +20 -0
- package/dist/NodeManager/node/api/middlewares/ws/verifyWSNodeOrJobOwnerSignatureMiddleware.d.ts +6 -0
- package/dist/NodeManager/node/api/middlewares/ws/verifyWSNodeOrJobOwnerSignatureMiddleware.js +33 -0
- package/dist/NodeManager/node/api/routes/get/index.d.ts +6 -0
- package/dist/NodeManager/node/api/routes/get/index.js +6 -0
- package/dist/NodeManager/node/api/routes/get/job-definition.d.ts +5 -0
- package/dist/NodeManager/node/api/routes/get/job-definition.js +16 -0
- package/dist/NodeManager/node/api/routes/get/job-info/buildInfoObject.d.ts +17 -0
- package/dist/NodeManager/node/api/routes/get/job-info/buildInfoObject.js +15 -0
- package/dist/NodeManager/node/api/routes/get/job-info/job-info.d.ts +5 -0
- package/dist/NodeManager/node/api/routes/get/job-info/job-info.js +18 -0
- package/dist/NodeManager/node/api/routes/get/job-info/pollActiveJob.d.ts +6 -0
- package/dist/NodeManager/node/api/routes/get/job-info/pollActiveJob.js +42 -0
- package/dist/NodeManager/node/api/routes/get/job-operation-info.d.ts +28 -0
- package/dist/NodeManager/node/api/routes/get/job-operation-info.js +53 -0
- package/dist/NodeManager/node/api/routes/get/job-results.d.ts +5 -0
- package/dist/NodeManager/node/api/routes/get/job-results.js +15 -0
- package/dist/NodeManager/node/api/routes/get/node-info.d.ts +3 -0
- package/dist/NodeManager/node/api/routes/get/node-info.js +23 -0
- package/dist/NodeManager/node/api/routes/get/service-url.d.ts +5 -0
- package/dist/NodeManager/node/api/routes/get/service-url.js +27 -0
- package/dist/NodeManager/node/api/routes/index.d.ts +3 -0
- package/dist/NodeManager/node/api/routes/index.js +3 -0
- package/dist/NodeManager/node/api/routes/post/index.d.ts +4 -0
- package/dist/NodeManager/node/api/routes/post/index.js +4 -0
- package/dist/NodeManager/node/api/routes/post/job-definition.d.ts +6 -0
- package/dist/NodeManager/node/api/routes/post/job-definition.js +15 -0
- package/dist/NodeManager/node/api/routes/post/job-operation-actions.d.ts +24 -0
- package/dist/NodeManager/node/api/routes/post/job-operation-actions.js +79 -0
- package/dist/NodeManager/node/api/routes/post/node-validation.d.ts +4 -0
- package/dist/NodeManager/node/api/routes/post/node-validation.js +1783 -0
- package/dist/NodeManager/node/api/routes/post/service-stop.d.ts +5 -0
- package/dist/NodeManager/node/api/routes/post/service-stop.js +13 -0
- package/dist/NodeManager/node/api/routes/wss/index.d.ts +2 -0
- package/dist/NodeManager/node/api/routes/wss/index.js +2 -0
- package/dist/NodeManager/node/api/routes/wss/log.d.ts +14 -0
- package/dist/NodeManager/node/api/routes/wss/log.js +34 -0
- package/dist/NodeManager/node/api/routes/wss/status.d.ts +8 -0
- package/dist/NodeManager/node/api/routes/wss/status.js +11 -0
- package/dist/NodeManager/node/api/types/index.d.ts +12 -0
- package/dist/NodeManager/node/api/types/index.js +1 -0
- package/dist/NodeManager/node/balance/balanceHandler.d.ts +12 -0
- package/dist/NodeManager/node/balance/balanceHandler.js +52 -0
- package/dist/NodeManager/node/expiry/expiryHandler.d.ts +24 -0
- package/dist/NodeManager/node/expiry/expiryHandler.js +99 -0
- package/dist/NodeManager/node/grid/gridHandler.d.ts +19 -0
- package/dist/NodeManager/node/grid/gridHandler.js +168 -0
- package/dist/NodeManager/node/health/healthHandler.d.ts +16 -0
- package/dist/NodeManager/node/health/healthHandler.js +69 -0
- package/dist/NodeManager/node/job/JobRegistry.d.ts +14 -0
- package/dist/NodeManager/node/job/JobRegistry.js +48 -0
- package/dist/NodeManager/node/job/defination/JobDefinitionStrategy.d.ts +13 -0
- package/dist/NodeManager/node/job/defination/JobDefinitionStrategy.js +21 -0
- package/dist/NodeManager/node/job/defination/strategy/ApiJobDefinitionStrategy.d.ts +8 -0
- package/dist/NodeManager/node/job/defination/strategy/ApiJobDefinitionStrategy.js +40 -0
- package/dist/NodeManager/node/job/defination/strategy/ApiListenJobDefinitionStrategy.d.ts +9 -0
- package/dist/NodeManager/node/job/defination/strategy/ApiListenJobDefinitionStrategy.js +16 -0
- package/dist/NodeManager/node/job/defination/strategy/IpfsJobDefinitionStrategy.d.ts +7 -0
- package/dist/NodeManager/node/job/defination/strategy/IpfsJobDefinitionStrategy.js +13 -0
- package/dist/NodeManager/node/job/jobExternalUtil.d.ts +10 -0
- package/dist/NodeManager/node/job/jobExternalUtil.js +82 -0
- package/dist/NodeManager/node/job/jobHandler.d.ts +43 -0
- package/dist/NodeManager/node/job/jobHandler.js +193 -0
- package/dist/NodeManager/node/job/result/ResultReturnStrategy.d.ts +13 -0
- package/dist/NodeManager/node/job/result/ResultReturnStrategy.js +21 -0
- package/dist/NodeManager/node/job/result/startegy/ApiListenResultReturnStrategy.d.ts +8 -0
- package/dist/NodeManager/node/job/result/startegy/ApiListenResultReturnStrategy.js +22 -0
- package/dist/NodeManager/node/job/result/startegy/ApiResultReturnStrategy.d.ts +8 -0
- package/dist/NodeManager/node/job/result/startegy/ApiResultReturnStrategy.js +42 -0
- package/dist/NodeManager/node/key/keyHandler.d.ts +16 -0
- package/dist/NodeManager/node/key/keyHandler.js +74 -0
- package/dist/NodeManager/node/market/marketHandler.d.ts +30 -0
- package/dist/NodeManager/node/market/marketHandler.js +137 -0
- package/dist/NodeManager/node/register/index.d.ts +16 -0
- package/dist/NodeManager/node/register/index.js +88 -0
- package/dist/NodeManager/node/resource/definition/index.d.ts +2 -0
- package/dist/NodeManager/node/resource/definition/index.js +2 -0
- package/dist/NodeManager/node/resource/helpers/createHFArgs.d.ts +6 -0
- package/dist/NodeManager/node/resource/helpers/createHFArgs.js +26 -0
- package/dist/NodeManager/node/resource/helpers/createOllamaArgs.d.ts +2 -0
- package/dist/NodeManager/node/resource/helpers/createOllamaArgs.js +20 -0
- package/dist/NodeManager/node/resource/helpers/createResourceName.d.ts +2 -0
- package/dist/NodeManager/node/resource/helpers/createResourceName.js +18 -0
- package/dist/NodeManager/node/resource/helpers/createS3Args.d.ts +7 -0
- package/dist/NodeManager/node/resource/helpers/createS3Args.js +32 -0
- package/dist/NodeManager/node/resource/helpers/hasDockerVolume.d.ts +2 -0
- package/dist/NodeManager/node/resource/helpers/hasDockerVolume.js +3 -0
- package/dist/NodeManager/node/resource/helpers/hoursSunceDate.d.ts +1 -0
- package/dist/NodeManager/node/resource/helpers/hoursSunceDate.js +3 -0
- package/dist/NodeManager/node/resource/helpers/repoTagsContainsImage.d.ts +1 -0
- package/dist/NodeManager/node/resource/helpers/repoTagsContainsImage.js +13 -0
- package/dist/NodeManager/node/resource/image/imageManager.d.ts +13 -0
- package/dist/NodeManager/node/resource/image/imageManager.js +66 -0
- package/dist/NodeManager/node/resource/resourceManager.d.ts +21 -0
- package/dist/NodeManager/node/resource/resourceManager.js +57 -0
- package/dist/NodeManager/node/resource/volume/volumeManager.d.ts +20 -0
- package/dist/NodeManager/node/resource/volume/volumeManager.js +228 -0
- package/dist/NodeManager/node/run/runHandler.d.ts +18 -0
- package/dist/NodeManager/node/run/runHandler.js +139 -0
- package/dist/NodeManager/node/specs/specsHandler.d.ts +17 -0
- package/dist/NodeManager/node/specs/specsHandler.js +135 -0
- package/dist/NodeManager/node/specs/type.d.ts +15 -0
- package/dist/NodeManager/node/specs/type.js +1 -0
- package/dist/NodeManager/node/stake/StakeHandler.d.ts +22 -0
- package/dist/NodeManager/node/stake/StakeHandler.js +111 -0
- package/dist/NodeManager/node/task/TaskManager.d.ts +267 -0
- package/dist/NodeManager/node/task/TaskManager.js +480 -0
- package/dist/NodeManager/node/task/TaskManagerRegistry.d.ts +49 -0
- package/dist/NodeManager/node/task/TaskManagerRegistry.js +68 -0
- package/dist/NodeManager/node/task/executions/createDependencyMap.d.ts +18 -0
- package/dist/NodeManager/node/task/executions/createDependencyMap.js +32 -0
- package/dist/NodeManager/node/task/executions/createExecutionPlan.d.ts +14 -0
- package/dist/NodeManager/node/task/executions/createExecutionPlan.js +36 -0
- package/dist/NodeManager/node/task/executions/createOperationMap.d.ts +11 -0
- package/dist/NodeManager/node/task/executions/createOperationMap.js +34 -0
- package/dist/NodeManager/node/task/executions/validateExecutionPlan.d.ts +12 -0
- package/dist/NodeManager/node/task/executions/validateExecutionPlan.js +48 -0
- package/dist/NodeManager/node/task/globalStore/finalizeEnv.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/finalizeEnv.js +30 -0
- package/dist/NodeManager/node/task/globalStore/getByPath.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/getByPath.js +12 -0
- package/dist/NodeManager/node/task/globalStore/index.d.ts +9 -0
- package/dist/NodeManager/node/task/globalStore/index.js +9 -0
- package/dist/NodeManager/node/task/globalStore/interpolate.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/interpolate.js +16 -0
- package/dist/NodeManager/node/task/globalStore/interpolateOperation.d.ts +3 -0
- package/dist/NodeManager/node/task/globalStore/interpolateOperation.js +221 -0
- package/dist/NodeManager/node/task/globalStore/resolveLiteralsInString.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/resolveLiteralsInString.js +7 -0
- package/dist/NodeManager/node/task/globalStore/setDefaults.d.ts +4 -0
- package/dist/NodeManager/node/task/globalStore/setDefaults.js +65 -0
- package/dist/NodeManager/node/task/globalStore/setHost.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/setHost.js +9 -0
- package/dist/NodeManager/node/task/globalStore/setResult.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/setResult.js +10 -0
- package/dist/NodeManager/node/task/globalStore/setResults.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/setResults.js +9 -0
- package/dist/NodeManager/node/task/globalStore/stanatizeArrays.d.ts +2 -0
- package/dist/NodeManager/node/task/globalStore/stanatizeArrays.js +14 -0
- package/dist/NodeManager/node/task/globalStore/transformCollections.d.ts +13 -0
- package/dist/NodeManager/node/task/globalStore/transformCollections.js +152 -0
- package/dist/NodeManager/node/task/helpers/createDefaultOpState.d.ts +2 -0
- package/dist/NodeManager/node/task/helpers/createDefaultOpState.js +20 -0
- package/dist/NodeManager/node/task/helpers/createInitialFlow.d.ts +8 -0
- package/dist/NodeManager/node/task/helpers/createInitialFlow.js +24 -0
- package/dist/NodeManager/node/task/loggers/logManager.d.ts +8 -0
- package/dist/NodeManager/node/task/loggers/logManager.js +54 -0
- package/dist/NodeManager/node/task/operations/getOperationsInfos.d.ts +6 -0
- package/dist/NodeManager/node/task/operations/getOperationsInfos.js +33 -0
- package/dist/NodeManager/node/task/operations/moveTaskManagerGroupOperation.d.ts +2 -0
- package/dist/NodeManager/node/task/operations/moveTaskManagerGroupOperation.js +65 -0
- package/dist/NodeManager/node/task/operations/restartTaskManagerGroupOperation.d.ts +10 -0
- package/dist/NodeManager/node/task/operations/restartTaskManagerGroupOperation.js +37 -0
- package/dist/NodeManager/node/task/operations/restartTaskManagerOperation.d.ts +14 -0
- package/dist/NodeManager/node/task/operations/restartTaskManagerOperation.js +117 -0
- package/dist/NodeManager/node/task/operations/runTaskManagerOperation.d.ts +21 -0
- package/dist/NodeManager/node/task/operations/runTaskManagerOperation.js +488 -0
- package/dist/NodeManager/node/task/operations/stopAllTaskManagerOperations.d.ts +21 -0
- package/dist/NodeManager/node/task/operations/stopAllTaskManagerOperations.js +54 -0
- package/dist/NodeManager/node/task/operations/stopTaskManagerGroupOperation.d.ts +10 -0
- package/dist/NodeManager/node/task/operations/stopTaskManagerGroupOperation.js +43 -0
- package/dist/NodeManager/node/task/operations/stopTaskManagerOperation.d.ts +14 -0
- package/dist/NodeManager/node/task/operations/stopTaskManagerOperation.js +137 -0
- package/dist/NodeManager/node/utils/convertFromBytes.d.ts +4 -0
- package/dist/NodeManager/node/utils/convertFromBytes.js +11 -0
- package/dist/NodeManager/node/utils/extractLogsAndResultsFromLogBuffer.d.ts +7 -0
- package/dist/NodeManager/node/utils/extractLogsAndResultsFromLogBuffer.js +34 -0
- package/dist/NodeManager/node/utils/extractResultsFromLogs.d.ts +18 -0
- package/dist/NodeManager/node/utils/extractResultsFromLogs.js +37 -0
- package/dist/NodeManager/node/utils/generateRandomId.d.ts +1 -0
- package/dist/NodeManager/node/utils/generateRandomId.js +3 -0
- package/dist/NodeManager/node/utils/multiProgressBarReporter.d.ts +16 -0
- package/dist/NodeManager/node/utils/multiProgressBarReporter.js +22 -0
- package/dist/NodeManager/node/utils/poll.d.ts +5 -0
- package/dist/NodeManager/node/utils/poll.js +25 -0
- package/dist/NodeManager/node/utils/progressBarReporter.d.ts +9 -0
- package/dist/NodeManager/node/utils/progressBarReporter.js +28 -0
- package/dist/NodeManager/provider/ContainerStateManager.d.ts +24 -0
- package/dist/NodeManager/provider/ContainerStateManager.js +122 -0
- package/dist/NodeManager/provider/ExposedPortHealthCheck.d.ts +29 -0
- package/dist/NodeManager/provider/ExposedPortHealthCheck.js +183 -0
- package/dist/NodeManager/provider/Provider.d.ts +70 -0
- package/dist/NodeManager/provider/Provider.js +457 -0
- package/dist/NodeManager/provider/__tests__/Provider.spec.d.ts +1 -0
- package/dist/NodeManager/provider/__tests__/Provider.spec.js +337 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/dockerExtended/index.d.ts +6 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/dockerExtended/index.js +45 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/index.d.ts +43 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/index.js +366 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/utils/createServerObject.d.ts +5 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/utils/createServerObject.js +15 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/utils/deadline.d.ts +1 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/utils/deadline.js +15 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/utils/repoTagsContainsImage.d.ts +1 -0
- package/dist/NodeManager/provider/containerOrchestration/docker/utils/repoTagsContainsImage.js +13 -0
- package/dist/NodeManager/provider/containerOrchestration/interface.d.ts +53 -0
- package/dist/NodeManager/provider/containerOrchestration/interface.js +1 -0
- package/dist/NodeManager/provider/containerOrchestration/podman/index.d.ts +11 -0
- package/dist/NodeManager/provider/containerOrchestration/podman/index.js +69 -0
- package/dist/NodeManager/provider/containerOrchestration/podman/utils/createPodmanRunOptions.d.ts +103 -0
- package/dist/NodeManager/provider/containerOrchestration/podman/utils/createPodmanRunOptions.js +66 -0
- package/dist/NodeManager/provider/containerOrchestration/selectContainerOrchestration.d.ts +2 -0
- package/dist/NodeManager/provider/containerOrchestration/selectContainerOrchestration.js +11 -0
- package/dist/NodeManager/provider/types.d.ts +18 -0
- package/dist/NodeManager/provider/types.js +1 -0
- package/dist/NodeManager/provider/utils/parseBuffer.d.ts +4 -0
- package/dist/NodeManager/provider/utils/parseBuffer.js +19 -0
- package/dist/NodeManager/repository/NodeRepository.d.ts +53 -0
- package/dist/NodeManager/repository/NodeRepository.js +153 -0
- package/dist/NodeManager/sdk/index.d.ts +9 -0
- package/dist/NodeManager/sdk/index.js +146 -0
- package/dist/NodeManager/types/index.d.ts +27 -0
- package/dist/NodeManager/types/index.js +1 -0
- package/dist/NodeManager/utils/convertFromBytes.d.ts +4 -0
- package/dist/NodeManager/utils/convertFromBytes.js +11 -0
- package/dist/NodeManager/utils/expose-util.d.ts +14 -0
- package/dist/NodeManager/utils/expose-util.js +88 -0
- package/dist/NodeManager/utils/jobDefinitionParser.d.ts +12 -0
- package/dist/NodeManager/utils/jobDefinitionParser.js +31 -0
- package/dist/NodeManager/utils/ops-util.d.ts +3 -0
- package/dist/NodeManager/utils/ops-util.js +19 -0
- package/dist/NodeManager/utils/timeoutPromiseWrapper.d.ts +1 -0
- package/dist/NodeManager/utils/timeoutPromiseWrapper.js +27 -0
- package/dist/NodeManager/utils/utils.d.ts +39 -0
- package/dist/NodeManager/utils/utils.js +107 -0
- package/dist/NodeManager/utils/wslCheck.d.ts +14 -0
- package/dist/NodeManager/utils/wslCheck.js +54 -0
- package/dist/cli/address/__tests__/command.spec.d.ts +1 -0
- package/dist/cli/address/__tests__/command.spec.js +33 -0
- package/dist/cli/address/action.d.ts +4 -0
- package/dist/cli/address/action.js +4 -0
- package/dist/cli/address/command.d.ts +2 -0
- package/dist/cli/address/command.js +9 -0
- package/dist/cli/createNosanaCli.d.ts +2 -0
- package/dist/cli/createNosanaCli.js +32 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +16 -0
- package/dist/cli/node/__tests__/index.spec.d.ts +1 -0
- package/dist/cli/node/__tests__/index.spec.js +10 -0
- package/dist/cli/node/index.d.ts +5 -0
- package/dist/cli/node/index.js +12 -0
- package/dist/cli/node/prune/action.d.ts +4 -0
- package/dist/cli/node/prune/action.js +18 -0
- package/dist/cli/node/prune/command.d.ts +2 -0
- package/dist/cli/node/prune/command.js +10 -0
- package/dist/cli/node/run/__tests__/command.spec.d.ts +1 -0
- package/dist/cli/node/run/__tests__/command.spec.js +38 -0
- package/dist/cli/node/run/action.d.ts +3 -0
- package/dist/cli/node/run/action.js +82 -0
- package/dist/cli/node/run/command.d.ts +3 -0
- package/dist/cli/node/run/command.js +17 -0
- package/dist/cli/node/run/generateDeploymentEndpointsTable.d.ts +2 -0
- package/dist/cli/node/run/generateDeploymentEndpointsTable.js +45 -0
- package/dist/cli/node/start/__tests__/command.spec.d.ts +1 -0
- package/dist/cli/node/start/__tests__/command.spec.js +39 -0
- package/dist/cli/node/start/action.d.ts +4 -0
- package/dist/cli/node/start/action.js +48 -0
- package/dist/cli/node/start/command.d.ts +3 -0
- package/dist/cli/node/start/command.js +19 -0
- package/dist/cli/sharedOptions/--api.d.ts +2 -0
- package/dist/cli/sharedOptions/--api.js +2 -0
- package/dist/cli/sharedOptions/--format.d.ts +2 -0
- package/dist/cli/sharedOptions/--format.js +4 -0
- package/dist/cli/sharedOptions/--gpu.d.ts +2 -0
- package/dist/cli/sharedOptions/--gpu.js +12 -0
- package/dist/cli/sharedOptions/--network.d.ts +2 -0
- package/dist/cli/sharedOptions/--network.js +4 -0
- package/dist/cli/sharedOptions/--port.d.ts +2 -0
- package/dist/cli/sharedOptions/--port.js +2 -0
- package/dist/cli/sharedOptions/--rpc.d.ts +2 -0
- package/dist/cli/sharedOptions/--rpc.js +2 -0
- package/dist/cli/sharedOptions/--timeout.d.ts +2 -0
- package/dist/cli/sharedOptions/--timeout.js +12 -0
- package/dist/cli/sharedOptions/--verbose.d.ts +2 -0
- package/dist/cli/sharedOptions/--verbose.js +2 -0
- package/dist/cli/sharedOptions/--wallet.d.ts +2 -0
- package/dist/cli/sharedOptions/--wallet.js +2 -0
- package/dist/cli/sharedOptions/index.d.ts +7 -0
- package/dist/cli/sharedOptions/index.js +8 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/output-formatter/OutputFormatter.d.ts +61 -0
- package/dist/output-formatter/OutputFormatter.js +58 -0
- package/dist/output-formatter/OutputFormatterFactory.d.ts +4 -0
- package/dist/output-formatter/OutputFormatterFactory.js +18 -0
- package/dist/output-formatter/__mocks__/outputEvents.mock.d.ts +42 -0
- package/dist/output-formatter/__mocks__/outputEvents.mock.js +45 -0
- package/dist/output-formatter/__mocks__/outputFormatter.mock.d.ts +0 -0
- package/dist/output-formatter/__mocks__/outputFormatter.mock.js +21 -0
- package/dist/output-formatter/__tests__/OutputFormatter.spec.d.ts +1 -0
- package/dist/output-formatter/__tests__/OutputFormatter.spec.js +34 -0
- package/dist/output-formatter/__tests__/OutputFormatterFactory.spec.d.ts +1 -0
- package/dist/output-formatter/__tests__/OutputFormatterFactory.spec.js +26 -0
- package/dist/output-formatter/__tests__/outputFormatSelector.spec.d.ts +1 -0
- package/dist/output-formatter/__tests__/outputFormatSelector.spec.js +21 -0
- package/dist/output-formatter/json/JsonOutputEventHandlers.d.ts +8 -0
- package/dist/output-formatter/json/JsonOutputEventHandlers.js +191 -0
- package/dist/output-formatter/json/JsonOutputFormatter.d.ts +47 -0
- package/dist/output-formatter/json/JsonOutputFormatter.js +12 -0
- package/dist/output-formatter/json/__tests__/JsonOutputFormatter.spec.d.ts +1 -0
- package/dist/output-formatter/json/__tests__/JsonOutputFormatter.spec.js +36 -0
- package/dist/output-formatter/outputEvents.d.ts +213 -0
- package/dist/output-formatter/outputEvents.js +63 -0
- package/dist/output-formatter/outputFormatArgumentParser.d.ts +1 -0
- package/dist/output-formatter/outputFormatArgumentParser.js +10 -0
- package/dist/output-formatter/outputFormatSelector.d.ts +15 -0
- package/dist/output-formatter/outputFormatSelector.js +23 -0
- package/dist/output-formatter/text/TextOutputEventHandlers.d.ts +7 -0
- package/dist/output-formatter/text/TextOutputEventHandlers.js +128 -0
- package/dist/output-formatter/text/TextOutputFormatter.d.ts +6 -0
- package/dist/output-formatter/text/TextOutputFormatter.js +7 -0
- package/dist/output-formatter/text/VerboseTextOutputEventHandlers.d.ts +7 -0
- package/dist/output-formatter/text/VerboseTextOutputEventHandlers.js +138 -0
- package/dist/output-formatter/text/VerboseTextOutputFormatter.d.ts +6 -0
- package/dist/output-formatter/text/VerboseTextOutputFormatter.js +7 -0
- package/dist/output-formatter/text/__tests__/TextOutputFormatter.spec.d.ts +1 -0
- package/dist/output-formatter/text/__tests__/TextOutputFormatter.spec.js +25 -0
- package/dist/static/index.d.ts +7 -0
- package/dist/static/index.js +12 -0
- package/dist/version/index.d.ts +1 -0
- package/dist/version/index.js +47 -0
- package/npm-shrinkwrap.json +9928 -0
- package/package.json +102 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts the list of operations into a structured execution plan.
|
|
3
|
+
*
|
|
4
|
+
* This function focuses only on grouping operations by execution group.
|
|
5
|
+
* Dependency resolution (dependencies + dependents) is now handled separately
|
|
6
|
+
* in `createDependencyMap()`.
|
|
7
|
+
*
|
|
8
|
+
* Each `ExecutionContext` includes:
|
|
9
|
+
* - `group`: The logical group name
|
|
10
|
+
* - `ops`: Array of operations with their `id` only
|
|
11
|
+
*/
|
|
12
|
+
export function createExecutionPlan() {
|
|
13
|
+
/**
|
|
14
|
+
* Map of groupName -> [op.id, ...]
|
|
15
|
+
* Collects which operations belong to which execution group.
|
|
16
|
+
*/
|
|
17
|
+
const groups = new Map();
|
|
18
|
+
// Build group structure
|
|
19
|
+
for (const op of this.operations) {
|
|
20
|
+
this.setHost(op.id, this.job);
|
|
21
|
+
const group = op.execution?.group ?? op.id;
|
|
22
|
+
if (!groups.has(group))
|
|
23
|
+
groups.set(group, []);
|
|
24
|
+
groups.get(group).push(op.id);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Construct final execution plan grouped by execution group.
|
|
28
|
+
* Each op only contains its ID; dependency mapping is separate.
|
|
29
|
+
*/
|
|
30
|
+
const result = [];
|
|
31
|
+
for (const [group, opIds] of groups.entries()) {
|
|
32
|
+
const ops = opIds.map((id) => ({ id }));
|
|
33
|
+
result.push({ group, ops: opIds });
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import TaskManager from '../TaskManager.js';
|
|
2
|
+
import { Operation, OperationType } from '@nosana/sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a map from operation ID to operation object.
|
|
5
|
+
*
|
|
6
|
+
* This is used for fast lookup of operations by ID during validation,
|
|
7
|
+
* dependency resolution, and execution planning.
|
|
8
|
+
*
|
|
9
|
+
* It also ensures that there are no duplicate operation IDs in the job definition.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createOperationMap(this: TaskManager): Map<string, Operation<OperationType>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a map from operation ID to operation object.
|
|
3
|
+
*
|
|
4
|
+
* This is used for fast lookup of operations by ID during validation,
|
|
5
|
+
* dependency resolution, and execution planning.
|
|
6
|
+
*
|
|
7
|
+
* It also ensures that there are no duplicate operation IDs in the job definition.
|
|
8
|
+
*/
|
|
9
|
+
export function createOperationMap() {
|
|
10
|
+
/**
|
|
11
|
+
* Initialize a map to store operations and a list to track duplicates.
|
|
12
|
+
*/
|
|
13
|
+
const map = new Map();
|
|
14
|
+
const duplicates = [];
|
|
15
|
+
/**
|
|
16
|
+
* Iterate over all operations and populate the map.
|
|
17
|
+
* If an ID is already seen, collect it as a duplicate.
|
|
18
|
+
*/
|
|
19
|
+
for (const op of this.operations) {
|
|
20
|
+
if (map.has(op.id)) {
|
|
21
|
+
duplicates.push(op.id);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
map.set(op.id, op);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* If any duplicate IDs were found, throw an error immediately.
|
|
29
|
+
*/
|
|
30
|
+
if (duplicates.length > 0) {
|
|
31
|
+
throw new Error(`Duplicate operation IDs found: ${duplicates.join(', ')}`);
|
|
32
|
+
}
|
|
33
|
+
return map;
|
|
34
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import TaskManager from '../TaskManager.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validates the structure and dependencies in the execution plan.
|
|
4
|
+
*
|
|
5
|
+
* Checks for:
|
|
6
|
+
* - Self-dependencies
|
|
7
|
+
* - Dependencies on undefined operations
|
|
8
|
+
* - Cross-group dependencies (which are currently disallowed)
|
|
9
|
+
*
|
|
10
|
+
* If any validation errors are found, the function throws with a detailed message.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateExecutionPlan(this: TaskManager): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates the structure and dependencies in the execution plan.
|
|
3
|
+
*
|
|
4
|
+
* Checks for:
|
|
5
|
+
* - Self-dependencies
|
|
6
|
+
* - Dependencies on undefined operations
|
|
7
|
+
* - Cross-group dependencies (which are currently disallowed)
|
|
8
|
+
*
|
|
9
|
+
* If any validation errors are found, the function throws with a detailed message.
|
|
10
|
+
*/
|
|
11
|
+
export function validateExecutionPlan() {
|
|
12
|
+
const errors = [];
|
|
13
|
+
for (const op of this.operations) {
|
|
14
|
+
const opId = op.id;
|
|
15
|
+
const dependsOn = op.execution?.depends_on ?? [];
|
|
16
|
+
/**
|
|
17
|
+
* Check if the operation depends on itself.
|
|
18
|
+
*/
|
|
19
|
+
if (dependsOn.includes(opId)) {
|
|
20
|
+
errors.push(`Invalid dependency: Operation '${opId}' cannot depend on itself.`);
|
|
21
|
+
}
|
|
22
|
+
for (const depId of dependsOn) {
|
|
23
|
+
const depOp = this.opMap.get(depId);
|
|
24
|
+
/**
|
|
25
|
+
* If the dependency is not found in the op map, it's invalid.
|
|
26
|
+
*/
|
|
27
|
+
if (!depOp) {
|
|
28
|
+
errors.push(`Invalid dependency: Operation '${opId}' depends on non existent op '${depId}'.`);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check for cross-group dependency violations.
|
|
33
|
+
*/
|
|
34
|
+
const opGroup = op.execution?.group;
|
|
35
|
+
const depGroup = depOp.execution?.group;
|
|
36
|
+
if (opGroup !== depGroup) {
|
|
37
|
+
errors.push(`Invalid dependency: '${opId}' in group '${opGroup}' depends on '${depId}' in group '${depGroup}'`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* If any validation issues were discovered, throw an aggregated error.
|
|
43
|
+
*/
|
|
44
|
+
if (errors.length > 0) {
|
|
45
|
+
throw new Error('Execution Plan Validation Failed:\n' +
|
|
46
|
+
errors.map((e) => `- ${e}`).join('\n'));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function finalizeEnvOnOperation(op) {
|
|
2
|
+
const argsAny = op.args;
|
|
3
|
+
const env = argsAny?.env;
|
|
4
|
+
if (!env || typeof env !== 'object' || Array.isArray(env)) {
|
|
5
|
+
return op;
|
|
6
|
+
}
|
|
7
|
+
const toEnvString = (v) => {
|
|
8
|
+
if (v == null)
|
|
9
|
+
return '';
|
|
10
|
+
const t = typeof v;
|
|
11
|
+
if (t === 'string' || t === 'number' || t === 'boolean' || t === 'bigint') {
|
|
12
|
+
return String(v);
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
return JSON.stringify(v);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return String(v);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const newEnv = Object.fromEntries(Object.entries(env).map(([k, v]) => [
|
|
22
|
+
k,
|
|
23
|
+
toEnvString(v),
|
|
24
|
+
]));
|
|
25
|
+
const nextArgs = {
|
|
26
|
+
...op.args,
|
|
27
|
+
env: newEnv,
|
|
28
|
+
};
|
|
29
|
+
return { ...op, args: nextArgs };
|
|
30
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function getByPath(opId, path) {
|
|
2
|
+
const op = this.globalOpStore[opId];
|
|
3
|
+
if (!op)
|
|
4
|
+
return undefined;
|
|
5
|
+
if (path === 'host')
|
|
6
|
+
return op.host;
|
|
7
|
+
return path.split('.').reduce((acc, key) => {
|
|
8
|
+
if (acc == null)
|
|
9
|
+
return undefined;
|
|
10
|
+
return acc[key];
|
|
11
|
+
}, op);
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { setResult } from './setResult.js';
|
|
2
|
+
export { setResults } from './setResults.js';
|
|
3
|
+
export { setHost } from './setHost.js';
|
|
4
|
+
export { setDefaults, rehydrateEndpointsForOperation } from './setDefaults.js';
|
|
5
|
+
export { getByPath } from './getByPath.js';
|
|
6
|
+
export { resolveLiteralsInString } from './resolveLiteralsInString.js';
|
|
7
|
+
export { interpolate } from './interpolate.js';
|
|
8
|
+
export { interpolateOperation } from './interpolateOperation.js';
|
|
9
|
+
export { transformCollections } from './transformCollections.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { setResult } from './setResult.js';
|
|
2
|
+
export { setResults } from './setResults.js';
|
|
3
|
+
export { setHost } from './setHost.js';
|
|
4
|
+
export { setDefaults, rehydrateEndpointsForOperation } from './setDefaults.js';
|
|
5
|
+
export { getByPath } from './getByPath.js';
|
|
6
|
+
export { resolveLiteralsInString } from './resolveLiteralsInString.js';
|
|
7
|
+
export { interpolate } from './interpolate.js';
|
|
8
|
+
export { interpolateOperation } from './interpolateOperation.js';
|
|
9
|
+
export { transformCollections } from './transformCollections.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function interpolate(value) {
|
|
2
|
+
if (typeof value === 'string') {
|
|
3
|
+
return this.resolveLiteralsInString(value);
|
|
4
|
+
}
|
|
5
|
+
if (Array.isArray(value)) {
|
|
6
|
+
return value.map((v) => this.interpolate(v));
|
|
7
|
+
}
|
|
8
|
+
if (value && typeof value === 'object') {
|
|
9
|
+
const out = {};
|
|
10
|
+
for (const [k, v] of Object.entries(value)) {
|
|
11
|
+
out[k] = this.interpolate(v);
|
|
12
|
+
}
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
export function interpolateOperation(op) {
|
|
2
|
+
// %%ops.<opId>.<path>%% and %%global.<key>%%
|
|
3
|
+
const LITERAL_RE = /%%(ops|global)\.([^.]+)\.([A-Za-z0-9._-]+)%%/g;
|
|
4
|
+
const LITERAL_RE_EXACT = /^%%(ops|global)\.([^.]+)\.([A-Za-z0-9._-]+)%%$/;
|
|
5
|
+
const GLOBAL_RE = /%%(global|globals)\.([^.]+)%%/g;
|
|
6
|
+
const GLOBAL_RE_EXACT = /^%%(global|globals)\.([^.]+)%%$/;
|
|
7
|
+
const isPlainObject = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
|
|
8
|
+
const parseJsonIfLooksLike = (v) => {
|
|
9
|
+
if (typeof v !== 'string')
|
|
10
|
+
return v;
|
|
11
|
+
const s = v.trim();
|
|
12
|
+
if (!s)
|
|
13
|
+
return v;
|
|
14
|
+
const first = s[0];
|
|
15
|
+
if (first !== '[' && first !== '{')
|
|
16
|
+
return v;
|
|
17
|
+
try {
|
|
18
|
+
return JSON.parse(s);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return v;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const valueToArrayTokens = (value) => {
|
|
25
|
+
const v = parseJsonIfLooksLike(value);
|
|
26
|
+
if (Array.isArray(v)) {
|
|
27
|
+
const out = [];
|
|
28
|
+
for (const el of v)
|
|
29
|
+
out.push(...valueToArrayTokens(el));
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
if (isPlainObject(v)) {
|
|
33
|
+
return [v];
|
|
34
|
+
}
|
|
35
|
+
if (v == null)
|
|
36
|
+
return [];
|
|
37
|
+
return [v]; // preserve primitive type
|
|
38
|
+
};
|
|
39
|
+
const valueToSpaceString = (value) => valueToArrayTokens(value)
|
|
40
|
+
.map((x) => String(x))
|
|
41
|
+
.join(' ');
|
|
42
|
+
const getByPathStrict = (opId, path) => {
|
|
43
|
+
const bucket = this.globalOpStore?.[opId];
|
|
44
|
+
if (!bucket)
|
|
45
|
+
return undefined;
|
|
46
|
+
if (path === 'host')
|
|
47
|
+
return bucket.host;
|
|
48
|
+
let cur = bucket;
|
|
49
|
+
for (const seg of path.split('.')) {
|
|
50
|
+
cur = cur?.[seg];
|
|
51
|
+
if (cur == null)
|
|
52
|
+
return undefined; // treat null/undefined as unresolved
|
|
53
|
+
}
|
|
54
|
+
return cur;
|
|
55
|
+
};
|
|
56
|
+
const getGlobalByPath = (key, path) => {
|
|
57
|
+
const value = this.globalStore[key];
|
|
58
|
+
if (!path)
|
|
59
|
+
return value;
|
|
60
|
+
let cur = value;
|
|
61
|
+
for (const seg of path.split('.')) {
|
|
62
|
+
cur = cur?.[seg];
|
|
63
|
+
if (cur == null)
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return cur;
|
|
67
|
+
};
|
|
68
|
+
const resolveRawIfExact = (input) => {
|
|
69
|
+
// Check 3-part pattern first (%%global.key.path%% or %%ops.opId.path%%)
|
|
70
|
+
let m = input.match(LITERAL_RE_EXACT);
|
|
71
|
+
if (m) {
|
|
72
|
+
const type = m[1]; // "ops" or "global"
|
|
73
|
+
const opId = m[2];
|
|
74
|
+
const path = m[3];
|
|
75
|
+
if (type === 'global') {
|
|
76
|
+
// Handle %%global.key.subpath%% format
|
|
77
|
+
let value = getGlobalByPath(opId, path);
|
|
78
|
+
if (value == null || value === '') {
|
|
79
|
+
throw new Error(`Unresolved literal: "${input}" (key="${opId}.${path}")`);
|
|
80
|
+
}
|
|
81
|
+
// Parse JSON strings in arrays but don't convert to string
|
|
82
|
+
if (Array.isArray(value)) {
|
|
83
|
+
value = value.map((item) => parseJsonIfLooksLike(item));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
value = parseJsonIfLooksLike(value);
|
|
87
|
+
}
|
|
88
|
+
return { matched: true, value };
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Handle %%ops.opId.path%% format
|
|
92
|
+
let value = getByPathStrict(opId, path);
|
|
93
|
+
if (value == null) {
|
|
94
|
+
throw new Error(`Unresolved literal: "${input}" (opId="${opId}", path="${path}")`);
|
|
95
|
+
}
|
|
96
|
+
// Parse JSON strings in arrays but don't convert to string
|
|
97
|
+
if (Array.isArray(value)) {
|
|
98
|
+
value = value.map((item) => parseJsonIfLooksLike(item));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
value = parseJsonIfLooksLike(value);
|
|
102
|
+
}
|
|
103
|
+
return { matched: true, value };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Check 2-part pattern (%%global.key%%)
|
|
107
|
+
m = input.match(GLOBAL_RE_EXACT);
|
|
108
|
+
if (m) {
|
|
109
|
+
const key = m[2];
|
|
110
|
+
const value = this.globalStore[key];
|
|
111
|
+
if (value == null || value === '') {
|
|
112
|
+
throw new Error(`Unresolved literal: "${input}" (key="${key}")`);
|
|
113
|
+
}
|
|
114
|
+
return { matched: true, value };
|
|
115
|
+
}
|
|
116
|
+
return { matched: false };
|
|
117
|
+
};
|
|
118
|
+
const resolveStringStrict = (input) => {
|
|
119
|
+
const exact = resolveRawIfExact(input);
|
|
120
|
+
if (exact.matched)
|
|
121
|
+
return valueToSpaceString(exact.value);
|
|
122
|
+
// Handle 3-part patterns first
|
|
123
|
+
let result = input.replace(LITERAL_RE, (match, type, opId, path) => {
|
|
124
|
+
if (type === 'global') {
|
|
125
|
+
const value = getGlobalByPath(opId, path);
|
|
126
|
+
if (value == null || value === '') {
|
|
127
|
+
throw new Error(`Unresolved literal: "${match}" (key="${opId}.${path}")`);
|
|
128
|
+
}
|
|
129
|
+
return valueToSpaceString(value);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const value = getByPathStrict(opId, path);
|
|
133
|
+
if (value == null) {
|
|
134
|
+
throw new Error(`Unresolved literal: "${match}" (opId="${opId}", path="${path}")`);
|
|
135
|
+
}
|
|
136
|
+
return valueToSpaceString(value);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
// Handle 2-part patterns
|
|
140
|
+
result = result.replace(GLOBAL_RE, (match, prefix, key) => {
|
|
141
|
+
const value = this.globalStore[key];
|
|
142
|
+
if (value == null || value === '') {
|
|
143
|
+
throw new Error(`Unresolved literal: "${match}" (key="${key}")`);
|
|
144
|
+
}
|
|
145
|
+
return valueToSpaceString(value);
|
|
146
|
+
});
|
|
147
|
+
return result;
|
|
148
|
+
};
|
|
149
|
+
const interpolateAnyStrict = (val) => {
|
|
150
|
+
if (typeof val === 'string') {
|
|
151
|
+
const raw = resolveRawIfExact(val);
|
|
152
|
+
if (raw.matched)
|
|
153
|
+
return raw.value; // normalized later based on origin
|
|
154
|
+
return resolveStringStrict(val);
|
|
155
|
+
}
|
|
156
|
+
if (Array.isArray(val))
|
|
157
|
+
return val.map(interpolateAnyStrict);
|
|
158
|
+
if (val && typeof val === 'object') {
|
|
159
|
+
const out = {};
|
|
160
|
+
for (const [k, v] of Object.entries(val)) {
|
|
161
|
+
out[k] = interpolateAnyStrict(v);
|
|
162
|
+
}
|
|
163
|
+
return out;
|
|
164
|
+
}
|
|
165
|
+
return val; // number | boolean | null | undefined
|
|
166
|
+
};
|
|
167
|
+
const interpolatedArgs = interpolateAnyStrict(op.args);
|
|
168
|
+
const normalizeByOrigin = (value, original) => {
|
|
169
|
+
if (typeof original === 'string') {
|
|
170
|
+
// If the resolved value is an array with a single item, return that item directly
|
|
171
|
+
if (Array.isArray(value) && value.length === 1) {
|
|
172
|
+
return value[0];
|
|
173
|
+
}
|
|
174
|
+
return valueToSpaceString(value);
|
|
175
|
+
}
|
|
176
|
+
if (Array.isArray(original)) {
|
|
177
|
+
const out = [];
|
|
178
|
+
const pushTokens = (v) => {
|
|
179
|
+
out.push(...valueToArrayTokens(v));
|
|
180
|
+
};
|
|
181
|
+
if (Array.isArray(value)) {
|
|
182
|
+
for (const el of value)
|
|
183
|
+
pushTokens(el);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
pushTokens(value);
|
|
187
|
+
}
|
|
188
|
+
return out;
|
|
189
|
+
}
|
|
190
|
+
if (value && typeof value === 'object') {
|
|
191
|
+
const out = {};
|
|
192
|
+
const origObj = original && typeof original === 'object' && !Array.isArray(original)
|
|
193
|
+
? original
|
|
194
|
+
: {};
|
|
195
|
+
for (const [k, v] of Object.entries(value)) {
|
|
196
|
+
out[k] = normalizeByOrigin(v, origObj[k]);
|
|
197
|
+
}
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
return value;
|
|
201
|
+
};
|
|
202
|
+
const normalizedArgs = normalizeByOrigin(interpolatedArgs, op.args);
|
|
203
|
+
const containsLiteral = (v) => {
|
|
204
|
+
if (typeof v === 'string') {
|
|
205
|
+
return LITERAL_RE.test(v) || GLOBAL_RE.test(v);
|
|
206
|
+
}
|
|
207
|
+
if (Array.isArray(v))
|
|
208
|
+
return v.some(containsLiteral);
|
|
209
|
+
if (v && typeof v === 'object') {
|
|
210
|
+
for (const val of Object.values(v)) {
|
|
211
|
+
if (containsLiteral(val))
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return false;
|
|
216
|
+
};
|
|
217
|
+
if (containsLiteral(normalizedArgs)) {
|
|
218
|
+
throw new Error('Unresolved literals remain in interpolated args');
|
|
219
|
+
}
|
|
220
|
+
return { ...op, args: normalizedArgs };
|
|
221
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { JobDefinition } from '@nosana/sdk';
|
|
2
|
+
import TaskManager from '../TaskManager.js';
|
|
3
|
+
export declare function setDefaults(this: TaskManager, flowId: string, project: string, jobDefinition: JobDefinition): void;
|
|
4
|
+
export declare function rehydrateEndpointsForOperation(this: TaskManager, flowId: string, project: string, jobDefinition: JobDefinition, opId: string): void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { createHash, isOperator, isSpreadMarker, } from '@nosana/sdk';
|
|
2
|
+
import { configs } from '../../../configs/configs.js';
|
|
3
|
+
import { NodeConfigsSingleton } from '../../../configs/NodeConfigs.js';
|
|
4
|
+
import { generateExposeId } from '../../../utils/expose-util.js';
|
|
5
|
+
export function setDefaults(flowId, project, jobDefinition) {
|
|
6
|
+
if (jobDefinition.global?.variables) {
|
|
7
|
+
this.globalOpStore.variables = {
|
|
8
|
+
...this.globalOpStore.variables,
|
|
9
|
+
...jobDefinition.global.variables,
|
|
10
|
+
};
|
|
11
|
+
this.globalStore.variables = {
|
|
12
|
+
...this.globalStore.variables,
|
|
13
|
+
...jobDefinition.global.variables,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
processOperationsForEndpoints.call(this, flowId, project, jobDefinition, jobDefinition.ops);
|
|
17
|
+
}
|
|
18
|
+
export function rehydrateEndpointsForOperation(flowId, project, jobDefinition, opId) {
|
|
19
|
+
const op = jobDefinition.ops.find((o) => o.id === opId);
|
|
20
|
+
if (!op)
|
|
21
|
+
return;
|
|
22
|
+
processOperationsForEndpoints.call(this, flowId, project, jobDefinition, [
|
|
23
|
+
op,
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
function processOperationsForEndpoints(flowId, project, jobDefinition, ops) {
|
|
27
|
+
const config = NodeConfigsSingleton.getInstance();
|
|
28
|
+
for (const op of ops) {
|
|
29
|
+
const index = jobDefinition.ops.findIndex((o) => o.id === op.id);
|
|
30
|
+
if (op.type === 'container/run') {
|
|
31
|
+
const { args } = op;
|
|
32
|
+
if (args.expose) {
|
|
33
|
+
const opStore = (this.globalOpStore[op.id] ??= {});
|
|
34
|
+
if (!opStore.endpoint) {
|
|
35
|
+
opStore.endpoint = {};
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(args.expose)) {
|
|
38
|
+
for (const exposedPort of args.expose) {
|
|
39
|
+
if (isSpreadMarker(exposedPort))
|
|
40
|
+
continue; // skip dynamic
|
|
41
|
+
if (typeof exposedPort === 'string' && isOperator(exposedPort))
|
|
42
|
+
continue;
|
|
43
|
+
const p = typeof exposedPort === 'object'
|
|
44
|
+
? exposedPort.port
|
|
45
|
+
: exposedPort;
|
|
46
|
+
opStore.endpoint[`${p}`] = `${generateExposeId(flowId, index, p, args.private)}.${configs().frp.serverAddr}`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if (!isSpreadMarker(args.expose) &&
|
|
51
|
+
!(typeof args.expose === 'string' && isOperator(args.expose))) {
|
|
52
|
+
opStore.endpoint[`${args.expose}`] = `${generateExposeId(flowId, index, args.expose, args.private)}.${configs().frp.serverAddr}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (jobDefinition.deployment_id) {
|
|
56
|
+
opStore.deployment_endpoint = `${generateExposeId(
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
config.options.isNodeRun
|
|
59
|
+
? jobDefinition.deployment_id
|
|
60
|
+
: createHash(`${jobDefinition.deployment_id}:${project}`, 45), op.id, 0, false)}.${configs().frp.serverAddr}`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function setHost(opId, flowId) {
|
|
2
|
+
const op = (this.globalOpStore[opId] ??= {});
|
|
3
|
+
op.host = flowId + '-' + this.getOpStateIndex(opId);
|
|
4
|
+
// Host updated; attempt endpoint rehydration for this op
|
|
5
|
+
const flow = this.repository.getFlow(this.job);
|
|
6
|
+
if (flow) {
|
|
7
|
+
this.rehydrateEndpointsForOperation(flow.id, flow.project, flow.jobDefinition, opId);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function setResult(opId, key, value) {
|
|
2
|
+
const op = (this.globalOpStore[opId] ??= {});
|
|
3
|
+
const results = (op.results ??= {});
|
|
4
|
+
results[key] = value;
|
|
5
|
+
// Now that results changed for opId, rehydrate any non-dynamic endpoints for this op
|
|
6
|
+
const flow = this.repository.getFlow(this.job);
|
|
7
|
+
if (flow) {
|
|
8
|
+
this.rehydrateEndpointsForOperation(flow.id, flow.project, flow.jobDefinition, opId);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function setResults(opId, values) {
|
|
2
|
+
const op = (this.globalOpStore[opId] ??= {});
|
|
3
|
+
op.results = { ...(op.results ?? {}), ...values };
|
|
4
|
+
// Results updated for opId; attempt endpoint rehydration for this op
|
|
5
|
+
const flow = this.repository.getFlow(this.job);
|
|
6
|
+
if (flow) {
|
|
7
|
+
this.rehydrateEndpointsForOperation(flow.id, flow.project, flow.jobDefinition, opId);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function stanatizeArrays(op) {
|
|
2
|
+
for (const [key, value] of Object.entries(op.args)) {
|
|
3
|
+
if (Array.isArray(value)) {
|
|
4
|
+
const indexOfEmptyOpArg = value.findIndex((v) => v === '__remove-if-empty__');
|
|
5
|
+
if (indexOfEmptyOpArg !== -1) {
|
|
6
|
+
value.splice(indexOfEmptyOpArg, 1);
|
|
7
|
+
if (value.length === 0) {
|
|
8
|
+
delete op.args[key];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return op;
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Operation, OperationType } from '@nosana/sdk';
|
|
2
|
+
import TaskManager from '../TaskManager.js';
|
|
3
|
+
type JSONValue = string | number | boolean | null | JSONValue[] | {
|
|
4
|
+
[k: string]: JSONValue;
|
|
5
|
+
};
|
|
6
|
+
interface MarkerSpec {
|
|
7
|
+
key: string;
|
|
8
|
+
arrayHandler?: (raw: JSONValue, chunked: boolean) => JSONValue[];
|
|
9
|
+
objectHandler?: (raw: JSONValue) => Record<string, JSONValue>;
|
|
10
|
+
}
|
|
11
|
+
export declare const DefaultCollectionMarkers: MarkerSpec[];
|
|
12
|
+
export declare function transformCollections<T extends OperationType>(this: TaskManager, op: Operation<T>, overwrite?: boolean): Operation<T>;
|
|
13
|
+
export {};
|