@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,119 @@
|
|
|
1
|
+
import { escapeHtml } from "./layout.js";
|
|
2
|
+
/**
|
|
3
|
+
* Simple markdown to HTML renderer.
|
|
4
|
+
* Supports headers, lists, code blocks, links, and basic formatting.
|
|
5
|
+
*/
|
|
6
|
+
export function renderMarkdown(content) {
|
|
7
|
+
if (!content)
|
|
8
|
+
return "";
|
|
9
|
+
// Split into lines for processing
|
|
10
|
+
const lines = content.split('\n');
|
|
11
|
+
const result = [];
|
|
12
|
+
let inCodeBlock = false;
|
|
13
|
+
let codeBlockLanguage = '';
|
|
14
|
+
let currentList = null;
|
|
15
|
+
for (let i = 0; i < lines.length; i++) {
|
|
16
|
+
const line = lines[i];
|
|
17
|
+
const trimmed = line.trim();
|
|
18
|
+
// Code blocks
|
|
19
|
+
if (trimmed.startsWith('```')) {
|
|
20
|
+
if (inCodeBlock) {
|
|
21
|
+
// End code block
|
|
22
|
+
result.push('</code></pre>');
|
|
23
|
+
inCodeBlock = false;
|
|
24
|
+
codeBlockLanguage = '';
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Start code block
|
|
28
|
+
closeCurrentList();
|
|
29
|
+
codeBlockLanguage = trimmed.slice(3).trim();
|
|
30
|
+
const langClass = codeBlockLanguage ? ` language-${escapeHtml(codeBlockLanguage)}` : '';
|
|
31
|
+
result.push(`<pre class="bg-slate-100 dark:bg-slate-900 rounded-lg p-4 overflow-x-auto text-sm"><code${langClass ? ` class="${langClass}"` : ''}>`);
|
|
32
|
+
inCodeBlock = true;
|
|
33
|
+
}
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// If in code block, just add the line
|
|
37
|
+
if (inCodeBlock) {
|
|
38
|
+
result.push(escapeHtml(line));
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// Empty lines
|
|
42
|
+
if (!trimmed) {
|
|
43
|
+
closeCurrentList();
|
|
44
|
+
result.push('<br>');
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// Headers
|
|
48
|
+
if (trimmed.startsWith('#')) {
|
|
49
|
+
closeCurrentList();
|
|
50
|
+
const headerMatch = trimmed.match(/^(#+)\s+(.+)$/);
|
|
51
|
+
if (headerMatch) {
|
|
52
|
+
const level = Math.min(headerMatch[1].length, 6);
|
|
53
|
+
const text = headerMatch[2];
|
|
54
|
+
const sizeClass = level === 1 ? 'text-2xl' : level === 2 ? 'text-xl' : level === 3 ? 'text-lg' : 'text-base';
|
|
55
|
+
result.push(`<h${level} class="${sizeClass} font-bold text-slate-900 dark:text-white mt-6 mb-3">${renderInline(text)}</h${level}>`);
|
|
56
|
+
}
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
// Lists
|
|
60
|
+
const ulMatch = trimmed.match(/^[-*+]\s+(.+)$/);
|
|
61
|
+
const olMatch = trimmed.match(/^\d+\.\s+(.+)$/);
|
|
62
|
+
if (ulMatch) {
|
|
63
|
+
if (!currentList || currentList.type !== 'ul') {
|
|
64
|
+
closeCurrentList();
|
|
65
|
+
currentList = { type: 'ul', items: [] };
|
|
66
|
+
}
|
|
67
|
+
currentList.items.push(ulMatch[1]);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (olMatch) {
|
|
71
|
+
if (!currentList || currentList.type !== 'ol') {
|
|
72
|
+
closeCurrentList();
|
|
73
|
+
currentList = { type: 'ol', items: [] };
|
|
74
|
+
}
|
|
75
|
+
currentList.items.push(olMatch[1]);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Regular paragraph
|
|
79
|
+
closeCurrentList();
|
|
80
|
+
if (trimmed) {
|
|
81
|
+
result.push(`<p class="mb-4 leading-relaxed">${renderInline(trimmed)}</p>`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Close any remaining code block or list
|
|
85
|
+
if (inCodeBlock) {
|
|
86
|
+
result.push('</code></pre>');
|
|
87
|
+
}
|
|
88
|
+
closeCurrentList();
|
|
89
|
+
function closeCurrentList() {
|
|
90
|
+
if (currentList) {
|
|
91
|
+
const listClass = currentList.type === 'ul'
|
|
92
|
+
? 'list-disc list-inside mb-4 space-y-1'
|
|
93
|
+
: 'list-decimal list-inside mb-4 space-y-1';
|
|
94
|
+
result.push(`<${currentList.type} class="${listClass}">`);
|
|
95
|
+
for (const item of currentList.items) {
|
|
96
|
+
result.push(`<li class="ml-2">${renderInline(item)}</li>`);
|
|
97
|
+
}
|
|
98
|
+
result.push(`</${currentList.type}>`);
|
|
99
|
+
currentList = null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result.join('\n');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Render inline markdown elements within a line (bold, italic, code, links)
|
|
106
|
+
*/
|
|
107
|
+
function renderInline(text) {
|
|
108
|
+
let result = text;
|
|
109
|
+
// Inline code
|
|
110
|
+
result = result.replace(/`([^`]+)`/g, '<code class="bg-slate-200 dark:bg-slate-800 px-1 py-0.5 rounded text-sm font-mono">$1</code>');
|
|
111
|
+
// Links
|
|
112
|
+
result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" class="text-blue-600 dark:text-blue-400 hover:underline">$1</a>');
|
|
113
|
+
// Bold
|
|
114
|
+
result = result.replace(/\*\*([^*]+)\*\*/g, '<strong class="font-semibold">$1</strong>');
|
|
115
|
+
// Italic
|
|
116
|
+
result = result.replace(/\*([^*]+)\*/g, '<em class="italic">$1</em>');
|
|
117
|
+
return escapeHtml(result);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/control/views/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,6 @@ export interface ProjectConfigData {
|
|
|
3
3
|
projectScale: number;
|
|
4
4
|
gatewayPort?: number;
|
|
5
5
|
webhooksActive: boolean;
|
|
6
|
-
feedbackEnabled: boolean;
|
|
7
|
-
feedbackAgent?: string;
|
|
8
|
-
feedbackErrorPatterns: string[];
|
|
9
|
-
feedbackContextLines: number;
|
|
10
6
|
}
|
|
11
7
|
export declare function renderProjectConfigPage(data: ProjectConfigData): string;
|
|
12
8
|
//# sourceMappingURL=project-config-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config-page.d.ts","sourceRoot":"","sources":["../../../src/control/views/project-config-page.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAqHvE"}
|
|
@@ -35,48 +35,6 @@ export function renderProjectConfigPage(data) {
|
|
|
35
35
|
</div>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
|
-
<!-- Feedback Configuration -->
|
|
39
|
-
<div class="bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800 p-6 mb-6">
|
|
40
|
-
<h2 class="text-lg font-semibold text-slate-900 dark:text-white mb-4">Feedback Configuration</h2>
|
|
41
|
-
<p class="text-sm text-slate-500 dark:text-slate-400 mb-4">Automatically trigger feedback agents when other agents encounter errors</p>
|
|
42
|
-
|
|
43
|
-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
44
|
-
<!-- Enable/Disable Feedback -->
|
|
45
|
-
<div>
|
|
46
|
-
<label class="flex items-center gap-3">
|
|
47
|
-
<input id="feedback-enabled" type="checkbox" ${data.feedbackEnabled ? 'checked' : ''} class="w-4 h-4 text-blue-600 bg-slate-100 border-slate-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-slate-800 dark:bg-slate-700 dark:border-slate-600">
|
|
48
|
-
<span class="text-sm font-medium text-slate-700 dark:text-slate-300">Enable Feedback Monitoring</span>
|
|
49
|
-
</label>
|
|
50
|
-
<p class="text-sm text-slate-500 dark:text-slate-400 mt-2 ml-7">Monitor agent logs for errors and trigger feedback agents to fix SKILL.md files</p>
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<!-- Feedback Agent -->
|
|
54
|
-
<div>
|
|
55
|
-
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">Feedback Agent</label>
|
|
56
|
-
<input id="feedback-agent" type="text" value="${escapeHtml(data.feedbackAgent || '')}" placeholder="default (built-in)" class="w-full px-3 py-2 border border-slate-300 dark:border-slate-600 rounded-md bg-white dark:bg-slate-800 text-slate-900 dark:text-white">
|
|
57
|
-
<p class="text-sm text-slate-500 dark:text-slate-400 mt-2">Agent to use for feedback (leave empty for built-in agent)</p>
|
|
58
|
-
</div>
|
|
59
|
-
|
|
60
|
-
<!-- Error Patterns -->
|
|
61
|
-
<div>
|
|
62
|
-
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">Error Patterns</label>
|
|
63
|
-
<input id="error-patterns" type="text" value="${escapeHtml(data.feedbackErrorPatterns.join(', '))}" placeholder="error, fail" class="w-full px-3 py-2 border border-slate-300 dark:border-slate-600 rounded-md bg-white dark:bg-slate-800 text-slate-900 dark:text-white">
|
|
64
|
-
<p class="text-sm text-slate-500 dark:text-slate-400 mt-2">Comma-separated patterns to detect errors in logs (regex supported)</p>
|
|
65
|
-
</div>
|
|
66
|
-
|
|
67
|
-
<!-- Context Lines -->
|
|
68
|
-
<div>
|
|
69
|
-
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">Context Lines</label>
|
|
70
|
-
<input id="context-lines" type="number" min="0" max="10" value="${data.feedbackContextLines}" class="w-24 px-3 py-2 border border-slate-300 dark:border-slate-600 rounded-md bg-white dark:bg-slate-800 text-slate-900 dark:text-white">
|
|
71
|
-
<p class="text-sm text-slate-500 dark:text-slate-400 mt-2">Number of lines around the error to include in feedback context</p>
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
|
|
75
|
-
<div class="mt-6">
|
|
76
|
-
<button id="update-feedback-btn" class="px-4 py-2 text-sm rounded-md font-semibold bg-blue-600 hover:bg-blue-700 text-white transition-colors" onclick="updateFeedbackConfig()">Update Feedback Configuration</button>
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
38
|
<!-- Actions -->
|
|
81
39
|
<div class="bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800 p-6">
|
|
82
40
|
<h2 class="text-lg font-semibold text-slate-900 dark:text-white mb-4">Actions</h2>
|
|
@@ -145,46 +103,6 @@ export function renderProjectConfigPage(data) {
|
|
|
145
103
|
ctrlPost("/control/resume");
|
|
146
104
|
}
|
|
147
105
|
|
|
148
|
-
function updateFeedbackConfig() {
|
|
149
|
-
var btn = document.getElementById("update-feedback-btn");
|
|
150
|
-
var enabled = document.getElementById("feedback-enabled").checked;
|
|
151
|
-
var agent = document.getElementById("feedback-agent").value.trim();
|
|
152
|
-
var patterns = document.getElementById("error-patterns").value.trim();
|
|
153
|
-
var contextLines = parseInt(document.getElementById("context-lines").value);
|
|
154
|
-
|
|
155
|
-
if (isNaN(contextLines) || contextLines < 0 || contextLines > 10) {
|
|
156
|
-
alert("Context lines must be between 0 and 10");
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
btn.disabled = true;
|
|
161
|
-
btn.textContent = "Updating...";
|
|
162
|
-
|
|
163
|
-
var config = {
|
|
164
|
-
enabled: enabled,
|
|
165
|
-
agent: agent || undefined,
|
|
166
|
-
errorPatterns: patterns ? patterns.split(',').map(function(p) { return p.trim(); }).filter(function(p) { return p; }) : ["error", "fail"],
|
|
167
|
-
contextLines: contextLines
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
fetch("/control/feedback/config", {
|
|
171
|
-
method: "POST",
|
|
172
|
-
credentials: "same-origin",
|
|
173
|
-
headers: { "Content-Type": "application/json" },
|
|
174
|
-
body: JSON.stringify(config)
|
|
175
|
-
}).then(function(r) {
|
|
176
|
-
if (r.ok) {
|
|
177
|
-
alert("Feedback configuration updated");
|
|
178
|
-
} else {
|
|
179
|
-
r.text().then(function(text) { alert("Error: " + text); });
|
|
180
|
-
}
|
|
181
|
-
}).catch(function(err) {
|
|
182
|
-
alert("Error: " + err);
|
|
183
|
-
}).finally(function() {
|
|
184
|
-
btn.disabled = false;
|
|
185
|
-
btn.textContent = "Update Feedback Configuration";
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
106
|
</script>`;
|
|
189
107
|
return renderLayout({
|
|
190
108
|
title: "Project Configuration",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config-page.js","sourceRoot":"","sources":["../../../src/control/views/project-config-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AASvD,MAAM,UAAU,uBAAuB,CAAC,IAAuB;IAC7D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAExE,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;oFAgBkE,YAAY;;;;;;;;;;cAUlF,WAAW,CAAC,CAAC,CAAC,iEAAiE,WAAW,QAAQ,CAAC,CAAC,CAAC,EAAE;gFACrC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;cACxG,WAAW,CAAC,CAAC,CAAC,oEAAoE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;GAiBjI,CAAC;IAEF,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwDN,CAAC;IAEX,OAAO,YAAY,CAAC;QAClB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;YACX,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;YAC1C,EAAE,KAAK,EAAE,eAAe,EAAE;SAC3B;QACD,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TriggerHistoryRow } from "../../stats/store.js";
|
|
2
|
+
export interface TriggerHistoryPageOpts {
|
|
3
|
+
rows: TriggerHistoryRow[];
|
|
4
|
+
total: number;
|
|
5
|
+
page: number;
|
|
6
|
+
limit: number;
|
|
7
|
+
includeDeadLetters: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function renderTriggerHistoryPage(opts: TriggerHistoryPageOpts): string;
|
|
10
|
+
//# sourceMappingURL=trigger-history-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-history-page.d.ts","sourceRoot":"","sources":["../../../src/control/views/trigger-history-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4C9D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAmD7E"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { escapeHtml, renderLayout } from "./layout.js";
|
|
2
|
+
function triggerTypeBadge(type) {
|
|
3
|
+
const colors = {
|
|
4
|
+
schedule: "bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300",
|
|
5
|
+
webhook: "bg-purple-100 text-purple-700 dark:bg-purple-900/40 dark:text-purple-300",
|
|
6
|
+
agent: "bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",
|
|
7
|
+
};
|
|
8
|
+
const cls = colors[type] ?? "bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-300";
|
|
9
|
+
return `<span class="px-1.5 py-0.5 text-xs font-medium rounded ${cls}">${escapeHtml(type)}</span>`;
|
|
10
|
+
}
|
|
11
|
+
function resultBadge(result) {
|
|
12
|
+
if (result === "completed" || result === "rerun") {
|
|
13
|
+
return `<span class="text-green-600 dark:text-green-400 text-xs font-medium">${escapeHtml(result)}</span>`;
|
|
14
|
+
}
|
|
15
|
+
if (result === "dead-letter") {
|
|
16
|
+
return `<span class="px-1.5 py-0.5 text-xs font-medium rounded bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300">Dead Letter</span>`;
|
|
17
|
+
}
|
|
18
|
+
if (result === "error") {
|
|
19
|
+
return `<span class="text-red-600 dark:text-red-400 text-xs font-medium">error</span>`;
|
|
20
|
+
}
|
|
21
|
+
return `<span class="text-slate-500 text-xs">${escapeHtml(result)}</span>`;
|
|
22
|
+
}
|
|
23
|
+
function renderRow(row) {
|
|
24
|
+
const time = new Date(row.ts).toLocaleString();
|
|
25
|
+
const agentLink = row.agentName
|
|
26
|
+
? `<a href="/dashboard/agents/${escapeHtml(row.agentName)}" class="text-blue-600 dark:text-blue-400 hover:underline text-sm">${escapeHtml(row.agentName)}</a>`
|
|
27
|
+
: `<span class="text-slate-400 text-sm">\u2014</span>`;
|
|
28
|
+
const instanceLink = row.instanceId && row.agentName
|
|
29
|
+
? `<a href="/dashboard/agents/${escapeHtml(row.agentName)}/instances/${escapeHtml(row.instanceId)}" class="text-sm text-slate-500 dark:text-slate-400 hover:underline font-mono">${escapeHtml(row.instanceId.slice(0, 12))}</a>`
|
|
30
|
+
: `<span class="text-slate-400 text-sm">\u2014</span>`;
|
|
31
|
+
return `<tr class="hover:bg-slate-50 dark:hover:bg-slate-900/50">
|
|
32
|
+
<td class="px-3 py-2 text-sm text-slate-500 dark:text-slate-400 whitespace-nowrap">${escapeHtml(time)}</td>
|
|
33
|
+
<td class="px-3 py-2">${triggerTypeBadge(row.triggerType)}</td>
|
|
34
|
+
<td class="px-3 py-2 text-sm text-slate-600 dark:text-slate-300">${escapeHtml(row.triggerSource ?? "\u2014")}</td>
|
|
35
|
+
<td class="px-3 py-2">${agentLink}</td>
|
|
36
|
+
<td class="px-3 py-2">${instanceLink}</td>
|
|
37
|
+
<td class="px-3 py-2">${resultBadge(row.result)}</td>
|
|
38
|
+
</tr>`;
|
|
39
|
+
}
|
|
40
|
+
export function renderTriggerHistoryPage(opts) {
|
|
41
|
+
const { rows, total, page, limit, includeDeadLetters } = opts;
|
|
42
|
+
const totalPages = Math.max(1, Math.ceil(total / limit));
|
|
43
|
+
const deadLetterParam = includeDeadLetters ? "1" : "0";
|
|
44
|
+
const paginationLinks = [];
|
|
45
|
+
if (page > 1) {
|
|
46
|
+
paginationLinks.push(`<a href="/dashboard/triggers?page=${page - 1}&all=${deadLetterParam}" class="px-3 py-1.5 text-sm rounded border border-slate-300 dark:border-slate-600 hover:bg-slate-50 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200">Prev</a>`);
|
|
47
|
+
}
|
|
48
|
+
paginationLinks.push(`<span class="text-sm text-slate-500 dark:text-slate-400">Page ${page} of ${totalPages}</span>`);
|
|
49
|
+
if (page < totalPages) {
|
|
50
|
+
paginationLinks.push(`<a href="/dashboard/triggers?page=${page + 1}&all=${deadLetterParam}" class="px-3 py-1.5 text-sm rounded border border-slate-300 dark:border-slate-600 hover:bg-slate-50 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200">Next</a>`);
|
|
51
|
+
}
|
|
52
|
+
const content = `
|
|
53
|
+
<div class="flex flex-wrap items-center justify-between gap-3 mb-6">
|
|
54
|
+
<div class="flex items-center gap-3">
|
|
55
|
+
<a href="/dashboard" class="text-slate-400 hover:text-slate-600 dark:hover:text-slate-300">←</a>
|
|
56
|
+
<h1 class="text-xl sm:text-2xl font-bold text-slate-900 dark:text-white">Trigger History</h1>
|
|
57
|
+
</div>
|
|
58
|
+
<label class="flex items-center gap-2 cursor-pointer">
|
|
59
|
+
<input type="checkbox" ${includeDeadLetters ? "checked" : ""}
|
|
60
|
+
onchange="window.location.href='/dashboard/triggers?page=1&all=' + (this.checked ? '1' : '0')"
|
|
61
|
+
class="rounded border-slate-300 dark:border-slate-600">
|
|
62
|
+
<span class="text-sm text-slate-600 dark:text-slate-300">Show dead letters</span>
|
|
63
|
+
</label>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div class="bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800 overflow-hidden mb-4">
|
|
67
|
+
<table class="w-full">
|
|
68
|
+
<thead>
|
|
69
|
+
<tr class="border-b border-slate-200 dark:border-slate-700">
|
|
70
|
+
<th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Timestamp</th>
|
|
71
|
+
<th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Type</th>
|
|
72
|
+
<th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Source</th>
|
|
73
|
+
<th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Agent</th>
|
|
74
|
+
<th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Instance</th>
|
|
75
|
+
<th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Status</th>
|
|
76
|
+
</tr>
|
|
77
|
+
</thead>
|
|
78
|
+
<tbody class="divide-y divide-slate-100 dark:divide-slate-800">
|
|
79
|
+
${rows.length > 0 ? rows.map(renderRow).join("\n") : '<tr><td colspan="6" class="px-3 py-8 text-center text-slate-400 italic">No triggers found</td></tr>'}
|
|
80
|
+
</tbody>
|
|
81
|
+
</table>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div class="flex items-center justify-center gap-3">
|
|
85
|
+
${paginationLinks.join("\n")}
|
|
86
|
+
</div>`;
|
|
87
|
+
return renderLayout({ title: "Trigger History", content });
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=trigger-history-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-history-page.js","sourceRoot":"","sources":["../../../src/control/views/trigger-history-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-based credential provider implementation (wraps existing system)
|
|
3
|
+
*/
|
|
4
|
+
import type { CredentialProvider } from "../../extensions/types.js";
|
|
5
|
+
export declare class FileCredentialProvider implements CredentialProvider {
|
|
6
|
+
name: string;
|
|
7
|
+
list(type: string): Promise<string[]>;
|
|
8
|
+
get(type: string, instance?: string): Promise<Record<string, string> | null>;
|
|
9
|
+
store(type: string, instance: string, values: Record<string, string>): Promise<void>;
|
|
10
|
+
remove(type: string, instance: string): Promise<void>;
|
|
11
|
+
isAvailable(): Promise<boolean>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/credentials/providers/file.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAAU;IAER,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMrC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAa5E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAItC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-based credential provider implementation (wraps existing system)
|
|
3
|
+
*/
|
|
4
|
+
export class FileCredentialProvider {
|
|
5
|
+
name = "file";
|
|
6
|
+
async list(type) {
|
|
7
|
+
// This would integrate with the existing credential system
|
|
8
|
+
// For now, return empty array as placeholder
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
async get(type, instance) {
|
|
12
|
+
// This would integrate with the existing credential loading system
|
|
13
|
+
// For now, check environment variables as fallback
|
|
14
|
+
const key = `${type.toUpperCase()}${instance ? `_${instance.toUpperCase()}` : ""}`;
|
|
15
|
+
const value = process.env[key];
|
|
16
|
+
if (value) {
|
|
17
|
+
return { [type]: value };
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
async store(type, instance, values) {
|
|
22
|
+
// This would integrate with the existing credential storage system
|
|
23
|
+
throw new Error("File credential provider storage not yet implemented");
|
|
24
|
+
}
|
|
25
|
+
async remove(type, instance) {
|
|
26
|
+
// This would integrate with the existing credential removal system
|
|
27
|
+
throw new Error("File credential provider removal not yet implemented");
|
|
28
|
+
}
|
|
29
|
+
async isAvailable() {
|
|
30
|
+
// File-based credentials are always available
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/credentials/providers/file.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,sBAAsB;IACjC,IAAI,GAAG,MAAM,CAAC;IAEd,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,2DAA2D;QAC3D,6CAA6C;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,QAAiB;QACvC,mEAAmE;QACnE,mDAAmD;QACnD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,QAAgB,EAAE,MAA8B;QACxE,mEAAmE;QACnE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,QAAgB;QACzC,mEAAmE;QACnE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,WAAW;QACf,8CAA8C;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential provider extensions
|
|
3
|
+
*/
|
|
4
|
+
import type { CredentialExtension } from "../../extensions/types.js";
|
|
5
|
+
/**
|
|
6
|
+
* File-based credential provider extension
|
|
7
|
+
*/
|
|
8
|
+
export declare const fileCredentialExtension: CredentialExtension;
|
|
9
|
+
/**
|
|
10
|
+
* HashiCorp Vault credential provider extension
|
|
11
|
+
*/
|
|
12
|
+
export declare const vaultCredentialExtension: CredentialExtension;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/credentials/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIrE;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,mBAerC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,mBAyCtC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential provider extensions
|
|
3
|
+
*/
|
|
4
|
+
import { FileCredentialProvider } from "./file.js";
|
|
5
|
+
import { VaultCredentialProvider } from "./vault.js";
|
|
6
|
+
/**
|
|
7
|
+
* File-based credential provider extension
|
|
8
|
+
*/
|
|
9
|
+
export const fileCredentialExtension = {
|
|
10
|
+
metadata: {
|
|
11
|
+
name: "file",
|
|
12
|
+
version: "1.0.0",
|
|
13
|
+
description: "File-based credential provider",
|
|
14
|
+
type: "credential",
|
|
15
|
+
requiredCredentials: [] // No credentials required for file-based provider
|
|
16
|
+
},
|
|
17
|
+
provider: new FileCredentialProvider(),
|
|
18
|
+
async init() {
|
|
19
|
+
// File provider doesn't need initialization
|
|
20
|
+
},
|
|
21
|
+
async shutdown() {
|
|
22
|
+
// File provider doesn't need cleanup
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* HashiCorp Vault credential provider extension
|
|
27
|
+
*/
|
|
28
|
+
export const vaultCredentialExtension = {
|
|
29
|
+
metadata: {
|
|
30
|
+
name: "vault",
|
|
31
|
+
version: "1.0.0",
|
|
32
|
+
description: "HashiCorp Vault credential provider",
|
|
33
|
+
type: "credential",
|
|
34
|
+
requiredCredentials: [
|
|
35
|
+
{ type: "vault_addr", description: "Vault server address" },
|
|
36
|
+
{ type: "vault_token", description: "Vault authentication token" }
|
|
37
|
+
],
|
|
38
|
+
providesCredentialTypes: [
|
|
39
|
+
{
|
|
40
|
+
type: "vault_addr",
|
|
41
|
+
fields: ["addr"],
|
|
42
|
+
description: "HashiCorp Vault server address",
|
|
43
|
+
validation: async (values) => {
|
|
44
|
+
new URL(values.addr); // Validate URL format
|
|
45
|
+
},
|
|
46
|
+
envMapping: { addr: "VAULT_ADDR" }
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: "vault_token",
|
|
50
|
+
fields: ["token"],
|
|
51
|
+
description: "HashiCorp Vault authentication token",
|
|
52
|
+
envMapping: { token: "VAULT_TOKEN" }
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
provider: new VaultCredentialProvider({
|
|
57
|
+
vaultAddr: process.env.VAULT_ADDR || "",
|
|
58
|
+
vaultToken: process.env.VAULT_TOKEN || ""
|
|
59
|
+
}),
|
|
60
|
+
async init() {
|
|
61
|
+
const isAvailable = await this.provider.isAvailable();
|
|
62
|
+
if (!isAvailable) {
|
|
63
|
+
throw new Error("Vault server is not available or token is invalid");
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
async shutdown() {
|
|
67
|
+
// Vault provider doesn't need cleanup
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/credentials/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAwB;IAC1D,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,YAAY;QAClB,mBAAmB,EAAE,EAAE,CAAC,kDAAkD;KAC3E;IACD,QAAQ,EAAE,IAAI,sBAAsB,EAAE;IACtC,KAAK,CAAC,IAAI;QACR,4CAA4C;IAC9C,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,qCAAqC;IACvC,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAwB;IAC3D,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,YAAY;QAClB,mBAAmB,EAAE;YACnB,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC3D,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,4BAA4B,EAAE;SACnE;QACD,uBAAuB,EAAE;YACvB;gBACE,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,CAAC,MAAM,CAAC;gBAChB,WAAW,EAAE,gCAAgC;gBAC7C,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;oBAC3B,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB;gBAC9C,CAAC;gBACD,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;aACnC;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjB,WAAW,EAAE,sCAAsC;gBACnD,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;aACrC;SACF;KACF;IACD,QAAQ,EAAE,IAAI,uBAAuB,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;QACvC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;KAC1C,CAAC;IACF,KAAK,CAAC,IAAI;QACR,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,sCAAsC;IACxC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HashiCorp Vault credential provider implementation
|
|
3
|
+
*/
|
|
4
|
+
import type { CredentialProvider } from "../../extensions/types.js";
|
|
5
|
+
export declare class VaultCredentialProvider implements CredentialProvider {
|
|
6
|
+
name: string;
|
|
7
|
+
private vaultAddr;
|
|
8
|
+
private vaultToken;
|
|
9
|
+
constructor(config: {
|
|
10
|
+
vaultAddr: string;
|
|
11
|
+
vaultToken: string;
|
|
12
|
+
});
|
|
13
|
+
list(type: string): Promise<string[]>;
|
|
14
|
+
get(type: string, instance?: string): Promise<Record<string, string> | null>;
|
|
15
|
+
store(type: string, instance: string, values: Record<string, string>): Promise<void>;
|
|
16
|
+
remove(type: string, instance: string): Promise<void>;
|
|
17
|
+
isAvailable(): Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/credentials/providers/vault.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,IAAI,SAAW;IACf,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAKvD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBrC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAsB5E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBpF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAYtC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HashiCorp Vault credential provider implementation
|
|
3
|
+
*/
|
|
4
|
+
export class VaultCredentialProvider {
|
|
5
|
+
name = "vault";
|
|
6
|
+
vaultAddr;
|
|
7
|
+
vaultToken;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.vaultAddr = config.vaultAddr;
|
|
10
|
+
this.vaultToken = config.vaultToken;
|
|
11
|
+
}
|
|
12
|
+
async list(type) {
|
|
13
|
+
// List all secret instances for a given type from Vault KV store
|
|
14
|
+
const url = `${this.vaultAddr}/v1/secret/metadata/${type}`;
|
|
15
|
+
try {
|
|
16
|
+
const response = await fetch(url, {
|
|
17
|
+
headers: {
|
|
18
|
+
'X-Vault-Token': this.vaultToken
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
if (!response.ok) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
const data = await response.json();
|
|
25
|
+
return data.data?.keys || [];
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async get(type, instance) {
|
|
32
|
+
const path = instance ? `${type}/${instance}` : type;
|
|
33
|
+
const url = `${this.vaultAddr}/v1/secret/data/${path}`;
|
|
34
|
+
try {
|
|
35
|
+
const response = await fetch(url, {
|
|
36
|
+
headers: {
|
|
37
|
+
'X-Vault-Token': this.vaultToken
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const data = await response.json();
|
|
44
|
+
return data.data?.data || null;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async store(type, instance, values) {
|
|
51
|
+
const path = `${type}/${instance}`;
|
|
52
|
+
const url = `${this.vaultAddr}/v1/secret/data/${path}`;
|
|
53
|
+
const response = await fetch(url, {
|
|
54
|
+
method: 'POST',
|
|
55
|
+
headers: {
|
|
56
|
+
'X-Vault-Token': this.vaultToken,
|
|
57
|
+
'Content-Type': 'application/json'
|
|
58
|
+
},
|
|
59
|
+
body: JSON.stringify({ data: values })
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
const error = await response.text();
|
|
63
|
+
throw new Error(`Failed to store credential in Vault: ${error}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async remove(type, instance) {
|
|
67
|
+
const path = `${type}/${instance}`;
|
|
68
|
+
const url = `${this.vaultAddr}/v1/secret/data/${path}`;
|
|
69
|
+
const response = await fetch(url, {
|
|
70
|
+
method: 'DELETE',
|
|
71
|
+
headers: {
|
|
72
|
+
'X-Vault-Token': this.vaultToken
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
if (!response.ok) {
|
|
76
|
+
const error = await response.text();
|
|
77
|
+
throw new Error(`Failed to remove credential from Vault: ${error}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async isAvailable() {
|
|
81
|
+
try {
|
|
82
|
+
const response = await fetch(`${this.vaultAddr}/v1/sys/health`, {
|
|
83
|
+
headers: {
|
|
84
|
+
'X-Vault-Token': this.vaultToken
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return response.ok;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/credentials/providers/vault.ts"],"names":[],"mappings":"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"}
|