@probelabs/visor 0.1.129 → 0.1.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/docs/author-permissions.md +20 -0
- package/dist/docs/enterprise-policy.md +1325 -0
- package/dist/docs/index.md +10 -0
- package/dist/docs/scheduler-storage.md +433 -0
- package/dist/docs/scheduler.md +12 -2
- package/dist/enterprise/license/validator.d.ts +39 -0
- package/dist/enterprise/license/validator.d.ts.map +1 -0
- package/dist/enterprise/loader.d.ts +25 -0
- package/dist/enterprise/loader.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-compiler.d.ts +37 -0
- package/dist/enterprise/policy/opa-compiler.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-http-evaluator.d.ts +36 -0
- package/dist/enterprise/policy/opa-http-evaluator.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-policy-engine.d.ts +48 -0
- package/dist/enterprise/policy/opa-policy-engine.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-wasm-evaluator.d.ts +34 -0
- package/dist/enterprise/policy/opa-wasm-evaluator.d.ts.map +1 -0
- package/dist/enterprise/policy/policy-input-builder.d.ts +120 -0
- package/dist/enterprise/policy/policy-input-builder.d.ts.map +1 -0
- package/dist/enterprise/scheduler/knex-store.d.ts +41 -0
- package/dist/enterprise/scheduler/knex-store.d.ts.map +1 -0
- package/dist/examples/README.md +23 -0
- package/dist/examples/enterprise-policy/README.md +344 -0
- package/dist/examples/enterprise-policy/policies/capability_resolve.rego +29 -0
- package/dist/examples/enterprise-policy/policies/capability_resolve_test.rego +230 -0
- package/dist/examples/enterprise-policy/policies/check_execute.rego +71 -0
- package/dist/examples/enterprise-policy/policies/check_execute_test.rego +321 -0
- package/dist/examples/enterprise-policy/policies/deploy_production.rego +33 -0
- package/dist/examples/enterprise-policy/policies/deploy_production_test.rego +29 -0
- package/dist/examples/enterprise-policy/policies/slack_channel_gate.rego +17 -0
- package/dist/examples/enterprise-policy/policies/slack_tool_restrict.rego +16 -0
- package/dist/examples/enterprise-policy/policies/tool_invoke.rego +24 -0
- package/dist/examples/enterprise-policy/policies/tool_invoke_test.rego +227 -0
- package/dist/examples/enterprise-policy/visor.yaml +64 -0
- package/dist/failure-condition-evaluator.d.ts +18 -0
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/frontends/slack-frontend.d.ts +1 -0
- package/dist/frontends/slack-frontend.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +139 -0
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/index.js +12121 -7169
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/output/traces/{run-2026-02-08T18-16-04-160Z.ndjson → run-2026-02-11T16-20-59-999Z.ndjson} +84 -84
- package/dist/{traces/run-2026-02-08T18-16-51-253Z.ndjson → output/traces/run-2026-02-11T16-21-47-711Z.ndjson} +1032 -1032
- package/dist/policy/default-engine.d.ts +17 -0
- package/dist/policy/default-engine.d.ts.map +1 -0
- package/dist/policy/index.d.ts +4 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/policy-check-command.d.ts +65 -0
- package/dist/policy/policy-check-command.d.ts.map +1 -0
- package/dist/policy/types.d.ts +81 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts +2 -0
- package/dist/providers/check-provider.interface.d.ts.map +1 -1
- package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
- package/dist/providers/workflow-check-provider.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +2 -0
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/schedule-store.d.ts +33 -59
- package/dist/scheduler/schedule-store.d.ts.map +1 -1
- package/dist/scheduler/schedule-tool.d.ts.map +1 -1
- package/dist/scheduler/scheduler.d.ts +24 -3
- package/dist/scheduler/scheduler.d.ts.map +1 -1
- package/dist/scheduler/store/index.d.ts +7 -0
- package/dist/scheduler/store/index.d.ts.map +1 -0
- package/dist/scheduler/store/json-migrator.d.ts +10 -0
- package/dist/scheduler/store/json-migrator.d.ts.map +1 -0
- package/dist/scheduler/store/sqlite-store.d.ts +32 -0
- package/dist/scheduler/store/sqlite-store.d.ts.map +1 -0
- package/dist/scheduler/store/types.d.ts +127 -0
- package/dist/scheduler/store/types.d.ts.map +1 -0
- package/dist/sdk/check-provider-registry-M3Y6JMTW.mjs +28 -0
- package/dist/sdk/check-provider-registry-PANIXYRB.mjs +28 -0
- package/dist/sdk/{chunk-D5KI4YQ4.mjs → chunk-DIND4ZCV.mjs} +2 -2
- package/dist/sdk/{chunk-DGZPPGJJ.mjs → chunk-EUUAQBTW.mjs} +1463 -568
- package/dist/sdk/chunk-EUUAQBTW.mjs.map +1 -0
- package/dist/sdk/{chunk-XDLQ3UNF.mjs → chunk-GEW6LS32.mjs} +2 -2
- package/dist/sdk/{chunk-N7HO6KKC.mjs → chunk-HOKQOO3G.mjs} +11 -6
- package/dist/sdk/chunk-HOKQOO3G.mjs.map +1 -0
- package/dist/sdk/{chunk-XR7XXGL7.mjs → chunk-JL7JXCET.mjs} +2 -2
- package/dist/sdk/{chunk-6W75IMDC.mjs → chunk-LG4AUKHB.mjs} +2 -2
- package/dist/sdk/{chunk-BDGUM6BA.mjs → chunk-S6CD7GFM.mjs} +1463 -568
- package/dist/sdk/chunk-S6CD7GFM.mjs.map +1 -0
- package/dist/sdk/{chunk-PO7X5XI7.mjs → chunk-SZXICFQ3.mjs} +2 -2
- package/dist/sdk/{chunk-HEX3RL32.mjs → chunk-UCMJJ3IM.mjs} +5 -2
- package/dist/sdk/{chunk-HEX3RL32.mjs.map → chunk-UCMJJ3IM.mjs.map} +1 -1
- package/dist/sdk/{chunk-7YSOINAQ.mjs → chunk-UCNT3PDT.mjs} +342 -5
- package/dist/sdk/chunk-UCNT3PDT.mjs.map +1 -0
- package/dist/sdk/{chunk-R5Z7YWPB.mjs → chunk-V2IV3ILA.mjs} +7 -5
- package/dist/sdk/chunk-V2IV3ILA.mjs.map +1 -0
- package/dist/sdk/{chunk-SGS2VMEL.mjs → chunk-VMLORODQ.mjs} +107 -20
- package/dist/sdk/chunk-VMLORODQ.mjs.map +1 -0
- package/dist/sdk/{chunk-2KB35MB7.mjs → chunk-VPC3QSPW.mjs} +2 -2
- package/dist/sdk/{chunk-J5RGJQ53.mjs → chunk-YJRBN3XS.mjs} +2 -2
- package/dist/sdk/{command-executor-DVVXERLR.mjs → command-executor-TOYBBE7S.mjs} +4 -4
- package/dist/sdk/{config-7VTT64SQ.mjs → config-OGOS4ZU4.mjs} +4 -4
- package/dist/sdk/failure-condition-evaluator-HC3M5377.mjs +17 -0
- package/dist/sdk/{github-frontend-3N2NLO66.mjs → github-frontend-E2KJSC3Y.mjs} +7 -7
- package/dist/sdk/{host-ONVMEHAA.mjs → host-EE6EJ2FM.mjs} +4 -4
- package/dist/sdk/lazy-otel-5NH4ZJJM.mjs +24 -0
- package/dist/sdk/{liquid-extensions-5IZLTFSZ.mjs → liquid-extensions-E4EUOCES.mjs} +5 -5
- package/dist/sdk/memory-store-AAPL2MTE.mjs +12 -0
- package/dist/sdk/{metrics-GXQ2EDXA.mjs → metrics-I6A7IHG4.mjs} +3 -3
- package/dist/sdk/{prompt-state-YHGXB2OA.mjs → prompt-state-VAKKC773.mjs} +4 -4
- package/dist/sdk/{renderer-schema-CMXOLNIG.mjs → renderer-schema-HXEW6BRJ.mjs} +3 -3
- package/dist/sdk/{routing-S3Y7T2X3.mjs → routing-OZQWAGAI.mjs} +9 -8
- package/dist/sdk/schedule-tool-handler-B7TMSG6A.mjs +38 -0
- package/dist/sdk/schedule-tool-handler-IEB2VS7O.mjs +38 -0
- package/dist/sdk/sdk.d.mts +134 -4
- package/dist/sdk/sdk.d.ts +134 -4
- package/dist/sdk/sdk.js +2509 -1085
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +14 -14
- package/dist/sdk/{slack-frontend-R3M2CACB.mjs → slack-frontend-LAY45IBR.mjs} +119 -29
- package/dist/sdk/slack-frontend-LAY45IBR.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-YHNPC7MR.mjs → trace-helpers-PP3YHTAM.mjs} +3 -3
- package/dist/sdk/{tui-frontend-S546M7A7.mjs → tui-frontend-T56PZB67.mjs} +25 -16
- package/dist/sdk/tui-frontend-T56PZB67.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-2ET3SFZH.mjs +28 -0
- package/dist/sdk/workflow-check-provider-2ET3SFZH.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-HB4XTD4Z.mjs +28 -0
- package/dist/sdk/workflow-check-provider-HB4XTD4Z.mjs.map +1 -0
- package/dist/sdk/workflow-registry-AAD37XKZ.mjs +12 -0
- package/dist/sdk/workflow-registry-AAD37XKZ.mjs.map +1 -0
- package/dist/slack/client.d.ts +12 -0
- package/dist/slack/client.d.ts.map +1 -1
- package/dist/slack/slack-output-adapter.d.ts.map +1 -1
- package/dist/slack/socket-runner.d.ts.map +1 -1
- package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
- package/dist/state-machine/dispatch/policy-gate.d.ts +28 -0
- package/dist/state-machine/dispatch/policy-gate.d.ts.map +1 -0
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
- package/dist/state-machine/states/routing.d.ts.map +1 -1
- package/dist/state-machine/states/wave-planning.d.ts.map +1 -1
- package/dist/state-machine-execution-engine.d.ts.map +1 -1
- package/dist/test-runner/core/flow-stage.d.ts.map +1 -1
- package/dist/test-runner/validator.d.ts.map +1 -1
- package/dist/traces/{run-2026-02-08T18-16-04-160Z.ndjson → run-2026-02-11T16-20-59-999Z.ndjson} +84 -84
- package/dist/{output/traces/run-2026-02-08T18-16-51-253Z.ndjson → traces/run-2026-02-11T16-21-47-711Z.ndjson} +1032 -1032
- package/dist/tui/chat-runner.d.ts.map +1 -1
- package/dist/tui/chat-state.d.ts +1 -0
- package/dist/tui/chat-state.d.ts.map +1 -1
- package/dist/tui/chat-tui.d.ts +3 -2
- package/dist/tui/chat-tui.d.ts.map +1 -1
- package/dist/tui/components/chat-box.d.ts +9 -0
- package/dist/tui/components/chat-box.d.ts.map +1 -1
- package/dist/tui/components/input-bar.d.ts +18 -1
- package/dist/tui/components/input-bar.d.ts.map +1 -1
- package/dist/tui/components/status-bar.d.ts +5 -2
- package/dist/tui/components/status-bar.d.ts.map +1 -1
- package/dist/tui/components/trace-viewer.d.ts +1 -0
- package/dist/tui/components/trace-viewer.d.ts.map +1 -1
- package/dist/tui/tui-frontend.d.ts.map +1 -1
- package/dist/types/config.d.ts +107 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +5 -0
- package/dist/types/engine.d.ts.map +1 -1
- package/dist/types/execution.d.ts +1 -1
- package/dist/types/execution.d.ts.map +1 -1
- package/package.json +14 -4
- package/dist/sdk/check-provider-registry-ACRGIYOB.mjs +0 -28
- package/dist/sdk/check-provider-registry-VYHKFHK2.mjs +0 -28
- package/dist/sdk/chunk-7YSOINAQ.mjs.map +0 -1
- package/dist/sdk/chunk-BDGUM6BA.mjs.map +0 -1
- package/dist/sdk/chunk-DGZPPGJJ.mjs.map +0 -1
- package/dist/sdk/chunk-N7HO6KKC.mjs.map +0 -1
- package/dist/sdk/chunk-R5Z7YWPB.mjs.map +0 -1
- package/dist/sdk/chunk-SGS2VMEL.mjs.map +0 -1
- package/dist/sdk/failure-condition-evaluator-4WMDF4Q3.mjs +0 -17
- package/dist/sdk/memory-store-3N4AZCYB.mjs +0 -12
- package/dist/sdk/slack-frontend-R3M2CACB.mjs.map +0 -1
- package/dist/sdk/tui-frontend-S546M7A7.mjs.map +0 -1
- package/dist/sdk/workflow-check-provider-4F3432ZP.mjs +0 -28
- package/dist/sdk/workflow-check-provider-A44PBPG2.mjs +0 -28
- package/dist/sdk/workflow-registry-ZAYYXLEP.mjs +0 -12
- /package/dist/sdk/{check-provider-registry-ACRGIYOB.mjs.map → check-provider-registry-M3Y6JMTW.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-VYHKFHK2.mjs.map → check-provider-registry-PANIXYRB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-D5KI4YQ4.mjs.map → chunk-DIND4ZCV.mjs.map} +0 -0
- /package/dist/sdk/{chunk-XDLQ3UNF.mjs.map → chunk-GEW6LS32.mjs.map} +0 -0
- /package/dist/sdk/{chunk-XR7XXGL7.mjs.map → chunk-JL7JXCET.mjs.map} +0 -0
- /package/dist/sdk/{chunk-6W75IMDC.mjs.map → chunk-LG4AUKHB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-PO7X5XI7.mjs.map → chunk-SZXICFQ3.mjs.map} +0 -0
- /package/dist/sdk/{chunk-2KB35MB7.mjs.map → chunk-VPC3QSPW.mjs.map} +0 -0
- /package/dist/sdk/{chunk-J5RGJQ53.mjs.map → chunk-YJRBN3XS.mjs.map} +0 -0
- /package/dist/sdk/{command-executor-DVVXERLR.mjs.map → command-executor-TOYBBE7S.mjs.map} +0 -0
- /package/dist/sdk/{config-7VTT64SQ.mjs.map → config-OGOS4ZU4.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-4WMDF4Q3.mjs.map → failure-condition-evaluator-HC3M5377.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-3N2NLO66.mjs.map → github-frontend-E2KJSC3Y.mjs.map} +0 -0
- /package/dist/sdk/{host-ONVMEHAA.mjs.map → host-EE6EJ2FM.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-5IZLTFSZ.mjs.map → lazy-otel-5NH4ZJJM.mjs.map} +0 -0
- /package/dist/sdk/{memory-store-3N4AZCYB.mjs.map → liquid-extensions-E4EUOCES.mjs.map} +0 -0
- /package/dist/sdk/{metrics-GXQ2EDXA.mjs.map → memory-store-AAPL2MTE.mjs.map} +0 -0
- /package/dist/sdk/{prompt-state-YHGXB2OA.mjs.map → metrics-I6A7IHG4.mjs.map} +0 -0
- /package/dist/sdk/{routing-S3Y7T2X3.mjs.map → prompt-state-VAKKC773.mjs.map} +0 -0
- /package/dist/sdk/{renderer-schema-CMXOLNIG.mjs.map → renderer-schema-HXEW6BRJ.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-YHNPC7MR.mjs.map → routing-OZQWAGAI.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-4F3432ZP.mjs.map → schedule-tool-handler-B7TMSG6A.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-A44PBPG2.mjs.map → schedule-tool-handler-IEB2VS7O.mjs.map} +0 -0
- /package/dist/sdk/{workflow-registry-ZAYYXLEP.mjs.map → trace-helpers-PP3YHTAM.mjs.map} +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Schedule, ScheduleLimits } from '../schedule-store';
|
|
2
|
+
import type { ScheduleStoreBackend, ScheduleStoreStats } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* SQLite implementation of ScheduleStoreBackend
|
|
5
|
+
*/
|
|
6
|
+
export declare class SqliteStoreBackend implements ScheduleStoreBackend {
|
|
7
|
+
private db;
|
|
8
|
+
private dbPath;
|
|
9
|
+
private locks;
|
|
10
|
+
constructor(filename?: string);
|
|
11
|
+
initialize(): Promise<void>;
|
|
12
|
+
shutdown(): Promise<void>;
|
|
13
|
+
private migrateSchema;
|
|
14
|
+
private getDb;
|
|
15
|
+
create(schedule: Omit<Schedule, 'id' | 'createdAt' | 'runCount' | 'failureCount' | 'status'>): Promise<Schedule>;
|
|
16
|
+
importSchedule(schedule: Schedule): Promise<void>;
|
|
17
|
+
get(id: string): Promise<Schedule | undefined>;
|
|
18
|
+
update(id: string, patch: Partial<Schedule>): Promise<Schedule | undefined>;
|
|
19
|
+
delete(id: string): Promise<boolean>;
|
|
20
|
+
getByCreator(creatorId: string): Promise<Schedule[]>;
|
|
21
|
+
getActiveSchedules(): Promise<Schedule[]>;
|
|
22
|
+
getDueSchedules(now?: number): Promise<Schedule[]>;
|
|
23
|
+
findByWorkflow(creatorId: string, workflowName: string): Promise<Schedule[]>;
|
|
24
|
+
getAll(): Promise<Schedule[]>;
|
|
25
|
+
getStats(): Promise<ScheduleStoreStats>;
|
|
26
|
+
validateLimits(creatorId: string, isRecurring: boolean, limits: ScheduleLimits): Promise<void>;
|
|
27
|
+
tryAcquireLock(scheduleId: string, nodeId: string, ttlSeconds: number): Promise<string | null>;
|
|
28
|
+
releaseLock(scheduleId: string, lockToken: string): Promise<void>;
|
|
29
|
+
renewLock(scheduleId: string, lockToken: string, ttlSeconds: number): Promise<boolean>;
|
|
30
|
+
flush(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=sqlite-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/scheduler/store/sqlite-store.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA2GxE;;GAEG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,OAAO,CAAC,EAAE,CAAqC;IAC/C,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,KAAK,CAA2E;gBAE5E,QAAQ,CAAC,EAAE,MAAM;IAIvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,KAAK;IASP,MAAM,CACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,CAAC,GACpF,OAAO,CAAC,QAAQ,CAAC;IA4Dd,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CjD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAQ9C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAgD3E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQpD,kBAAkB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQzC,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiBlD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAc5E,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAM7B,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAoCvC,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAoCV,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAwBnB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store backend interface for schedule persistence
|
|
3
|
+
*
|
|
4
|
+
* Implementations:
|
|
5
|
+
* - SqliteStoreBackend (OSS default, zero-config)
|
|
6
|
+
* - KnexStoreBackend (Enterprise: PostgreSQL/MySQL with distributed locking)
|
|
7
|
+
*/
|
|
8
|
+
import type { Schedule, ScheduleLimits } from '../schedule-store';
|
|
9
|
+
/**
|
|
10
|
+
* Statistics about the schedule store
|
|
11
|
+
*/
|
|
12
|
+
export interface ScheduleStoreStats {
|
|
13
|
+
total: number;
|
|
14
|
+
active: number;
|
|
15
|
+
paused: number;
|
|
16
|
+
completed: number;
|
|
17
|
+
failed: number;
|
|
18
|
+
recurring: number;
|
|
19
|
+
oneTime: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Backend interface that all store implementations must satisfy
|
|
23
|
+
*/
|
|
24
|
+
export interface ScheduleStoreBackend {
|
|
25
|
+
/** Initialize the backend (create tables, run migrations, etc.) */
|
|
26
|
+
initialize(): Promise<void>;
|
|
27
|
+
/** Gracefully shut down (close connections, etc.) */
|
|
28
|
+
shutdown(): Promise<void>;
|
|
29
|
+
/** Create a new schedule, assigning id/createdAt/runCount/failureCount/status */
|
|
30
|
+
create(schedule: Omit<Schedule, 'id' | 'createdAt' | 'runCount' | 'failureCount' | 'status'>): Promise<Schedule>;
|
|
31
|
+
/** Import a full schedule preserving its original ID (used for migration) */
|
|
32
|
+
importSchedule(schedule: Schedule): Promise<void>;
|
|
33
|
+
/** Get a schedule by ID */
|
|
34
|
+
get(id: string): Promise<Schedule | undefined>;
|
|
35
|
+
/** Partial update of a schedule. Returns updated schedule or undefined if not found */
|
|
36
|
+
update(id: string, patch: Partial<Schedule>): Promise<Schedule | undefined>;
|
|
37
|
+
/** Delete a schedule. Returns true if it existed */
|
|
38
|
+
delete(id: string): Promise<boolean>;
|
|
39
|
+
/** Get all schedules for a specific creator */
|
|
40
|
+
getByCreator(creatorId: string): Promise<Schedule[]>;
|
|
41
|
+
/** Get all active schedules */
|
|
42
|
+
getActiveSchedules(): Promise<Schedule[]>;
|
|
43
|
+
/** Get schedules that are due for execution */
|
|
44
|
+
getDueSchedules(now?: number): Promise<Schedule[]>;
|
|
45
|
+
/** Find active schedules matching a workflow name (case-insensitive substring) */
|
|
46
|
+
findByWorkflow(creatorId: string, workflowName: string): Promise<Schedule[]>;
|
|
47
|
+
/** Get all schedules */
|
|
48
|
+
getAll(): Promise<Schedule[]>;
|
|
49
|
+
/** Get aggregate statistics */
|
|
50
|
+
getStats(): Promise<ScheduleStoreStats>;
|
|
51
|
+
/** Validate schedule limits before creation. Throws on violation */
|
|
52
|
+
validateLimits(creatorId: string, isRecurring: boolean, limits: ScheduleLimits): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Attempt to acquire a distributed lock for a schedule.
|
|
55
|
+
* Returns a lock token on success, null if another node holds the lock.
|
|
56
|
+
*/
|
|
57
|
+
tryAcquireLock(scheduleId: string, nodeId: string, ttlSeconds: number): Promise<string | null>;
|
|
58
|
+
/** Release a lock. No-op if the token doesn't match */
|
|
59
|
+
releaseLock(scheduleId: string, lockToken: string): Promise<void>;
|
|
60
|
+
/** Renew an existing lock. Returns false if the lock was lost */
|
|
61
|
+
renewLock(scheduleId: string, lockToken: string, ttlSeconds: number): Promise<boolean>;
|
|
62
|
+
/** Flush any pending writes (no-op for SQL backends) */
|
|
63
|
+
flush(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* SQLite connection configuration
|
|
67
|
+
*/
|
|
68
|
+
export interface SqliteConnectionConfig {
|
|
69
|
+
/** Path to the SQLite database file (default: '.visor/schedules.db') */
|
|
70
|
+
filename?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* SSL/TLS configuration for server-based database connections
|
|
74
|
+
*/
|
|
75
|
+
export interface SslConfig {
|
|
76
|
+
/** Enable SSL (default: true when SslConfig object is provided) */
|
|
77
|
+
enabled?: boolean;
|
|
78
|
+
/** Reject unauthorized certificates (default: true) */
|
|
79
|
+
reject_unauthorized?: boolean;
|
|
80
|
+
/** Path to CA certificate PEM file */
|
|
81
|
+
ca?: string;
|
|
82
|
+
/** Path to client certificate PEM file */
|
|
83
|
+
cert?: string;
|
|
84
|
+
/** Path to client key PEM file */
|
|
85
|
+
key?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Server-based database connection configuration (PostgreSQL / MySQL / MSSQL)
|
|
89
|
+
*/
|
|
90
|
+
export interface ServerConnectionConfig {
|
|
91
|
+
host?: string;
|
|
92
|
+
port?: number;
|
|
93
|
+
database?: string;
|
|
94
|
+
user?: string;
|
|
95
|
+
password?: string;
|
|
96
|
+
ssl?: boolean | SslConfig;
|
|
97
|
+
/** Connection string URL (e.g., postgresql://user:pass@host/db) */
|
|
98
|
+
connection_string?: string;
|
|
99
|
+
/** Connection pool configuration */
|
|
100
|
+
pool?: {
|
|
101
|
+
min?: number;
|
|
102
|
+
max?: number;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Storage driver configuration
|
|
107
|
+
*/
|
|
108
|
+
export interface StorageConfig {
|
|
109
|
+
/** Database driver (default: 'sqlite') */
|
|
110
|
+
driver: 'sqlite' | 'postgresql' | 'mysql' | 'mssql';
|
|
111
|
+
/** Connection configuration (driver-specific) */
|
|
112
|
+
connection?: SqliteConnectionConfig | ServerConnectionConfig;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* High-availability configuration for multi-node deployments
|
|
116
|
+
*/
|
|
117
|
+
export interface HAConfig {
|
|
118
|
+
/** Enable distributed locking (default: false) */
|
|
119
|
+
enabled: boolean;
|
|
120
|
+
/** Unique node identifier (default: hostname + pid) */
|
|
121
|
+
node_id?: string;
|
|
122
|
+
/** Lock time-to-live in seconds (default: 60) */
|
|
123
|
+
lock_ttl?: number;
|
|
124
|
+
/** Heartbeat interval in seconds (default: 15) */
|
|
125
|
+
heartbeat_interval?: number;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/scheduler/store/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CheckProviderRegistry,
|
|
3
|
+
init_check_provider_registry
|
|
4
|
+
} from "./chunk-EUUAQBTW.mjs";
|
|
5
|
+
import "./chunk-LG4AUKHB.mjs";
|
|
6
|
+
import "./chunk-KFKHU6CM.mjs";
|
|
7
|
+
import "./chunk-B7BVQM5K.mjs";
|
|
8
|
+
import "./chunk-XXAEN5KU.mjs";
|
|
9
|
+
import "./chunk-GEW6LS32.mjs";
|
|
10
|
+
import "./chunk-DIND4ZCV.mjs";
|
|
11
|
+
import "./chunk-UCNT3PDT.mjs";
|
|
12
|
+
import "./chunk-NCWIZVOT.mjs";
|
|
13
|
+
import "./chunk-VMLORODQ.mjs";
|
|
14
|
+
import "./chunk-HOKQOO3G.mjs";
|
|
15
|
+
import "./chunk-YJRBN3XS.mjs";
|
|
16
|
+
import "./chunk-JL7JXCET.mjs";
|
|
17
|
+
import "./chunk-V2IV3ILA.mjs";
|
|
18
|
+
import "./chunk-25IC7KXZ.mjs";
|
|
19
|
+
import "./chunk-VF6XIUE4.mjs";
|
|
20
|
+
import "./chunk-VPC3QSPW.mjs";
|
|
21
|
+
import "./chunk-SZXICFQ3.mjs";
|
|
22
|
+
import "./chunk-UCMJJ3IM.mjs";
|
|
23
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
24
|
+
init_check_provider_registry();
|
|
25
|
+
export {
|
|
26
|
+
CheckProviderRegistry
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=check-provider-registry-M3Y6JMTW.mjs.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CheckProviderRegistry,
|
|
3
|
+
init_check_provider_registry
|
|
4
|
+
} from "./chunk-S6CD7GFM.mjs";
|
|
5
|
+
import "./chunk-LG4AUKHB.mjs";
|
|
6
|
+
import "./chunk-KFKHU6CM.mjs";
|
|
7
|
+
import "./chunk-B7BVQM5K.mjs";
|
|
8
|
+
import "./chunk-XXAEN5KU.mjs";
|
|
9
|
+
import "./chunk-GEW6LS32.mjs";
|
|
10
|
+
import "./chunk-DIND4ZCV.mjs";
|
|
11
|
+
import "./chunk-UCNT3PDT.mjs";
|
|
12
|
+
import "./chunk-NCWIZVOT.mjs";
|
|
13
|
+
import "./chunk-VMLORODQ.mjs";
|
|
14
|
+
import "./chunk-HOKQOO3G.mjs";
|
|
15
|
+
import "./chunk-YJRBN3XS.mjs";
|
|
16
|
+
import "./chunk-JL7JXCET.mjs";
|
|
17
|
+
import "./chunk-V2IV3ILA.mjs";
|
|
18
|
+
import "./chunk-25IC7KXZ.mjs";
|
|
19
|
+
import "./chunk-VF6XIUE4.mjs";
|
|
20
|
+
import "./chunk-VPC3QSPW.mjs";
|
|
21
|
+
import "./chunk-SZXICFQ3.mjs";
|
|
22
|
+
import "./chunk-UCMJJ3IM.mjs";
|
|
23
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
24
|
+
init_check_provider_registry();
|
|
25
|
+
export {
|
|
26
|
+
CheckProviderRegistry
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=check-provider-registry-PANIXYRB.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init_logger,
|
|
3
3
|
logger
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SZXICFQ3.mjs";
|
|
5
5
|
import {
|
|
6
6
|
__esm
|
|
7
7
|
} from "./chunk-J7LXIPZS.mjs";
|
|
@@ -603,4 +603,4 @@ export {
|
|
|
603
603
|
WorkflowRegistry,
|
|
604
604
|
init_workflow_registry
|
|
605
605
|
};
|
|
606
|
-
//# sourceMappingURL=chunk-
|
|
606
|
+
//# sourceMappingURL=chunk-DIND4ZCV.mjs.map
|