@action-llama/action-llama 0.15.0 → 0.17.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/dist/agents/container-runner.d.ts +1 -1
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/runner.d.ts +0 -4
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +0 -10
- package/dist/agents/runner.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/agent.d.ts.map +1 -1
- package/dist/cli/commands/agent.js +0 -46
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +128 -14
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/new.d.ts +7 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +54 -23
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +1 -0
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/webhook.d.ts +11 -0
- package/dist/cli/commands/webhook.d.ts.map +1 -0
- package/dist/cli/commands/webhook.js +271 -0
- package/dist/cli/commands/webhook.js.map +1 -0
- package/dist/cli/main.js +22 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/{gateway → control}/api-key.d.ts.map +1 -1
- package/dist/{gateway → control}/api-key.js.map +1 -1
- package/dist/{gateway → control}/auth.d.ts.map +1 -1
- package/dist/{gateway → control}/auth.js.map +1 -1
- package/dist/control/index.d.ts +11 -0
- package/dist/control/index.d.ts.map +1 -0
- package/dist/control/index.js +8 -0
- package/dist/control/index.js.map +1 -0
- package/dist/{gateway → control}/routes/control.d.ts.map +1 -1
- package/dist/{gateway → control}/routes/control.js.map +1 -1
- package/dist/{gateway → control}/routes/dashboard.d.ts.map +1 -1
- package/dist/{gateway → control}/routes/dashboard.js +68 -35
- package/dist/control/routes/dashboard.js.map +1 -0
- package/dist/{gateway → control}/routes/logs.d.ts.map +1 -1
- package/dist/{gateway → control}/routes/logs.js.map +1 -1
- package/dist/{gateway → control}/routes/stats.d.ts.map +1 -1
- package/dist/{gateway → control}/routes/stats.js +13 -0
- package/dist/control/routes/stats.js.map +1 -0
- package/dist/{gateway → control}/session-store.d.ts.map +1 -1
- package/dist/{gateway → control}/session-store.js.map +1 -1
- package/dist/control/types.d.ts +6 -0
- package/dist/control/types.d.ts.map +1 -0
- package/dist/{gateway → control}/types.js.map +1 -1
- package/dist/{gateway → control}/views/agent-detail-page.d.ts +2 -2
- package/dist/control/views/agent-detail-page.d.ts.map +1 -0
- package/dist/{gateway → control}/views/agent-detail-page.js +137 -52
- package/dist/control/views/agent-detail-page.js.map +1 -0
- package/dist/control/views/agent-skill-page.d.ts +2 -0
- package/dist/control/views/agent-skill-page.d.ts.map +1 -0
- package/dist/control/views/agent-skill-page.js +32 -0
- package/dist/control/views/agent-skill-page.js.map +1 -0
- package/dist/control/views/dashboard-page.d.ts +4 -0
- package/dist/control/views/dashboard-page.d.ts.map +1 -0
- package/dist/{gateway → control}/views/dashboard-page.js +65 -1
- package/dist/{gateway → control}/views/dashboard-page.js.map +1 -1
- package/dist/{gateway → control}/views/instance-detail-page.d.ts +9 -0
- package/dist/{gateway → control}/views/instance-detail-page.d.ts.map +1 -1
- package/dist/{gateway → control}/views/instance-detail-page.js +28 -1
- package/dist/control/views/instance-detail-page.js.map +1 -0
- package/dist/{gateway → control}/views/layout.d.ts.map +1 -1
- package/dist/{gateway → control}/views/layout.js.map +1 -1
- package/dist/{gateway → control}/views/login-page.d.ts.map +1 -1
- package/dist/{gateway → control}/views/login-page.js.map +1 -1
- package/dist/control/views/markdown.d.ts +6 -0
- package/dist/control/views/markdown.d.ts.map +1 -0
- package/dist/control/views/markdown.js +119 -0
- package/dist/control/views/markdown.js.map +1 -0
- package/dist/{gateway → control}/views/project-config-page.d.ts +0 -4
- package/dist/control/views/project-config-page.d.ts.map +1 -0
- package/dist/{gateway → control}/views/project-config-page.js +0 -82
- package/dist/control/views/project-config-page.js.map +1 -0
- package/dist/control/views/trigger-history-page.d.ts +10 -0
- package/dist/control/views/trigger-history-page.d.ts.map +1 -0
- package/dist/control/views/trigger-history-page.js +89 -0
- package/dist/control/views/trigger-history-page.js.map +1 -0
- package/dist/credentials/providers/file.d.ts +13 -0
- package/dist/credentials/providers/file.d.ts.map +1 -0
- package/dist/credentials/providers/file.js +34 -0
- package/dist/credentials/providers/file.js.map +1 -0
- package/dist/credentials/providers/index.d.ts +13 -0
- package/dist/credentials/providers/index.d.ts.map +1 -0
- package/dist/credentials/providers/index.js +70 -0
- package/dist/credentials/providers/index.js.map +1 -0
- package/dist/credentials/providers/vault.d.ts +19 -0
- package/dist/credentials/providers/vault.d.ts.map +1 -0
- package/dist/credentials/providers/vault.js +94 -0
- package/dist/credentials/providers/vault.js.map +1 -0
- package/dist/docker/local-runtime.d.ts.map +1 -1
- package/dist/docker/local-runtime.js +36 -7
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/providers/index.d.ts +13 -0
- package/dist/docker/providers/index.d.ts.map +1 -0
- package/dist/docker/providers/index.js +74 -0
- package/dist/docker/providers/index.js.map +1 -0
- package/dist/docker/runtime.d.ts +4 -0
- package/dist/docker/runtime.d.ts.map +1 -1
- package/dist/{scheduler → events}/cron-setup.d.ts +7 -12
- package/dist/events/cron-setup.d.ts.map +1 -0
- package/dist/{scheduler → events}/cron-setup.js +4 -33
- package/dist/events/cron-setup.js.map +1 -0
- package/dist/events/event-queue-sqlite.d.ts.map +1 -0
- package/dist/events/event-queue-sqlite.js.map +1 -0
- package/dist/events/event-queue-unified.d.ts +50 -0
- package/dist/events/event-queue-unified.d.ts.map +1 -0
- package/dist/events/event-queue-unified.js +280 -0
- package/dist/events/event-queue-unified.js.map +1 -0
- package/dist/{scheduler → events}/event-queue.d.ts +2 -16
- package/dist/events/event-queue.d.ts.map +1 -0
- package/dist/events/event-queue.js.map +1 -0
- package/dist/events/index.d.ts +9 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +5 -0
- package/dist/events/index.js.map +1 -0
- package/dist/{gateway → events}/routes/webhooks.d.ts +3 -1
- package/dist/events/routes/webhooks.d.ts.map +1 -0
- package/dist/events/routes/webhooks.js +201 -0
- package/dist/events/routes/webhooks.js.map +1 -0
- package/dist/{scheduler → events}/webhook-setup.d.ts +9 -6
- package/dist/events/webhook-setup.d.ts.map +1 -0
- package/dist/{scheduler → events}/webhook-setup.js +16 -26
- package/dist/events/webhook-setup.js.map +1 -0
- package/dist/{scheduler → execution}/call-dispatcher.d.ts.map +1 -1
- package/dist/{scheduler → execution}/call-dispatcher.js.map +1 -1
- package/dist/execution/call-store.d.ts.map +1 -0
- package/dist/execution/call-store.js.map +1 -0
- package/dist/execution/container-registry.d.ts.map +1 -0
- package/dist/execution/container-registry.js.map +1 -0
- package/dist/{scheduler → execution}/execution.d.ts +6 -4
- package/dist/execution/execution.d.ts.map +1 -0
- package/dist/{scheduler → execution}/execution.js +49 -8
- package/dist/execution/execution.js.map +1 -0
- package/dist/{scheduler → execution}/image-builder.d.ts +1 -1
- package/dist/execution/image-builder.d.ts.map +1 -0
- package/dist/{scheduler → execution}/image-builder.js +2 -0
- package/dist/execution/image-builder.js.map +1 -0
- package/dist/execution/index.d.ts +21 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +14 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/lifecycle/agent-lifecycle.d.ts +114 -0
- package/dist/execution/lifecycle/agent-lifecycle.d.ts.map +1 -0
- package/dist/execution/lifecycle/agent-lifecycle.js +236 -0
- package/dist/execution/lifecycle/agent-lifecycle.js.map +1 -0
- package/dist/execution/lifecycle/index.d.ts +60 -0
- package/dist/execution/lifecycle/index.d.ts.map +1 -0
- package/dist/execution/lifecycle/index.js +103 -0
- package/dist/execution/lifecycle/index.js.map +1 -0
- package/dist/execution/lifecycle/instance-lifecycle.d.ts +88 -0
- package/dist/execution/lifecycle/instance-lifecycle.d.ts.map +1 -0
- package/dist/execution/lifecycle/instance-lifecycle.js +142 -0
- package/dist/execution/lifecycle/instance-lifecycle.js.map +1 -0
- package/dist/execution/lock-store.d.ts.map +1 -0
- package/dist/execution/lock-store.js.map +1 -0
- package/dist/execution/routes/calls.d.ts.map +1 -0
- package/dist/execution/routes/calls.js.map +1 -0
- package/dist/execution/routes/locks.d.ts.map +1 -0
- package/dist/execution/routes/locks.js.map +1 -0
- package/dist/execution/routes/shutdown.d.ts.map +1 -0
- package/dist/execution/routes/shutdown.js.map +1 -0
- package/dist/execution/routes/signals.d.ts.map +1 -0
- package/dist/execution/routes/signals.js.map +1 -0
- package/dist/{scheduler → execution}/runner-pool.d.ts.map +1 -1
- package/dist/{scheduler → execution}/runner-pool.js.map +1 -1
- package/dist/{scheduler → execution}/runner-setup.d.ts +1 -1
- package/dist/execution/runner-setup.d.ts.map +1 -0
- package/dist/{scheduler → execution}/runner-setup.js.map +1 -1
- package/dist/{scheduler → execution}/runtime-factory.d.ts +1 -1
- package/dist/{scheduler → execution}/runtime-factory.d.ts.map +1 -1
- package/dist/execution/runtime-factory.js +46 -0
- package/dist/execution/runtime-factory.js.map +1 -0
- package/dist/{gateway → execution}/types.d.ts +0 -5
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +2 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/extensions/index.d.ts +4 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +5 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/loader.d.ts +15 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +116 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/extensions/registry.d.ts +32 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +123 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +74 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +2 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/gateway/index.d.ts +10 -8
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +16 -15
- package/dist/gateway/index.js.map +1 -1
- package/dist/models/providers/anthropic.d.ts +17 -0
- package/dist/models/providers/anthropic.d.ts.map +1 -0
- package/dist/models/providers/anthropic.js +74 -0
- package/dist/models/providers/anthropic.js.map +1 -0
- package/dist/models/providers/custom.d.ts +18 -0
- package/dist/models/providers/custom.d.ts.map +1 -0
- package/dist/models/providers/custom.js +104 -0
- package/dist/models/providers/custom.js.map +1 -0
- package/dist/models/providers/index.d.ts +17 -0
- package/dist/models/providers/index.d.ts.map +1 -0
- package/dist/models/providers/index.js +107 -0
- package/dist/models/providers/index.js.map +1 -0
- package/dist/models/providers/openai.d.ts +18 -0
- package/dist/models/providers/openai.d.ts.map +1 -0
- package/dist/models/providers/openai.js +94 -0
- package/dist/models/providers/openai.js.map +1 -0
- package/dist/models/types.d.ts +51 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +5 -0
- package/dist/models/types.js.map +1 -0
- package/dist/remote/push.d.ts.map +1 -1
- package/dist/remote/push.js +35 -5
- package/dist/remote/push.js.map +1 -1
- package/dist/scheduler/gateway-setup.d.ts +2 -1
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +7 -6
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.d.ts +3 -3
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +62 -92
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/shutdown.d.ts +1 -1
- package/dist/scheduler/shutdown.d.ts.map +1 -1
- package/dist/scheduler/state.d.ts +2 -2
- package/dist/scheduler/state.d.ts.map +1 -1
- package/dist/scheduler/types.d.ts +2 -0
- package/dist/scheduler/types.d.ts.map +1 -1
- package/dist/scheduler/validation.js +2 -2
- package/dist/scheduler/validation.js.map +1 -1
- package/dist/scheduler/watcher.d.ts +2 -2
- package/dist/scheduler/watcher.d.ts.map +1 -1
- package/dist/scheduler/watcher.js +36 -10
- package/dist/scheduler/watcher.js.map +1 -1
- package/dist/shared/config.d.ts +12 -13
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +59 -25
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/constants.d.ts +8 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +8 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/environment.d.ts +7 -0
- package/dist/shared/environment.d.ts.map +1 -1
- package/dist/shared/environment.js +29 -0
- package/dist/shared/environment.js.map +1 -1
- package/dist/shared/persistence/adapters/state-store.d.ts +24 -0
- package/dist/shared/persistence/adapters/state-store.d.ts.map +1 -0
- package/dist/shared/persistence/adapters/state-store.js +32 -0
- package/dist/shared/persistence/adapters/state-store.js.map +1 -0
- package/dist/shared/persistence/adapters/stats-store.d.ts +49 -0
- package/dist/shared/persistence/adapters/stats-store.d.ts.map +1 -0
- package/dist/shared/persistence/adapters/stats-store.js +213 -0
- package/dist/shared/persistence/adapters/stats-store.js.map +1 -0
- package/dist/shared/persistence/backends/memory.d.ts +39 -0
- package/dist/shared/persistence/backends/memory.d.ts.map +1 -0
- package/dist/shared/persistence/backends/memory.js +214 -0
- package/dist/shared/persistence/backends/memory.js.map +1 -0
- package/dist/shared/persistence/backends/sqlite.d.ts +38 -0
- package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -0
- package/dist/shared/persistence/backends/sqlite.js +250 -0
- package/dist/shared/persistence/backends/sqlite.js.map +1 -0
- package/dist/shared/persistence/event-store.d.ts +77 -0
- package/dist/shared/persistence/event-store.d.ts.map +1 -0
- package/dist/shared/persistence/event-store.js +139 -0
- package/dist/shared/persistence/event-store.js.map +1 -0
- package/dist/shared/persistence/index.d.ts +119 -0
- package/dist/shared/persistence/index.d.ts.map +1 -0
- package/dist/shared/persistence/index.js +93 -0
- package/dist/shared/persistence/index.js.map +1 -0
- package/dist/shared/persistence/migration.d.ts +47 -0
- package/dist/shared/persistence/migration.d.ts.map +1 -0
- package/dist/shared/persistence/migration.js +297 -0
- package/dist/shared/persistence/migration.js.map +1 -0
- package/dist/shared/validation.d.ts +54 -0
- package/dist/shared/validation.d.ts.map +1 -0
- package/dist/shared/validation.js +231 -0
- package/dist/shared/validation.js.map +1 -0
- package/dist/shared/work-queue.d.ts +17 -0
- package/dist/shared/work-queue.d.ts.map +1 -0
- package/dist/shared/work-queue.js +2 -0
- package/dist/shared/work-queue.js.map +1 -0
- package/dist/stats/event-store.d.ts +37 -0
- package/dist/stats/event-store.d.ts.map +1 -0
- package/dist/stats/event-store.js +366 -0
- package/dist/stats/event-store.js.map +1 -0
- package/dist/stats/index.d.ts +1 -1
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/store.d.ts +45 -0
- package/dist/stats/store.d.ts.map +1 -1
- package/dist/stats/store.js +118 -2
- package/dist/stats/store.js.map +1 -1
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +7 -9
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/providers/index.d.ts +5 -0
- package/dist/telemetry/providers/index.d.ts.map +1 -0
- package/dist/telemetry/providers/index.js +5 -0
- package/dist/telemetry/providers/index.js.map +1 -0
- package/dist/telemetry/providers/otel.d.ts +5 -0
- package/dist/telemetry/providers/otel.d.ts.map +1 -1
- package/dist/telemetry/providers/otel.js +45 -0
- package/dist/telemetry/providers/otel.js.map +1 -1
- package/dist/tui/App.js +2 -2
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/status-tracker.d.ts +19 -0
- package/dist/tui/status-tracker.d.ts.map +1 -1
- package/dist/tui/status-tracker.js +96 -1
- package/dist/tui/status-tracker.js.map +1 -1
- package/dist/webhooks/providers/github.d.ts +2 -1
- package/dist/webhooks/providers/github.d.ts.map +1 -1
- package/dist/webhooks/providers/github.js +5 -2
- package/dist/webhooks/providers/github.js.map +1 -1
- package/dist/webhooks/providers/index.d.ts +25 -0
- package/dist/webhooks/providers/index.d.ts.map +1 -0
- package/dist/webhooks/providers/index.js +144 -0
- package/dist/webhooks/providers/index.js.map +1 -0
- package/dist/webhooks/providers/linear.d.ts +1 -1
- package/dist/webhooks/providers/linear.d.ts.map +1 -1
- package/dist/webhooks/providers/linear.js +2 -2
- package/dist/webhooks/providers/linear.js.map +1 -1
- package/dist/webhooks/providers/mintlify.d.ts +1 -1
- package/dist/webhooks/providers/mintlify.d.ts.map +1 -1
- package/dist/webhooks/providers/mintlify.js +2 -2
- package/dist/webhooks/providers/mintlify.js.map +1 -1
- package/dist/webhooks/providers/sentry.d.ts +1 -1
- package/dist/webhooks/providers/sentry.d.ts.map +1 -1
- package/dist/webhooks/providers/sentry.js +2 -2
- package/dist/webhooks/providers/sentry.js.map +1 -1
- package/dist/webhooks/providers/test.d.ts +1 -1
- package/dist/webhooks/providers/test.d.ts.map +1 -1
- package/dist/webhooks/providers/test.js +1 -1
- package/dist/webhooks/providers/test.js.map +1 -1
- package/dist/webhooks/registry.d.ts +8 -2
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/registry.js +159 -3
- package/dist/webhooks/registry.js.map +1 -1
- package/dist/webhooks/types.d.ts +30 -1
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/webhooks/validation.d.ts +7 -6
- package/dist/webhooks/validation.d.ts.map +1 -1
- package/dist/webhooks/validation.js +11 -9
- package/dist/webhooks/validation.js.map +1 -1
- package/package.json +1 -1
- package/dist/agents/feedback-monitor.d.ts +0 -56
- package/dist/agents/feedback-monitor.d.ts.map +0 -1
- package/dist/agents/feedback-monitor.js +0 -176
- package/dist/agents/feedback-monitor.js.map +0 -1
- package/dist/agents/feedback-runner.d.ts +0 -28
- package/dist/agents/feedback-runner.d.ts.map +0 -1
- package/dist/agents/feedback-runner.js +0 -138
- package/dist/agents/feedback-runner.js.map +0 -1
- package/dist/gateway/call-store.d.ts.map +0 -1
- package/dist/gateway/call-store.js.map +0 -1
- package/dist/gateway/container-registry.d.ts.map +0 -1
- package/dist/gateway/container-registry.js.map +0 -1
- package/dist/gateway/lock-store.d.ts.map +0 -1
- package/dist/gateway/lock-store.js.map +0 -1
- package/dist/gateway/routes/calls.d.ts.map +0 -1
- package/dist/gateway/routes/calls.js.map +0 -1
- package/dist/gateway/routes/dashboard.js.map +0 -1
- package/dist/gateway/routes/locks.d.ts.map +0 -1
- package/dist/gateway/routes/locks.js.map +0 -1
- package/dist/gateway/routes/shutdown.d.ts.map +0 -1
- package/dist/gateway/routes/shutdown.js.map +0 -1
- package/dist/gateway/routes/signals.d.ts.map +0 -1
- package/dist/gateway/routes/signals.js.map +0 -1
- package/dist/gateway/routes/stats.js.map +0 -1
- package/dist/gateway/routes/webhooks.d.ts.map +0 -1
- package/dist/gateway/routes/webhooks.js +0 -64
- package/dist/gateway/routes/webhooks.js.map +0 -1
- package/dist/gateway/types.d.ts.map +0 -1
- package/dist/gateway/views/agent-detail-page.d.ts.map +0 -1
- package/dist/gateway/views/agent-detail-page.js.map +0 -1
- package/dist/gateway/views/dashboard-page.d.ts +0 -3
- package/dist/gateway/views/dashboard-page.d.ts.map +0 -1
- package/dist/gateway/views/instance-detail-page.js.map +0 -1
- package/dist/gateway/views/project-config-page.d.ts.map +0 -1
- package/dist/gateway/views/project-config-page.js.map +0 -1
- package/dist/scheduler/cron-setup.d.ts.map +0 -1
- package/dist/scheduler/cron-setup.js.map +0 -1
- package/dist/scheduler/event-queue-sqlite.d.ts.map +0 -1
- package/dist/scheduler/event-queue-sqlite.js.map +0 -1
- package/dist/scheduler/event-queue.d.ts.map +0 -1
- package/dist/scheduler/event-queue.js.map +0 -1
- package/dist/scheduler/execution.d.ts.map +0 -1
- package/dist/scheduler/execution.js.map +0 -1
- package/dist/scheduler/image-builder.d.ts.map +0 -1
- package/dist/scheduler/image-builder.js.map +0 -1
- package/dist/scheduler/runner-setup.d.ts.map +0 -1
- package/dist/scheduler/runtime-factory.js +0 -37
- package/dist/scheduler/runtime-factory.js.map +0 -1
- package/dist/scheduler/webhook-setup.d.ts.map +0 -1
- package/dist/scheduler/webhook-setup.js.map +0 -1
- package/dist/shared/default-feedback-agent.d.ts +0 -10
- package/dist/shared/default-feedback-agent.d.ts.map +0 -1
- package/dist/shared/default-feedback-agent.js +0 -114
- package/dist/shared/default-feedback-agent.js.map +0 -1
- /package/dist/{gateway → control}/api-key.d.ts +0 -0
- /package/dist/{gateway → control}/api-key.js +0 -0
- /package/dist/{gateway → control}/auth.d.ts +0 -0
- /package/dist/{gateway → control}/auth.js +0 -0
- /package/dist/{gateway → control}/routes/control.d.ts +0 -0
- /package/dist/{gateway → control}/routes/control.js +0 -0
- /package/dist/{gateway → control}/routes/dashboard.d.ts +0 -0
- /package/dist/{gateway → control}/routes/logs.d.ts +0 -0
- /package/dist/{gateway → control}/routes/logs.js +0 -0
- /package/dist/{gateway → control}/routes/stats.d.ts +0 -0
- /package/dist/{gateway → control}/session-store.d.ts +0 -0
- /package/dist/{gateway → control}/session-store.js +0 -0
- /package/dist/{gateway → control}/types.js +0 -0
- /package/dist/{gateway → control}/views/layout.d.ts +0 -0
- /package/dist/{gateway → control}/views/layout.js +0 -0
- /package/dist/{gateway → control}/views/login-page.d.ts +0 -0
- /package/dist/{gateway → control}/views/login-page.js +0 -0
- /package/dist/{scheduler → events}/event-queue-sqlite.d.ts +0 -0
- /package/dist/{scheduler → events}/event-queue-sqlite.js +0 -0
- /package/dist/{scheduler → events}/event-queue.js +0 -0
- /package/dist/{scheduler → execution}/call-dispatcher.d.ts +0 -0
- /package/dist/{scheduler → execution}/call-dispatcher.js +0 -0
- /package/dist/{gateway → execution}/call-store.d.ts +0 -0
- /package/dist/{gateway → execution}/call-store.js +0 -0
- /package/dist/{gateway → execution}/container-registry.d.ts +0 -0
- /package/dist/{gateway → execution}/container-registry.js +0 -0
- /package/dist/{gateway → execution}/lock-store.d.ts +0 -0
- /package/dist/{gateway → execution}/lock-store.js +0 -0
- /package/dist/{gateway → execution}/routes/calls.d.ts +0 -0
- /package/dist/{gateway → execution}/routes/calls.js +0 -0
- /package/dist/{gateway → execution}/routes/locks.d.ts +0 -0
- /package/dist/{gateway → execution}/routes/locks.js +0 -0
- /package/dist/{gateway → execution}/routes/shutdown.d.ts +0 -0
- /package/dist/{gateway → execution}/routes/shutdown.js +0 -0
- /package/dist/{gateway → execution}/routes/signals.d.ts +0 -0
- /package/dist/{gateway → execution}/routes/signals.js +0 -0
- /package/dist/{scheduler → execution}/runner-pool.d.ts +0 -0
- /package/dist/{scheduler → execution}/runner-pool.js +0 -0
- /package/dist/{scheduler → execution}/runner-setup.js +0 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration utilities for transitioning from legacy StateStore/StatsStore to unified persistence.
|
|
3
|
+
*
|
|
4
|
+
* Provides atomic migration with rollback support and progress reporting.
|
|
5
|
+
*/
|
|
6
|
+
import { createEvent, EventTypes } from "./event-store.js";
|
|
7
|
+
export class LegacyMigrator {
|
|
8
|
+
newStore;
|
|
9
|
+
constructor(newStore) {
|
|
10
|
+
this.newStore = newStore;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Migrate from legacy StateStore to new persistence layer.
|
|
14
|
+
*/
|
|
15
|
+
async migrateStateStore(legacyStore, options = {}) {
|
|
16
|
+
const { onProgress, preserveOriginal = true } = options;
|
|
17
|
+
// Get all namespaces by querying common ones
|
|
18
|
+
const commonNamespaces = ["locks", "lock-holders", "sessions", "calls", "containers"];
|
|
19
|
+
let totalItems = 0;
|
|
20
|
+
const namespaceData = new Map();
|
|
21
|
+
// Count total items first
|
|
22
|
+
for (const namespace of commonNamespaces) {
|
|
23
|
+
try {
|
|
24
|
+
const items = await legacyStore.list(namespace);
|
|
25
|
+
namespaceData.set(namespace, items);
|
|
26
|
+
totalItems += items.length;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
// Namespace might not exist, skip
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (totalItems === 0) {
|
|
34
|
+
onProgress?.({ step: "No data to migrate", processed: 0, total: 0, percentage: 100 });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
let processed = 0;
|
|
38
|
+
await this.newStore.transaction(async (store) => {
|
|
39
|
+
for (const [namespace, items] of namespaceData) {
|
|
40
|
+
onProgress?.({
|
|
41
|
+
step: `Migrating namespace: ${namespace}`,
|
|
42
|
+
processed,
|
|
43
|
+
total: totalItems,
|
|
44
|
+
percentage: Math.floor((processed / totalItems) * 100),
|
|
45
|
+
});
|
|
46
|
+
for (const item of items) {
|
|
47
|
+
await store.kv.set(namespace, item.key, item.value);
|
|
48
|
+
// Create audit event for the migration
|
|
49
|
+
await store.events.stream("migration").append(createEvent("state.migrated", {
|
|
50
|
+
namespace,
|
|
51
|
+
key: item.key,
|
|
52
|
+
source: "legacy-state-store",
|
|
53
|
+
}, {
|
|
54
|
+
source: "migrator",
|
|
55
|
+
tags: ["migration", "state-store"],
|
|
56
|
+
}));
|
|
57
|
+
processed++;
|
|
58
|
+
if (processed % 100 === 0) {
|
|
59
|
+
onProgress?.({
|
|
60
|
+
step: `Migrating namespace: ${namespace}`,
|
|
61
|
+
processed,
|
|
62
|
+
total: totalItems,
|
|
63
|
+
percentage: Math.floor((processed / totalItems) * 100),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
onProgress?.({
|
|
69
|
+
step: "Migration completed",
|
|
70
|
+
processed: totalItems,
|
|
71
|
+
total: totalItems,
|
|
72
|
+
percentage: 100,
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
if (!preserveOriginal) {
|
|
76
|
+
for (const namespace of namespaceData.keys()) {
|
|
77
|
+
await legacyStore.deleteAll(namespace);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Migrate from legacy StatsStore to event-sourced analytics.
|
|
83
|
+
*/
|
|
84
|
+
async migrateStatsStore(legacyStore, options = {}) {
|
|
85
|
+
const { onProgress, batchSize = 1000, preserveOriginal = true } = options;
|
|
86
|
+
// Migration is complex because we need to convert SQL data to events
|
|
87
|
+
// We'll query the runs and call_edges tables and convert them to events
|
|
88
|
+
let processed = 0;
|
|
89
|
+
onProgress?.({
|
|
90
|
+
step: "Counting historical data",
|
|
91
|
+
processed: 0,
|
|
92
|
+
total: 0,
|
|
93
|
+
percentage: 0,
|
|
94
|
+
});
|
|
95
|
+
// Use direct SQL to get all data efficiently
|
|
96
|
+
const runs = await this.newStore.query.sql("SELECT * FROM runs ORDER BY started_at ASC").catch(() => []); // Table might not exist
|
|
97
|
+
const callEdges = await this.newStore.query.sql("SELECT * FROM call_edges ORDER BY started_at ASC").catch(() => []);
|
|
98
|
+
const totalItems = runs.length + callEdges.length;
|
|
99
|
+
if (totalItems === 0) {
|
|
100
|
+
onProgress?.({ step: "No stats data to migrate", processed: 0, total: 0, percentage: 100 });
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
await this.newStore.transaction(async (store) => {
|
|
104
|
+
const statsStream = store.events.stream("stats");
|
|
105
|
+
// Migrate run records to events
|
|
106
|
+
onProgress?.({
|
|
107
|
+
step: "Migrating run records",
|
|
108
|
+
processed,
|
|
109
|
+
total: totalItems,
|
|
110
|
+
percentage: Math.floor((processed / totalItems) * 100),
|
|
111
|
+
});
|
|
112
|
+
for (const run of runs) {
|
|
113
|
+
// Convert to run started event
|
|
114
|
+
await statsStream.append(createEvent(EventTypes.RUN_STARTED, {
|
|
115
|
+
instanceId: run.instance_id,
|
|
116
|
+
agentName: run.agent_name,
|
|
117
|
+
triggerType: run.trigger_type,
|
|
118
|
+
triggerSource: run.trigger_source,
|
|
119
|
+
}, {
|
|
120
|
+
source: "migrator",
|
|
121
|
+
correlationId: run.instance_id,
|
|
122
|
+
tags: ["migration", "stats"],
|
|
123
|
+
}));
|
|
124
|
+
// Convert to run completed/failed event
|
|
125
|
+
const eventType = run.result === "error" ? EventTypes.RUN_FAILED : EventTypes.RUN_COMPLETED;
|
|
126
|
+
await statsStream.append(createEvent(eventType, {
|
|
127
|
+
instanceId: run.instance_id,
|
|
128
|
+
agentName: run.agent_name,
|
|
129
|
+
result: run.result,
|
|
130
|
+
exitCode: run.exit_code,
|
|
131
|
+
durationMs: run.duration_ms,
|
|
132
|
+
inputTokens: run.input_tokens,
|
|
133
|
+
outputTokens: run.output_tokens,
|
|
134
|
+
cacheReadTokens: run.cache_read_tokens,
|
|
135
|
+
cacheWriteTokens: run.cache_write_tokens,
|
|
136
|
+
totalTokens: run.total_tokens,
|
|
137
|
+
costUsd: run.cost_usd,
|
|
138
|
+
turnCount: run.turn_count,
|
|
139
|
+
errorMessage: run.error_message,
|
|
140
|
+
preHookMs: run.pre_hook_ms,
|
|
141
|
+
postHookMs: run.post_hook_ms,
|
|
142
|
+
}, {
|
|
143
|
+
source: "migrator",
|
|
144
|
+
correlationId: run.instance_id,
|
|
145
|
+
tags: ["migration", "stats"],
|
|
146
|
+
}));
|
|
147
|
+
processed++;
|
|
148
|
+
if (processed % 100 === 0) {
|
|
149
|
+
onProgress?.({
|
|
150
|
+
step: "Migrating run records",
|
|
151
|
+
processed,
|
|
152
|
+
total: totalItems,
|
|
153
|
+
percentage: Math.floor((processed / totalItems) * 100),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Migrate call edge records to events
|
|
158
|
+
onProgress?.({
|
|
159
|
+
step: "Migrating call records",
|
|
160
|
+
processed,
|
|
161
|
+
total: totalItems,
|
|
162
|
+
percentage: Math.floor((processed / totalItems) * 100),
|
|
163
|
+
});
|
|
164
|
+
for (const call of callEdges) {
|
|
165
|
+
// Convert to call initiated event
|
|
166
|
+
await statsStream.append(createEvent(EventTypes.CALL_INITIATED, {
|
|
167
|
+
callerAgent: call.caller_agent,
|
|
168
|
+
callerInstance: call.caller_instance,
|
|
169
|
+
targetAgent: call.target_agent,
|
|
170
|
+
targetInstance: call.target_instance,
|
|
171
|
+
depth: call.depth,
|
|
172
|
+
}, {
|
|
173
|
+
source: "migrator",
|
|
174
|
+
correlationId: call.caller_instance,
|
|
175
|
+
tags: ["migration", "stats"],
|
|
176
|
+
}));
|
|
177
|
+
// Convert to call completed/failed event if finished
|
|
178
|
+
if (call.duration_ms !== null) {
|
|
179
|
+
const eventType = call.status === "error" ? EventTypes.CALL_FAILED : EventTypes.CALL_COMPLETED;
|
|
180
|
+
await statsStream.append(createEvent(eventType, {
|
|
181
|
+
callerAgent: call.caller_agent,
|
|
182
|
+
callerInstance: call.caller_instance,
|
|
183
|
+
targetAgent: call.target_agent,
|
|
184
|
+
targetInstance: call.target_instance,
|
|
185
|
+
depth: call.depth,
|
|
186
|
+
durationMs: call.duration_ms,
|
|
187
|
+
status: call.status,
|
|
188
|
+
}, {
|
|
189
|
+
source: "migrator",
|
|
190
|
+
correlationId: call.caller_instance,
|
|
191
|
+
tags: ["migration", "stats"],
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
processed++;
|
|
195
|
+
if (processed % 100 === 0) {
|
|
196
|
+
onProgress?.({
|
|
197
|
+
step: "Migrating call records",
|
|
198
|
+
processed,
|
|
199
|
+
total: totalItems,
|
|
200
|
+
percentage: Math.floor((processed / totalItems) * 100),
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Create a migration completed event
|
|
205
|
+
await store.events.stream("migration").append(createEvent("stats.migrated", {
|
|
206
|
+
runsCount: runs.length,
|
|
207
|
+
callEdgesCount: callEdges.length,
|
|
208
|
+
source: "legacy-stats-store",
|
|
209
|
+
}, {
|
|
210
|
+
source: "migrator",
|
|
211
|
+
tags: ["migration", "stats-store"],
|
|
212
|
+
}));
|
|
213
|
+
onProgress?.({
|
|
214
|
+
step: "Migration completed",
|
|
215
|
+
processed: totalItems,
|
|
216
|
+
total: totalItems,
|
|
217
|
+
percentage: 100,
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Perform complete migration from all legacy stores.
|
|
223
|
+
*/
|
|
224
|
+
async migrateAll(legacyStateStore, legacyStatsStore, options = {}) {
|
|
225
|
+
const { onProgress } = options;
|
|
226
|
+
onProgress?.({
|
|
227
|
+
step: "Starting complete migration",
|
|
228
|
+
processed: 0,
|
|
229
|
+
total: 100,
|
|
230
|
+
percentage: 0,
|
|
231
|
+
});
|
|
232
|
+
try {
|
|
233
|
+
if (legacyStateStore) {
|
|
234
|
+
onProgress?.({
|
|
235
|
+
step: "Migrating state store",
|
|
236
|
+
processed: 25,
|
|
237
|
+
total: 100,
|
|
238
|
+
percentage: 25,
|
|
239
|
+
});
|
|
240
|
+
await this.migrateStateStore(legacyStateStore, {
|
|
241
|
+
...options,
|
|
242
|
+
onProgress: undefined, // Don't double-report
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
if (legacyStatsStore) {
|
|
246
|
+
onProgress?.({
|
|
247
|
+
step: "Migrating stats store",
|
|
248
|
+
processed: 50,
|
|
249
|
+
total: 100,
|
|
250
|
+
percentage: 50,
|
|
251
|
+
});
|
|
252
|
+
await this.migrateStatsStore(legacyStatsStore, {
|
|
253
|
+
...options,
|
|
254
|
+
onProgress: undefined, // Don't double-report
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
// Create final migration marker
|
|
258
|
+
await this.newStore.events.stream("migration").append(createEvent("migration.completed", {
|
|
259
|
+
timestamp: Date.now(),
|
|
260
|
+
version: "1.0.0",
|
|
261
|
+
}, {
|
|
262
|
+
source: "migrator",
|
|
263
|
+
tags: ["migration", "completion"],
|
|
264
|
+
}));
|
|
265
|
+
onProgress?.({
|
|
266
|
+
step: "All migrations completed",
|
|
267
|
+
processed: 100,
|
|
268
|
+
total: 100,
|
|
269
|
+
percentage: 100,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
// Create error event
|
|
274
|
+
await this.newStore.events.stream("migration").append(createEvent("migration.failed", {
|
|
275
|
+
error: error instanceof Error ? error.message : String(error),
|
|
276
|
+
timestamp: Date.now(),
|
|
277
|
+
}, {
|
|
278
|
+
source: "migrator",
|
|
279
|
+
tags: ["migration", "error"],
|
|
280
|
+
}));
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Helper function to run migration with console progress reporting.
|
|
287
|
+
*/
|
|
288
|
+
export async function migrateFromLegacy(newStore, legacyStateStore, legacyStatsStore, options = {}) {
|
|
289
|
+
const migrator = new LegacyMigrator(newStore);
|
|
290
|
+
await migrator.migrateAll(legacyStateStore, legacyStatsStore, {
|
|
291
|
+
...options,
|
|
292
|
+
onProgress: (progress) => {
|
|
293
|
+
console.log(`Migration: ${progress.step} (${progress.percentage}%)`);
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/shared/persistence/migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced validation functions for Action Llama configurations.
|
|
3
|
+
* Provides schema validation, unknown field detection, cron validation,
|
|
4
|
+
* model/provider compatibility checks, and unsafe config warnings.
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentConfig, GlobalConfig } from "./config.js";
|
|
7
|
+
export interface ValidationError {
|
|
8
|
+
type: "error" | "warning";
|
|
9
|
+
message: string;
|
|
10
|
+
field?: string;
|
|
11
|
+
context?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ValidationResult {
|
|
14
|
+
valid: boolean;
|
|
15
|
+
errors: ValidationError[];
|
|
16
|
+
warnings: ValidationError[];
|
|
17
|
+
}
|
|
18
|
+
export interface ConfigSchema {
|
|
19
|
+
required: Set<string>;
|
|
20
|
+
optional: Set<string>;
|
|
21
|
+
nested: Record<string, ConfigSchema>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Validate a cron expression using the croner library.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateCronExpression(schedule: string): {
|
|
27
|
+
valid: boolean;
|
|
28
|
+
error?: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Validate config against a schema and return validation errors.
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateConfigSchema(config: unknown, schema: ConfigSchema, path?: string): ValidationResult;
|
|
34
|
+
/**
|
|
35
|
+
* Detect unknown fields in config that are not in the schema.
|
|
36
|
+
*/
|
|
37
|
+
export declare function detectUnknownFields(config: unknown, schema: ConfigSchema, path?: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Validate global config with comprehensive checks.
|
|
40
|
+
*/
|
|
41
|
+
export declare function validateGlobalConfig(config: GlobalConfig, raw?: unknown): ValidationResult;
|
|
42
|
+
/**
|
|
43
|
+
* Validate agent config with comprehensive checks.
|
|
44
|
+
*/
|
|
45
|
+
export declare function validateAgentConfig(config: AgentConfig, raw?: unknown): ValidationResult;
|
|
46
|
+
/**
|
|
47
|
+
* Check for unknown fields in global config.
|
|
48
|
+
*/
|
|
49
|
+
export declare function detectGlobalConfigUnknownFields(raw: unknown): string[];
|
|
50
|
+
/**
|
|
51
|
+
* Check for unknown fields in agent config.
|
|
52
|
+
*/
|
|
53
|
+
export declare function detectAgentConfigUnknownFields(raw: unknown): string[];
|
|
54
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACtC;AAyED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAY3F;AAGD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,YAAY,EACpB,IAAI,SAAK,GACR,gBAAgB,CA2ClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,YAAY,EACpB,IAAI,SAAK,GACR,MAAM,EAAE,CAwBV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAsB1F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAuCxF;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAEtE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAErE"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced validation functions for Action Llama configurations.
|
|
3
|
+
* Provides schema validation, unknown field detection, cron validation,
|
|
4
|
+
* model/provider compatibility checks, and unsafe config warnings.
|
|
5
|
+
*/
|
|
6
|
+
import { Cron } from "croner";
|
|
7
|
+
// --- Schema definitions ---
|
|
8
|
+
const GLOBAL_CONFIG_SCHEMA = {
|
|
9
|
+
required: new Set(),
|
|
10
|
+
optional: new Set([
|
|
11
|
+
"models", "local", "gateway", "webhooks", "telemetry",
|
|
12
|
+
"projectName", "maxReruns", "maxCallDepth", "maxTriggerDepth",
|
|
13
|
+
"webhookQueueSize", "workQueueSize", "resourceLockTimeout", "scale"
|
|
14
|
+
]),
|
|
15
|
+
nested: {
|
|
16
|
+
models: {
|
|
17
|
+
required: new Set(),
|
|
18
|
+
optional: new Set(["provider", "model", "thinkingLevel", "authType"]),
|
|
19
|
+
nested: {}
|
|
20
|
+
},
|
|
21
|
+
local: {
|
|
22
|
+
required: new Set(),
|
|
23
|
+
optional: new Set(["enabled", "image", "memory", "cpus", "timeout"]),
|
|
24
|
+
nested: {}
|
|
25
|
+
},
|
|
26
|
+
gateway: {
|
|
27
|
+
required: new Set(),
|
|
28
|
+
optional: new Set(["port", "url"]),
|
|
29
|
+
nested: {}
|
|
30
|
+
},
|
|
31
|
+
telemetry: {
|
|
32
|
+
required: new Set(),
|
|
33
|
+
optional: new Set(["enabled", "provider", "endpoint", "serviceName", "headers", "samplingRate"]),
|
|
34
|
+
nested: {}
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const AGENT_CONFIG_SCHEMA = {
|
|
39
|
+
required: new Set(["name", "credentials", "models"]),
|
|
40
|
+
optional: new Set([
|
|
41
|
+
"description", "schedule", "webhooks", "hooks", "params", "scale",
|
|
42
|
+
"timeout", "license", "compatibility"
|
|
43
|
+
]),
|
|
44
|
+
nested: {
|
|
45
|
+
hooks: {
|
|
46
|
+
required: new Set(),
|
|
47
|
+
optional: new Set(["pre", "post"]),
|
|
48
|
+
nested: {}
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Schema for raw SKILL.md YAML frontmatter (before resolution).
|
|
54
|
+
* `name` is derived from the directory name, and AL-specific fields
|
|
55
|
+
* like `credentials` and `models` live under `metadata`.
|
|
56
|
+
*/
|
|
57
|
+
const AGENT_FRONTMATTER_SCHEMA = {
|
|
58
|
+
required: new Set(),
|
|
59
|
+
optional: new Set(["description", "license", "compatibility", "metadata"]),
|
|
60
|
+
nested: {
|
|
61
|
+
metadata: {
|
|
62
|
+
required: new Set(["credentials", "models"]),
|
|
63
|
+
optional: new Set(["schedule", "webhooks", "hooks", "params", "scale", "timeout"]),
|
|
64
|
+
nested: {
|
|
65
|
+
hooks: {
|
|
66
|
+
required: new Set(),
|
|
67
|
+
optional: new Set(["pre", "post"]),
|
|
68
|
+
nested: {}
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Validate a cron expression using the croner library.
|
|
76
|
+
*/
|
|
77
|
+
export function validateCronExpression(schedule) {
|
|
78
|
+
try {
|
|
79
|
+
// Test by creating a Cron instance - if invalid, it will throw
|
|
80
|
+
const job = new Cron(schedule, { paused: true });
|
|
81
|
+
job.stop(); // Clean up immediately
|
|
82
|
+
return { valid: true };
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
return {
|
|
86
|
+
valid: false,
|
|
87
|
+
error: err instanceof Error ? err.message : String(err)
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate config against a schema and return validation errors.
|
|
93
|
+
*/
|
|
94
|
+
export function validateConfigSchema(config, schema, path = "") {
|
|
95
|
+
const errors = [];
|
|
96
|
+
const warnings = [];
|
|
97
|
+
if (typeof config !== "object" || config === null) {
|
|
98
|
+
errors.push({
|
|
99
|
+
type: "error",
|
|
100
|
+
message: "Configuration must be an object",
|
|
101
|
+
field: path
|
|
102
|
+
});
|
|
103
|
+
return { valid: false, errors, warnings };
|
|
104
|
+
}
|
|
105
|
+
const configObj = config;
|
|
106
|
+
// Check required fields
|
|
107
|
+
for (const field of schema.required) {
|
|
108
|
+
if (!(field in configObj)) {
|
|
109
|
+
errors.push({
|
|
110
|
+
type: "error",
|
|
111
|
+
message: `Required field "${field}" is missing`,
|
|
112
|
+
field: path ? `${path}.${field}` : field
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Validate nested objects
|
|
117
|
+
for (const [field, nestedSchema] of Object.entries(schema.nested)) {
|
|
118
|
+
if (field in configObj && configObj[field] != null) {
|
|
119
|
+
const nestedPath = path ? `${path}.${field}` : field;
|
|
120
|
+
if (typeof configObj[field] === "object") {
|
|
121
|
+
const nestedResult = validateConfigSchema(configObj[field], nestedSchema, nestedPath);
|
|
122
|
+
errors.push(...nestedResult.errors);
|
|
123
|
+
warnings.push(...nestedResult.warnings);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
valid: errors.length === 0,
|
|
129
|
+
errors,
|
|
130
|
+
warnings
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Detect unknown fields in config that are not in the schema.
|
|
135
|
+
*/
|
|
136
|
+
export function detectUnknownFields(config, schema, path = "") {
|
|
137
|
+
const unknownFields = [];
|
|
138
|
+
if (typeof config !== "object" || config === null) {
|
|
139
|
+
return unknownFields;
|
|
140
|
+
}
|
|
141
|
+
const configObj = config;
|
|
142
|
+
const allowedFields = new Set([...schema.required, ...schema.optional, ...Object.keys(schema.nested)]);
|
|
143
|
+
for (const field of Object.keys(configObj)) {
|
|
144
|
+
const fieldPath = path ? `${path}.${field}` : field;
|
|
145
|
+
if (!allowedFields.has(field)) {
|
|
146
|
+
unknownFields.push(fieldPath);
|
|
147
|
+
}
|
|
148
|
+
else if (field in schema.nested && configObj[field] != null) {
|
|
149
|
+
// Recursively check nested objects
|
|
150
|
+
if (typeof configObj[field] === "object") {
|
|
151
|
+
unknownFields.push(...detectUnknownFields(configObj[field], schema.nested[field], fieldPath));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return unknownFields;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Validate global config with comprehensive checks.
|
|
159
|
+
*/
|
|
160
|
+
export function validateGlobalConfig(config, raw) {
|
|
161
|
+
const errors = [];
|
|
162
|
+
const warnings = [];
|
|
163
|
+
// Schema validation
|
|
164
|
+
if (raw) {
|
|
165
|
+
const schemaResult = validateConfigSchema(raw, GLOBAL_CONFIG_SCHEMA);
|
|
166
|
+
errors.push(...schemaResult.errors);
|
|
167
|
+
warnings.push(...schemaResult.warnings);
|
|
168
|
+
}
|
|
169
|
+
// Unsafe config warnings
|
|
170
|
+
if (config.gateway?.url?.includes("0.0.0.0")) {
|
|
171
|
+
warnings.push({
|
|
172
|
+
type: "warning",
|
|
173
|
+
message: "Gateway is bound to 0.0.0.0 (public interface). Consider using localhost for security.",
|
|
174
|
+
field: "gateway.url",
|
|
175
|
+
context: "unsafe configuration"
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Validate agent config with comprehensive checks.
|
|
182
|
+
*/
|
|
183
|
+
export function validateAgentConfig(config, raw) {
|
|
184
|
+
const errors = [];
|
|
185
|
+
const warnings = [];
|
|
186
|
+
// Schema validation — raw is SKILL.md frontmatter (metadata-nested), not the resolved config
|
|
187
|
+
if (raw) {
|
|
188
|
+
const schemaResult = validateConfigSchema(raw, AGENT_FRONTMATTER_SCHEMA);
|
|
189
|
+
errors.push(...schemaResult.errors);
|
|
190
|
+
warnings.push(...schemaResult.warnings);
|
|
191
|
+
}
|
|
192
|
+
// Cron validation
|
|
193
|
+
if (config.schedule) {
|
|
194
|
+
const cronResult = validateCronExpression(config.schedule);
|
|
195
|
+
if (!cronResult.valid) {
|
|
196
|
+
errors.push({
|
|
197
|
+
type: "error",
|
|
198
|
+
message: `Invalid cron expression "${config.schedule}": ${cronResult.error}`,
|
|
199
|
+
field: "schedule",
|
|
200
|
+
context: "cron validation"
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// pi_auth warning (already blocked at startup, but surface it in doctor too)
|
|
205
|
+
if (config.models) {
|
|
206
|
+
for (const [index, modelConfig] of config.models.entries()) {
|
|
207
|
+
if (modelConfig.authType === "pi_auth") {
|
|
208
|
+
warnings.push({
|
|
209
|
+
type: "warning",
|
|
210
|
+
message: `Model ${index} uses pi_auth which is not supported in container mode`,
|
|
211
|
+
field: `models[${index}].authType`,
|
|
212
|
+
context: "unsafe configuration"
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Check for unknown fields in global config.
|
|
221
|
+
*/
|
|
222
|
+
export function detectGlobalConfigUnknownFields(raw) {
|
|
223
|
+
return detectUnknownFields(raw, GLOBAL_CONFIG_SCHEMA);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Check for unknown fields in agent config.
|
|
227
|
+
*/
|
|
228
|
+
export function detectAgentConfigUnknownFields(raw) {
|
|
229
|
+
return detectUnknownFields(raw, AGENT_FRONTMATTER_SCHEMA);
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface QueuedWorkItem<T> {
|
|
2
|
+
context: T;
|
|
3
|
+
receivedAt: Date;
|
|
4
|
+
}
|
|
5
|
+
export interface EnqueueResult<T> {
|
|
6
|
+
accepted: boolean;
|
|
7
|
+
dropped?: QueuedWorkItem<T>;
|
|
8
|
+
}
|
|
9
|
+
export interface WorkQueue<T> {
|
|
10
|
+
enqueue(agentName: string, context: T, receivedAt?: Date): EnqueueResult<T>;
|
|
11
|
+
dequeue(agentName: string): QueuedWorkItem<T> | undefined;
|
|
12
|
+
size(agentName: string): number;
|
|
13
|
+
clear(agentName: string): void;
|
|
14
|
+
clearAll(): void;
|
|
15
|
+
close(): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=work-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-queue.d.ts","sourceRoot":"","sources":["../../src/shared/work-queue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,IAAI,IAAI,CAAC;IACjB,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-queue.js","sourceRoot":"","sources":["../../src/shared/work-queue.ts"],"names":[],"mappings":""}
|