@herdctl/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +4 -0
- package/.turbo/turbo-test.log +219 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-final.json +51 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +251 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/config/index.html +191 -0
- package/coverage/src/config/index.ts.html +442 -0
- package/coverage/src/config/interpolate.ts.html +652 -0
- package/coverage/src/config/loader.ts.html +1501 -0
- package/coverage/src/config/merge.ts.html +823 -0
- package/coverage/src/config/parser.ts.html +1213 -0
- package/coverage/src/config/schema.ts.html +1123 -0
- package/coverage/src/fleet-manager/errors.ts.html +2326 -0
- package/coverage/src/fleet-manager/event-types.ts.html +1219 -0
- package/coverage/src/fleet-manager/fleet-manager.ts.html +7030 -0
- package/coverage/src/fleet-manager/index.html +206 -0
- package/coverage/src/fleet-manager/index.ts.html +469 -0
- package/coverage/src/fleet-manager/job-manager.ts.html +2074 -0
- package/coverage/src/fleet-manager/job-queue.ts.html +2479 -0
- package/coverage/src/fleet-manager/types.ts.html +2602 -0
- package/coverage/src/index.html +116 -0
- package/coverage/src/index.ts.html +181 -0
- package/coverage/src/runner/errors.ts.html +1006 -0
- package/coverage/src/runner/index.html +191 -0
- package/coverage/src/runner/index.ts.html +256 -0
- package/coverage/src/runner/job-executor.ts.html +1429 -0
- package/coverage/src/runner/message-processor.ts.html +1150 -0
- package/coverage/src/runner/sdk-adapter.ts.html +658 -0
- package/coverage/src/runner/types.ts.html +559 -0
- package/coverage/src/scheduler/errors.ts.html +388 -0
- package/coverage/src/scheduler/index.html +206 -0
- package/coverage/src/scheduler/index.ts.html +244 -0
- package/coverage/src/scheduler/interval.ts.html +652 -0
- package/coverage/src/scheduler/schedule-runner.ts.html +1411 -0
- package/coverage/src/scheduler/schedule-state.ts.html +718 -0
- package/coverage/src/scheduler/scheduler.ts.html +1795 -0
- package/coverage/src/scheduler/types.ts.html +733 -0
- package/coverage/src/state/directory.ts.html +736 -0
- package/coverage/src/state/errors.ts.html +376 -0
- package/coverage/src/state/fleet-state.ts.html +937 -0
- package/coverage/src/state/index.html +221 -0
- package/coverage/src/state/index.ts.html +322 -0
- package/coverage/src/state/job-metadata.ts.html +1420 -0
- package/coverage/src/state/job-output.ts.html +1033 -0
- package/coverage/src/state/schemas/fleet-state.ts.html +445 -0
- package/coverage/src/state/schemas/index.html +176 -0
- package/coverage/src/state/schemas/index.ts.html +286 -0
- package/coverage/src/state/schemas/job-metadata.ts.html +628 -0
- package/coverage/src/state/schemas/job-output.ts.html +616 -0
- package/coverage/src/state/schemas/session-info.ts.html +361 -0
- package/coverage/src/state/session.ts.html +844 -0
- package/coverage/src/state/types.ts.html +262 -0
- package/coverage/src/state/utils/atomic.ts.html +748 -0
- package/coverage/src/state/utils/index.html +146 -0
- package/coverage/src/state/utils/index.ts.html +103 -0
- package/coverage/src/state/utils/reads.ts.html +1621 -0
- package/coverage/src/work-sources/adapters/github.ts.html +3583 -0
- package/coverage/src/work-sources/adapters/index.html +131 -0
- package/coverage/src/work-sources/adapters/index.ts.html +277 -0
- package/coverage/src/work-sources/errors.ts.html +298 -0
- package/coverage/src/work-sources/index.html +176 -0
- package/coverage/src/work-sources/index.ts.html +529 -0
- package/coverage/src/work-sources/manager.ts.html +1324 -0
- package/coverage/src/work-sources/registry.ts.html +619 -0
- package/coverage/src/work-sources/types.ts.html +568 -0
- package/dist/config/__tests__/agent.test.d.ts +2 -0
- package/dist/config/__tests__/agent.test.d.ts.map +1 -0
- package/dist/config/__tests__/agent.test.js +752 -0
- package/dist/config/__tests__/agent.test.js.map +1 -0
- package/dist/config/__tests__/interpolate.test.d.ts +2 -0
- package/dist/config/__tests__/interpolate.test.d.ts.map +1 -0
- package/dist/config/__tests__/interpolate.test.js +509 -0
- package/dist/config/__tests__/interpolate.test.js.map +1 -0
- package/dist/config/__tests__/loader.test.d.ts +2 -0
- package/dist/config/__tests__/loader.test.d.ts.map +1 -0
- package/dist/config/__tests__/loader.test.js +631 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/__tests__/merge.test.d.ts +2 -0
- package/dist/config/__tests__/merge.test.d.ts.map +1 -0
- package/dist/config/__tests__/merge.test.js +672 -0
- package/dist/config/__tests__/merge.test.js.map +1 -0
- package/dist/config/__tests__/parser.test.d.ts +2 -0
- package/dist/config/__tests__/parser.test.d.ts.map +1 -0
- package/dist/config/__tests__/parser.test.js +476 -0
- package/dist/config/__tests__/parser.test.js.map +1 -0
- package/dist/config/__tests__/schema.test.d.ts +2 -0
- package/dist/config/__tests__/schema.test.d.ts.map +1 -0
- package/dist/config/__tests__/schema.test.js +776 -0
- package/dist/config/__tests__/schema.test.js.map +1 -0
- package/dist/config/index.d.ts +11 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +26 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/interpolate.d.ts +76 -0
- package/dist/config/interpolate.d.ts.map +1 -0
- package/dist/config/interpolate.js +143 -0
- package/dist/config/interpolate.js.map +1 -0
- package/dist/config/loader.d.ts +147 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +336 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/merge.d.ts +84 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +138 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/parser.d.ts +143 -0
- package/dist/config/parser.d.ts.map +1 -0
- package/dist/config/parser.js +316 -0
- package/dist/config/parser.js.map +1 -0
- package/dist/config/schema.d.ts +1906 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +268 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/fleet-manager/__tests__/coverage.test.d.ts +13 -0
- package/dist/fleet-manager/__tests__/coverage.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/coverage.test.js +2282 -0
- package/dist/fleet-manager/__tests__/coverage.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/errors.test.d.ts +7 -0
- package/dist/fleet-manager/__tests__/errors.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/errors.test.js +557 -0
- package/dist/fleet-manager/__tests__/errors.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/event-helpers.test.d.ts +7 -0
- package/dist/fleet-manager/__tests__/event-helpers.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/event-helpers.test.js +368 -0
- package/dist/fleet-manager/__tests__/event-helpers.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/integration.test.d.ts +11 -0
- package/dist/fleet-manager/__tests__/integration.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/integration.test.js +949 -0
- package/dist/fleet-manager/__tests__/integration.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/job-control.test.d.ts +7 -0
- package/dist/fleet-manager/__tests__/job-control.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/job-control.test.js +215 -0
- package/dist/fleet-manager/__tests__/job-control.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/job-manager.test.d.ts +7 -0
- package/dist/fleet-manager/__tests__/job-manager.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/job-manager.test.js +659 -0
- package/dist/fleet-manager/__tests__/job-manager.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/job-queue.test.d.ts +5 -0
- package/dist/fleet-manager/__tests__/job-queue.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/job-queue.test.js +315 -0
- package/dist/fleet-manager/__tests__/job-queue.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/reload.test.d.ts +7 -0
- package/dist/fleet-manager/__tests__/reload.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/reload.test.js +609 -0
- package/dist/fleet-manager/__tests__/reload.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/status-queries.test.d.ts +7 -0
- package/dist/fleet-manager/__tests__/status-queries.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/status-queries.test.js +488 -0
- package/dist/fleet-manager/__tests__/status-queries.test.js.map +1 -0
- package/dist/fleet-manager/__tests__/trigger.test.d.ts +7 -0
- package/dist/fleet-manager/__tests__/trigger.test.d.ts.map +1 -0
- package/dist/fleet-manager/__tests__/trigger.test.js +471 -0
- package/dist/fleet-manager/__tests__/trigger.test.js.map +1 -0
- package/dist/fleet-manager/errors.d.ts +407 -0
- package/dist/fleet-manager/errors.d.ts.map +1 -0
- package/dist/fleet-manager/errors.js +569 -0
- package/dist/fleet-manager/errors.js.map +1 -0
- package/dist/fleet-manager/event-types.d.ts +302 -0
- package/dist/fleet-manager/event-types.d.ts.map +1 -0
- package/dist/fleet-manager/event-types.js +9 -0
- package/dist/fleet-manager/event-types.js.map +1 -0
- package/dist/fleet-manager/fleet-manager.d.ts +699 -0
- package/dist/fleet-manager/fleet-manager.d.ts.map +1 -0
- package/dist/fleet-manager/fleet-manager.js +1906 -0
- package/dist/fleet-manager/fleet-manager.js.map +1 -0
- package/dist/fleet-manager/index.d.ts +17 -0
- package/dist/fleet-manager/index.d.ts.map +1 -0
- package/dist/fleet-manager/index.js +29 -0
- package/dist/fleet-manager/index.js.map +1 -0
- package/dist/fleet-manager/job-manager.d.ts +271 -0
- package/dist/fleet-manager/job-manager.d.ts.map +1 -0
- package/dist/fleet-manager/job-manager.js +443 -0
- package/dist/fleet-manager/job-manager.js.map +1 -0
- package/dist/fleet-manager/job-queue.d.ts +422 -0
- package/dist/fleet-manager/job-queue.d.ts.map +1 -0
- package/dist/fleet-manager/job-queue.js +448 -0
- package/dist/fleet-manager/job-queue.js.map +1 -0
- package/dist/fleet-manager/types.d.ts +680 -0
- package/dist/fleet-manager/types.d.ts.map +1 -0
- package/dist/fleet-manager/types.js +8 -0
- package/dist/fleet-manager/types.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/runner/__tests__/errors.test.d.ts +2 -0
- package/dist/runner/__tests__/errors.test.d.ts.map +1 -0
- package/dist/runner/__tests__/errors.test.js +264 -0
- package/dist/runner/__tests__/errors.test.js.map +1 -0
- package/dist/runner/__tests__/job-executor.test.d.ts +2 -0
- package/dist/runner/__tests__/job-executor.test.d.ts.map +1 -0
- package/dist/runner/__tests__/job-executor.test.js +1345 -0
- package/dist/runner/__tests__/job-executor.test.js.map +1 -0
- package/dist/runner/__tests__/message-processor.test.d.ts +2 -0
- package/dist/runner/__tests__/message-processor.test.d.ts.map +1 -0
- package/dist/runner/__tests__/message-processor.test.js +768 -0
- package/dist/runner/__tests__/message-processor.test.js.map +1 -0
- package/dist/runner/__tests__/sdk-adapter.test.d.ts +2 -0
- package/dist/runner/__tests__/sdk-adapter.test.d.ts.map +1 -0
- package/dist/runner/__tests__/sdk-adapter.test.js +554 -0
- package/dist/runner/__tests__/sdk-adapter.test.js.map +1 -0
- package/dist/runner/errors.d.ts +121 -0
- package/dist/runner/errors.d.ts.map +1 -0
- package/dist/runner/errors.js +212 -0
- package/dist/runner/errors.js.map +1 -0
- package/dist/runner/index.d.ts +12 -0
- package/dist/runner/index.d.ts.map +1 -0
- package/dist/runner/index.js +15 -0
- package/dist/runner/index.js.map +1 -0
- package/dist/runner/job-executor.d.ts +98 -0
- package/dist/runner/job-executor.d.ts.map +1 -0
- package/dist/runner/job-executor.js +333 -0
- package/dist/runner/job-executor.js.map +1 -0
- package/dist/runner/message-processor.d.ts +45 -0
- package/dist/runner/message-processor.d.ts.map +1 -0
- package/dist/runner/message-processor.js +294 -0
- package/dist/runner/message-processor.js.map +1 -0
- package/dist/runner/sdk-adapter.d.ts +60 -0
- package/dist/runner/sdk-adapter.d.ts.map +1 -0
- package/dist/runner/sdk-adapter.js +138 -0
- package/dist/runner/sdk-adapter.js.map +1 -0
- package/dist/runner/types.d.ts +135 -0
- package/dist/runner/types.d.ts.map +1 -0
- package/dist/runner/types.js +7 -0
- package/dist/runner/types.js.map +1 -0
- package/dist/scheduler/__tests__/errors.test.d.ts +2 -0
- package/dist/scheduler/__tests__/errors.test.d.ts.map +1 -0
- package/dist/scheduler/__tests__/errors.test.js +101 -0
- package/dist/scheduler/__tests__/errors.test.js.map +1 -0
- package/dist/scheduler/__tests__/interval.test.d.ts +2 -0
- package/dist/scheduler/__tests__/interval.test.d.ts.map +1 -0
- package/dist/scheduler/__tests__/interval.test.js +419 -0
- package/dist/scheduler/__tests__/interval.test.js.map +1 -0
- package/dist/scheduler/__tests__/schedule-runner.test.d.ts +2 -0
- package/dist/scheduler/__tests__/schedule-runner.test.d.ts.map +1 -0
- package/dist/scheduler/__tests__/schedule-runner.test.js +634 -0
- package/dist/scheduler/__tests__/schedule-runner.test.js.map +1 -0
- package/dist/scheduler/__tests__/schedule-state.test.d.ts +2 -0
- package/dist/scheduler/__tests__/schedule-state.test.d.ts.map +1 -0
- package/dist/scheduler/__tests__/schedule-state.test.js +572 -0
- package/dist/scheduler/__tests__/schedule-state.test.js.map +1 -0
- package/dist/scheduler/__tests__/scheduler.test.d.ts +2 -0
- package/dist/scheduler/__tests__/scheduler.test.d.ts.map +1 -0
- package/dist/scheduler/__tests__/scheduler.test.js +987 -0
- package/dist/scheduler/__tests__/scheduler.test.js.map +1 -0
- package/dist/scheduler/errors.d.ts +61 -0
- package/dist/scheduler/errors.d.ts.map +1 -0
- package/dist/scheduler/errors.js +81 -0
- package/dist/scheduler/errors.js.map +1 -0
- package/dist/scheduler/index.d.ts +13 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +17 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/interval.d.ts +64 -0
- package/dist/scheduler/interval.d.ts.map +1 -0
- package/dist/scheduler/interval.js +139 -0
- package/dist/scheduler/interval.js.map +1 -0
- package/dist/scheduler/schedule-runner.d.ts +149 -0
- package/dist/scheduler/schedule-runner.d.ts.map +1 -0
- package/dist/scheduler/schedule-runner.js +277 -0
- package/dist/scheduler/schedule-runner.js.map +1 -0
- package/dist/scheduler/schedule-state.d.ts +105 -0
- package/dist/scheduler/schedule-state.d.ts.map +1 -0
- package/dist/scheduler/schedule-state.js +151 -0
- package/dist/scheduler/schedule-state.js.map +1 -0
- package/dist/scheduler/scheduler.d.ts +138 -0
- package/dist/scheduler/scheduler.d.ts.map +1 -0
- package/dist/scheduler/scheduler.js +423 -0
- package/dist/scheduler/scheduler.js.map +1 -0
- package/dist/scheduler/types.d.ts +160 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/state/__tests__/directory.test.d.ts +2 -0
- package/dist/state/__tests__/directory.test.d.ts.map +1 -0
- package/dist/state/__tests__/directory.test.js +414 -0
- package/dist/state/__tests__/directory.test.js.map +1 -0
- package/dist/state/__tests__/fleet-state.test.d.ts +2 -0
- package/dist/state/__tests__/fleet-state.test.d.ts.map +1 -0
- package/dist/state/__tests__/fleet-state.test.js +696 -0
- package/dist/state/__tests__/fleet-state.test.js.map +1 -0
- package/dist/state/__tests__/job-metadata-schema.test.d.ts +2 -0
- package/dist/state/__tests__/job-metadata-schema.test.d.ts.map +1 -0
- package/dist/state/__tests__/job-metadata-schema.test.js +329 -0
- package/dist/state/__tests__/job-metadata-schema.test.js.map +1 -0
- package/dist/state/__tests__/job-metadata.test.d.ts +2 -0
- package/dist/state/__tests__/job-metadata.test.d.ts.map +1 -0
- package/dist/state/__tests__/job-metadata.test.js +667 -0
- package/dist/state/__tests__/job-metadata.test.js.map +1 -0
- package/dist/state/__tests__/job-output.test.d.ts +2 -0
- package/dist/state/__tests__/job-output.test.d.ts.map +1 -0
- package/dist/state/__tests__/job-output.test.js +672 -0
- package/dist/state/__tests__/job-output.test.js.map +1 -0
- package/dist/state/__tests__/session-schema.test.d.ts +2 -0
- package/dist/state/__tests__/session-schema.test.d.ts.map +1 -0
- package/dist/state/__tests__/session-schema.test.js +323 -0
- package/dist/state/__tests__/session-schema.test.js.map +1 -0
- package/dist/state/__tests__/session.test.d.ts +2 -0
- package/dist/state/__tests__/session.test.d.ts.map +1 -0
- package/dist/state/__tests__/session.test.js +468 -0
- package/dist/state/__tests__/session.test.js.map +1 -0
- package/dist/state/directory.d.ts +42 -0
- package/dist/state/directory.d.ts.map +1 -0
- package/dist/state/directory.js +170 -0
- package/dist/state/directory.js.map +1 -0
- package/dist/state/errors.d.ts +44 -0
- package/dist/state/errors.d.ts.map +1 -0
- package/dist/state/errors.js +82 -0
- package/dist/state/errors.js.map +1 -0
- package/dist/state/fleet-state.d.ts +126 -0
- package/dist/state/fleet-state.d.ts.map +1 -0
- package/dist/state/fleet-state.js +196 -0
- package/dist/state/fleet-state.js.map +1 -0
- package/dist/state/index.d.ts +21 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +30 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/job-metadata.d.ts +151 -0
- package/dist/state/job-metadata.d.ts.map +1 -0
- package/dist/state/job-metadata.js +287 -0
- package/dist/state/job-metadata.js.map +1 -0
- package/dist/state/job-output.d.ts +116 -0
- package/dist/state/job-output.d.ts.map +1 -0
- package/dist/state/job-output.js +218 -0
- package/dist/state/job-output.js.map +1 -0
- package/dist/state/schemas/__tests__/job-output.test.d.ts +2 -0
- package/dist/state/schemas/__tests__/job-output.test.d.ts.map +1 -0
- package/dist/state/schemas/__tests__/job-output.test.js +279 -0
- package/dist/state/schemas/__tests__/job-output.test.js.map +1 -0
- package/dist/state/schemas/fleet-state.d.ts +249 -0
- package/dist/state/schemas/fleet-state.d.ts.map +1 -0
- package/dist/state/schemas/fleet-state.js +97 -0
- package/dist/state/schemas/fleet-state.js.map +1 -0
- package/dist/state/schemas/index.d.ts +10 -0
- package/dist/state/schemas/index.d.ts.map +1 -0
- package/dist/state/schemas/index.js +10 -0
- package/dist/state/schemas/index.js.map +1 -0
- package/dist/state/schemas/job-metadata.d.ts +118 -0
- package/dist/state/schemas/job-metadata.d.ts.map +1 -0
- package/dist/state/schemas/job-metadata.js +123 -0
- package/dist/state/schemas/job-metadata.js.map +1 -0
- package/dist/state/schemas/job-output.d.ts +291 -0
- package/dist/state/schemas/job-output.d.ts.map +1 -0
- package/dist/state/schemas/job-output.js +132 -0
- package/dist/state/schemas/job-output.js.map +1 -0
- package/dist/state/schemas/session-info.d.ts +65 -0
- package/dist/state/schemas/session-info.d.ts.map +1 -0
- package/dist/state/schemas/session-info.js +58 -0
- package/dist/state/schemas/session-info.js.map +1 -0
- package/dist/state/session.d.ts +92 -0
- package/dist/state/session.d.ts.map +1 -0
- package/dist/state/session.js +173 -0
- package/dist/state/session.js.map +1 -0
- package/dist/state/types.d.ts +54 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +18 -0
- package/dist/state/types.js.map +1 -0
- package/dist/state/utils/__tests__/atomic.test.d.ts +2 -0
- package/dist/state/utils/__tests__/atomic.test.d.ts.map +1 -0
- package/dist/state/utils/__tests__/atomic.test.js +537 -0
- package/dist/state/utils/__tests__/atomic.test.js.map +1 -0
- package/dist/state/utils/__tests__/reads.test.d.ts +2 -0
- package/dist/state/utils/__tests__/reads.test.d.ts.map +1 -0
- package/dist/state/utils/__tests__/reads.test.js +792 -0
- package/dist/state/utils/__tests__/reads.test.js.map +1 -0
- package/dist/state/utils/atomic.d.ts +89 -0
- package/dist/state/utils/atomic.d.ts.map +1 -0
- package/dist/state/utils/atomic.js +157 -0
- package/dist/state/utils/atomic.js.map +1 -0
- package/dist/state/utils/index.d.ts +6 -0
- package/dist/state/utils/index.d.ts.map +1 -0
- package/dist/state/utils/index.js +6 -0
- package/dist/state/utils/index.js.map +1 -0
- package/dist/state/utils/reads.d.ts +196 -0
- package/dist/state/utils/reads.d.ts.map +1 -0
- package/dist/state/utils/reads.js +346 -0
- package/dist/state/utils/reads.js.map +1 -0
- package/dist/work-sources/__tests__/github.test.d.ts +2 -0
- package/dist/work-sources/__tests__/github.test.d.ts.map +1 -0
- package/dist/work-sources/__tests__/github.test.js +1334 -0
- package/dist/work-sources/__tests__/github.test.js.map +1 -0
- package/dist/work-sources/__tests__/manager.test.d.ts +2 -0
- package/dist/work-sources/__tests__/manager.test.d.ts.map +1 -0
- package/dist/work-sources/__tests__/manager.test.js +424 -0
- package/dist/work-sources/__tests__/manager.test.js.map +1 -0
- package/dist/work-sources/__tests__/registry.test.d.ts +2 -0
- package/dist/work-sources/__tests__/registry.test.d.ts.map +1 -0
- package/dist/work-sources/__tests__/registry.test.js +381 -0
- package/dist/work-sources/__tests__/registry.test.js.map +1 -0
- package/dist/work-sources/__tests__/types.test.d.ts +2 -0
- package/dist/work-sources/__tests__/types.test.d.ts.map +1 -0
- package/dist/work-sources/__tests__/types.test.js +406 -0
- package/dist/work-sources/__tests__/types.test.js.map +1 -0
- package/dist/work-sources/adapters/github.d.ts +290 -0
- package/dist/work-sources/adapters/github.d.ts.map +1 -0
- package/dist/work-sources/adapters/github.js +803 -0
- package/dist/work-sources/adapters/github.js.map +1 -0
- package/dist/work-sources/adapters/index.d.ts +10 -0
- package/dist/work-sources/adapters/index.d.ts.map +1 -0
- package/dist/work-sources/adapters/index.js +31 -0
- package/dist/work-sources/adapters/index.js.map +1 -0
- package/dist/work-sources/errors.d.ts +40 -0
- package/dist/work-sources/errors.d.ts.map +1 -0
- package/dist/work-sources/errors.js +54 -0
- package/dist/work-sources/errors.js.map +1 -0
- package/dist/work-sources/index.d.ts +105 -0
- package/dist/work-sources/index.d.ts.map +1 -0
- package/dist/work-sources/index.js +24 -0
- package/dist/work-sources/index.js.map +1 -0
- package/dist/work-sources/manager.d.ts +370 -0
- package/dist/work-sources/manager.d.ts.map +1 -0
- package/dist/work-sources/manager.js +61 -0
- package/dist/work-sources/manager.js.map +1 -0
- package/dist/work-sources/registry.d.ts +128 -0
- package/dist/work-sources/registry.d.ts.map +1 -0
- package/dist/work-sources/registry.js +132 -0
- package/dist/work-sources/registry.js.map +1 -0
- package/dist/work-sources/types.d.ts +127 -0
- package/dist/work-sources/types.d.ts.map +1 -0
- package/dist/work-sources/types.js +8 -0
- package/dist/work-sources/types.js.map +1 -0
- package/package.json +23 -0
- package/src/config/__tests__/agent.test.ts +864 -0
- package/src/config/__tests__/interpolate.test.ts +644 -0
- package/src/config/__tests__/loader.test.ts +784 -0
- package/src/config/__tests__/merge.test.ts +751 -0
- package/src/config/__tests__/parser.test.ts +533 -0
- package/src/config/__tests__/schema.test.ts +873 -0
- package/src/config/index.ts +119 -0
- package/src/config/interpolate.ts +189 -0
- package/src/config/loader.ts +472 -0
- package/src/config/merge.ts +246 -0
- package/src/config/parser.ts +376 -0
- package/src/config/schema.ts +346 -0
- package/src/fleet-manager/__tests__/coverage.test.ts +2869 -0
- package/src/fleet-manager/__tests__/errors.test.ts +660 -0
- package/src/fleet-manager/__tests__/event-helpers.test.ts +448 -0
- package/src/fleet-manager/__tests__/integration.test.ts +1209 -0
- package/src/fleet-manager/__tests__/job-control.test.ts +283 -0
- package/src/fleet-manager/__tests__/job-manager.test.ts +869 -0
- package/src/fleet-manager/__tests__/job-queue.test.ts +401 -0
- package/src/fleet-manager/__tests__/reload.test.ts +751 -0
- package/src/fleet-manager/__tests__/status-queries.test.ts +595 -0
- package/src/fleet-manager/__tests__/trigger.test.ts +601 -0
- package/src/fleet-manager/errors.ts +747 -0
- package/src/fleet-manager/event-types.ts +378 -0
- package/src/fleet-manager/fleet-manager.ts +2315 -0
- package/src/fleet-manager/index.ts +128 -0
- package/src/fleet-manager/job-manager.ts +663 -0
- package/src/fleet-manager/job-queue.ts +798 -0
- package/src/fleet-manager/types.ts +839 -0
- package/src/index.ts +32 -0
- package/src/runner/__tests__/errors.test.ts +382 -0
- package/src/runner/__tests__/job-executor.test.ts +1708 -0
- package/src/runner/__tests__/message-processor.test.ts +960 -0
- package/src/runner/__tests__/sdk-adapter.test.ts +626 -0
- package/src/runner/errors.ts +307 -0
- package/src/runner/index.ts +57 -0
- package/src/runner/job-executor.ts +448 -0
- package/src/runner/message-processor.ts +355 -0
- package/src/runner/sdk-adapter.ts +191 -0
- package/src/runner/types.ts +158 -0
- package/src/scheduler/__tests__/errors.test.ts +159 -0
- package/src/scheduler/__tests__/interval.test.ts +515 -0
- package/src/scheduler/__tests__/schedule-runner.test.ts +798 -0
- package/src/scheduler/__tests__/schedule-state.test.ts +671 -0
- package/src/scheduler/__tests__/scheduler.test.ts +1280 -0
- package/src/scheduler/errors.ts +101 -0
- package/src/scheduler/index.ts +53 -0
- package/src/scheduler/interval.ts +189 -0
- package/src/scheduler/schedule-runner.ts +442 -0
- package/src/scheduler/schedule-state.ts +211 -0
- package/src/scheduler/scheduler.ts +570 -0
- package/src/scheduler/types.ts +216 -0
- package/src/state/__tests__/directory.test.ts +595 -0
- package/src/state/__tests__/fleet-state.test.ts +868 -0
- package/src/state/__tests__/job-metadata-schema.test.ts +414 -0
- package/src/state/__tests__/job-metadata.test.ts +831 -0
- package/src/state/__tests__/job-output.test.ts +856 -0
- package/src/state/__tests__/session-schema.test.ts +378 -0
- package/src/state/__tests__/session.test.ts +604 -0
- package/src/state/directory.ts +217 -0
- package/src/state/errors.ts +97 -0
- package/src/state/fleet-state.ts +284 -0
- package/src/state/index.ts +79 -0
- package/src/state/job-metadata.ts +445 -0
- package/src/state/job-output.ts +316 -0
- package/src/state/schemas/__tests__/job-output.test.ts +338 -0
- package/src/state/schemas/fleet-state.ts +120 -0
- package/src/state/schemas/index.ts +67 -0
- package/src/state/schemas/job-metadata.ts +181 -0
- package/src/state/schemas/job-output.ts +177 -0
- package/src/state/schemas/session-info.ts +92 -0
- package/src/state/session.ts +253 -0
- package/src/state/types.ts +59 -0
- package/src/state/utils/__tests__/atomic.test.ts +723 -0
- package/src/state/utils/__tests__/reads.test.ts +1071 -0
- package/src/state/utils/atomic.ts +221 -0
- package/src/state/utils/index.ts +6 -0
- package/src/state/utils/reads.ts +512 -0
- package/src/work-sources/__tests__/github.test.ts +1800 -0
- package/src/work-sources/__tests__/manager.test.ts +529 -0
- package/src/work-sources/__tests__/registry.test.ts +477 -0
- package/src/work-sources/__tests__/types.test.ts +479 -0
- package/src/work-sources/adapters/github.ts +1166 -0
- package/src/work-sources/adapters/index.ts +64 -0
- package/src/work-sources/errors.ts +71 -0
- package/src/work-sources/index.ts +148 -0
- package/src/work-sources/manager.ts +413 -0
- package/src/work-sources/registry.ts +178 -0
- package/src/work-sources/types.ts +161 -0
- package/tsconfig.json +9 -0
- package/vitest.config.ts +19 -0
|
@@ -0,0 +1,699 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FleetManager class for library consumers
|
|
3
|
+
*
|
|
4
|
+
* Provides a simple, high-level API to initialize and run a fleet of agents
|
|
5
|
+
* with minimal configuration. Handles config loading, state directory setup,
|
|
6
|
+
* and scheduler orchestration internally.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { FleetManager } from '@herdctl/core';
|
|
11
|
+
*
|
|
12
|
+
* const manager = new FleetManager({
|
|
13
|
+
* configPath: './herdctl.yaml',
|
|
14
|
+
* stateDir: './.herdctl',
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* await manager.initialize();
|
|
18
|
+
* await manager.start();
|
|
19
|
+
*
|
|
20
|
+
* // Later...
|
|
21
|
+
* await manager.stop();
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import { EventEmitter } from "node:events";
|
|
25
|
+
import { type ResolvedConfig, type ResolvedAgent } from "../config/index.js";
|
|
26
|
+
import type { FleetManagerOptions, FleetManagerState, ConfigReloadedPayload, AgentStartedPayload, AgentStoppedPayload, ScheduleSkippedPayload, JobCreatedPayload, JobOutputPayload, JobCompletedPayload, JobFailedPayload, JobCancelledPayload, JobForkedPayload, FleetStatus, AgentInfo, ScheduleInfo, TriggerOptions, TriggerResult, JobModifications, CancelJobResult, ForkJobResult, FleetManagerStopOptions, LogEntry, LogStreamOptions } from "./types.js";
|
|
27
|
+
/**
|
|
28
|
+
* FleetManager provides a simple API to manage a fleet of agents
|
|
29
|
+
*
|
|
30
|
+
* This class is the primary entry point for library consumers who want to
|
|
31
|
+
* run herdctl programmatically. It handles:
|
|
32
|
+
*
|
|
33
|
+
* - Configuration loading and validation
|
|
34
|
+
* - State directory initialization
|
|
35
|
+
* - Scheduler lifecycle management
|
|
36
|
+
* - Event emission for monitoring
|
|
37
|
+
*
|
|
38
|
+
* ## Lifecycle
|
|
39
|
+
*
|
|
40
|
+
* 1. **Construction**: Create with options (configPath, stateDir)
|
|
41
|
+
* 2. **Initialize**: Call `initialize()` to load config and prepare state
|
|
42
|
+
* 3. **Start**: Call `start()` to begin scheduler and process schedules
|
|
43
|
+
* 4. **Stop**: Call `stop()` to gracefully shut down
|
|
44
|
+
*
|
|
45
|
+
* ## Events
|
|
46
|
+
*
|
|
47
|
+
* The FleetManager emits events for monitoring:
|
|
48
|
+
* - `initialized` - After successful initialization
|
|
49
|
+
* - `started` - When the scheduler starts running
|
|
50
|
+
* - `stopped` - When the scheduler stops
|
|
51
|
+
* - `error` - When an error occurs
|
|
52
|
+
* - `schedule:trigger` - When a schedule triggers an agent
|
|
53
|
+
* - `schedule:complete` - When an agent run completes
|
|
54
|
+
* - `schedule:error` - When an agent run fails
|
|
55
|
+
*
|
|
56
|
+
* ## Typed Events (US-2)
|
|
57
|
+
*
|
|
58
|
+
* The FleetManager also supports strongly-typed events via TypeScript:
|
|
59
|
+
* - `config:reloaded` - When configuration is hot-reloaded
|
|
60
|
+
* - `agent:started` - When an agent is started
|
|
61
|
+
* - `agent:stopped` - When an agent is stopped
|
|
62
|
+
* - `schedule:triggered` - When a schedule triggers (with payload)
|
|
63
|
+
* - `schedule:skipped` - When a schedule is skipped
|
|
64
|
+
* - `job:created` - When a job is created
|
|
65
|
+
* - `job:output` - When a job produces output
|
|
66
|
+
* - `job:completed` - When a job completes successfully
|
|
67
|
+
* - `job:failed` - When a job fails
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // Subscribe to typed events
|
|
72
|
+
* manager.on('job:created', (payload) => {
|
|
73
|
+
* console.log(`Job ${payload.job.id} created for ${payload.agentName}`);
|
|
74
|
+
* });
|
|
75
|
+
*
|
|
76
|
+
* manager.on('job:output', (payload) => {
|
|
77
|
+
* process.stdout.write(payload.output);
|
|
78
|
+
* });
|
|
79
|
+
*
|
|
80
|
+
* manager.on('job:completed', (payload) => {
|
|
81
|
+
* console.log(`Job completed in ${payload.durationSeconds}s`);
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare class FleetManager extends EventEmitter {
|
|
86
|
+
private readonly configPath?;
|
|
87
|
+
private readonly stateDir;
|
|
88
|
+
private readonly logger;
|
|
89
|
+
private readonly checkInterval;
|
|
90
|
+
private status;
|
|
91
|
+
private config;
|
|
92
|
+
private stateDirInfo;
|
|
93
|
+
private scheduler;
|
|
94
|
+
private initializedAt;
|
|
95
|
+
private startedAt;
|
|
96
|
+
private stoppedAt;
|
|
97
|
+
private lastError;
|
|
98
|
+
/**
|
|
99
|
+
* Create a new FleetManager instance
|
|
100
|
+
*
|
|
101
|
+
* @param options - Configuration options
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* // Minimal configuration
|
|
106
|
+
* const manager = new FleetManager({
|
|
107
|
+
* configPath: './herdctl.yaml',
|
|
108
|
+
* stateDir: './.herdctl',
|
|
109
|
+
* });
|
|
110
|
+
*
|
|
111
|
+
* // With custom logger
|
|
112
|
+
* const manager = new FleetManager({
|
|
113
|
+
* configPath: './herdctl.yaml',
|
|
114
|
+
* stateDir: './.herdctl',
|
|
115
|
+
* logger: myLogger,
|
|
116
|
+
* checkInterval: 5000, // 5 seconds
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
constructor(options: FleetManagerOptions);
|
|
121
|
+
/**
|
|
122
|
+
* Get the current fleet manager state
|
|
123
|
+
*
|
|
124
|
+
* This provides a snapshot of the fleet manager's current status and
|
|
125
|
+
* configuration for monitoring purposes.
|
|
126
|
+
*/
|
|
127
|
+
get state(): FleetManagerState;
|
|
128
|
+
/**
|
|
129
|
+
* Get the loaded configuration
|
|
130
|
+
*
|
|
131
|
+
* @returns The resolved configuration, or null if not initialized
|
|
132
|
+
*/
|
|
133
|
+
getConfig(): ResolvedConfig | null;
|
|
134
|
+
/**
|
|
135
|
+
* Get the loaded agents
|
|
136
|
+
*
|
|
137
|
+
* @returns Array of resolved agents, or empty array if not initialized
|
|
138
|
+
*/
|
|
139
|
+
getAgents(): ResolvedAgent[];
|
|
140
|
+
/**
|
|
141
|
+
* Get overall fleet status
|
|
142
|
+
*
|
|
143
|
+
* Returns a comprehensive snapshot of the fleet state including:
|
|
144
|
+
* - Current state and uptime
|
|
145
|
+
* - Agent counts (total, idle, running, error)
|
|
146
|
+
* - Job counts
|
|
147
|
+
* - Scheduler information
|
|
148
|
+
*
|
|
149
|
+
* This method works whether the fleet is running or stopped.
|
|
150
|
+
*
|
|
151
|
+
* @returns A consistent FleetStatus snapshot
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* const status = await manager.getFleetStatus();
|
|
156
|
+
* console.log(`Fleet: ${status.state}`);
|
|
157
|
+
* console.log(`Uptime: ${status.uptimeSeconds}s`);
|
|
158
|
+
* console.log(`Running jobs: ${status.counts.runningJobs}`);
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
getFleetStatus(): Promise<FleetStatus>;
|
|
162
|
+
/**
|
|
163
|
+
* Get information about all configured agents
|
|
164
|
+
*
|
|
165
|
+
* Returns detailed information for each agent including:
|
|
166
|
+
* - Current status and job information
|
|
167
|
+
* - Schedule details with runtime state
|
|
168
|
+
* - Configuration details
|
|
169
|
+
*
|
|
170
|
+
* This method works whether the fleet is running or stopped.
|
|
171
|
+
*
|
|
172
|
+
* @returns Array of AgentInfo objects with current state
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* const agents = await manager.getAgentInfo();
|
|
177
|
+
* for (const agent of agents) {
|
|
178
|
+
* console.log(`${agent.name}: ${agent.status}`);
|
|
179
|
+
* console.log(` Schedules: ${agent.scheduleCount}`);
|
|
180
|
+
* }
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
getAgentInfo(): Promise<AgentInfo[]>;
|
|
184
|
+
/**
|
|
185
|
+
* Get information about a specific agent by name
|
|
186
|
+
*
|
|
187
|
+
* Returns detailed information for the specified agent including:
|
|
188
|
+
* - Current status and job information
|
|
189
|
+
* - Schedule details with runtime state
|
|
190
|
+
* - Configuration details
|
|
191
|
+
*
|
|
192
|
+
* This method works whether the fleet is running or stopped.
|
|
193
|
+
*
|
|
194
|
+
* @param name - The agent name to look up
|
|
195
|
+
* @returns AgentInfo for the specified agent
|
|
196
|
+
* @throws {AgentNotFoundError} If no agent with that name exists
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* const agent = await manager.getAgentInfoByName('my-agent');
|
|
201
|
+
* console.log(`Agent: ${agent.name}`);
|
|
202
|
+
* console.log(`Status: ${agent.status}`);
|
|
203
|
+
* console.log(`Running: ${agent.runningCount}/${agent.maxConcurrent}`);
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
getAgentInfoByName(name: string): Promise<AgentInfo>;
|
|
207
|
+
/**
|
|
208
|
+
* Read fleet state from disk for status queries
|
|
209
|
+
*
|
|
210
|
+
* This provides a consistent snapshot of the fleet state.
|
|
211
|
+
*/
|
|
212
|
+
private readFleetStateSnapshot;
|
|
213
|
+
/**
|
|
214
|
+
* Build AgentInfo from configuration and state
|
|
215
|
+
*/
|
|
216
|
+
private buildAgentInfo;
|
|
217
|
+
/**
|
|
218
|
+
* Build schedule info list from agent configuration and state
|
|
219
|
+
*/
|
|
220
|
+
private buildScheduleInfoList;
|
|
221
|
+
/**
|
|
222
|
+
* Compute fleet counts from agent info list
|
|
223
|
+
*/
|
|
224
|
+
private computeFleetCounts;
|
|
225
|
+
/**
|
|
226
|
+
* Get all schedules across all agents
|
|
227
|
+
*
|
|
228
|
+
* Returns a list of all configured schedules with their current state,
|
|
229
|
+
* including next trigger times.
|
|
230
|
+
*
|
|
231
|
+
* @returns Array of ScheduleInfo objects with current state
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```typescript
|
|
235
|
+
* const schedules = await manager.getSchedules();
|
|
236
|
+
* for (const schedule of schedules) {
|
|
237
|
+
* console.log(`${schedule.agentName}/${schedule.name}: ${schedule.status}`);
|
|
238
|
+
* console.log(` Next run: ${schedule.nextRunAt}`);
|
|
239
|
+
* }
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
getSchedules(): Promise<ScheduleInfo[]>;
|
|
243
|
+
/**
|
|
244
|
+
* Get a specific schedule by agent name and schedule name
|
|
245
|
+
*
|
|
246
|
+
* @param agentName - The name of the agent
|
|
247
|
+
* @param scheduleName - The name of the schedule
|
|
248
|
+
* @returns The schedule info with current state
|
|
249
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
250
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* const schedule = await manager.getSchedule('my-agent', 'hourly');
|
|
255
|
+
* console.log(`Status: ${schedule.status}`);
|
|
256
|
+
* console.log(`Last run: ${schedule.lastRunAt}`);
|
|
257
|
+
* console.log(`Next run: ${schedule.nextRunAt}`);
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
getSchedule(agentName: string, scheduleName: string): Promise<ScheduleInfo>;
|
|
261
|
+
/**
|
|
262
|
+
* Enable a disabled schedule
|
|
263
|
+
*
|
|
264
|
+
* Enables a schedule that was previously disabled, allowing it to trigger
|
|
265
|
+
* again on its configured interval. The enabled state is persisted to the
|
|
266
|
+
* state directory and survives restarts.
|
|
267
|
+
*
|
|
268
|
+
* @param agentName - The name of the agent
|
|
269
|
+
* @param scheduleName - The name of the schedule
|
|
270
|
+
* @returns The updated schedule info
|
|
271
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
272
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* ```typescript
|
|
276
|
+
* // Enable a previously disabled schedule
|
|
277
|
+
* const schedule = await manager.enableSchedule('my-agent', 'hourly');
|
|
278
|
+
* console.log(`Schedule status: ${schedule.status}`); // 'idle'
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
enableSchedule(agentName: string, scheduleName: string): Promise<ScheduleInfo>;
|
|
282
|
+
/**
|
|
283
|
+
* Disable a schedule
|
|
284
|
+
*
|
|
285
|
+
* Disables a schedule, preventing it from triggering on its configured
|
|
286
|
+
* interval. The schedule remains in the configuration but won't run until
|
|
287
|
+
* re-enabled. The disabled state is persisted to the state directory and
|
|
288
|
+
* survives restarts.
|
|
289
|
+
*
|
|
290
|
+
* @param agentName - The name of the agent
|
|
291
|
+
* @param scheduleName - The name of the schedule
|
|
292
|
+
* @returns The updated schedule info
|
|
293
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
294
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* ```typescript
|
|
298
|
+
* // Disable a schedule temporarily
|
|
299
|
+
* const schedule = await manager.disableSchedule('my-agent', 'hourly');
|
|
300
|
+
* console.log(`Schedule status: ${schedule.status}`); // 'disabled'
|
|
301
|
+
*
|
|
302
|
+
* // Later, re-enable it
|
|
303
|
+
* await manager.enableSchedule('my-agent', 'hourly');
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
disableSchedule(agentName: string, scheduleName: string): Promise<ScheduleInfo>;
|
|
307
|
+
/**
|
|
308
|
+
* Initialize the fleet manager
|
|
309
|
+
*
|
|
310
|
+
* This method:
|
|
311
|
+
* 1. Loads and validates the configuration file
|
|
312
|
+
* 2. Initializes the state directory structure
|
|
313
|
+
* 3. Prepares the scheduler (but does not start it)
|
|
314
|
+
*
|
|
315
|
+
* After initialization, the fleet manager is ready to start.
|
|
316
|
+
*
|
|
317
|
+
* @throws {FleetManagerStateError} If already initialized or running
|
|
318
|
+
* @throws {FleetManagerConfigError} If configuration is invalid or not found
|
|
319
|
+
* @throws {FleetManagerStateDirError} If state directory cannot be created
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* ```typescript
|
|
323
|
+
* const manager = new FleetManager({ ... });
|
|
324
|
+
* await manager.initialize();
|
|
325
|
+
* console.log(`Loaded ${manager.state.agentCount} agents`);
|
|
326
|
+
* ```
|
|
327
|
+
*/
|
|
328
|
+
initialize(): Promise<void>;
|
|
329
|
+
/**
|
|
330
|
+
* Start the fleet manager
|
|
331
|
+
*
|
|
332
|
+
* This begins the scheduler, which will:
|
|
333
|
+
* 1. Check agent schedules at the configured interval
|
|
334
|
+
* 2. Trigger agents when their schedules are due
|
|
335
|
+
* 3. Track schedule state in the state directory
|
|
336
|
+
*
|
|
337
|
+
* @throws {FleetManagerStateError} If not initialized
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```typescript
|
|
341
|
+
* await manager.initialize();
|
|
342
|
+
* await manager.start();
|
|
343
|
+
*
|
|
344
|
+
* // The manager is now running and processing schedules
|
|
345
|
+
* manager.on('schedule:trigger', (agent, schedule) => {
|
|
346
|
+
* console.log(`Triggered ${agent}/${schedule}`);
|
|
347
|
+
* });
|
|
348
|
+
* ```
|
|
349
|
+
*/
|
|
350
|
+
start(): Promise<void>;
|
|
351
|
+
/**
|
|
352
|
+
* Stop the fleet manager gracefully
|
|
353
|
+
*
|
|
354
|
+
* This will:
|
|
355
|
+
* 1. Signal the scheduler to stop accepting new triggers
|
|
356
|
+
* 2. Wait for running jobs to complete (with timeout)
|
|
357
|
+
* 3. If timeout is reached and cancelOnTimeout is true, cancel remaining jobs
|
|
358
|
+
* 4. Persist all state before shutdown completes
|
|
359
|
+
* 5. Emit 'stopped' event when complete
|
|
360
|
+
*
|
|
361
|
+
* @param options - Stop options for controlling shutdown behavior
|
|
362
|
+
* @throws {FleetManagerShutdownError} If shutdown times out and cancelOnTimeout is false
|
|
363
|
+
*
|
|
364
|
+
* @example
|
|
365
|
+
* ```typescript
|
|
366
|
+
* // Normal shutdown - wait for jobs with default 30s timeout
|
|
367
|
+
* await manager.stop();
|
|
368
|
+
*
|
|
369
|
+
* // Shutdown with custom timeout
|
|
370
|
+
* await manager.stop({ timeout: 60000 });
|
|
371
|
+
*
|
|
372
|
+
* // Shutdown without waiting for jobs (not recommended)
|
|
373
|
+
* await manager.stop({ waitForJobs: false });
|
|
374
|
+
*
|
|
375
|
+
* // Cancel jobs if they don't complete in time
|
|
376
|
+
* await manager.stop({
|
|
377
|
+
* timeout: 30000,
|
|
378
|
+
* cancelOnTimeout: true,
|
|
379
|
+
* cancelTimeout: 10000,
|
|
380
|
+
* });
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
383
|
+
stop(options?: FleetManagerStopOptions): Promise<void>;
|
|
384
|
+
/**
|
|
385
|
+
* Reload configuration without restarting the fleet
|
|
386
|
+
*
|
|
387
|
+
* This method provides hot configuration reload capability:
|
|
388
|
+
* 1. Loads and validates the new configuration
|
|
389
|
+
* 2. If validation fails, keeps the old configuration (fails gracefully)
|
|
390
|
+
* 3. Running jobs continue with their original configuration
|
|
391
|
+
* 4. New jobs will use the new configuration
|
|
392
|
+
* 5. Updates the scheduler with new agent definitions and schedules
|
|
393
|
+
* 6. Emits a 'config:reloaded' event with a list of changes
|
|
394
|
+
*
|
|
395
|
+
* @returns The reload result with change details
|
|
396
|
+
* @throws {InvalidStateError} If the fleet manager is not initialized
|
|
397
|
+
* @throws {FleetManagerConfigError} If the new configuration is invalid (re-thrown after logging)
|
|
398
|
+
*
|
|
399
|
+
* @example
|
|
400
|
+
* ```typescript
|
|
401
|
+
* // Reload configuration
|
|
402
|
+
* const result = await manager.reload();
|
|
403
|
+
* console.log(`Reloaded with ${result.changes.length} changes`);
|
|
404
|
+
*
|
|
405
|
+
* // Subscribe to reload events
|
|
406
|
+
* manager.on('config:reloaded', (payload) => {
|
|
407
|
+
* console.log(`Config reloaded: ${payload.changes.length} changes`);
|
|
408
|
+
* for (const change of payload.changes) {
|
|
409
|
+
* console.log(` ${change.type} ${change.category}: ${change.name}`);
|
|
410
|
+
* }
|
|
411
|
+
* });
|
|
412
|
+
* ```
|
|
413
|
+
*/
|
|
414
|
+
reload(): Promise<ConfigReloadedPayload>;
|
|
415
|
+
/**
|
|
416
|
+
* Compute the list of changes between old and new configuration
|
|
417
|
+
*/
|
|
418
|
+
private computeConfigChanges;
|
|
419
|
+
/**
|
|
420
|
+
* Check if an agent configuration has been modified
|
|
421
|
+
* Returns a description of what changed, or null if not modified
|
|
422
|
+
*/
|
|
423
|
+
private isAgentModified;
|
|
424
|
+
/**
|
|
425
|
+
* Check if a schedule configuration has been modified
|
|
426
|
+
*/
|
|
427
|
+
private isScheduleModified;
|
|
428
|
+
/**
|
|
429
|
+
* Get a description of what changed in a schedule
|
|
430
|
+
*/
|
|
431
|
+
private getScheduleModificationDetails;
|
|
432
|
+
/**
|
|
433
|
+
* Cancel all running jobs during shutdown
|
|
434
|
+
*
|
|
435
|
+
* @param cancelTimeout - Timeout for each job cancellation
|
|
436
|
+
*/
|
|
437
|
+
private cancelRunningJobs;
|
|
438
|
+
/**
|
|
439
|
+
* Persist shutdown state to ensure all state is saved before completing
|
|
440
|
+
*/
|
|
441
|
+
private persistShutdownState;
|
|
442
|
+
/**
|
|
443
|
+
* Manually trigger an agent outside its normal schedule
|
|
444
|
+
*
|
|
445
|
+
* This method allows you to trigger an agent on-demand for testing or
|
|
446
|
+
* handling urgent situations. You can optionally specify a schedule to use
|
|
447
|
+
* for configuration (prompt, work source, etc.) or pass runtime options
|
|
448
|
+
* to override defaults.
|
|
449
|
+
*
|
|
450
|
+
* @param agentName - Name of the agent to trigger
|
|
451
|
+
* @param scheduleName - Optional schedule name to use for configuration
|
|
452
|
+
* @param options - Optional runtime options to override defaults
|
|
453
|
+
* @returns The created job information
|
|
454
|
+
* @throws {InvalidStateError} If the fleet manager is not initialized
|
|
455
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
456
|
+
* @throws {ScheduleNotFoundError} If the specified schedule doesn't exist
|
|
457
|
+
* @throws {ConcurrencyLimitError} If the agent is at capacity and bypassConcurrencyLimit is false
|
|
458
|
+
*
|
|
459
|
+
* @example
|
|
460
|
+
* ```typescript
|
|
461
|
+
* // Trigger with agent defaults
|
|
462
|
+
* const job = await manager.trigger('my-agent');
|
|
463
|
+
*
|
|
464
|
+
* // Trigger a specific schedule
|
|
465
|
+
* const job = await manager.trigger('my-agent', 'hourly');
|
|
466
|
+
*
|
|
467
|
+
* // Trigger with custom prompt
|
|
468
|
+
* const job = await manager.trigger('my-agent', undefined, {
|
|
469
|
+
* prompt: 'Review the latest security updates',
|
|
470
|
+
* });
|
|
471
|
+
*
|
|
472
|
+
* // Force trigger even at capacity
|
|
473
|
+
* const job = await manager.trigger('my-agent', undefined, {
|
|
474
|
+
* bypassConcurrencyLimit: true,
|
|
475
|
+
* });
|
|
476
|
+
* ```
|
|
477
|
+
*/
|
|
478
|
+
trigger(agentName: string, scheduleName?: string, options?: TriggerOptions): Promise<TriggerResult>;
|
|
479
|
+
/**
|
|
480
|
+
* Cancel a running job gracefully
|
|
481
|
+
*
|
|
482
|
+
* This method cancels a running job by first sending SIGTERM to allow
|
|
483
|
+
* graceful shutdown. If the job doesn't terminate within the timeout,
|
|
484
|
+
* it will be forcefully killed with SIGKILL.
|
|
485
|
+
*
|
|
486
|
+
* @param jobId - ID of the job to cancel
|
|
487
|
+
* @param options - Optional cancellation options
|
|
488
|
+
* @param options.timeout - Time in ms to wait for graceful shutdown (default: 10000)
|
|
489
|
+
* @returns Result of the cancellation operation
|
|
490
|
+
* @throws {InvalidStateError} If the fleet manager is not initialized
|
|
491
|
+
* @throws {JobNotFoundError} If the job doesn't exist
|
|
492
|
+
*
|
|
493
|
+
* @example
|
|
494
|
+
* ```typescript
|
|
495
|
+
* // Cancel with default timeout
|
|
496
|
+
* const result = await manager.cancelJob('job-2024-01-15-abc123');
|
|
497
|
+
* console.log(`Job cancelled: ${result.terminationType}`);
|
|
498
|
+
*
|
|
499
|
+
* // Cancel with custom timeout
|
|
500
|
+
* const result = await manager.cancelJob('job-2024-01-15-abc123', {
|
|
501
|
+
* timeout: 30000, // 30 seconds
|
|
502
|
+
* });
|
|
503
|
+
* ```
|
|
504
|
+
*/
|
|
505
|
+
cancelJob(jobId: string, options?: {
|
|
506
|
+
timeout?: number;
|
|
507
|
+
}): Promise<CancelJobResult>;
|
|
508
|
+
/**
|
|
509
|
+
* Fork a job to create a new job based on an existing one
|
|
510
|
+
*
|
|
511
|
+
* This method creates a new job that is based on an existing job's
|
|
512
|
+
* configuration. The new job will have the same agent and can optionally
|
|
513
|
+
* have modifications applied (different prompt, schedule, etc.).
|
|
514
|
+
*
|
|
515
|
+
* If the original job has a session ID, the new job will fork from that
|
|
516
|
+
* session, preserving conversation context.
|
|
517
|
+
*
|
|
518
|
+
* @param jobId - ID of the job to fork
|
|
519
|
+
* @param modifications - Optional modifications to apply to the forked job
|
|
520
|
+
* @returns Result of the fork operation including the new job ID
|
|
521
|
+
* @throws {InvalidStateError} If the fleet manager is not initialized
|
|
522
|
+
* @throws {JobNotFoundError} If the original job doesn't exist
|
|
523
|
+
* @throws {JobForkError} If the job cannot be forked (e.g., no session)
|
|
524
|
+
*
|
|
525
|
+
* @example
|
|
526
|
+
* ```typescript
|
|
527
|
+
* // Fork with same configuration
|
|
528
|
+
* const result = await manager.forkJob('job-2024-01-15-abc123');
|
|
529
|
+
* console.log(`Forked to: ${result.jobId}`);
|
|
530
|
+
*
|
|
531
|
+
* // Fork with modified prompt
|
|
532
|
+
* const result = await manager.forkJob('job-2024-01-15-abc123', {
|
|
533
|
+
* prompt: 'Continue the previous task but focus on testing',
|
|
534
|
+
* });
|
|
535
|
+
*
|
|
536
|
+
* // Fork with different schedule
|
|
537
|
+
* const result = await manager.forkJob('job-2024-01-15-abc123', {
|
|
538
|
+
* schedule: 'nightly',
|
|
539
|
+
* });
|
|
540
|
+
* ```
|
|
541
|
+
*/
|
|
542
|
+
forkJob(jobId: string, modifications?: JobModifications): Promise<ForkJobResult>;
|
|
543
|
+
/**
|
|
544
|
+
* Stream all fleet logs as an async iterable
|
|
545
|
+
*
|
|
546
|
+
* Provides a unified stream of logs from all sources in the fleet including
|
|
547
|
+
* agents, jobs, and the scheduler. Logs can be filtered by level and optionally
|
|
548
|
+
* by agent or job.
|
|
549
|
+
*
|
|
550
|
+
* For completed jobs, this will replay their history (if includeHistory is true)
|
|
551
|
+
* before streaming new logs from running jobs.
|
|
552
|
+
*
|
|
553
|
+
* @param options - Options for filtering and configuring the stream
|
|
554
|
+
* @returns An async iterable of LogEntry objects
|
|
555
|
+
*
|
|
556
|
+
* @example
|
|
557
|
+
* ```typescript
|
|
558
|
+
* // Stream all info+ logs
|
|
559
|
+
* for await (const log of manager.streamLogs()) {
|
|
560
|
+
* console.log(`[${log.level}] ${log.message}`);
|
|
561
|
+
* }
|
|
562
|
+
*
|
|
563
|
+
* // Stream only errors for a specific agent
|
|
564
|
+
* for await (const log of manager.streamLogs({
|
|
565
|
+
* level: 'error',
|
|
566
|
+
* agentName: 'my-agent',
|
|
567
|
+
* })) {
|
|
568
|
+
* console.error(log.message);
|
|
569
|
+
* }
|
|
570
|
+
* ```
|
|
571
|
+
*/
|
|
572
|
+
streamLogs(options?: LogStreamOptions): AsyncIterable<LogEntry>;
|
|
573
|
+
/**
|
|
574
|
+
* Stream output from a specific job as an async iterable
|
|
575
|
+
*
|
|
576
|
+
* Provides a stream of log entries for a specific job. For completed jobs,
|
|
577
|
+
* this will replay the job's history and then complete. For running jobs,
|
|
578
|
+
* it will continue streaming until the job completes.
|
|
579
|
+
*
|
|
580
|
+
* @param jobId - The ID of the job to stream output from
|
|
581
|
+
* @returns An async iterable of LogEntry objects
|
|
582
|
+
* @throws {JobNotFoundError} If the job doesn't exist
|
|
583
|
+
*
|
|
584
|
+
* @example
|
|
585
|
+
* ```typescript
|
|
586
|
+
* // Stream job output
|
|
587
|
+
* for await (const log of manager.streamJobOutput('job-2024-01-15-abc123')) {
|
|
588
|
+
* console.log(`[${log.level}] ${log.message}`);
|
|
589
|
+
* }
|
|
590
|
+
* ```
|
|
591
|
+
*/
|
|
592
|
+
streamJobOutput(jobId: string): AsyncIterable<LogEntry>;
|
|
593
|
+
/**
|
|
594
|
+
* Stream logs for a specific agent as an async iterable
|
|
595
|
+
*
|
|
596
|
+
* Provides a stream of log entries for all jobs belonging to a specific agent.
|
|
597
|
+
* For completed jobs, this will replay their history. For running jobs, it
|
|
598
|
+
* will continue streaming until the iterator is stopped.
|
|
599
|
+
*
|
|
600
|
+
* @param agentName - The name of the agent to stream logs for
|
|
601
|
+
* @returns An async iterable of LogEntry objects
|
|
602
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist in the configuration
|
|
603
|
+
*
|
|
604
|
+
* @example
|
|
605
|
+
* ```typescript
|
|
606
|
+
* // Stream all logs for an agent
|
|
607
|
+
* for await (const log of manager.streamAgentLogs('my-agent')) {
|
|
608
|
+
* console.log(`[${log.jobId}] ${log.message}`);
|
|
609
|
+
* }
|
|
610
|
+
* ```
|
|
611
|
+
*/
|
|
612
|
+
streamAgentLogs(agentName: string): AsyncIterable<LogEntry>;
|
|
613
|
+
/**
|
|
614
|
+
* Convert a job output message to a LogEntry
|
|
615
|
+
*/
|
|
616
|
+
private jobOutputToLogEntry;
|
|
617
|
+
/**
|
|
618
|
+
* Determine if a log entry should be yielded based on filters
|
|
619
|
+
*/
|
|
620
|
+
private shouldYieldLog;
|
|
621
|
+
/**
|
|
622
|
+
* Load configuration with proper error handling
|
|
623
|
+
*/
|
|
624
|
+
private loadConfiguration;
|
|
625
|
+
/**
|
|
626
|
+
* Initialize state directory with proper error handling
|
|
627
|
+
*/
|
|
628
|
+
private initializeStateDir;
|
|
629
|
+
/**
|
|
630
|
+
* Start the scheduler asynchronously (don't block on the loop)
|
|
631
|
+
*/
|
|
632
|
+
private startSchedulerAsync;
|
|
633
|
+
/**
|
|
634
|
+
* Handle schedule trigger callback from scheduler
|
|
635
|
+
*/
|
|
636
|
+
private handleScheduleTrigger;
|
|
637
|
+
/**
|
|
638
|
+
* Emit a config:reloaded event
|
|
639
|
+
*
|
|
640
|
+
* Called when configuration is hot-reloaded.
|
|
641
|
+
*/
|
|
642
|
+
emitConfigReloaded(payload: ConfigReloadedPayload): void;
|
|
643
|
+
/**
|
|
644
|
+
* Emit an agent:started event
|
|
645
|
+
*
|
|
646
|
+
* Called when an agent is started/registered with the fleet.
|
|
647
|
+
*/
|
|
648
|
+
emitAgentStarted(payload: AgentStartedPayload): void;
|
|
649
|
+
/**
|
|
650
|
+
* Emit an agent:stopped event
|
|
651
|
+
*
|
|
652
|
+
* Called when an agent is stopped/unregistered from the fleet.
|
|
653
|
+
*/
|
|
654
|
+
emitAgentStopped(payload: AgentStoppedPayload): void;
|
|
655
|
+
/**
|
|
656
|
+
* Emit a schedule:skipped event
|
|
657
|
+
*
|
|
658
|
+
* Called when a schedule check is skipped (already running, disabled, etc.).
|
|
659
|
+
*/
|
|
660
|
+
emitScheduleSkipped(payload: ScheduleSkippedPayload): void;
|
|
661
|
+
/**
|
|
662
|
+
* Emit a job:created event
|
|
663
|
+
*
|
|
664
|
+
* Called when a new job is created.
|
|
665
|
+
*/
|
|
666
|
+
emitJobCreated(payload: JobCreatedPayload): void;
|
|
667
|
+
/**
|
|
668
|
+
* Emit a job:output event
|
|
669
|
+
*
|
|
670
|
+
* Called when a job produces output during execution.
|
|
671
|
+
* This enables real-time streaming of output to UIs.
|
|
672
|
+
*/
|
|
673
|
+
emitJobOutput(payload: JobOutputPayload): void;
|
|
674
|
+
/**
|
|
675
|
+
* Emit a job:completed event
|
|
676
|
+
*
|
|
677
|
+
* Called when a job completes successfully.
|
|
678
|
+
*/
|
|
679
|
+
emitJobCompleted(payload: JobCompletedPayload): void;
|
|
680
|
+
/**
|
|
681
|
+
* Emit a job:failed event
|
|
682
|
+
*
|
|
683
|
+
* Called when a job fails.
|
|
684
|
+
*/
|
|
685
|
+
emitJobFailed(payload: JobFailedPayload): void;
|
|
686
|
+
/**
|
|
687
|
+
* Emit a job:cancelled event (US-6)
|
|
688
|
+
*
|
|
689
|
+
* Called when a job is cancelled.
|
|
690
|
+
*/
|
|
691
|
+
emitJobCancelled(payload: JobCancelledPayload): void;
|
|
692
|
+
/**
|
|
693
|
+
* Emit a job:forked event (US-6)
|
|
694
|
+
*
|
|
695
|
+
* Called when a job is forked to create a new job.
|
|
696
|
+
*/
|
|
697
|
+
emitJobForked(payload: JobForkedPayload): void;
|
|
698
|
+
}
|
|
699
|
+
//# sourceMappingURL=fleet-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-manager.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/fleet-manager.ts"],"names":[],"mappings":"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"}
|