@shivaedev/work-fleet 0.2.0 → 0.3.0
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/CHANGELOG.md +47 -0
- package/README.md +60 -18
- package/dist/DispatchRequest.d.ts +13 -0
- package/dist/DispatchRequest.d.ts.map +1 -0
- package/dist/DispatchRequest.js +12 -0
- package/dist/DispatchRequest.js.map +1 -0
- package/dist/admit.d.ts +11 -0
- package/dist/admit.d.ts.map +1 -1
- package/dist/attention.d.ts +1 -0
- package/dist/attention.d.ts.map +1 -1
- package/dist/attention.js +4 -0
- package/dist/attention.js.map +1 -1
- package/dist/board/fleetField.d.ts +1 -0
- package/dist/board/fleetField.d.ts.map +1 -1
- package/dist/board/fleetField.js +4 -0
- package/dist/board/fleetField.js.map +1 -1
- package/dist/board/markdown.d.ts.map +1 -1
- package/dist/board/markdown.js +7 -2
- package/dist/board/markdown.js.map +1 -1
- package/dist/board/publish.d.ts +2 -0
- package/dist/board/publish.d.ts.map +1 -1
- package/dist/board/publishReport.d.ts +1 -0
- package/dist/board/publishReport.d.ts.map +1 -1
- package/dist/board/readPass.d.ts +1 -0
- package/dist/board/readPass.d.ts.map +1 -1
- package/dist/cli.js +13 -6
- package/dist/cli.js.map +1 -1
- package/dist/engine/abandonStalled.d.ts +1171 -1004
- package/dist/engine/abandonStalled.d.ts.map +1 -1
- package/dist/engine/admissionOrder.d.ts +1091 -0
- package/dist/engine/admissionOrder.d.ts.map +1 -0
- package/dist/engine/admissionOrder.js +15 -0
- package/dist/engine/admissionOrder.js.map +1 -0
- package/dist/engine/applyResolution.d.ts +20 -0
- package/dist/engine/applyResolution.d.ts.map +1 -1
- package/dist/engine/approveBrief.d.ts +31 -0
- package/dist/engine/approveBrief.d.ts.map +1 -1
- package/dist/engine/authorizeResolution.d.ts +1160 -1003
- package/dist/engine/authorizeResolution.d.ts.map +1 -1
- package/dist/engine/boardBrief.d.ts +32 -0
- package/dist/engine/boardBrief.d.ts.map +1 -1
- package/dist/engine/capacityRetry.d.ts +3488 -3007
- package/dist/engine/capacityRetry.d.ts.map +1 -1
- package/dist/engine/closeDecisions.d.ts +20 -0
- package/dist/engine/closeDecisions.d.ts.map +1 -1
- package/dist/engine/completeBoardWork.d.ts +20 -0
- package/dist/engine/completeBoardWork.d.ts.map +1 -1
- package/dist/engine/completeReport.d.ts +21 -0
- package/dist/engine/completeReport.d.ts.map +1 -1
- package/dist/engine/continueCommand.d.ts +10 -0
- package/dist/engine/continueCommand.d.ts.map +1 -1
- package/dist/engine/continueWorker.d.ts +20 -0
- package/dist/engine/continueWorker.d.ts.map +1 -1
- package/dist/engine/deliverPendingAnswers.d.ts +1085 -898
- package/dist/engine/deliverPendingAnswers.d.ts.map +1 -1
- package/dist/engine/dispatchCommand.d.ts +14 -1
- package/dist/engine/dispatchCommand.d.ts.map +1 -1
- package/dist/engine/dispatchCommand.js +25 -5
- package/dist/engine/dispatchCommand.js.map +1 -1
- package/dist/engine/ensureDecisionOwner.d.ts +20 -0
- package/dist/engine/ensureDecisionOwner.d.ts.map +1 -1
- package/dist/engine/ensurePublication.d.ts +20 -0
- package/dist/engine/ensurePublication.d.ts.map +1 -1
- package/dist/engine/failureContext.d.ts +1 -0
- package/dist/engine/failureContext.d.ts.map +1 -1
- package/dist/engine/failureContext.js.map +1 -1
- package/dist/engine/failureMessage.js +11 -1
- package/dist/engine/failureMessage.js.map +1 -1
- package/dist/engine/health.d.ts +10 -0
- package/dist/engine/health.d.ts.map +1 -1
- package/dist/engine/inspectRenewal.d.ts +21 -0
- package/dist/engine/inspectRenewal.d.ts.map +1 -1
- package/dist/engine/launchInput.d.ts +10 -0
- package/dist/engine/launchInput.d.ts.map +1 -1
- package/dist/engine/launchReceipt.d.ts +10 -0
- package/dist/engine/launchReceipt.d.ts.map +1 -1
- package/dist/engine/localOnlyCriteria.d.ts +1 -0
- package/dist/engine/localOnlyCriteria.d.ts.map +1 -1
- package/dist/engine/localOnlyCriteria.js +5 -1
- package/dist/engine/localOnlyCriteria.js.map +1 -1
- package/dist/engine/makeAdopt.d.ts +21 -0
- package/dist/engine/makeAdopt.d.ts.map +1 -1
- package/dist/engine/makeAdvance.d.ts +10 -0
- package/dist/engine/makeAdvance.d.ts.map +1 -1
- package/dist/engine/makeDeliver.d.ts +20 -0
- package/dist/engine/makeDeliver.d.ts.map +1 -1
- package/dist/engine/makeHuman.d.ts +20 -0
- package/dist/engine/makeHuman.d.ts.map +1 -1
- package/dist/engine/makeLaunch.d.ts +20 -0
- package/dist/engine/makeLaunch.d.ts.map +1 -1
- package/dist/engine/makeLaunch.js +4 -13
- package/dist/engine/makeLaunch.js.map +1 -1
- package/dist/engine/makeObserve.d.ts +20 -0
- package/dist/engine/makeObserve.d.ts.map +1 -1
- package/dist/engine/makeReview.d.ts +21 -0
- package/dist/engine/makeReview.d.ts.map +1 -1
- package/dist/engine/makeState.d.ts +1164 -1010
- package/dist/engine/makeState.d.ts.map +1 -1
- package/dist/engine/makeState.js +19 -11
- package/dist/engine/makeState.js.map +1 -1
- package/dist/engine/makeValidate.d.ts +21 -0
- package/dist/engine/makeValidate.d.ts.map +1 -1
- package/dist/engine/mergeReadiness.d.ts +1425 -1764
- package/dist/engine/mergeReadiness.d.ts.map +1 -1
- package/dist/engine/mergeReadiness.js +3 -4
- package/dist/engine/mergeReadiness.js.map +1 -1
- package/dist/engine/observeDeliveryFailure.d.ts +1170 -1003
- package/dist/engine/observeDeliveryFailure.d.ts.map +1 -1
- package/dist/engine/observeRenewal.d.ts +33 -0
- package/dist/engine/observeRenewal.d.ts.map +1 -1
- package/dist/engine/obtainReview.d.ts +11 -0
- package/dist/engine/obtainReview.d.ts.map +1 -1
- package/dist/engine/obtainReview.js +2 -1
- package/dist/engine/obtainReview.js.map +1 -1
- package/dist/engine/operationRecord.d.ts +1898 -1779
- package/dist/engine/operationRecord.d.ts.map +1 -1
- package/dist/engine/persistTerminalReceipts.d.ts +20 -0
- package/dist/engine/persistTerminalReceipts.d.ts.map +1 -1
- package/dist/engine/prepareCommand.d.ts +10 -0
- package/dist/engine/prepareCommand.d.ts.map +1 -1
- package/dist/engine/prepareCommand.js +1 -1
- package/dist/engine/prepareCommand.js.map +1 -1
- package/dist/engine/queueAnswerCommand.d.ts +10 -0
- package/dist/engine/queueAnswerCommand.d.ts.map +1 -1
- package/dist/engine/readOrContinueReview.d.ts +11 -0
- package/dist/engine/readOrContinueReview.d.ts.map +1 -1
- package/dist/engine/readOrContinueReview.js +2 -1
- package/dist/engine/readOrContinueReview.js.map +1 -1
- package/dist/engine/readResolution.d.ts +1 -0
- package/dist/engine/readResolution.d.ts.map +1 -1
- package/dist/engine/readRetry.d.ts +2344 -2010
- package/dist/engine/readRetry.d.ts.map +1 -1
- package/dist/engine/readRetry.js +20 -1
- package/dist/engine/readRetry.js.map +1 -1
- package/dist/engine/reassignCommand.d.ts +10 -0
- package/dist/engine/reassignCommand.d.ts.map +1 -1
- package/dist/engine/reconcileAttempt.d.ts +12 -1
- package/dist/engine/reconcileAttempt.d.ts.map +1 -1
- package/dist/engine/reconcileAttempt.js +2 -1
- package/dist/engine/reconcileAttempt.js.map +1 -1
- package/dist/engine/reconcileCommand.d.ts +10 -0
- package/dist/engine/reconcileCommand.d.ts.map +1 -1
- package/dist/engine/recordResponseCommand.d.ts +551 -0
- package/dist/engine/recordResponseCommand.d.ts.map +1 -0
- package/dist/engine/recordResponseCommand.js +30 -0
- package/dist/engine/recordResponseCommand.js.map +1 -0
- package/dist/engine/recoverStall.d.ts +1172 -1004
- package/dist/engine/recoverStall.d.ts.map +1 -1
- package/dist/engine/recoverStall.js +1 -1
- package/dist/engine/recoverStall.js.map +1 -1
- package/dist/engine/recoverUnobservable.d.ts +1172 -1004
- package/dist/engine/recoverUnobservable.d.ts.map +1 -1
- package/dist/engine/refreshBrief.d.ts +2344 -2009
- package/dist/engine/refreshBrief.d.ts.map +1 -1
- package/dist/engine/refreshReviewResult.d.ts +21 -0
- package/dist/engine/refreshReviewResult.d.ts.map +1 -1
- package/dist/engine/releaseClosedPreparation.d.ts +1171 -1003
- package/dist/engine/releaseClosedPreparation.d.ts.map +1 -1
- package/dist/engine/releaseExecution.d.ts +1170 -1003
- package/dist/engine/releaseExecution.d.ts.map +1 -1
- package/dist/engine/releaseFinishedWork.d.ts +10 -0
- package/dist/engine/releaseFinishedWork.d.ts.map +1 -1
- package/dist/engine/repository.d.ts +1115 -1003
- package/dist/engine/repository.d.ts.map +1 -1
- package/dist/engine/repository.js +12 -12
- package/dist/engine/repository.js.map +1 -1
- package/dist/engine/requestConflictRepair.d.ts +1170 -1003
- package/dist/engine/requestConflictRepair.d.ts.map +1 -1
- package/dist/engine/requestRework.d.ts +20 -0
- package/dist/engine/requestRework.d.ts.map +1 -1
- package/dist/engine/resolveCommand.d.ts +10 -0
- package/dist/engine/resolveCommand.d.ts.map +1 -1
- package/dist/engine/resolveExecution.d.ts +1170 -1003
- package/dist/engine/resolveExecution.d.ts.map +1 -1
- package/dist/engine/resumeAttempt.d.ts +1171 -1003
- package/dist/engine/resumeAttempt.d.ts.map +1 -1
- package/dist/engine/retireUnacknowledged.d.ts +20 -0
- package/dist/engine/retireUnacknowledged.d.ts.map +1 -1
- package/dist/engine/retryTerminal.d.ts +1160 -1003
- package/dist/engine/retryTerminal.d.ts.map +1 -1
- package/dist/engine/saveLaunch.d.ts +10598 -0
- package/dist/engine/saveLaunch.d.ts.map +1 -0
- package/dist/engine/saveLaunch.js +30 -0
- package/dist/engine/saveLaunch.js.map +1 -0
- package/dist/engine/scheduler.d.ts +21 -1
- package/dist/engine/scheduler.d.ts.map +1 -1
- package/dist/engine/scheduler.js +3 -5
- package/dist/engine/scheduler.js.map +1 -1
- package/dist/engine/sessionCleanup.d.ts +20 -0
- package/dist/engine/sessionCleanup.d.ts.map +1 -1
- package/dist/engine/settleMergedDelivery.d.ts +1170 -1003
- package/dist/engine/settleMergedDelivery.d.ts.map +1 -1
- package/dist/engine/steerBrief.d.ts +1075 -898
- package/dist/engine/steerBrief.d.ts.map +1 -1
- package/dist/engine/submissionFailure.d.ts +1150 -1003
- package/dist/engine/submissionFailure.d.ts.map +1 -1
- package/dist/engine/submitLaunch.d.ts +1160 -1003
- package/dist/engine/submitLaunch.d.ts.map +1 -1
- package/dist/engine/views.d.ts.map +1 -1
- package/dist/engine/views.js +4 -0
- package/dist/engine/views.js.map +1 -1
- package/dist/engine/workerReport.d.ts +30 -0
- package/dist/engine/workerReport.d.ts.map +1 -1
- package/dist/fleet.d.ts +2716 -983
- package/dist/fleet.d.ts.map +1 -1
- package/dist/fleet.js +4 -0
- package/dist/fleet.js.map +1 -1
- package/dist/host/actionCommands.d.ts.map +1 -1
- package/dist/host/actionCommands.js +7 -6
- package/dist/host/actionCommands.js.map +1 -1
- package/dist/host/admission.d.ts +24 -1
- package/dist/host/admission.d.ts.map +1 -1
- package/dist/host/admission.js +2 -2
- package/dist/host/admission.js.map +1 -1
- package/dist/host/answerWork.d.ts +12 -2
- package/dist/host/answerWork.d.ts.map +1 -1
- package/dist/host/answerWork.js +19 -23
- package/dist/host/answerWork.js.map +1 -1
- package/dist/host/commands.d.ts +28 -4
- package/dist/host/commands.d.ts.map +1 -1
- package/dist/host/commands.js +19 -5
- package/dist/host/commands.js.map +1 -1
- package/dist/host/config.d.ts +77 -1
- package/dist/host/config.d.ts.map +1 -1
- package/dist/host/config.js +37 -9
- package/dist/host/config.js.map +1 -1
- package/dist/host/configSettings.d.ts +486 -0
- package/dist/host/configSettings.d.ts.map +1 -0
- package/dist/host/configSettings.js +113 -0
- package/dist/host/configSettings.js.map +1 -0
- package/dist/host/daemon.d.ts +302 -607
- package/dist/host/daemon.d.ts.map +1 -1
- package/dist/host/daemon.js +2 -1
- package/dist/host/daemon.js.map +1 -1
- package/dist/host/daemonClient.d.ts +300 -605
- package/dist/host/daemonClient.d.ts.map +1 -1
- package/dist/host/daemonClient.js +28 -7
- package/dist/host/daemonClient.js.map +1 -1
- package/dist/host/daemonContract.d.ts +882 -1987
- package/dist/host/daemonContract.d.ts.map +1 -1
- package/dist/host/daemonContract.js +12 -4
- package/dist/host/daemonContract.js.map +1 -1
- package/dist/host/daemonDiagnostics.d.ts.map +1 -1
- package/dist/host/daemonDiagnostics.js +9 -3
- package/dist/host/daemonDiagnostics.js.map +1 -1
- package/dist/host/daemonHandlers.d.ts +2 -1
- package/dist/host/daemonHandlers.d.ts.map +1 -1
- package/dist/host/daemonHandlers.js +20 -7
- package/dist/host/daemonHandlers.js.map +1 -1
- package/dist/host/daemonSnapshots.d.ts.map +1 -1
- package/dist/host/daemonSnapshots.js +21 -1
- package/dist/host/daemonSnapshots.js.map +1 -1
- package/dist/host/dispatchRequests.d.ts +30 -0
- package/dist/host/dispatchRequests.d.ts.map +1 -0
- package/dist/host/dispatchRequests.js +40 -0
- package/dist/host/dispatchRequests.js.map +1 -0
- package/dist/host/follow.js +1 -1
- package/dist/host/follow.js.map +1 -1
- package/dist/host/followState.d.ts.map +1 -1
- package/dist/host/followState.js +5 -4
- package/dist/host/followState.js.map +1 -1
- package/dist/host/github.d.ts +5 -6
- package/dist/host/github.d.ts.map +1 -1
- package/dist/host/github.js +3 -4
- package/dist/host/github.js.map +1 -1
- package/dist/host/githubApi.d.ts +15 -0
- package/dist/host/githubApi.d.ts.map +1 -0
- package/dist/host/githubApi.js +117 -0
- package/dist/host/githubApi.js.map +1 -0
- package/dist/host/githubChecks.d.ts +13 -3
- package/dist/host/githubChecks.d.ts.map +1 -1
- package/dist/host/githubChecks.js +5 -5
- package/dist/host/githubChecks.js.map +1 -1
- package/dist/host/githubDelivery.d.ts +13 -1
- package/dist/host/githubDelivery.d.ts.map +1 -1
- package/dist/host/githubDelivery.js +39 -6
- package/dist/host/githubDelivery.js.map +1 -1
- package/dist/host/githubRateLimit.d.ts +23 -0
- package/dist/host/githubRateLimit.d.ts.map +1 -0
- package/dist/host/githubRateLimit.js +70 -0
- package/dist/host/githubRateLimit.js.map +1 -0
- package/dist/host/githubRequiredChecks.d.ts +1 -2
- package/dist/host/githubRequiredChecks.d.ts.map +1 -1
- package/dist/host/githubRequiredChecks.js +2 -2
- package/dist/host/githubRequiredChecks.js.map +1 -1
- package/dist/host/githubResponse.d.ts +10 -0
- package/dist/host/githubResponse.d.ts.map +1 -0
- package/dist/host/githubResponse.js +29 -0
- package/dist/host/githubResponse.js.map +1 -0
- package/dist/host/githubResult.d.ts +3 -2
- package/dist/host/githubResult.d.ts.map +1 -1
- package/dist/host/githubResult.js +9 -12
- package/dist/host/githubResult.js.map +1 -1
- package/dist/host/githubTransport.d.ts +13 -0
- package/dist/host/githubTransport.d.ts.map +1 -0
- package/dist/host/{githubRead.js → githubTransport.js} +9 -10
- package/dist/host/githubTransport.js.map +1 -0
- package/dist/host/integrations.d.ts +6 -0
- package/dist/host/integrations.d.ts.map +1 -0
- package/dist/host/integrations.js +34 -0
- package/dist/host/integrations.js.map +1 -0
- package/dist/host/liveConfig.d.ts +21 -0
- package/dist/host/liveConfig.d.ts.map +1 -0
- package/dist/host/liveConfig.js +74 -0
- package/dist/host/liveConfig.js.map +1 -0
- package/dist/host/providers.d.ts.map +1 -1
- package/dist/host/providers.js +2 -2
- package/dist/host/providers.js.map +1 -1
- package/dist/host/readWaitStates.d.ts.map +1 -1
- package/dist/host/readWaitStates.js +8 -18
- package/dist/host/readWaitStates.js.map +1 -1
- package/dist/host/reassignWork.d.ts +10 -0
- package/dist/host/reassignWork.d.ts.map +1 -1
- package/dist/host/recordDecisionResponse.d.ts +1 -0
- package/dist/host/recordDecisionResponse.d.ts.map +1 -1
- package/dist/host/releaseWork.d.ts +24 -3
- package/dist/host/releaseWork.d.ts.map +1 -1
- package/dist/host/releaseWork.js +11 -7
- package/dist/host/releaseWork.js.map +1 -1
- package/dist/host/renderStatus.d.ts +2 -2
- package/dist/host/renderStatus.d.ts.map +1 -1
- package/dist/host/renderStatus.js +8 -2
- package/dist/host/renderStatus.js.map +1 -1
- package/dist/host/reportBoard.d.ts +1 -1
- package/dist/host/reportBoard.d.ts.map +1 -1
- package/dist/host/reportBoard.js +6 -3
- package/dist/host/reportBoard.js.map +1 -1
- package/dist/host/reportPublication.d.ts +2 -1
- package/dist/host/reportPublication.d.ts.map +1 -1
- package/dist/host/reportPublication.js +5 -2
- package/dist/host/reportPublication.js.map +1 -1
- package/dist/host/runtime.d.ts +8 -6
- package/dist/host/runtime.d.ts.map +1 -1
- package/dist/host/runtime.js +37 -46
- package/dist/host/runtime.js.map +1 -1
- package/dist/host/snapshotStream.d.ts.map +1 -1
- package/dist/host/snapshotStream.js +4 -1
- package/dist/host/snapshotStream.js.map +1 -1
- package/dist/host/status.d.ts +22 -2
- package/dist/host/status.d.ts.map +1 -1
- package/dist/host/status.js +19 -5
- package/dist/host/status.js.map +1 -1
- package/dist/host/statusLayer.d.ts +3 -3
- package/dist/host/statusLayer.d.ts.map +1 -1
- package/dist/host/statusLayer.js +13 -3
- package/dist/host/statusLayer.js.map +1 -1
- package/dist/host/waitOutcome.d.ts.map +1 -1
- package/dist/host/waitOutcome.js +5 -2
- package/dist/host/waitOutcome.js.map +1 -1
- package/dist/model.d.ts +39 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +5 -0
- package/dist/model.js.map +1 -1
- package/dist/operations.d.ts +270 -0
- package/dist/operations.d.ts.map +1 -1
- package/dist/packageInfo.d.ts +1 -1
- package/dist/packageInfo.js +1 -1
- package/dist/policy.d.ts +7 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +2 -0
- package/dist/policy.js.map +1 -1
- package/dist/providers/codexCloud.d.ts +2 -0
- package/dist/providers/codexCloud.d.ts.map +1 -1
- package/dist/providers/codexCloud.js +2 -1
- package/dist/providers/codexCloud.js.map +1 -1
- package/dist/qualifyDependencies.d.ts +10 -0
- package/dist/qualifyDependencies.d.ts.map +1 -1
- package/dist/scheduling/admission.d.ts +1635 -0
- package/dist/scheduling/admission.d.ts.map +1 -0
- package/dist/scheduling/admission.js +11 -0
- package/dist/scheduling/admission.js.map +1 -0
- package/dist/scheduling/areas.d.ts +30 -0
- package/dist/scheduling/areas.d.ts.map +1 -1
- package/dist/scheduling/backPressure.d.ts +1637 -0
- package/dist/scheduling/backPressure.d.ts.map +1 -0
- package/dist/scheduling/backPressure.js +44 -0
- package/dist/scheduling/backPressure.js.map +1 -0
- package/dist/storage/FleetStoreOptions.d.ts +2 -2
- package/dist/storage/FleetStoreOptions.d.ts.map +1 -1
- package/dist/storage/addShapeColumns.d.ts +5 -0
- package/dist/storage/addShapeColumns.d.ts.map +1 -0
- package/dist/storage/addShapeColumns.js +24 -0
- package/dist/storage/addShapeColumns.js.map +1 -0
- package/dist/storage/dispatchStore.d.ts +47 -0
- package/dist/storage/dispatchStore.d.ts.map +1 -0
- package/dist/storage/dispatchStore.js +89 -0
- package/dist/storage/dispatchStore.js.map +1 -0
- package/dist/storage/errors.d.ts +2 -1
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +2 -1
- package/dist/storage/errors.js.map +1 -1
- package/dist/storage/fleetMigrations.d.ts +1 -1
- package/dist/storage/fleetMigrations.d.ts.map +1 -1
- package/dist/storage/fleetMigrations.js +24 -17
- package/dist/storage/fleetMigrations.js.map +1 -1
- package/dist/storage/listedRecords.d.ts +9 -0
- package/dist/storage/listedRecords.d.ts.map +1 -0
- package/dist/storage/listedRecords.js +40 -0
- package/dist/storage/listedRecords.js.map +1 -0
- package/dist/storage/makePostgresFleetStore.d.ts +2 -6
- package/dist/storage/makePostgresFleetStore.d.ts.map +1 -1
- package/dist/storage/makePostgresFleetStore.js +4 -10
- package/dist/storage/makePostgresFleetStore.js.map +1 -1
- package/dist/storage/model.d.ts +9 -0
- package/dist/storage/model.d.ts.map +1 -1
- package/dist/storage/model.js.map +1 -1
- package/dist/storage/shapeV14.d.ts +808 -0
- package/dist/storage/shapeV14.d.ts.map +1 -0
- package/dist/storage/shapeV14.js +18 -0
- package/dist/storage/shapeV14.js.map +1 -0
- package/package.json +6 -6
- package/src/DispatchRequest.ts +13 -0
- package/src/attention.ts +5 -0
- package/src/board/fleetField.ts +5 -0
- package/src/board/markdown.ts +7 -2
- package/src/cli.ts +24 -10
- package/src/engine/admissionOrder.ts +25 -0
- package/src/engine/dispatchCommand.ts +29 -5
- package/src/engine/failureContext.ts +1 -0
- package/src/engine/failureMessage.ts +12 -1
- package/src/engine/localOnlyCriteria.ts +6 -1
- package/src/engine/makeLaunch.ts +4 -17
- package/src/engine/makeState.ts +30 -26
- package/src/engine/mergeReadiness.ts +6 -5
- package/src/engine/obtainReview.ts +2 -1
- package/src/engine/prepareCommand.ts +1 -1
- package/src/engine/readOrContinueReview.ts +2 -1
- package/src/engine/readRetry.ts +23 -1
- package/src/engine/reconcileAttempt.ts +2 -1
- package/src/engine/recordResponseCommand.ts +38 -0
- package/src/engine/recoverStall.ts +1 -1
- package/src/engine/repository.ts +17 -16
- package/src/engine/saveLaunch.ts +45 -0
- package/src/engine/scheduler.ts +4 -6
- package/src/engine/views.ts +5 -0
- package/src/fleet.ts +4 -0
- package/src/host/actionCommands.ts +22 -7
- package/src/host/admission.ts +3 -3
- package/src/host/answerWork.ts +28 -27
- package/src/host/commands.ts +29 -8
- package/src/host/config.ts +46 -9
- package/src/host/configSettings.ts +124 -0
- package/src/host/daemon.ts +2 -1
- package/src/host/daemonClient.ts +42 -7
- package/src/host/daemonContract.ts +12 -4
- package/src/host/daemonDiagnostics.ts +11 -3
- package/src/host/daemonHandlers.ts +24 -7
- package/src/host/daemonSnapshots.ts +24 -1
- package/src/host/dispatchRequests.ts +53 -0
- package/src/host/follow.ts +1 -1
- package/src/host/followState.ts +6 -6
- package/src/host/github.ts +8 -6
- package/src/host/githubApi.ts +142 -0
- package/src/host/githubChecks.ts +6 -5
- package/src/host/githubDelivery.ts +47 -10
- package/src/host/githubRateLimit.ts +91 -0
- package/src/host/githubRequiredChecks.ts +2 -2
- package/src/host/githubResponse.ts +37 -0
- package/src/host/githubResult.ts +15 -17
- package/src/host/githubTransport.ts +31 -0
- package/src/host/integrations.ts +40 -0
- package/src/host/liveConfig.ts +134 -0
- package/src/host/providers.ts +4 -2
- package/src/host/readWaitStates.ts +8 -20
- package/src/host/releaseWork.ts +12 -9
- package/src/host/renderStatus.ts +10 -3
- package/src/host/reportBoard.ts +6 -3
- package/src/host/reportPublication.ts +6 -4
- package/src/host/runtime.ts +48 -56
- package/src/host/snapshotStream.ts +6 -1
- package/src/host/status.ts +24 -7
- package/src/host/statusLayer.ts +21 -5
- package/src/host/waitOutcome.ts +5 -2
- package/src/model.ts +6 -0
- package/src/packageInfo.ts +1 -1
- package/src/policy.ts +7 -0
- package/src/providers/codexCloud.ts +2 -1
- package/src/scheduling/admission.ts +19 -0
- package/src/scheduling/backPressure.ts +55 -0
- package/src/storage/FleetStoreOptions.ts +7 -2
- package/src/storage/addShapeColumns.ts +24 -0
- package/src/storage/dispatchStore.ts +104 -0
- package/src/storage/errors.ts +2 -1
- package/src/storage/fleetMigrations.ts +24 -17
- package/src/storage/listedRecords.ts +53 -0
- package/src/storage/makePostgresFleetStore.ts +4 -10
- package/src/storage/model.ts +7 -0
- package/src/storage/shapeV14.ts +19 -0
- package/dist/host/githubRead.d.ts +0 -5
- package/dist/host/githubRead.d.ts.map +0 -1
- package/dist/host/githubRead.js.map +0 -1
- package/dist/host/recordPayloads.d.ts +0 -4
- package/dist/host/recordPayloads.d.ts.map +0 -1
- package/dist/host/recordPayloads.js +0 -21
- package/dist/host/recordPayloads.js.map +0 -1
- package/dist/storage/migrateFleet.d.ts +0 -3
- package/dist/storage/migrateFleet.d.ts.map +0 -1
- package/dist/storage/migrateFleet.js +0 -11
- package/dist/storage/migrateFleet.js.map +0 -1
- package/src/host/githubRead.ts +0 -20
- package/src/host/recordPayloads.ts +0 -24
- package/src/storage/migrateFleet.ts +0 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backPressure.d.ts","sourceRoot":"","sources":["../../src/scheduling/backPressure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASnH;AAWD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAEjG;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iFAyB5B,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { backlog, executing } from "#model.ts";
|
|
3
|
+
import { StorageCapacity } from "#storage/errors.ts";
|
|
4
|
+
export function implementerLimit(concurrency, curve, open) {
|
|
5
|
+
if (curve === undefined || (open <= curve.ease && open < curve.max)) {
|
|
6
|
+
return concurrency;
|
|
7
|
+
}
|
|
8
|
+
const floor = Math.min(curve.floor, concurrency);
|
|
9
|
+
if (open >= curve.max) {
|
|
10
|
+
return floor;
|
|
11
|
+
}
|
|
12
|
+
return floor + Math.floor(((concurrency - floor) * (curve.max - open)) / (curve.max - curve.ease));
|
|
13
|
+
}
|
|
14
|
+
// Reviews, repairs and answers for work that already has a session hold a slot ahead of new implementers while they wait to launch.
|
|
15
|
+
function awaitsMergeWork(record) {
|
|
16
|
+
return (!executing(record)
|
|
17
|
+
&& (["reviewing", "repairing"].includes(record.stage)
|
|
18
|
+
|| (!["prepared", "completed", "released"].includes(record.stage) && (record.pendingAnswers?.length ?? 0) > 0)));
|
|
19
|
+
}
|
|
20
|
+
export function acquiresExecution(record, previous) {
|
|
21
|
+
return executing(record) && (previous === undefined || !executing(previous));
|
|
22
|
+
}
|
|
23
|
+
export const checkBackPressure = Effect.fn("Fleet.checkBackPressure")(function* (record, previous, records, limits) {
|
|
24
|
+
const implementers = limits.implementers;
|
|
25
|
+
if (implementers === undefined || !acquiresExecution(record, previous)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const others = records.filter((entry) => entry.workId !== record.workId);
|
|
29
|
+
const running = others.filter(executing).length;
|
|
30
|
+
const waiting = others.filter(awaitsMergeWork).length;
|
|
31
|
+
const open = others.filter(backlog).length;
|
|
32
|
+
const curve = implementers.openPullRequests;
|
|
33
|
+
const limit = implementerLimit(implementers.concurrency, curve, open);
|
|
34
|
+
if (running + waiting < limit) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (curve !== undefined && limit < implementers.concurrency) {
|
|
38
|
+
return yield* Effect.fail(new StorageCapacity({ kind: "open-pull-requests", limit: curve.max, occupied: open }));
|
|
39
|
+
}
|
|
40
|
+
if (running < implementers.concurrency) {
|
|
41
|
+
return yield* Effect.fail(new StorageCapacity({ kind: "merge-work", limit: implementers.concurrency, occupied: waiting }));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=backPressure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backPressure.js","sourceRoot":"","sources":["../../src/scheduling/backPressure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Effect } from "effect";
|
|
2
|
-
import type { StorageAdmission } from "#storage/errors.ts";
|
|
2
|
+
import type { StorageAdmission, StorageCapacity } from "#storage/errors.ts";
|
|
3
3
|
import type { AdmissionLimits } from "#storage/model.ts";
|
|
4
4
|
export interface FleetStoreOptions<A> {
|
|
5
|
-
readonly admission?: (record: A, previous: A | undefined, records: readonly A[], limits: AdmissionLimits) => Effect.Effect<void, StorageAdmission>;
|
|
5
|
+
readonly admission?: (record: A, previous: A | undefined, records: readonly A[], limits: AdmissionLimits) => Effect.Effect<void, StorageAdmission | StorageCapacity>;
|
|
6
6
|
readonly admissionNeedsRecords?: (record: A, previous: A | undefined, limits: AdmissionLimits) => boolean;
|
|
7
7
|
readonly backlog?: (record: A) => boolean;
|
|
8
8
|
readonly executing?: (record: A) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FleetStoreOptions.d.ts","sourceRoot":"","sources":["../../src/storage/FleetStoreOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"FleetStoreOptions.d.ts","sourceRoot":"","sources":["../../src/storage/FleetStoreOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,CACpB,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,CAAC,GAAG,SAAS,EACvB,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,MAAM,EAAE,eAAe,KACnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,CAAC,CAAC;IAC7D,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC;IAC1G,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { SqlClient } from "effect/sql";
|
|
3
|
+
import { type Shape } from "#storage/recordShape.ts";
|
|
4
|
+
export declare const addShapeColumns: (namespace: string, before: Shape, after: Shape) => Effect.Effect<void, import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
|
|
5
|
+
//# sourceMappingURL=addShapeColumns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addShapeColumns.d.ts","sourceRoot":"","sources":["../../src/storage/addShapeColumns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAe,KAAK,KAAK,EAA0B,MAAM,yBAAyB,CAAC;AAE1F,eAAO,MAAM,eAAe,sIAkB1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { SqlClient } from "effect/sql";
|
|
3
|
+
import { childTable } from "#storage/recordChildren.ts";
|
|
4
|
+
import { collections, shapeColumns, sqlTypes } from "#storage/recordShape.ts";
|
|
5
|
+
export const addShapeColumns = Effect.fn("FleetStore.addShapeColumns")(function* (namespace, before, after) {
|
|
6
|
+
const sql = yield* SqlClient.SqlClient;
|
|
7
|
+
const existing = new Map(collections(before).map((collection) => [collection.path.join("."), shapeColumns(collection.shape)]));
|
|
8
|
+
const tables = [
|
|
9
|
+
{ columns: shapeColumns(after), existing: shapeColumns(before), table: `${namespace}_records` },
|
|
10
|
+
...collections(after).map((collection) => ({
|
|
11
|
+
columns: shapeColumns(collection.shape),
|
|
12
|
+
existing: existing.get(collection.path.join(".")) ?? {},
|
|
13
|
+
table: childTable(namespace, collection.path),
|
|
14
|
+
})),
|
|
15
|
+
];
|
|
16
|
+
for (const { columns, existing: present, table } of tables) {
|
|
17
|
+
for (const [name, kind] of Object.entries(columns)) {
|
|
18
|
+
if (!(name in present)) {
|
|
19
|
+
yield* sql `alter table ${sql(table)} add column ${sql(name)} ${sql.literal(sqlTypes[kind])}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=addShapeColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addShapeColumns.js","sourceRoot":"","sources":["../../src/storage/addShapeColumns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAc,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE1F,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAiB,EAAE,MAAa,EAAE,KAAY;IAC/H,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/H,MAAM,MAAM,GAAG;QACd,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,UAAU,EAAE;QAC/F,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;YACvC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;YACvD,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC;KACH,CAAC;IACF,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,CAAC,GAAG,CAAA,eAAe,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC9F,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { SqlClient } from "effect/sql";
|
|
3
|
+
export declare const dispatchStore: (namespace: string) => Effect.Effect<{
|
|
4
|
+
accept: (workId: string, now?: {
|
|
5
|
+
readonly ignoreAreas: boolean;
|
|
6
|
+
} | undefined) => Effect.Effect<{
|
|
7
|
+
readonly acceptedAt: number;
|
|
8
|
+
readonly completedAt?: number | undefined;
|
|
9
|
+
readonly error?: string | undefined;
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly ignoreAreas?: boolean | undefined;
|
|
12
|
+
readonly now?: boolean | undefined;
|
|
13
|
+
readonly status: "completed" | "failed" | "pending";
|
|
14
|
+
readonly workId: string;
|
|
15
|
+
}, Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
|
|
16
|
+
finish: (request: {
|
|
17
|
+
readonly acceptedAt: number;
|
|
18
|
+
readonly completedAt?: number | undefined;
|
|
19
|
+
readonly error?: string | undefined;
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly ignoreAreas?: boolean | undefined;
|
|
22
|
+
readonly now?: boolean | undefined;
|
|
23
|
+
readonly status: "completed" | "failed" | "pending";
|
|
24
|
+
readonly workId: string;
|
|
25
|
+
}, error?: string | undefined) => Effect.Effect<void, Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
|
|
26
|
+
get: (workId: string) => Effect.Effect<{
|
|
27
|
+
readonly acceptedAt: number;
|
|
28
|
+
readonly completedAt?: number | undefined;
|
|
29
|
+
readonly error?: string | undefined;
|
|
30
|
+
readonly id: string;
|
|
31
|
+
readonly ignoreAreas?: boolean | undefined;
|
|
32
|
+
readonly now?: boolean | undefined;
|
|
33
|
+
readonly status: "completed" | "failed" | "pending";
|
|
34
|
+
readonly workId: string;
|
|
35
|
+
} | null, Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
|
|
36
|
+
list: (workId?: string) => Effect.Effect<{
|
|
37
|
+
readonly acceptedAt: number;
|
|
38
|
+
readonly completedAt?: number | undefined;
|
|
39
|
+
readonly error?: string | undefined;
|
|
40
|
+
readonly id: string;
|
|
41
|
+
readonly ignoreAreas?: boolean | undefined;
|
|
42
|
+
readonly now?: boolean | undefined;
|
|
43
|
+
readonly status: "completed" | "failed" | "pending";
|
|
44
|
+
readonly workId: string;
|
|
45
|
+
}[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
|
|
46
|
+
}, never, SqlClient.SqlClient>;
|
|
47
|
+
//# sourceMappingURL=dispatchStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatchStore.d.ts","sourceRoot":"","sources":["../../src/storage/dispatchStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA+BvC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;kBAcJ,MAAM;;;;;;;;;;oBALJ,MAAM;;;;;;;;;;8BA6D5B,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Clock, Effect, Schema } from "effect";
|
|
2
|
+
import { Model } from "effect/schema";
|
|
3
|
+
import { SqlClient } from "effect/sql";
|
|
4
|
+
import { makeRepository } from "@shivaedev/effect-sql/repository.ts";
|
|
5
|
+
import { fleetRecords } from "#fleetRecords.ts";
|
|
6
|
+
import { makeFleetTransaction } from "#storage/makeFleetTransaction.ts";
|
|
7
|
+
class DispatchRow extends Model.Class("FleetDispatch")({
|
|
8
|
+
"accepted_at": Schema.Number,
|
|
9
|
+
"completed_at": Schema.NullOr(Schema.Number),
|
|
10
|
+
error: Schema.NullOr(Schema.String),
|
|
11
|
+
"ignore_areas": Schema.NullOr(Schema.Boolean),
|
|
12
|
+
now: Schema.NullOr(Schema.Boolean),
|
|
13
|
+
"request_id": Schema.String,
|
|
14
|
+
status: Schema.Literals(["pending", "completed", "failed"]),
|
|
15
|
+
"work_id": Schema.String,
|
|
16
|
+
}) {
|
|
17
|
+
}
|
|
18
|
+
function receipt(row) {
|
|
19
|
+
return {
|
|
20
|
+
acceptedAt: row.accepted_at,
|
|
21
|
+
...(row.completed_at === null ? {} : { completedAt: row.completed_at }),
|
|
22
|
+
...(row.error === null ? {} : { error: row.error }),
|
|
23
|
+
id: row.request_id,
|
|
24
|
+
...(row.ignore_areas === true ? { ignoreAreas: true } : {}),
|
|
25
|
+
...(row.now === true ? { now: true } : {}),
|
|
26
|
+
status: row.status,
|
|
27
|
+
workId: row.work_id,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const dispatchStore = Effect.fn("FleetDispatch.dispatchStore")(function* (namespace) {
|
|
31
|
+
const sql = yield* SqlClient.SqlClient;
|
|
32
|
+
const commit = yield* makeFleetTransaction;
|
|
33
|
+
const repository = yield* makeRepository(DispatchRow, {
|
|
34
|
+
conflictColumns: ["work_id"],
|
|
35
|
+
idColumn: "work_id",
|
|
36
|
+
spanPrefix: "FleetDispatch",
|
|
37
|
+
tableName: `${namespace}_dispatches`,
|
|
38
|
+
});
|
|
39
|
+
function list(workId) {
|
|
40
|
+
return repository
|
|
41
|
+
.findMany({ orderBy: { direction: "asc", field: "work_id" }, where: { "work_id": workId } })
|
|
42
|
+
.pipe(Effect.map((rows) => rows.map(receipt)));
|
|
43
|
+
}
|
|
44
|
+
function get(workId) {
|
|
45
|
+
return list(workId).pipe(Effect.map((requests) => requests[0] ?? null));
|
|
46
|
+
}
|
|
47
|
+
function locked(workId, body) {
|
|
48
|
+
return commit([fleetRecords.list, fleetRecords.item(workId)], sql `select pg_advisory_xact_lock(hashtextextended(${`${namespace}:dispatch:${workId}`}, 0))`.pipe(Effect.andThen(body)));
|
|
49
|
+
}
|
|
50
|
+
const accept = Effect.fn("FleetDispatch.accept")(function* (workId, now) {
|
|
51
|
+
return yield* locked(workId, Effect.gen(function* () {
|
|
52
|
+
const current = yield* get(workId);
|
|
53
|
+
if (current?.status === "pending") {
|
|
54
|
+
return current;
|
|
55
|
+
}
|
|
56
|
+
const row = yield* repository.upsert({
|
|
57
|
+
"accepted_at": yield* Clock.currentTimeMillis,
|
|
58
|
+
"completed_at": null,
|
|
59
|
+
error: null,
|
|
60
|
+
"ignore_areas": now?.ignoreAreas ?? null,
|
|
61
|
+
now: now === undefined ? null : true,
|
|
62
|
+
"request_id": crypto.randomUUID(),
|
|
63
|
+
status: "pending",
|
|
64
|
+
"work_id": workId,
|
|
65
|
+
}, { updateColumns: ["accepted_at", "completed_at", "error", "ignore_areas", "now", "request_id", "status"] });
|
|
66
|
+
return receipt(row);
|
|
67
|
+
}));
|
|
68
|
+
});
|
|
69
|
+
const finish = Effect.fn("FleetDispatch.finish")(function* (request, error) {
|
|
70
|
+
yield* locked(request.workId, Effect.gen(function* () {
|
|
71
|
+
const current = yield* get(request.workId);
|
|
72
|
+
if (current?.id !== request.id || current.status !== "pending") {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
yield* repository.updateVoid({
|
|
76
|
+
"accepted_at": current.acceptedAt,
|
|
77
|
+
"completed_at": yield* Clock.currentTimeMillis,
|
|
78
|
+
error: error ?? null,
|
|
79
|
+
"ignore_areas": current.ignoreAreas ?? null,
|
|
80
|
+
now: current.now ?? null,
|
|
81
|
+
"request_id": request.id,
|
|
82
|
+
status: error === undefined ? "completed" : "failed",
|
|
83
|
+
"work_id": request.workId,
|
|
84
|
+
});
|
|
85
|
+
}));
|
|
86
|
+
});
|
|
87
|
+
return { accept, finish, get, list };
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=dispatchStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatchStore.js","sourceRoot":"","sources":["../../src/storage/dispatchStore.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/errors.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ declare const StorageConflict_base: Schema.Class<StorageConflict, Schema.TaggedS
|
|
|
8
8
|
export declare class StorageConflict extends StorageConflict_base {
|
|
9
9
|
}
|
|
10
10
|
declare const StorageCapacity_base: Schema.Class<StorageCapacity, Schema.TaggedStruct<"StorageCapacity", {
|
|
11
|
-
readonly kind: Schema.Literals<readonly ["execution", "backlog"]>;
|
|
11
|
+
readonly kind: Schema.Literals<readonly ["execution", "backlog", "open-pull-requests", "merge-work"]>;
|
|
12
12
|
readonly limit: Schema.Number;
|
|
13
|
+
readonly occupied: Schema.optional<Schema.Number>;
|
|
13
14
|
}>, import("effect/Cause").YieldableError>;
|
|
14
15
|
export declare class StorageCapacity extends StorageCapacity_base {
|
|
15
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/storage/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;;;;;;AACpD,qBAAa,eAAgB,SAAQ,oBAInC;CAAG
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/storage/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;;;;;;AACpD,qBAAa,eAAgB,SAAQ,oBAInC;CAAG;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAInC;CAAG;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAKhC;CAAG;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAAsF;CAAG;AAE/H,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC,WAAW,GAAG,eAAe,GAAG,eAAe,GAAG,YAAY,CAAC"}
|
package/dist/storage/errors.js
CHANGED
|
@@ -6,8 +6,9 @@ export class StorageConflict extends Schema.TaggedError()("StorageConflict", {
|
|
|
6
6
|
}) {
|
|
7
7
|
}
|
|
8
8
|
export class StorageCapacity extends Schema.TaggedError()("StorageCapacity", {
|
|
9
|
-
kind: Schema.Literals(["execution", "backlog"]),
|
|
9
|
+
kind: Schema.Literals(["execution", "backlog", "open-pull-requests", "merge-work"]),
|
|
10
10
|
limit: Schema.Number,
|
|
11
|
+
occupied: Schema.optional(Schema.Number),
|
|
11
12
|
}) {
|
|
12
13
|
}
|
|
13
14
|
export class StorageQuota extends Schema.TaggedError()("StorageQuota", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/storage/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE;IAC7F,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE;IAC7F,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/storage/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE;IAC7F,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE;IAC7F,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAC;IACnF,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACxC,CAAC;CAAG;AAEL,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,EAAgB,CAAC,cAAc,EAAE;IACpF,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;CAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { Migrator, SqlClient } from "effect/sql";
|
|
3
|
-
export declare const fleetMigrations: (namespace: string
|
|
3
|
+
export declare const fleetMigrations: (namespace: string) => Effect.Effect<readonly Migrator.ResolvedMigration[], Migrator.MigrationError, SqlClient.SqlClient>;
|
|
4
4
|
//# sourceMappingURL=fleetMigrations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleetMigrations.d.ts","sourceRoot":"","sources":["../../src/storage/fleetMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"fleetMigrations.d.ts","sourceRoot":"","sources":["../../src/storage/fleetMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYjD,eAAO,MAAM,eAAe,2HA8C1B,CAAC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { Migrator, SqlClient } from "effect/sql";
|
|
3
|
+
import { addShapeColumns } from "#storage/addShapeColumns.ts";
|
|
3
4
|
import { backfillDecisionCodes } from "#storage/backfillDecisionCodes.ts";
|
|
4
5
|
import { modelTables } from "#storage/modelTables.ts";
|
|
5
6
|
import { pruneEmptyCycles } from "#storage/pruneEmptyCycles.ts";
|
|
6
7
|
import { recordTimeColumns } from "#storage/recordTimes.ts";
|
|
8
|
+
import { shapeV12 } from "#storage/shapeV12.ts";
|
|
9
|
+
import { shapeV14 } from "#storage/shapeV14.ts";
|
|
7
10
|
import { typedTables } from "#storage/typedTables.ts";
|
|
8
11
|
const releaseReasonColumn = { kind: "string", name: "releaseReason" };
|
|
9
|
-
export const fleetMigrations = Effect.fn("FleetStore.fleetMigrations")(function* (namespace
|
|
12
|
+
export const fleetMigrations = Effect.fn("FleetStore.fleetMigrations")(function* (namespace) {
|
|
10
13
|
const sql = yield* SqlClient.SqlClient;
|
|
11
14
|
return yield* Migrator.fromRecord({
|
|
12
15
|
"1_fleet_records": Effect.gen(function* () {
|
|
@@ -31,22 +34,26 @@ export const fleetMigrations = Effect.fn("FleetStore.fleetMigrations")(function*
|
|
|
31
34
|
where payload->>'attentionOwner' is null and
|
|
32
35
|
(payload->>'stage' = 'needs-human' or payload->>'blocker' is not null or payload->'launchRetry' is not null or
|
|
33
36
|
(payload->>'stage' = 'validating' and payload->'checks'->>'pending' = 'true'))`,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
"5_model_tables": modelTables(namespace),
|
|
38
|
+
"6_decision_codes": backfillDecisionCodes(namespace),
|
|
39
|
+
"7_release_reason": sql `alter table ${sql(`${namespace}_records`)} add column if not exists ${sql(releaseReasonColumn.name)} text`,
|
|
40
|
+
"8_record_times": Effect.gen(function* () {
|
|
41
|
+
for (const name of Object.keys(recordTimeColumns)) {
|
|
42
|
+
yield* sql `alter table ${sql(`${namespace}_records`)} add column ${sql(name)} double precision`;
|
|
43
|
+
}
|
|
44
|
+
}),
|
|
45
|
+
"9_integration_retry": sql `alter table ${sql(`${namespace}_records`)} add column ${sql("integrationRetry")} text`,
|
|
46
|
+
"10_prune_empty_cycles": pruneEmptyCycles(namespace),
|
|
47
|
+
"11_pending_answers": sql `alter table ${sql(`${namespace}_records`)} add column ${sql("pendingAnswers")} text`,
|
|
48
|
+
"12_typed_tables": typedTables(namespace),
|
|
49
|
+
"13_dispatch_requests": sql `create table ${sql(`${namespace}_dispatches`)} (
|
|
50
|
+
work_id text primary key, request_id text not null, accepted_at double precision not null,
|
|
51
|
+
completed_at double precision, status text not null, error text
|
|
52
|
+
)`,
|
|
53
|
+
"14_dispatch_now": Effect.gen(function* () {
|
|
54
|
+
yield* addShapeColumns(namespace, shapeV12, shapeV14);
|
|
55
|
+
yield* sql `alter table ${sql(`${namespace}_dispatches`)} add column now boolean, add column ignore_areas boolean`;
|
|
56
|
+
}),
|
|
50
57
|
});
|
|
51
58
|
});
|
|
52
59
|
//# sourceMappingURL=fleetMigrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleetMigrations.js","sourceRoot":"","sources":["../../src/storage/fleetMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAW,CAAC;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAiB
|
|
1
|
+
{"version":3,"file":"fleetMigrations.js","sourceRoot":"","sources":["../../src/storage/fleetMigrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { SqlClient } from "effect/sql";
|
|
3
|
+
import type { recordModel, Versioned } from "#storage/model.ts";
|
|
4
|
+
import type { Shape } from "#storage/recordShape.ts";
|
|
5
|
+
export declare function listedRecords<TSchema extends Schema.Top & {
|
|
6
|
+
readonly DecodingServices: never;
|
|
7
|
+
readonly EncodingServices: never;
|
|
8
|
+
}>(sql: SqlClient.SqlClient, schema: TSchema, model: ReturnType<typeof recordModel>, shape: Shape, namespace: string): () => Effect.Effect<Versioned<TSchema["Type"]>[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, TSchema["DecodingServices"]>;
|
|
9
|
+
//# sourceMappingURL=listedRecords.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listedRecords.d.ts","sourceRoot":"","sources":["../../src/storage/listedRecords.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIrD,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,GAAG;IAAE,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAA;CAAE,EAChI,GAAG,EAAE,SAAS,CAAC,SAAS,EACxB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EACrC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,+IAwCjB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { SqlClient } from "effect/sql";
|
|
3
|
+
import { recordValues } from "#storage/recordValue.ts";
|
|
4
|
+
// Admission reads the whole list once per waiting item, so unchanged rows reuse their decoded value; xmin tells a committed row apart from a rolled-back write of the same version.
|
|
5
|
+
export function listedRecords(sql, schema, model, shape, namespace) {
|
|
6
|
+
const table = `${namespace}_records`;
|
|
7
|
+
const decodeRows = Schema.decodeUnknownEffect(Schema.Array(Schema.Struct(model.fields)));
|
|
8
|
+
const decodeRecords = Schema.decodeUnknownEffect(Schema.Array(schema));
|
|
9
|
+
const listed = new Map();
|
|
10
|
+
const refreshListed = Effect.fn("FleetStore.refreshListed")(function* (workIds) {
|
|
11
|
+
const raw = yield* sql `select *, "version"::text || ':' || xmin::text as revision from ${sql(table)} where ${sql.in("work_id", workIds)}`;
|
|
12
|
+
const found = yield* decodeRows(raw);
|
|
13
|
+
const values = yield* decodeRecords(yield* recordValues(found, shape, namespace).pipe(Effect.provideService(SqlClient.SqlClient, sql)));
|
|
14
|
+
for (const [index, row] of found.entries()) {
|
|
15
|
+
const value = values[index];
|
|
16
|
+
const revision = raw[index]?.revision;
|
|
17
|
+
if (value !== undefined && revision !== undefined) {
|
|
18
|
+
listed.set(row.work_id, { revision, stored: { value, version: row.version + 1 } });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return Effect.fn("FleetStore.readList")(function* () {
|
|
23
|
+
const heads = yield* sql `select "work_id", "version"::text || ':' || xmin::text as revision from ${sql(table)} order by "admission_order" asc`;
|
|
24
|
+
const changed = heads.filter((head) => listed.get(head.work_id)?.revision !== head.revision).map((head) => head.work_id);
|
|
25
|
+
if (changed.length > 0) {
|
|
26
|
+
yield* refreshListed(changed);
|
|
27
|
+
}
|
|
28
|
+
const present = new Set(heads.map((head) => head.work_id));
|
|
29
|
+
for (const workId of listed.keys()) {
|
|
30
|
+
if (!present.has(workId)) {
|
|
31
|
+
listed.delete(workId);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return heads.flatMap((head) => {
|
|
35
|
+
const entry = listed.get(head.work_id);
|
|
36
|
+
return entry === undefined ? [] : [entry.stored];
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=listedRecords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listedRecords.js","sourceRoot":"","sources":["../../src/storage/listedRecords.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { SqlClient } from "effect/sql";
|
|
3
3
|
import { StorageConflict } from "#storage/errors.ts";
|
|
4
4
|
import type { FleetStoreOptions } from "#storage/FleetStoreOptions.ts";
|
|
5
|
-
import { type AdmissionLimits } from "#storage/model.ts";
|
|
5
|
+
import { type AdmissionLimits, type Versioned } from "#storage/model.ts";
|
|
6
6
|
export declare const makePostgresFleetStore: <TSchema extends Schema.Top & {
|
|
7
7
|
readonly Type: {
|
|
8
8
|
readonly workId: string;
|
|
@@ -35,7 +35,6 @@ export declare const makePostgresFleetStore: <TSchema extends Schema.Top & {
|
|
|
35
35
|
version: number;
|
|
36
36
|
}, Schema.SchemaError | import("effect/sql/SqlError").SqlError | import("#storage/errors.ts").StorageAdmission | import("#storage/errors.ts").StorageCapacity | StorageConflict | import("#storage/errors.ts").StorageQuota, Exclude<Exclude<TSchema["DecodingServices"], SqlClient.SqlClient>, import("effect/reactivity/Reactivity").Reactivity> | Exclude<Exclude<TSchema["DecodingServices"], SqlClient.SqlClient>, SqlClient.SqlClient> | Exclude<Exclude<TSchema["EncodingServices"], SqlClient.SqlClient>, import("effect/reactivity/Reactivity").Reactivity>> | Effect.Effect<TSchema["Encoded"], Schema.SchemaError, TSchema["EncodingServices"]>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>;
|
|
37
37
|
hasLaunchRetry: () => Effect.Effect<boolean, Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
|
|
38
|
-
initialize: () => Effect.Effect<readonly (readonly [id: number, name: string])[], import("effect/sql/Migrator").MigrationError | import("effect/sql/SqlError").SqlError, never>;
|
|
39
38
|
insert: (record: TSchema["Type"], limits?: AdmissionLimits) => Effect.Effect<{
|
|
40
39
|
value: TSchema["Type"];
|
|
41
40
|
version: number;
|
|
@@ -50,10 +49,7 @@ export declare const makePostgresFleetStore: <TSchema extends Schema.Top & {
|
|
|
50
49
|
value: TSchema["Type"];
|
|
51
50
|
version: number;
|
|
52
51
|
}, Schema.SchemaError | import("effect/sql/SqlError").SqlError | import("#storage/errors.ts").StorageAdmission | import("#storage/errors.ts").StorageCapacity | StorageConflict | import("#storage/errors.ts").StorageQuota, Exclude<Exclude<TSchema["DecodingServices"], SqlClient.SqlClient>, import("effect/reactivity/Reactivity").Reactivity> | Exclude<Exclude<TSchema["DecodingServices"], SqlClient.SqlClient>, SqlClient.SqlClient> | Exclude<Exclude<TSchema["EncodingServices"], SqlClient.SqlClient>, import("effect/reactivity/Reactivity").Reactivity>> | Effect.Effect<TSchema["Encoded"], Schema.SchemaError, TSchema["EncodingServices"]>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>;
|
|
53
|
-
list: () => Effect.Effect<
|
|
54
|
-
value: TSchema["Type"];
|
|
55
|
-
version: number;
|
|
56
|
-
}[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, Exclude<TSchema["DecodingServices"], SqlClient.SqlClient>>;
|
|
52
|
+
list: () => Effect.Effect<Versioned<TSchema["Type"]>[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, Exclude<TSchema["DecodingServices"], SqlClient.SqlClient>>;
|
|
57
53
|
load: (workId: string) => Effect.Effect<{
|
|
58
54
|
value: TSchema["Type"];
|
|
59
55
|
version: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makePostgresFleetStore.d.ts","sourceRoot":"","sources":["../../src/storage/makePostgresFleetStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"makePostgresFleetStore.d.ts","sourceRoot":"","sources":["../../src/storage/makePostgresFleetStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,OAAO,EAAE,KAAK,eAAe,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAStF,eAAO,MAAM,sBAAsB,GAClC,OAAO,SAAS,MAAM,CAAC,GAAG,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC;CACjC;;;;;;;;;;;4BA6FwB,MAAM,mBAAmB,MAAM,UAAU,OAAO,CAAC,MAAM,CAAC,WAAW,eAAe;;;;;;;;;;;;;;;qBAIzF,OAAO,CAAC,MAAM,CAAC,WAAW,eAAe;;;;;;;;;;;;;;;mBApErC,MAAM;;;;oCAuEK,MAAM;;;;8BAEtC,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Effect,
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
2
|
import { SqlClient } from "effect/sql";
|
|
3
3
|
import { makeRepository, OptimisticConcurrencyError } from "@shivaedev/effect-sql/repository.ts";
|
|
4
4
|
import { fleetRecords } from "#fleetRecords.ts";
|
|
5
5
|
import { checkRecordAdmission } from "#storage/admission.ts";
|
|
6
6
|
import { admissionReads } from "#storage/admissionReads.ts";
|
|
7
7
|
import { StorageConflict } from "#storage/errors.ts";
|
|
8
|
+
import { listedRecords } from "#storage/listedRecords.ts";
|
|
8
9
|
import { makeFleetTransaction } from "#storage/makeFleetTransaction.ts";
|
|
9
10
|
import { makeForeignReservations } from "#storage/makeForeignReservations.ts";
|
|
10
|
-
import { migrateFleet } from "#storage/migrateFleet.ts";
|
|
11
11
|
import { recordModel } from "#storage/model.ts";
|
|
12
12
|
import { nextAdmissionOrder } from "#storage/nextAdmissionOrder.ts";
|
|
13
13
|
import { operationEntries } from "#storage/operationEntries.ts";
|
|
@@ -15,7 +15,7 @@ import { readRecords } from "#storage/readRecords.ts";
|
|
|
15
15
|
import { inputColumns, makeRecordChildren } from "#storage/recordChildren.ts";
|
|
16
16
|
import { recordShape } from "#storage/recordShape.ts";
|
|
17
17
|
import { withRecordTimes } from "#storage/recordTimes.ts";
|
|
18
|
-
import { recordValue
|
|
18
|
+
import { recordValue } from "#storage/recordValue.ts";
|
|
19
19
|
export const makePostgresFleetStore = Effect.fn("FleetStore.makePostgresFleetStore")(function* (schema, options) {
|
|
20
20
|
const sql = yield* SqlClient.SqlClient;
|
|
21
21
|
const namespace = options.namespace ?? "work_fleet";
|
|
@@ -30,7 +30,6 @@ export const makePostgresFleetStore = Effect.fn("FleetStore.makePostgresFleetSto
|
|
|
30
30
|
const decodeObject = Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown));
|
|
31
31
|
const decodeInsert = Schema.decodeUnknownEffect(model.insert);
|
|
32
32
|
const decodeRecord = Schema.decodeUnknownEffect(schema);
|
|
33
|
-
const decodeRecords = Schema.decodeUnknownEffect(Schema.Array(schema));
|
|
34
33
|
function decode(row) {
|
|
35
34
|
return recordValue(row, shape, namespace).pipe(Effect.flatMap(decodeRecord), Effect.provideService(SqlClient.SqlClient, sql), Effect.map((value) => ({ value, version: row.version + 1 })));
|
|
36
35
|
}
|
|
@@ -44,11 +43,7 @@ export const makePostgresFleetStore = Effect.fn("FleetStore.makePostgresFleetSto
|
|
|
44
43
|
function load(workId) {
|
|
45
44
|
return loadEntry(workId).pipe(Effect.map((entry) => entry?.stored));
|
|
46
45
|
}
|
|
47
|
-
const readList =
|
|
48
|
-
const found = yield* rows.findMany({ orderBy: { direction: "asc", field: "admission_order" } });
|
|
49
|
-
const values = yield* decodeRecords(yield* recordValues(found, shape, namespace).pipe(Effect.provideService(SqlClient.SqlClient, sql)));
|
|
50
|
-
return EffectArray.zipWith(values, found, (value, row) => ({ value, version: row.version + 1 }));
|
|
51
|
-
});
|
|
46
|
+
const readList = listedRecords(sql, schema, model, shape, namespace);
|
|
52
47
|
function list() {
|
|
53
48
|
return readRecords(namespace, readList()).pipe(Effect.provideService(SqlClient.SqlClient, sql));
|
|
54
49
|
}
|
|
@@ -91,7 +86,6 @@ export const makePostgresFleetStore = Effect.fn("FleetStore.makePostgresFleetSto
|
|
|
91
86
|
compareAndSet: (workId, expectedVersion, record, limits) => write(workId, expectedVersion, record, limits),
|
|
92
87
|
...foreign,
|
|
93
88
|
hasLaunchRetry: () => rows.findMany({ select: ["launchRetry"] }).pipe(Effect.map((entries) => entries.some((row) => row.launchRetry !== null))),
|
|
94
|
-
initialize: () => commit([fleetRecords.list], migrateFleet(namespace)),
|
|
95
89
|
insert: (record, limits) => write(record.workId, null, record, limits),
|
|
96
90
|
list,
|
|
97
91
|
load,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makePostgresFleetStore.js","sourceRoot":"","sources":["../../src/storage/makePostgresFleetStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"makePostgresFleetStore.js","sourceRoot":"","sources":["../../src/storage/makePostgresFleetStore.ts"],"names":[],"mappings":"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"}
|