@smthrs/control 0.0.0-stage → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +194 -0
- package/LICENSE +21 -0
- package/README.md +168 -2
- package/dist/cjs/ApprovalAuthority.d.ts +73 -0
- package/dist/cjs/ApprovalAuthority.d.ts.map +1 -0
- package/dist/cjs/ApprovalAuthority.js +62 -0
- package/dist/cjs/ApprovalAuthority.js.map +7 -0
- package/dist/cjs/Cancellation.d.ts +107 -0
- package/dist/cjs/Cancellation.d.ts.map +1 -0
- package/dist/cjs/Cancellation.js +72 -0
- package/dist/cjs/Cancellation.js.map +7 -0
- package/dist/cjs/Channels.d.ts +170 -0
- package/dist/cjs/Channels.d.ts.map +1 -0
- package/dist/cjs/Channels.js +278 -0
- package/dist/cjs/Channels.js.map +7 -0
- package/dist/cjs/Control.d.ts +202 -0
- package/dist/cjs/Control.d.ts.map +1 -0
- package/dist/cjs/Control.js +47 -0
- package/dist/cjs/Control.js.map +7 -0
- package/dist/cjs/ControlClient.d.ts +52 -0
- package/dist/cjs/ControlClient.d.ts.map +1 -0
- package/dist/cjs/ControlClient.js +191 -0
- package/dist/cjs/ControlClient.js.map +7 -0
- package/dist/cjs/ControlError.d.ts +318 -0
- package/dist/cjs/ControlError.d.ts.map +1 -0
- package/dist/cjs/ControlError.js +249 -0
- package/dist/cjs/ControlError.js.map +7 -0
- package/dist/cjs/ControlExecutor.d.ts +372 -0
- package/dist/cjs/ControlExecutor.d.ts.map +1 -0
- package/dist/cjs/ControlExecutor.js +123 -0
- package/dist/cjs/ControlExecutor.js.map +7 -0
- package/dist/cjs/ControlFacts.d.ts +454 -0
- package/dist/cjs/ControlFacts.d.ts.map +1 -0
- package/dist/cjs/ControlFacts.js +261 -0
- package/dist/cjs/ControlFacts.js.map +7 -0
- package/dist/cjs/ControlLive.d.ts +23 -0
- package/dist/cjs/ControlLive.d.ts.map +1 -0
- package/dist/cjs/ControlLive.js +1293 -0
- package/dist/cjs/ControlLive.js.map +7 -0
- package/dist/cjs/ControlRpcs.d.ts +1204 -0
- package/dist/cjs/ControlRpcs.d.ts.map +1 -0
- package/dist/cjs/ControlRpcs.js +247 -0
- package/dist/cjs/ControlRpcs.js.map +7 -0
- package/dist/cjs/ControlRuntime.d.ts +635 -0
- package/dist/cjs/ControlRuntime.d.ts.map +1 -0
- package/dist/cjs/ControlRuntime.js +744 -0
- package/dist/cjs/ControlRuntime.js.map +7 -0
- package/dist/cjs/ControlSchema.d.ts +2642 -0
- package/dist/cjs/ControlSchema.d.ts.map +1 -0
- package/dist/cjs/ControlSchema.js +634 -0
- package/dist/cjs/ControlSchema.js.map +7 -0
- package/dist/cjs/ControlServer.d.ts +51 -0
- package/dist/cjs/ControlServer.d.ts.map +1 -0
- package/dist/cjs/ControlServer.js +121 -0
- package/dist/cjs/ControlServer.js.map +7 -0
- package/dist/cjs/Credential.d.ts +136 -0
- package/dist/cjs/Credential.d.ts.map +1 -0
- package/dist/cjs/Credential.js +168 -0
- package/dist/cjs/Credential.js.map +7 -0
- package/dist/cjs/CredentialCipher.d.ts +90 -0
- package/dist/cjs/CredentialCipher.d.ts.map +1 -0
- package/dist/cjs/CredentialCipher.js +45 -0
- package/dist/cjs/CredentialCipher.js.map +7 -0
- package/dist/cjs/CredentialStore.d.ts +97 -0
- package/dist/cjs/CredentialStore.d.ts.map +1 -0
- package/dist/cjs/CredentialStore.js +81 -0
- package/dist/cjs/CredentialStore.js.map +7 -0
- package/dist/cjs/DispatchReader.d.ts +112 -0
- package/dist/cjs/DispatchReader.d.ts.map +1 -0
- package/dist/cjs/DispatchReader.js +45 -0
- package/dist/cjs/DispatchReader.js.map +7 -0
- package/dist/cjs/Health.d.ts +333 -0
- package/dist/cjs/Health.d.ts.map +1 -0
- package/dist/cjs/Health.js +311 -0
- package/dist/cjs/Health.js.map +7 -0
- package/dist/cjs/JevSessionChecker.d.ts +57 -0
- package/dist/cjs/JevSessionChecker.d.ts.map +1 -0
- package/dist/cjs/JevSessionChecker.js +113 -0
- package/dist/cjs/JevSessionChecker.js.map +7 -0
- package/dist/cjs/Lineage.d.ts +131 -0
- package/dist/cjs/Lineage.d.ts.map +1 -0
- package/dist/cjs/Lineage.js +81 -0
- package/dist/cjs/Lineage.js.map +7 -0
- package/dist/cjs/Migrations.d.ts +34 -0
- package/dist/cjs/Migrations.d.ts.map +1 -0
- package/dist/cjs/Migrations.js +60 -0
- package/dist/cjs/Migrations.js.map +7 -0
- package/dist/cjs/Monitor.d.ts +282 -0
- package/dist/cjs/Monitor.d.ts.map +1 -0
- package/dist/cjs/Monitor.js +283 -0
- package/dist/cjs/Monitor.js.map +7 -0
- package/dist/cjs/ScopedToken.d.ts +193 -0
- package/dist/cjs/ScopedToken.d.ts.map +1 -0
- package/dist/cjs/ScopedToken.js +135 -0
- package/dist/cjs/ScopedToken.js.map +7 -0
- package/dist/cjs/SqlControlRuntime.d.ts +161 -0
- package/dist/cjs/SqlControlRuntime.d.ts.map +1 -0
- package/dist/cjs/SqlControlRuntime.js +1522 -0
- package/dist/cjs/SqlControlRuntime.js.map +7 -0
- package/dist/cjs/SqlCredentialStore.d.ts +43 -0
- package/dist/cjs/SqlCredentialStore.d.ts.map +1 -0
- package/dist/cjs/SqlCredentialStore.js +113 -0
- package/dist/cjs/SqlCredentialStore.js.map +7 -0
- package/dist/cjs/Steering.d.ts +69 -0
- package/dist/cjs/Steering.d.ts.map +1 -0
- package/dist/cjs/Steering.js +49 -0
- package/dist/cjs/Steering.js.map +7 -0
- package/dist/cjs/SystemFlows.d.ts +223 -0
- package/dist/cjs/SystemFlows.d.ts.map +1 -0
- package/dist/cjs/SystemFlows.js +195 -0
- package/dist/cjs/SystemFlows.js.map +7 -0
- package/dist/cjs/WebCryptoCipher.d.ts +49 -0
- package/dist/cjs/WebCryptoCipher.d.ts.map +1 -0
- package/dist/cjs/WebCryptoCipher.js +129 -0
- package/dist/cjs/WebCryptoCipher.js.map +7 -0
- package/dist/cjs/WebhookChannel.d.ts +113 -0
- package/dist/cjs/WebhookChannel.d.ts.map +1 -0
- package/dist/cjs/WebhookChannel.js +98 -0
- package/dist/cjs/WebhookChannel.js.map +7 -0
- package/dist/cjs/index.d.ts +160 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +91 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/MutationBoundary.d.ts +27 -0
- package/dist/cjs/internal/MutationBoundary.d.ts.map +1 -0
- package/dist/cjs/internal/MutationBoundary.js +50 -0
- package/dist/cjs/internal/MutationBoundary.js.map +7 -0
- package/dist/cjs/internal/activeFibers.d.ts +12 -0
- package/dist/cjs/internal/activeFibers.d.ts.map +1 -0
- package/dist/cjs/internal/activeFibers.js +30 -0
- package/dist/cjs/internal/activeFibers.js.map +7 -0
- package/dist/cjs/internal/issues.d.ts +28 -0
- package/dist/cjs/internal/issues.d.ts.map +1 -0
- package/dist/cjs/internal/issues.js +34 -0
- package/dist/cjs/internal/issues.js.map +7 -0
- package/dist/cjs/internal/planning.d.ts +347 -0
- package/dist/cjs/internal/planning.d.ts.map +1 -0
- package/dist/cjs/internal/planning.js +137 -0
- package/dist/cjs/internal/planning.js.map +7 -0
- package/dist/cjs/internal/sqlSchemaErrors.d.ts +18 -0
- package/dist/cjs/internal/sqlSchemaErrors.d.ts.map +1 -0
- package/dist/cjs/internal/sqlSchemaErrors.js +40 -0
- package/dist/cjs/internal/sqlSchemaErrors.js.map +7 -0
- package/dist/cjs/migrations/0001_control_tables.d.ts +18 -0
- package/dist/cjs/migrations/0001_control_tables.d.ts.map +1 -0
- package/dist/cjs/migrations/0001_control_tables.js +115 -0
- package/dist/cjs/migrations/0001_control_tables.js.map +7 -0
- package/dist/cjs/migrations/0002_run_keys.d.ts +15 -0
- package/dist/cjs/migrations/0002_run_keys.d.ts.map +1 -0
- package/dist/cjs/migrations/0002_run_keys.js +44 -0
- package/dist/cjs/migrations/0002_run_keys.js.map +7 -0
- package/dist/cjs/migrations/0003_signal_commands.d.ts +13 -0
- package/dist/cjs/migrations/0003_signal_commands.d.ts.map +1 -0
- package/dist/cjs/migrations/0003_signal_commands.js +50 -0
- package/dist/cjs/migrations/0003_signal_commands.js.map +7 -0
- package/dist/cjs/migrations/0004_approval_decisions.d.ts +13 -0
- package/dist/cjs/migrations/0004_approval_decisions.d.ts.map +1 -0
- package/dist/cjs/migrations/0004_approval_decisions.js +45 -0
- package/dist/cjs/migrations/0004_approval_decisions.js.map +7 -0
- package/dist/cjs/migrations/0005_signal_principals.d.ts +18 -0
- package/dist/cjs/migrations/0005_signal_principals.d.ts.map +1 -0
- package/dist/cjs/migrations/0005_signal_principals.js +45 -0
- package/dist/cjs/migrations/0005_signal_principals.js.map +7 -0
- package/dist/cjs/migrations/0006_run_principals.d.ts +18 -0
- package/dist/cjs/migrations/0006_run_principals.d.ts.map +1 -0
- package/dist/cjs/migrations/0006_run_principals.js +49 -0
- package/dist/cjs/migrations/0006_run_principals.js.map +7 -0
- package/dist/cjs/migrations/0007_resume_consent.d.ts +18 -0
- package/dist/cjs/migrations/0007_resume_consent.d.ts.map +1 -0
- package/dist/cjs/migrations/0007_resume_consent.js +46 -0
- package/dist/cjs/migrations/0007_resume_consent.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/TestControl.d.ts +19 -0
- package/dist/cjs/test/TestControl.d.ts.map +1 -0
- package/dist/cjs/test/TestControl.js +62 -0
- package/dist/cjs/test/TestControl.js.map +7 -0
- package/dist/esm/ApprovalAuthority.d.ts +73 -0
- package/dist/esm/ApprovalAuthority.d.ts.map +1 -0
- package/dist/esm/ApprovalAuthority.js +72 -0
- package/dist/esm/ApprovalAuthority.js.map +1 -0
- package/dist/esm/Cancellation.d.ts +107 -0
- package/dist/esm/Cancellation.d.ts.map +1 -0
- package/dist/esm/Cancellation.js +116 -0
- package/dist/esm/Cancellation.js.map +1 -0
- package/dist/esm/Channels.d.ts +170 -0
- package/dist/esm/Channels.d.ts.map +1 -0
- package/dist/esm/Channels.js +312 -0
- package/dist/esm/Channels.js.map +1 -0
- package/dist/esm/Control.d.ts +202 -0
- package/dist/esm/Control.d.ts.map +1 -0
- package/dist/esm/Control.js +42 -0
- package/dist/esm/Control.js.map +1 -0
- package/dist/esm/ControlClient.d.ts +52 -0
- package/dist/esm/ControlClient.d.ts.map +1 -0
- package/dist/esm/ControlClient.js +217 -0
- package/dist/esm/ControlClient.js.map +1 -0
- package/dist/esm/ControlError.d.ts +318 -0
- package/dist/esm/ControlError.d.ts.map +1 -0
- package/dist/esm/ControlError.js +359 -0
- package/dist/esm/ControlError.js.map +1 -0
- package/dist/esm/ControlExecutor.d.ts +372 -0
- package/dist/esm/ControlExecutor.d.ts.map +1 -0
- package/dist/esm/ControlExecutor.js +212 -0
- package/dist/esm/ControlExecutor.js.map +1 -0
- package/dist/esm/ControlFacts.d.ts +454 -0
- package/dist/esm/ControlFacts.d.ts.map +1 -0
- package/dist/esm/ControlFacts.js +324 -0
- package/dist/esm/ControlFacts.js.map +1 -0
- package/dist/esm/ControlLive.d.ts +23 -0
- package/dist/esm/ControlLive.d.ts.map +1 -0
- package/dist/esm/ControlLive.js +1589 -0
- package/dist/esm/ControlLive.js.map +1 -0
- package/dist/esm/ControlRpcs.d.ts +1204 -0
- package/dist/esm/ControlRpcs.d.ts.map +1 -0
- package/dist/esm/ControlRpcs.js +299 -0
- package/dist/esm/ControlRpcs.js.map +1 -0
- package/dist/esm/ControlRuntime.d.ts +635 -0
- package/dist/esm/ControlRuntime.d.ts.map +1 -0
- package/dist/esm/ControlRuntime.js +808 -0
- package/dist/esm/ControlRuntime.js.map +1 -0
- package/dist/esm/ControlSchema.d.ts +2642 -0
- package/dist/esm/ControlSchema.d.ts.map +1 -0
- package/dist/esm/ControlSchema.js +1030 -0
- package/dist/esm/ControlSchema.js.map +1 -0
- package/dist/esm/ControlServer.d.ts +51 -0
- package/dist/esm/ControlServer.d.ts.map +1 -0
- package/dist/esm/ControlServer.js +145 -0
- package/dist/esm/ControlServer.js.map +1 -0
- package/dist/esm/Credential.d.ts +136 -0
- package/dist/esm/Credential.d.ts.map +1 -0
- package/dist/esm/Credential.js +190 -0
- package/dist/esm/Credential.js.map +1 -0
- package/dist/esm/CredentialCipher.d.ts +90 -0
- package/dist/esm/CredentialCipher.d.ts.map +1 -0
- package/dist/esm/CredentialCipher.js +56 -0
- package/dist/esm/CredentialCipher.js.map +1 -0
- package/dist/esm/CredentialStore.d.ts +97 -0
- package/dist/esm/CredentialStore.d.ts.map +1 -0
- package/dist/esm/CredentialStore.js +101 -0
- package/dist/esm/CredentialStore.js.map +1 -0
- package/dist/esm/DispatchReader.d.ts +112 -0
- package/dist/esm/DispatchReader.d.ts.map +1 -0
- package/dist/esm/DispatchReader.js +76 -0
- package/dist/esm/DispatchReader.js.map +1 -0
- package/dist/esm/Health.d.ts +333 -0
- package/dist/esm/Health.d.ts.map +1 -0
- package/dist/esm/Health.js +400 -0
- package/dist/esm/Health.js.map +1 -0
- package/dist/esm/JevSessionChecker.d.ts +57 -0
- package/dist/esm/JevSessionChecker.d.ts.map +1 -0
- package/dist/esm/JevSessionChecker.js +108 -0
- package/dist/esm/JevSessionChecker.js.map +1 -0
- package/dist/esm/Lineage.d.ts +131 -0
- package/dist/esm/Lineage.d.ts.map +1 -0
- package/dist/esm/Lineage.js +174 -0
- package/dist/esm/Lineage.js.map +1 -0
- package/dist/esm/Migrations.d.ts +34 -0
- package/dist/esm/Migrations.d.ts.map +1 -0
- package/dist/esm/Migrations.js +53 -0
- package/dist/esm/Migrations.js.map +1 -0
- package/dist/esm/Monitor.d.ts +282 -0
- package/dist/esm/Monitor.d.ts.map +1 -0
- package/dist/esm/Monitor.js +415 -0
- package/dist/esm/Monitor.js.map +1 -0
- package/dist/esm/ScopedToken.d.ts +193 -0
- package/dist/esm/ScopedToken.d.ts.map +1 -0
- package/dist/esm/ScopedToken.js +224 -0
- package/dist/esm/ScopedToken.js.map +1 -0
- package/dist/esm/SqlControlRuntime.d.ts +161 -0
- package/dist/esm/SqlControlRuntime.d.ts.map +1 -0
- package/dist/esm/SqlControlRuntime.js +1756 -0
- package/dist/esm/SqlControlRuntime.js.map +1 -0
- package/dist/esm/SqlCredentialStore.d.ts +43 -0
- package/dist/esm/SqlCredentialStore.d.ts.map +1 -0
- package/dist/esm/SqlCredentialStore.js +97 -0
- package/dist/esm/SqlCredentialStore.js.map +1 -0
- package/dist/esm/Steering.d.ts +69 -0
- package/dist/esm/Steering.d.ts.map +1 -0
- package/dist/esm/Steering.js +89 -0
- package/dist/esm/Steering.js.map +1 -0
- package/dist/esm/SystemFlows.d.ts +223 -0
- package/dist/esm/SystemFlows.d.ts.map +1 -0
- package/dist/esm/SystemFlows.js +198 -0
- package/dist/esm/SystemFlows.js.map +1 -0
- package/dist/esm/WebCryptoCipher.d.ts +49 -0
- package/dist/esm/WebCryptoCipher.d.ts.map +1 -0
- package/dist/esm/WebCryptoCipher.js +123 -0
- package/dist/esm/WebCryptoCipher.js.map +1 -0
- package/dist/esm/WebhookChannel.d.ts +113 -0
- package/dist/esm/WebhookChannel.d.ts.map +1 -0
- package/dist/esm/WebhookChannel.js +109 -0
- package/dist/esm/WebhookChannel.js.map +1 -0
- package/dist/esm/index.d.ts +160 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +160 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/MutationBoundary.d.ts +27 -0
- package/dist/esm/internal/MutationBoundary.d.ts.map +1 -0
- package/dist/esm/internal/MutationBoundary.js +40 -0
- package/dist/esm/internal/MutationBoundary.js.map +1 -0
- package/dist/esm/internal/activeFibers.d.ts +12 -0
- package/dist/esm/internal/activeFibers.d.ts.map +1 -0
- package/dist/esm/internal/activeFibers.js +17 -0
- package/dist/esm/internal/activeFibers.js.map +1 -0
- package/dist/esm/internal/issues.d.ts +28 -0
- package/dist/esm/internal/issues.d.ts.map +1 -0
- package/dist/esm/internal/issues.js +35 -0
- package/dist/esm/internal/issues.js.map +1 -0
- package/dist/esm/internal/planning.d.ts +347 -0
- package/dist/esm/internal/planning.d.ts.map +1 -0
- package/dist/esm/internal/planning.js +199 -0
- package/dist/esm/internal/planning.js.map +1 -0
- package/dist/esm/internal/sqlSchemaErrors.d.ts +18 -0
- package/dist/esm/internal/sqlSchemaErrors.d.ts.map +1 -0
- package/dist/esm/internal/sqlSchemaErrors.js +38 -0
- package/dist/esm/internal/sqlSchemaErrors.js.map +1 -0
- package/dist/esm/migrations/0001_control_tables.d.ts +18 -0
- package/dist/esm/migrations/0001_control_tables.d.ts.map +1 -0
- package/dist/esm/migrations/0001_control_tables.js +96 -0
- package/dist/esm/migrations/0001_control_tables.js.map +1 -0
- package/dist/esm/migrations/0002_run_keys.d.ts +15 -0
- package/dist/esm/migrations/0002_run_keys.d.ts.map +1 -0
- package/dist/esm/migrations/0002_run_keys.js +22 -0
- package/dist/esm/migrations/0002_run_keys.js.map +1 -0
- package/dist/esm/migrations/0003_signal_commands.d.ts +13 -0
- package/dist/esm/migrations/0003_signal_commands.d.ts.map +1 -0
- package/dist/esm/migrations/0003_signal_commands.js +26 -0
- package/dist/esm/migrations/0003_signal_commands.js.map +1 -0
- package/dist/esm/migrations/0004_approval_decisions.d.ts +13 -0
- package/dist/esm/migrations/0004_approval_decisions.d.ts.map +1 -0
- package/dist/esm/migrations/0004_approval_decisions.js +25 -0
- package/dist/esm/migrations/0004_approval_decisions.js.map +1 -0
- package/dist/esm/migrations/0005_signal_principals.d.ts +18 -0
- package/dist/esm/migrations/0005_signal_principals.d.ts.map +1 -0
- package/dist/esm/migrations/0005_signal_principals.js +27 -0
- package/dist/esm/migrations/0005_signal_principals.js.map +1 -0
- package/dist/esm/migrations/0006_run_principals.d.ts +18 -0
- package/dist/esm/migrations/0006_run_principals.d.ts.map +1 -0
- package/dist/esm/migrations/0006_run_principals.js +30 -0
- package/dist/esm/migrations/0006_run_principals.js.map +1 -0
- package/dist/esm/migrations/0007_resume_consent.d.ts +18 -0
- package/dist/esm/migrations/0007_resume_consent.d.ts.map +1 -0
- package/dist/esm/migrations/0007_resume_consent.js +27 -0
- package/dist/esm/migrations/0007_resume_consent.js.map +1 -0
- package/dist/esm/test/TestControl.d.ts +19 -0
- package/dist/esm/test/TestControl.d.ts.map +1 -0
- package/dist/esm/test/TestControl.js +30 -0
- package/dist/esm/test/TestControl.js.map +1 -0
- package/docs/README.md +189 -0
- package/docs/api.md +982 -0
- package/docs/concepts/authority.md +109 -0
- package/docs/concepts/cancellation.md +129 -0
- package/docs/concepts/lineage.md +132 -0
- package/docs/concepts/ownership.md +139 -0
- package/docs/concepts/projections.md +203 -0
- package/docs/concepts/receipts.md +128 -0
- package/docs/guides/approvals.md +284 -0
- package/docs/guides/cancel-and-resume.md +162 -0
- package/docs/guides/durable-storage.md +147 -0
- package/docs/guides/implement-an-executor.md +173 -0
- package/docs/guides/ingest-a-webhook.md +177 -0
- package/docs/guides/list-runs.md +160 -0
- package/docs/guides/monitor-runs.md +176 -0
- package/docs/guides/observe-health.md +147 -0
- package/docs/guides/postgres-tests.md +7 -0
- package/docs/guides/serve-over-rpc.md +220 -0
- package/docs/guides/signal-a-run.md +53 -0
- package/docs/guides/steer-a-run.md +138 -0
- package/docs/guides/store-credentials.md +164 -0
- package/docs/guides/testing.md +139 -0
- package/docs/guides/watch-a-run.md +154 -0
- package/docs/installation.md +106 -0
- package/docs/quickstart.md +163 -0
- package/docs/troubleshooting.md +208 -0
- package/package.json +405 -3
- package/src/ApprovalAuthority.ts +114 -0
- package/src/Cancellation.ts +172 -0
- package/src/Channels.ts +493 -0
- package/src/Control.ts +337 -0
- package/src/ControlClient.ts +319 -0
- package/src/ControlError.ts +378 -0
- package/src/ControlExecutor.ts +490 -0
- package/src/ControlFacts.ts +383 -0
- package/src/ControlLive.ts +2127 -0
- package/src/ControlRpcs.ts +443 -0
- package/src/ControlRuntime.ts +1601 -0
- package/src/ControlSchema.ts +1380 -0
- package/src/ControlServer.ts +182 -0
- package/src/Credential.ts +310 -0
- package/src/CredentialCipher.ts +110 -0
- package/src/CredentialStore.ts +152 -0
- package/src/DispatchReader.ts +122 -0
- package/src/Health.ts +591 -0
- package/src/JevSessionChecker.ts +127 -0
- package/src/Lineage.ts +203 -0
- package/src/Migrations.ts +56 -0
- package/src/Monitor.ts +600 -0
- package/src/ScopedToken.ts +306 -0
- package/src/SqlControlRuntime.ts +2478 -0
- package/src/SqlCredentialStore.ts +148 -0
- package/src/Steering.ts +96 -0
- package/src/SystemFlows.ts +225 -0
- package/src/WebCryptoCipher.ts +169 -0
- package/src/WebhookChannel.ts +166 -0
- package/src/index.ts +188 -0
- package/src/internal/MutationBoundary.ts +46 -0
- package/src/internal/activeFibers.ts +22 -0
- package/src/internal/issues.ts +40 -0
- package/src/internal/planning.ts +262 -0
- package/src/internal/sqlSchemaErrors.ts +37 -0
- package/src/migrations/0001_control_tables.ts +99 -0
- package/src/migrations/0002_run_keys.ts +23 -0
- package/src/migrations/0003_signal_commands.ts +27 -0
- package/src/migrations/0004_approval_decisions.ts +25 -0
- package/src/migrations/0005_signal_principals.ts +27 -0
- package/src/migrations/0006_run_principals.ts +31 -0
- package/src/migrations/0007_resume_consent.ts +28 -0
- package/src/test/TestControl.ts +47 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read port from the control plane into a trigger store.
|
|
3
|
+
*
|
|
4
|
+
* `Control.list` answers `{ _tag: "triggers" }` and `{ _tag: "fires" }` through
|
|
5
|
+
* this port. The port lives here rather than in `@smthrs/triggers` because that
|
|
6
|
+
* package already depends on this one (its scheduler launches runs through
|
|
7
|
+
* `Control`), so the adapter over a real `TriggerStore` is composed by the host
|
|
8
|
+
* and the plane only ever sees the interface.
|
|
9
|
+
*
|
|
10
|
+
* A composition that provides no reader, or provides {@link layerNone}, makes
|
|
11
|
+
* `Control.list` refuse the two variants with a typed `InvalidInput` naming the
|
|
12
|
+
* gap. It never answers an empty page: an empty page means "this host has no
|
|
13
|
+
* triggers", and a host that cannot read its store has no grounds to say so.
|
|
14
|
+
*
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
import { Context, Effect, Layer } from "effect";
|
|
18
|
+
import type { ControlError } from "./ControlError.ts";
|
|
19
|
+
import { InvalidInput } from "./ControlError.ts";
|
|
20
|
+
import type { FireSummary, ListRequest, TriggerSummary } from "./ControlSchema.ts";
|
|
21
|
+
/**
|
|
22
|
+
* The `triggers` listing request as the port receives it.
|
|
23
|
+
*
|
|
24
|
+
* @category models
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export type TriggersRequest = Extract<ListRequest, {
|
|
28
|
+
readonly _tag: "triggers";
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* The `fires` listing request as the port receives it.
|
|
32
|
+
*
|
|
33
|
+
* @category models
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
*/
|
|
36
|
+
export type FiresRequest = Extract<ListRequest, {
|
|
37
|
+
readonly _tag: "fires";
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* The reader `Control.list` pages trigger and fire rows from.
|
|
41
|
+
*
|
|
42
|
+
* Each method receives the whole request and answers every row it has for it,
|
|
43
|
+
* newest fire first. A reader may narrow by the request's `filters` (a SQL
|
|
44
|
+
* adapter pushes them into the query); `Control.list` applies the same filters
|
|
45
|
+
* again and pages the rows with `cursor` and `limit`, so a reader that returns
|
|
46
|
+
* every row is still correct. Paging stays in the plane so both variants page
|
|
47
|
+
* exactly as `flows` and `runs` do.
|
|
48
|
+
*
|
|
49
|
+
* @category services
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
*/
|
|
52
|
+
export interface Service {
|
|
53
|
+
readonly list: (request: TriggersRequest) => Effect.Effect<ReadonlyArray<TriggerSummary>, ControlError>;
|
|
54
|
+
readonly fires: (request: FiresRequest) => Effect.Effect<ReadonlyArray<FireSummary>, ControlError>;
|
|
55
|
+
}
|
|
56
|
+
declare const DispatchReader_base: Context.ServiceClass<DispatchReader, "/control/DispatchReader", Service>;
|
|
57
|
+
/**
|
|
58
|
+
* The {@link Service} tag.
|
|
59
|
+
*
|
|
60
|
+
* @category services
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
*/
|
|
63
|
+
export declare class DispatchReader extends DispatchReader_base {
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The refusal a host without a trigger store answers both variants with.
|
|
67
|
+
*
|
|
68
|
+
* @category constants
|
|
69
|
+
* @since 1.0.0
|
|
70
|
+
*/
|
|
71
|
+
export declare const noStoreIssue = "this host serves no trigger store";
|
|
72
|
+
/**
|
|
73
|
+
* The typed refusal for a host without a trigger store: `InvalidInput` with
|
|
74
|
+
* code `invalid_input` and {@link noStoreIssue} as the issue, the same shape
|
|
75
|
+
* `Control.list` refuses an unsupported run filter with.
|
|
76
|
+
*
|
|
77
|
+
* @category constructors
|
|
78
|
+
* @since 1.0.0
|
|
79
|
+
*/
|
|
80
|
+
export declare const refuse: () => InvalidInput;
|
|
81
|
+
/**
|
|
82
|
+
* Builds a {@link Service} from an implementation of its methods.
|
|
83
|
+
*
|
|
84
|
+
* @category constructors
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
*/
|
|
87
|
+
export declare const make: (implementation: Service) => Service;
|
|
88
|
+
/**
|
|
89
|
+
* A {@link Service} that serves no trigger store: both methods fail with
|
|
90
|
+
* {@link refuse}.
|
|
91
|
+
*
|
|
92
|
+
* @category constructors
|
|
93
|
+
* @since 1.0.0
|
|
94
|
+
*/
|
|
95
|
+
export declare const makeNone: () => Service;
|
|
96
|
+
/**
|
|
97
|
+
* Provides {@link DispatchReader} from an implementation.
|
|
98
|
+
*
|
|
99
|
+
* @category layers
|
|
100
|
+
* @since 1.0.0
|
|
101
|
+
*/
|
|
102
|
+
export declare const layer: (implementation: Service) => Layer.Layer<DispatchReader>;
|
|
103
|
+
/**
|
|
104
|
+
* Provides {@link makeNone}: a reader that refuses both listings because this
|
|
105
|
+
* host serves no trigger store.
|
|
106
|
+
*
|
|
107
|
+
* @category layers
|
|
108
|
+
* @since 1.0.0
|
|
109
|
+
*/
|
|
110
|
+
export declare const layerNone: Layer.Layer<DispatchReader>;
|
|
111
|
+
export {};
|
|
112
|
+
//# sourceMappingURL=DispatchReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DispatchReader.d.ts","sourceRoot":"","sources":["../../src/DispatchReader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAElF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAA;AAEjF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AAE3E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,CAAA;IACvG,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAA;CACnG;;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,mBAEnC;CAAG;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,YAAY,sCAAsC,CAAA;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,QAAO,YAAyD,CAAA;AAEnF;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,gBAAgB,OAAO,KAAG,OAA4C,CAAA;AAE3F;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,QAAO,OAIxB,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,gBAAgB,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CACrB,CAAA;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAA6C,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var DispatchReader_exports = {};
|
|
20
|
+
__export(DispatchReader_exports, {
|
|
21
|
+
DispatchReader: () => DispatchReader,
|
|
22
|
+
layer: () => layer,
|
|
23
|
+
layerNone: () => layerNone,
|
|
24
|
+
make: () => make,
|
|
25
|
+
makeNone: () => makeNone,
|
|
26
|
+
noStoreIssue: () => noStoreIssue,
|
|
27
|
+
refuse: () => refuse
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(DispatchReader_exports);
|
|
30
|
+
var import_effect = require("effect");
|
|
31
|
+
var import_ControlError = require("./ControlError.js");
|
|
32
|
+
class DispatchReader extends import_effect.Context.Service()(
|
|
33
|
+
"/control/DispatchReader"
|
|
34
|
+
) {
|
|
35
|
+
}
|
|
36
|
+
const noStoreIssue = "this host serves no trigger store";
|
|
37
|
+
const refuse = () => new import_ControlError.InvalidInput({ issue: noStoreIssue });
|
|
38
|
+
const make = (implementation) => DispatchReader.of(implementation);
|
|
39
|
+
const makeNone = () => make({
|
|
40
|
+
list: import_effect.Effect.fn("DispatchReader.list")(() => import_effect.Effect.fail(refuse())),
|
|
41
|
+
fires: import_effect.Effect.fn("DispatchReader.fires")(() => import_effect.Effect.fail(refuse()))
|
|
42
|
+
});
|
|
43
|
+
const layer = (implementation) => import_effect.Layer.succeed(DispatchReader)(make(implementation));
|
|
44
|
+
const layerNone = import_effect.Layer.succeed(DispatchReader)(makeNone());
|
|
45
|
+
//# sourceMappingURL=DispatchReader.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/DispatchReader.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Read port from the control plane into a trigger store.\n *\n * `Control.list` answers `{ _tag: \"triggers\" }` and `{ _tag: \"fires\" }` through\n * this port. The port lives here rather than in `@smthrs/triggers` because that\n * package already depends on this one (its scheduler launches runs through\n * `Control`), so the adapter over a real `TriggerStore` is composed by the host\n * and the plane only ever sees the interface.\n *\n * A composition that provides no reader, or provides {@link layerNone}, makes\n * `Control.list` refuse the two variants with a typed `InvalidInput` naming the\n * gap. It never answers an empty page: an empty page means \"this host has no\n * triggers\", and a host that cannot read its store has no grounds to say so.\n *\n * @since 1.0.0\n */\n\nimport { Context, Effect, Layer } from \"effect\"\nimport type { ControlError } from \"./ControlError.ts\"\nimport { InvalidInput } from \"./ControlError.ts\"\nimport type { FireSummary, ListRequest, TriggerSummary } from \"./ControlSchema.ts\"\n\n/**\n * The `triggers` listing request as the port receives it.\n *\n * @category models\n * @since 1.0.0\n */\nexport type TriggersRequest = Extract<ListRequest, { readonly _tag: \"triggers\" }>\n\n/**\n * The `fires` listing request as the port receives it.\n *\n * @category models\n * @since 1.0.0\n */\nexport type FiresRequest = Extract<ListRequest, { readonly _tag: \"fires\" }>\n\n/**\n * The reader `Control.list` pages trigger and fire rows from.\n *\n * Each method receives the whole request and answers every row it has for it,\n * newest fire first. A reader may narrow by the request's `filters` (a SQL\n * adapter pushes them into the query); `Control.list` applies the same filters\n * again and pages the rows with `cursor` and `limit`, so a reader that returns\n * every row is still correct. Paging stays in the plane so both variants page\n * exactly as `flows` and `runs` do.\n *\n * @category services\n * @since 1.0.0\n */\nexport interface Service {\n readonly list: (request: TriggersRequest) => Effect.Effect<ReadonlyArray<TriggerSummary>, ControlError>\n readonly fires: (request: FiresRequest) => Effect.Effect<ReadonlyArray<FireSummary>, ControlError>\n}\n\n/**\n * The {@link Service} tag.\n *\n * @category services\n * @since 1.0.0\n */\nexport class DispatchReader extends Context.Service<DispatchReader, Service>()(\n \"/control/DispatchReader\"\n) {}\n\n/**\n * The refusal a host without a trigger store answers both variants with.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const noStoreIssue = \"this host serves no trigger store\"\n\n/**\n * The typed refusal for a host without a trigger store: `InvalidInput` with\n * code `invalid_input` and {@link noStoreIssue} as the issue, the same shape\n * `Control.list` refuses an unsupported run filter with.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const refuse = (): InvalidInput => new InvalidInput({ issue: noStoreIssue })\n\n/**\n * Builds a {@link Service} from an implementation of its methods.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const make = (implementation: Service): Service => DispatchReader.of(implementation)\n\n/**\n * A {@link Service} that serves no trigger store: both methods fail with\n * {@link refuse}.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const makeNone = (): Service =>\n make({\n list: Effect.fn(\"DispatchReader.list\")(() => Effect.fail(refuse())),\n fires: Effect.fn(\"DispatchReader.fires\")(() => Effect.fail(refuse()))\n })\n\n/**\n * Provides {@link DispatchReader} from an implementation.\n *\n * @category layers\n * @since 1.0.0\n */\nexport const layer = (implementation: Service): Layer.Layer<DispatchReader> =>\n Layer.succeed(DispatchReader)(make(implementation))\n\n/**\n * Provides {@link makeNone}: a reader that refuses both listings because this\n * host serves no trigger store.\n *\n * @category layers\n * @since 1.0.0\n */\nexport const layerNone: Layer.Layer<DispatchReader> = Layer.succeed(DispatchReader)(makeNone())\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA,oBAAuC;AAEvC,0BAA6B;AA2CtB,MAAM,uBAAuB,sBAAQ,QAAiC;AAAA,EAC3E;AACF,EAAE;AAAC;AAQI,MAAM,eAAe;AAUrB,MAAM,SAAS,MAAoB,IAAI,iCAAa,EAAE,OAAO,aAAa,CAAC;AAQ3E,MAAM,OAAO,CAAC,mBAAqC,eAAe,GAAG,cAAc;AASnF,MAAM,WAAW,MACtB,KAAK;AAAA,EACH,MAAM,qBAAO,GAAG,qBAAqB,EAAE,MAAM,qBAAO,KAAK,OAAO,CAAC,CAAC;AAAA,EAClE,OAAO,qBAAO,GAAG,sBAAsB,EAAE,MAAM,qBAAO,KAAK,OAAO,CAAC,CAAC;AACtE,CAAC;AAQI,MAAM,QAAQ,CAAC,mBACpB,oBAAM,QAAQ,cAAc,EAAE,KAAK,cAAc,CAAC;AAS7C,MAAM,YAAyC,oBAAM,QAAQ,cAAc,EAAE,SAAS,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/** Observational health contracts shared by durable runs and native sessions.
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Evaluator from "@smthrs/model/Evaluator";
|
|
5
|
+
import { Cause, Effect, Schema } from "effect";
|
|
6
|
+
import type { ControlEvent, RunSummary } from "./ControlSchema.ts";
|
|
7
|
+
/** Authoritative subject lifecycle.
|
|
8
|
+
* @category schemas
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
export declare const SubjectState: Schema.Literals<readonly ["accepted", "running", "parked", "waiting-approval", "completed", "failed", "cancelled", "spawning", "exited"]>;
|
|
12
|
+
/** Authoritative subject lifecycle.
|
|
13
|
+
* @category models
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
*/
|
|
16
|
+
export type SubjectState = typeof SubjectState.Type;
|
|
17
|
+
/** Health vocabulary shared with Monitor.
|
|
18
|
+
* @category schemas
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
export declare const HealthState: Schema.Literals<readonly ["healthy", "stalled", "wedged-node", "runaway-loop", "awaiting-human", "failing", "unknown"]>;
|
|
22
|
+
/** Derived subject health.
|
|
23
|
+
* @category models
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
*/
|
|
26
|
+
export type HealthState = typeof HealthState.Type;
|
|
27
|
+
/** Only explicit semantic checks establish activity.
|
|
28
|
+
* @category schemas
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
*/
|
|
31
|
+
export declare const Activity: Schema.Literals<readonly ["working", "idle", "needs-input", "unknown"]>;
|
|
32
|
+
/** Semantic activity.
|
|
33
|
+
* @category models
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
*/
|
|
36
|
+
export type Activity = typeof Activity.Type;
|
|
37
|
+
/** Attention never confers permission to act. `needs-resume` is a run parked over
|
|
38
|
+
* executions its owner released: nothing restarts them until `smthrs runs resume`.
|
|
39
|
+
* @category schemas
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
*/
|
|
42
|
+
export declare const Attention: Schema.Literals<readonly ["none", "awaiting-approval", "needs-input", "needs-resume", "unhealthy"]>;
|
|
43
|
+
/** Human attention.
|
|
44
|
+
* @category models
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
*/
|
|
47
|
+
export type Attention = typeof Attention.Type;
|
|
48
|
+
/** Whether a successful reading still describes this subject.
|
|
49
|
+
* @category schemas
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
*/
|
|
52
|
+
export declare const Freshness: Schema.Literals<readonly ["fresh", "stale", "unobserved"]>;
|
|
53
|
+
/** Reading freshness.
|
|
54
|
+
* @category models
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
*/
|
|
57
|
+
export type Freshness = typeof Freshness.Type;
|
|
58
|
+
/** Public reasons; arbitrary exception text and terminal bytes never cross this boundary.
|
|
59
|
+
* @category schemas
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
*/
|
|
62
|
+
export declare const ReasonCode: Schema.Literals<readonly ["ok", "no-progress", "awaiting-reply", "prompt-detected", "quota-wait", "timer-wait", "event-wait", "released", "unreachable", "probe-timeout", "probe-error", "owner-changed"]>;
|
|
63
|
+
/** Public reason code.
|
|
64
|
+
* @category models
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
*/
|
|
67
|
+
export type ReasonCode = typeof ReasonCode.Type;
|
|
68
|
+
/** Validated checker output, containing no authority or ordering fields.
|
|
69
|
+
* @category schemas
|
|
70
|
+
* @since 1.0.0
|
|
71
|
+
*/
|
|
72
|
+
export declare const ProbeReport: Schema.Struct<{
|
|
73
|
+
readonly activity: Schema.Literals<readonly ["working", "idle", "needs-input", "unknown"]>;
|
|
74
|
+
readonly reason: Schema.optional<Schema.Literals<readonly ["ok", "no-progress", "awaiting-reply", "prompt-detected", "quota-wait", "timer-wait", "event-wait", "released", "unreachable", "probe-timeout", "probe-error", "owner-changed"]>>;
|
|
75
|
+
}>;
|
|
76
|
+
/** Validated checker output.
|
|
77
|
+
* @category models
|
|
78
|
+
* @since 1.0.0
|
|
79
|
+
*/
|
|
80
|
+
export type ProbeReport = typeof ProbeReport.Type;
|
|
81
|
+
/** A host-stamped observation; its journal sequence is supplied by the durable writer.
|
|
82
|
+
* @category schemas
|
|
83
|
+
* @since 1.0.0
|
|
84
|
+
*/
|
|
85
|
+
export declare const HealthObservation: Schema.Struct<{
|
|
86
|
+
readonly subjectId: Schema.String;
|
|
87
|
+
readonly state: Schema.Literals<readonly ["accepted", "running", "parked", "waiting-approval", "completed", "failed", "cancelled", "spawning", "exited"]>;
|
|
88
|
+
readonly checkerId: Schema.String;
|
|
89
|
+
readonly monitorId: Schema.String;
|
|
90
|
+
readonly incarnation: Schema.String;
|
|
91
|
+
readonly evidenceSeq: Schema.Int;
|
|
92
|
+
readonly observedAt: Schema.Int;
|
|
93
|
+
readonly expiresAt: Schema.Int;
|
|
94
|
+
readonly durationMs: Schema.Int;
|
|
95
|
+
readonly baseHealth: Schema.optional<Schema.Literals<readonly ["healthy", "stalled", "wedged-node", "runaway-loop", "awaiting-human", "failing", "unknown"]>>;
|
|
96
|
+
readonly outcome: Schema.Literals<readonly ["ok", "timeout", "error", "interrupted", "discarded"]>;
|
|
97
|
+
readonly report: Schema.optional<Schema.Struct<{
|
|
98
|
+
readonly activity: Schema.Literals<readonly ["working", "idle", "needs-input", "unknown"]>;
|
|
99
|
+
readonly reason: Schema.optional<Schema.Literals<readonly ["ok", "no-progress", "awaiting-reply", "prompt-detected", "quota-wait", "timer-wait", "event-wait", "released", "unreachable", "probe-timeout", "probe-error", "owner-changed"]>>;
|
|
100
|
+
}>>;
|
|
101
|
+
readonly reason: Schema.optional<Schema.Literals<readonly ["ok", "no-progress", "awaiting-reply", "prompt-detected", "quota-wait", "timer-wait", "event-wait", "released", "unreachable", "probe-timeout", "probe-error", "owner-changed"]>>;
|
|
102
|
+
}>;
|
|
103
|
+
/** A host-stamped observation.
|
|
104
|
+
* @category models
|
|
105
|
+
* @since 1.0.0
|
|
106
|
+
*/
|
|
107
|
+
export type HealthObservation = typeof HealthObservation.Type;
|
|
108
|
+
/** One observation with its authoritative publication order.
|
|
109
|
+
* @category models
|
|
110
|
+
* @since 1.0.0
|
|
111
|
+
*/
|
|
112
|
+
export interface RecordedObservation {
|
|
113
|
+
readonly observation: HealthObservation;
|
|
114
|
+
readonly sequence: number;
|
|
115
|
+
}
|
|
116
|
+
/** The additive wire contract rendered by every status surface.
|
|
117
|
+
* @category schemas
|
|
118
|
+
* @since 1.0.0
|
|
119
|
+
*/
|
|
120
|
+
export declare const StatusRollup: Schema.Struct<{
|
|
121
|
+
readonly subjectId: Schema.String;
|
|
122
|
+
readonly state: Schema.Literals<readonly ["accepted", "running", "parked", "waiting-approval", "completed", "failed", "cancelled", "spawning", "exited"]>;
|
|
123
|
+
readonly activity: Schema.Literals<readonly ["working", "idle", "needs-input", "unknown"]>;
|
|
124
|
+
readonly health: Schema.Literals<readonly ["healthy", "stalled", "wedged-node", "runaway-loop", "awaiting-human", "failing", "unknown"]>;
|
|
125
|
+
readonly attention: Schema.Literals<readonly ["none", "awaiting-approval", "needs-input", "needs-resume", "unhealthy"]>;
|
|
126
|
+
readonly freshness: Schema.Literals<readonly ["fresh", "stale", "unobserved"]>;
|
|
127
|
+
readonly reason: Schema.optional<Schema.Literals<readonly ["ok", "no-progress", "awaiting-reply", "prompt-detected", "quota-wait", "timer-wait", "event-wait", "released", "unreachable", "probe-timeout", "probe-error", "owner-changed"]>>;
|
|
128
|
+
readonly provenance: Schema.optional<Schema.Struct<{
|
|
129
|
+
readonly checkerId: Schema.String;
|
|
130
|
+
readonly monitorId: Schema.String;
|
|
131
|
+
readonly observedAt: Schema.Int;
|
|
132
|
+
readonly expiresAt: Schema.Int;
|
|
133
|
+
readonly evidenceSeq: Schema.Int;
|
|
134
|
+
readonly incarnation: Schema.String;
|
|
135
|
+
readonly version: Schema.Int;
|
|
136
|
+
}>>;
|
|
137
|
+
readonly updatedAt: Schema.Int;
|
|
138
|
+
}>;
|
|
139
|
+
/** The additive wire contract.
|
|
140
|
+
* @category models
|
|
141
|
+
* @since 1.0.0
|
|
142
|
+
*/
|
|
143
|
+
export type StatusRollup = typeof StatusRollup.Type;
|
|
144
|
+
/** Durable event type for observational health.
|
|
145
|
+
* @category constants
|
|
146
|
+
* @since 1.0.0
|
|
147
|
+
*/
|
|
148
|
+
export declare const statusObservedEventType = "control.status.observed";
|
|
149
|
+
/** Opaque identity of the authoritative run ownership and lifecycle point being observed.
|
|
150
|
+
* Equality is meaningful; lexical or numeric ordering is not.
|
|
151
|
+
* @category getters
|
|
152
|
+
* @since 1.0.0
|
|
153
|
+
*/
|
|
154
|
+
export declare const runIncarnation: (run: RunSummary) => string;
|
|
155
|
+
/** Read-only evidence, deliberately excluding mutation ports and terminal text by default.
|
|
156
|
+
* Checkers are trusted host TypeScript, not a sandbox: captured ambient authority remains their author's responsibility.
|
|
157
|
+
* @category models
|
|
158
|
+
* @since 1.0.0
|
|
159
|
+
*/
|
|
160
|
+
export interface ProbeContext {
|
|
161
|
+
readonly subjectId: string;
|
|
162
|
+
readonly state: SubjectState;
|
|
163
|
+
readonly events: ReadonlyArray<ControlEvent>;
|
|
164
|
+
readonly summary?: RunSummary | undefined;
|
|
165
|
+
readonly session?: {
|
|
166
|
+
readonly alive: boolean;
|
|
167
|
+
readonly exitCode: number | null;
|
|
168
|
+
readonly outputCursor: number;
|
|
169
|
+
readonly outputTail?: string | undefined;
|
|
170
|
+
} | undefined;
|
|
171
|
+
readonly sinceCursor: number;
|
|
172
|
+
}
|
|
173
|
+
/** Bounded polling, expiry and failure backoff.
|
|
174
|
+
* @category models
|
|
175
|
+
* @since 1.0.0
|
|
176
|
+
*/
|
|
177
|
+
export interface CheckPolicy {
|
|
178
|
+
readonly intervalMs: number;
|
|
179
|
+
readonly timeoutMs: number;
|
|
180
|
+
readonly ttlMs: number;
|
|
181
|
+
/** Grace for silent work before the flow host considers missing progress unhealthy. */
|
|
182
|
+
readonly stallAfterMs: number;
|
|
183
|
+
readonly backoff: {
|
|
184
|
+
readonly initialMs: number;
|
|
185
|
+
readonly maxMs: number;
|
|
186
|
+
readonly factor: number;
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/** Trusted host checker; supply service requirements around its Effect before registration.
|
|
190
|
+
* @category models
|
|
191
|
+
* @since 1.0.0
|
|
192
|
+
*/
|
|
193
|
+
export interface HealthChecker<C = unknown> {
|
|
194
|
+
readonly id: string;
|
|
195
|
+
readonly configSchema?: Schema.Codec<C, unknown> | undefined;
|
|
196
|
+
readonly defaults?: Partial<CheckPolicy> | undefined;
|
|
197
|
+
readonly probe: (context: ProbeContext, config: C) => Effect.Effect<ProbeReport, unknown>;
|
|
198
|
+
}
|
|
199
|
+
/** Data may select a registered checker but never executable code.
|
|
200
|
+
* @category models
|
|
201
|
+
* @since 1.0.0
|
|
202
|
+
*/
|
|
203
|
+
export interface HealthBinding {
|
|
204
|
+
readonly checkerId: string;
|
|
205
|
+
readonly config?: unknown;
|
|
206
|
+
readonly policy?: Partial<CheckPolicy> | undefined;
|
|
207
|
+
readonly exposeOutput?: boolean | undefined;
|
|
208
|
+
}
|
|
209
|
+
/** Trusted host health configuration.
|
|
210
|
+
* @category models
|
|
211
|
+
* @since 1.0.0
|
|
212
|
+
*/
|
|
213
|
+
export interface HealthConfig {
|
|
214
|
+
readonly checkers?: ReadonlyArray<HealthChecker<any>> | undefined;
|
|
215
|
+
readonly bindings?: Readonly<Record<string, HealthBinding>> | undefined;
|
|
216
|
+
readonly limits?: {
|
|
217
|
+
readonly maxSubjects?: number;
|
|
218
|
+
readonly maxConcurrentProbes?: number;
|
|
219
|
+
} | undefined;
|
|
220
|
+
}
|
|
221
|
+
/** Fully admitted checker binding.
|
|
222
|
+
* @category models
|
|
223
|
+
* @since 1.0.0
|
|
224
|
+
*/
|
|
225
|
+
export interface ResolvedCheck {
|
|
226
|
+
readonly checker: HealthChecker<any>;
|
|
227
|
+
readonly config: unknown;
|
|
228
|
+
readonly policy: CheckPolicy;
|
|
229
|
+
readonly exposeOutput: boolean;
|
|
230
|
+
}
|
|
231
|
+
/** Host registry, built once before admitting subjects.
|
|
232
|
+
* @category models
|
|
233
|
+
* @since 1.0.0
|
|
234
|
+
*/
|
|
235
|
+
export interface Registry {
|
|
236
|
+
readonly resolve: (key: string) => ResolvedCheck;
|
|
237
|
+
readonly limits: {
|
|
238
|
+
readonly maxSubjects: number;
|
|
239
|
+
readonly maxConcurrentProbes: number;
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
declare const HealthConfigurationError_base: Schema.Class<HealthConfigurationError, Schema.TaggedStruct<"HealthConfigurationError", {
|
|
243
|
+
readonly reason: Schema.Literals<readonly ["invalid-policy", "invalid-checker", "invalid-config"]>;
|
|
244
|
+
}>, Cause.YieldableError>;
|
|
245
|
+
/** Invalid trusted configuration fails startup instead of silently running another policy.
|
|
246
|
+
* @category errors
|
|
247
|
+
* @since 1.0.0
|
|
248
|
+
*/
|
|
249
|
+
export declare class HealthConfigurationError extends HealthConfigurationError_base {
|
|
250
|
+
}
|
|
251
|
+
/** Safe cadence used by unconfigured hosts.
|
|
252
|
+
* @category constants
|
|
253
|
+
* @since 1.0.0
|
|
254
|
+
*/
|
|
255
|
+
export declare const defaultPolicy: CheckPolicy;
|
|
256
|
+
/** A known engine wait is a lifecycle fact, not missing progress.
|
|
257
|
+
* @category getters
|
|
258
|
+
* @since 1.0.0
|
|
259
|
+
*/
|
|
260
|
+
export declare const waitReason: (state: SubjectState, waitingReason?: string) => ReasonCode | undefined;
|
|
261
|
+
/** Flow default observes lifecycle without inventing semantic activity.
|
|
262
|
+
* @category constants
|
|
263
|
+
* @since 1.0.0
|
|
264
|
+
*/
|
|
265
|
+
export declare const lifecycleRunChecker: HealthChecker;
|
|
266
|
+
/** Session default never interprets silence or output movement as task activity.
|
|
267
|
+
* @category constants
|
|
268
|
+
* @since 1.0.0
|
|
269
|
+
*/
|
|
270
|
+
export declare const lifecycleSessionChecker: HealthChecker;
|
|
271
|
+
/** Checkers every host may bind by id, beyond the lifecycle default it always has.
|
|
272
|
+
*
|
|
273
|
+
* Registration is not a binding. A host opts in by naming one of these as a
|
|
274
|
+
* `HealthBinding.checkerId`; a host that names none keeps the lifecycle
|
|
275
|
+
* default, and no entry here is ever consulted for an unbound subject.
|
|
276
|
+
*
|
|
277
|
+
* @category constants
|
|
278
|
+
* @since 1.0.0
|
|
279
|
+
*/
|
|
280
|
+
export declare const registeredCheckers: ReadonlyArray<HealthChecker<any>>;
|
|
281
|
+
/** Admit a host registry and all configured bindings. Unknown checker ids use the lifecycle default.
|
|
282
|
+
* @category constructors
|
|
283
|
+
* @since 1.0.0
|
|
284
|
+
*/
|
|
285
|
+
export declare const makeRegistry: (config?: HealthConfig, kind?: "run" | "session", evaluator?: Evaluator.Evaluator) => Registry;
|
|
286
|
+
/** Failure delay, bounded even when a subject has failed for a long time.
|
|
287
|
+
* @category getters
|
|
288
|
+
* @since 1.0.0
|
|
289
|
+
*/
|
|
290
|
+
export declare const nextDelay: (policy: CheckPolicy, consecutiveFailures: number) => number;
|
|
291
|
+
/** Host-only ordering stamp captured before a probe.
|
|
292
|
+
* @category models
|
|
293
|
+
* @since 1.0.0
|
|
294
|
+
*/
|
|
295
|
+
export interface ObservationStamp {
|
|
296
|
+
readonly monitorId: string;
|
|
297
|
+
readonly incarnation: string;
|
|
298
|
+
readonly evidenceSeq: number;
|
|
299
|
+
}
|
|
300
|
+
/** Evaluate one trusted checker with bounded timeout and safe failure values. Scope interruption propagates.
|
|
301
|
+
* The host must still compare current ownership/lifecycle before durably publishing the returned observation.
|
|
302
|
+
* @category constructors
|
|
303
|
+
* @since 1.0.0
|
|
304
|
+
*/
|
|
305
|
+
export declare const evaluate: (check: ResolvedCheck, context: ProbeContext, stamp: ObservationStamp) => Effect.Effect<HealthObservation>;
|
|
306
|
+
/** Select evidence for the current opaque owner incarnation, breaking equal evidence ties by durable sequence.
|
|
307
|
+
* @category projections
|
|
308
|
+
* @since 1.0.0
|
|
309
|
+
*/
|
|
310
|
+
export declare const latestObservation: (candidates: ReadonlyArray<RecordedObservation>, subjectId: string, incarnation: string) => RecordedObservation | undefined;
|
|
311
|
+
/** Authoritative facts supplied independently of checker output.
|
|
312
|
+
* @category models
|
|
313
|
+
* @since 1.0.0
|
|
314
|
+
*/
|
|
315
|
+
export interface RollupInput {
|
|
316
|
+
readonly subjectId: string;
|
|
317
|
+
readonly state: SubjectState;
|
|
318
|
+
readonly incarnation: string;
|
|
319
|
+
readonly waitingReason?: string | undefined;
|
|
320
|
+
readonly exitCode?: number | null | undefined;
|
|
321
|
+
readonly baseHealth?: HealthState | undefined;
|
|
322
|
+
readonly latest?: RecordedObservation | undefined;
|
|
323
|
+
readonly evidenceSeq?: number | undefined;
|
|
324
|
+
readonly now: number;
|
|
325
|
+
readonly updatedAt: number;
|
|
326
|
+
}
|
|
327
|
+
/** Pure precedence: lifecycle and approvals win, and stale probes never establish activity.
|
|
328
|
+
* @category projections
|
|
329
|
+
* @since 1.0.0
|
|
330
|
+
*/
|
|
331
|
+
export declare const rollup: (input: RollupInput) => StatusRollup;
|
|
332
|
+
export {};
|
|
333
|
+
//# sourceMappingURL=Health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Health.d.ts","sourceRoot":"","sources":["../../src/Health.ts"],"names":[],"mappings":"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"}
|