@homeflare/alchemy 0.43.0 → 0.45.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/README.md +10 -1
- package/dist/caddy/index.js +35 -1
- package/dist/caddy/index.js.map +3 -3
- package/dist/launchd/index.js +35 -1
- package/dist/launchd/index.js.map +3 -3
- package/dist/linux/index.js +35 -1
- package/dist/linux/index.js.map +3 -3
- package/dist/litellm/access-group-form.d.ts +26 -0
- package/dist/litellm/access-group-form.d.ts.map +1 -0
- package/dist/litellm/access-group-operations.d.ts +37 -0
- package/dist/litellm/access-group-operations.d.ts.map +1 -0
- package/dist/litellm/access-group-types.d.ts +49 -0
- package/dist/litellm/access-group-types.d.ts.map +1 -0
- package/dist/litellm/access-group.d.ts +55 -0
- package/dist/litellm/access-group.d.ts.map +1 -0
- package/dist/litellm/credential-errors.d.ts +131 -0
- package/dist/litellm/credential-errors.d.ts.map +1 -0
- package/dist/litellm/credential-form.d.ts +79 -0
- package/dist/litellm/credential-form.d.ts.map +1 -0
- package/dist/litellm/credential-operations.d.ts +84 -0
- package/dist/litellm/credential-operations.d.ts.map +1 -0
- package/dist/litellm/credential-rewrite.d.ts +6 -0
- package/dist/litellm/credential-rewrite.d.ts.map +1 -0
- package/dist/litellm/credential-types.d.ts +87 -0
- package/dist/litellm/credential-types.d.ts.map +1 -0
- package/dist/litellm/credential-values.d.ts +53 -0
- package/dist/litellm/credential-values.d.ts.map +1 -0
- package/dist/litellm/credential.d.ts +83 -0
- package/dist/litellm/credential.d.ts.map +1 -0
- package/dist/litellm/fake-access-group-litellm.d.ts +34 -0
- package/dist/litellm/fake-access-group-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-credential-litellm.d.ts +54 -0
- package/dist/litellm/fake-credential-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-keys.d.ts +53 -0
- package/dist/litellm/fake-keys.d.ts.map +1 -0
- package/dist/litellm/fake-litellm.d.ts +4 -1
- package/dist/litellm/fake-litellm.d.ts.map +1 -1
- package/dist/litellm/fake-mcp-litellm.d.ts +67 -0
- package/dist/litellm/fake-mcp-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-model-litellm-post-update.d.ts +49 -0
- package/dist/litellm/fake-model-litellm-post-update.d.ts.map +1 -0
- package/dist/litellm/fake-model-litellm.d.ts +48 -0
- package/dist/litellm/fake-model-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-policy-attachment-litellm.d.ts +33 -0
- package/dist/litellm/fake-policy-attachment-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-policy-litellm.d.ts +32 -0
- package/dist/litellm/fake-policy-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-registry-base.d.ts +42 -0
- package/dist/litellm/fake-registry-base.d.ts.map +1 -0
- package/dist/litellm/fake-stack.d.ts +8 -1
- package/dist/litellm/fake-stack.d.ts.map +1 -1
- package/dist/litellm/fake-team-litellm.d.ts +47 -0
- package/dist/litellm/fake-team-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-tool-litellm.d.ts +28 -0
- package/dist/litellm/fake-tool-litellm.d.ts.map +1 -0
- package/dist/litellm/fake-toolset-litellm.d.ts +29 -0
- package/dist/litellm/fake-toolset-litellm.d.ts.map +1 -0
- package/dist/litellm/index.d.ts +18 -0
- package/dist/litellm/index.d.ts.map +1 -1
- package/dist/litellm/index.js +3078 -2
- package/dist/litellm/index.js.map +65 -4
- package/dist/litellm/key-errors.d.ts +169 -0
- package/dist/litellm/key-errors.d.ts.map +1 -0
- package/dist/litellm/key-form.d.ts +119 -0
- package/dist/litellm/key-form.d.ts.map +1 -0
- package/dist/litellm/key-harness.d.ts +41 -0
- package/dist/litellm/key-harness.d.ts.map +1 -0
- package/dist/litellm/key-metadata-errors.d.ts +30 -0
- package/dist/litellm/key-metadata-errors.d.ts.map +1 -0
- package/dist/litellm/key-metadata.d.ts +22 -0
- package/dist/litellm/key-metadata.d.ts.map +1 -0
- package/dist/litellm/key-operations.d.ts +63 -0
- package/dist/litellm/key-operations.d.ts.map +1 -0
- package/dist/litellm/key-secret.d.ts +33 -0
- package/dist/litellm/key-secret.d.ts.map +1 -0
- package/dist/litellm/key.d.ts +78 -0
- package/dist/litellm/key.d.ts.map +1 -0
- package/dist/litellm/mcp-server-credential.d.ts +50 -0
- package/dist/litellm/mcp-server-credential.d.ts.map +1 -0
- package/dist/litellm/mcp-server-errors.d.ts +101 -0
- package/dist/litellm/mcp-server-errors.d.ts.map +1 -0
- package/dist/litellm/mcp-server-form.d.ts +56 -0
- package/dist/litellm/mcp-server-form.d.ts.map +1 -0
- package/dist/litellm/mcp-server-locate.d.ts +26 -0
- package/dist/litellm/mcp-server-locate.d.ts.map +1 -0
- package/dist/litellm/mcp-server-operations.d.ts +63 -0
- package/dist/litellm/mcp-server-operations.d.ts.map +1 -0
- package/dist/litellm/mcp-server-shadow.d.ts +24 -0
- package/dist/litellm/mcp-server-shadow.d.ts.map +1 -0
- package/dist/litellm/mcp-server-types.d.ts +118 -0
- package/dist/litellm/mcp-server-types.d.ts.map +1 -0
- package/dist/litellm/mcp-server-url.d.ts +11 -0
- package/dist/litellm/mcp-server-url.d.ts.map +1 -0
- package/dist/litellm/mcp-server.d.ts +95 -0
- package/dist/litellm/mcp-server.d.ts.map +1 -0
- package/dist/litellm/model-claim.d.ts +24 -0
- package/dist/litellm/model-claim.d.ts.map +1 -0
- package/dist/litellm/model-credential.d.ts +12 -0
- package/dist/litellm/model-credential.d.ts.map +1 -0
- package/dist/litellm/model-errors.d.ts +119 -0
- package/dist/litellm/model-errors.d.ts.map +1 -0
- package/dist/litellm/model-form.d.ts +78 -0
- package/dist/litellm/model-form.d.ts.map +1 -0
- package/dist/litellm/model-locate.d.ts +13 -0
- package/dist/litellm/model-locate.d.ts.map +1 -0
- package/dist/litellm/model-operations.d.ts +59 -0
- package/dist/litellm/model-operations.d.ts.map +1 -0
- package/dist/litellm/model-types.d.ts +91 -0
- package/dist/litellm/model-types.d.ts.map +1 -0
- package/dist/litellm/model.d.ts +88 -0
- package/dist/litellm/model.d.ts.map +1 -0
- package/dist/litellm/policy-attachment-form.d.ts +19 -0
- package/dist/litellm/policy-attachment-form.d.ts.map +1 -0
- package/dist/litellm/policy-attachment-operations.d.ts +31 -0
- package/dist/litellm/policy-attachment-operations.d.ts.map +1 -0
- package/dist/litellm/policy-attachment-types.d.ts +48 -0
- package/dist/litellm/policy-attachment-types.d.ts.map +1 -0
- package/dist/litellm/policy-attachment.d.ts +61 -0
- package/dist/litellm/policy-attachment.d.ts.map +1 -0
- package/dist/litellm/policy-form.d.ts +22 -0
- package/dist/litellm/policy-form.d.ts.map +1 -0
- package/dist/litellm/policy-operations.d.ts +42 -0
- package/dist/litellm/policy-operations.d.ts.map +1 -0
- package/dist/litellm/policy-types.d.ts +57 -0
- package/dist/litellm/policy-types.d.ts.map +1 -0
- package/dist/litellm/policy.d.ts +65 -0
- package/dist/litellm/policy.d.ts.map +1 -0
- package/dist/litellm/providers.d.ts +1 -1
- package/dist/litellm/providers.d.ts.map +1 -1
- package/dist/litellm/registry-errors.d.ts +62 -0
- package/dist/litellm/registry-errors.d.ts.map +1 -0
- package/dist/litellm/registry-support.d.ts +42 -0
- package/dist/litellm/registry-support.d.ts.map +1 -0
- package/dist/litellm/team-form.d.ts +26 -0
- package/dist/litellm/team-form.d.ts.map +1 -0
- package/dist/litellm/team-members.d.ts +10 -0
- package/dist/litellm/team-members.d.ts.map +1 -0
- package/dist/litellm/team-operations.d.ts +38 -0
- package/dist/litellm/team-operations.d.ts.map +1 -0
- package/dist/litellm/team-permission.d.ts +35 -0
- package/dist/litellm/team-permission.d.ts.map +1 -0
- package/dist/litellm/team-types.d.ts +101 -0
- package/dist/litellm/team-types.d.ts.map +1 -0
- package/dist/litellm/team.d.ts +67 -0
- package/dist/litellm/team.d.ts.map +1 -0
- package/dist/litellm/tool-policy-form.d.ts +21 -0
- package/dist/litellm/tool-policy-form.d.ts.map +1 -0
- package/dist/litellm/tool-policy-operations.d.ts +30 -0
- package/dist/litellm/tool-policy-operations.d.ts.map +1 -0
- package/dist/litellm/tool-policy-types.d.ts +46 -0
- package/dist/litellm/tool-policy-types.d.ts.map +1 -0
- package/dist/litellm/tool-policy.d.ts +62 -0
- package/dist/litellm/tool-policy.d.ts.map +1 -0
- package/dist/litellm/toolset-form.d.ts +20 -0
- package/dist/litellm/toolset-form.d.ts.map +1 -0
- package/dist/litellm/toolset-operations.d.ts +39 -0
- package/dist/litellm/toolset-operations.d.ts.map +1 -0
- package/dist/litellm/toolset-types.d.ts +46 -0
- package/dist/litellm/toolset-types.d.ts.map +1 -0
- package/dist/litellm/toolset.d.ts +55 -0
- package/dist/litellm/toolset.d.ts.map +1 -0
- package/dist/openbao/index.js +35 -1
- package/dist/openbao/index.js.map +3 -3
- package/dist/ownership/rows.d.ts +11 -0
- package/dist/ownership/rows.d.ts.map +1 -1
- package/dist/postgres/connection.d.ts +14 -2
- package/dist/postgres/connection.d.ts.map +1 -1
- package/dist/postgres/database-sql.d.ts +27 -8
- package/dist/postgres/database-sql.d.ts.map +1 -1
- package/dist/postgres/fake-grants-parse.d.ts +37 -0
- package/dist/postgres/fake-grants-parse.d.ts.map +1 -0
- package/dist/postgres/fake-grants-read.d.ts +61 -0
- package/dist/postgres/fake-grants-read.d.ts.map +1 -0
- package/dist/postgres/fake-grants-sql.d.ts +46 -0
- package/dist/postgres/fake-grants-sql.d.ts.map +1 -0
- package/dist/postgres/fake-grants-write.d.ts +29 -0
- package/dist/postgres/fake-grants-write.d.ts.map +1 -0
- package/dist/postgres/fake-role-sql.d.ts +41 -0
- package/dist/postgres/fake-role-sql.d.ts.map +1 -0
- package/dist/postgres/fake-schema-sql.d.ts +42 -0
- package/dist/postgres/fake-schema-sql.d.ts.map +1 -0
- package/dist/postgres/fake-sql-parse.d.ts +23 -0
- package/dist/postgres/fake-sql-parse.d.ts.map +1 -0
- package/dist/postgres/fake-sql-quote.d.ts +12 -0
- package/dist/postgres/fake-sql-quote.d.ts.map +1 -0
- package/dist/postgres/fake-sql.d.ts +42 -0
- package/dist/postgres/fake-sql.d.ts.map +1 -1
- package/dist/postgres/grants-attrs.d.ts +115 -0
- package/dist/postgres/grants-attrs.d.ts.map +1 -0
- package/dist/postgres/grants-declare.d.ts +88 -0
- package/dist/postgres/grants-declare.d.ts.map +1 -0
- package/dist/postgres/grants-diff.d.ts +25 -0
- package/dist/postgres/grants-diff.d.ts.map +1 -0
- package/dist/postgres/grants-errors.d.ts +137 -0
- package/dist/postgres/grants-errors.d.ts.map +1 -0
- package/dist/postgres/grants-existence.d.ts +14 -0
- package/dist/postgres/grants-existence.d.ts.map +1 -0
- package/dist/postgres/grants-ops.d.ts +65 -0
- package/dist/postgres/grants-ops.d.ts.map +1 -0
- package/dist/postgres/grants-ownership.d.ts +18 -0
- package/dist/postgres/grants-ownership.d.ts.map +1 -0
- package/dist/postgres/grants-plan-restore.d.ts +22 -0
- package/dist/postgres/grants-plan-restore.d.ts.map +1 -0
- package/dist/postgres/grants-plan.d.ts +65 -0
- package/dist/postgres/grants-plan.d.ts.map +1 -0
- package/dist/postgres/grants-read-defaults.d.ts +17 -0
- package/dist/postgres/grants-read-defaults.d.ts.map +1 -0
- package/dist/postgres/grants-read.d.ts +77 -0
- package/dist/postgres/grants-read.d.ts.map +1 -0
- package/dist/postgres/grants-refuse.d.ts +25 -0
- package/dist/postgres/grants-refuse.d.ts.map +1 -0
- package/dist/postgres/grants-sql.d.ts +42 -0
- package/dist/postgres/grants-sql.d.ts.map +1 -0
- package/dist/postgres/grants-words.d.ts +29 -0
- package/dist/postgres/grants-words.d.ts.map +1 -0
- package/dist/postgres/grants.d.ts +37 -0
- package/dist/postgres/grants.d.ts.map +1 -0
- package/dist/postgres/index.d.ts +31 -6
- package/dist/postgres/index.d.ts.map +1 -1
- package/dist/postgres/index.js +1998 -37
- package/dist/postgres/index.js.map +46 -7
- package/dist/postgres/installed-classifier.d.ts +13 -0
- package/dist/postgres/installed-classifier.d.ts.map +1 -0
- package/dist/postgres/providers.d.ts +16 -8
- package/dist/postgres/providers.d.ts.map +1 -1
- package/dist/postgres/psql-executor.d.ts +4 -0
- package/dist/postgres/psql-executor.d.ts.map +1 -1
- package/dist/postgres/role-attrs.d.ts +112 -0
- package/dist/postgres/role-attrs.d.ts.map +1 -0
- package/dist/postgres/role-diff.d.ts +22 -0
- package/dist/postgres/role-diff.d.ts.map +1 -0
- package/dist/postgres/role-errors.d.ts +132 -0
- package/dist/postgres/role-errors.d.ts.map +1 -0
- package/dist/postgres/role-membership-sql.d.ts +78 -0
- package/dist/postgres/role-membership-sql.d.ts.map +1 -0
- package/dist/postgres/role-provider.d.ts +11 -0
- package/dist/postgres/role-provider.d.ts.map +1 -0
- package/dist/postgres/role-scram.d.ts +8 -0
- package/dist/postgres/role-scram.d.ts.map +1 -0
- package/dist/postgres/role-secrets.d.ts +38 -0
- package/dist/postgres/role-secrets.d.ts.map +1 -0
- package/dist/postgres/role-sql.d.ts +68 -0
- package/dist/postgres/role-sql.d.ts.map +1 -0
- package/dist/postgres/role.d.ts +57 -0
- package/dist/postgres/role.d.ts.map +1 -0
- package/dist/postgres/schema-assert.d.ts +50 -0
- package/dist/postgres/schema-assert.d.ts.map +1 -0
- package/dist/postgres/schema-attrs.d.ts +51 -0
- package/dist/postgres/schema-attrs.d.ts.map +1 -0
- package/dist/postgres/schema-delete.d.ts +28 -0
- package/dist/postgres/schema-delete.d.ts.map +1 -0
- package/dist/postgres/schema-diff.d.ts +14 -0
- package/dist/postgres/schema-diff.d.ts.map +1 -0
- package/dist/postgres/schema-errors.d.ts +139 -0
- package/dist/postgres/schema-errors.d.ts.map +1 -0
- package/dist/postgres/schema-identity.d.ts +8 -0
- package/dist/postgres/schema-identity.d.ts.map +1 -0
- package/dist/postgres/schema-reconcile.d.ts +12 -0
- package/dist/postgres/schema-reconcile.d.ts.map +1 -0
- package/dist/postgres/schema-sql.d.ts +45 -0
- package/dist/postgres/schema-sql.d.ts.map +1 -0
- package/dist/postgres/schema-test-kit.d.ts +67 -0
- package/dist/postgres/schema-test-kit.d.ts.map +1 -0
- package/dist/postgres/schema.d.ts +54 -0
- package/dist/postgres/schema.d.ts.map +1 -0
- package/dist/proxmox/index.js +35 -1
- package/dist/proxmox/index.js.map +3 -3
- package/dist/release/fake-engine.d.ts +10 -0
- package/dist/release/fake-engine.d.ts.map +1 -1
- package/dist/release/index.js +35 -1
- package/dist/release/index.js.map +3 -3
- package/dist/valkey/acl-attrs.d.ts +94 -0
- package/dist/valkey/acl-attrs.d.ts.map +1 -0
- package/dist/valkey/acl-compare.d.ts +28 -0
- package/dist/valkey/acl-compare.d.ts.map +1 -0
- package/dist/valkey/acl-connection.d.ts +6 -0
- package/dist/valkey/acl-connection.d.ts.map +1 -0
- package/dist/valkey/acl-form.d.ts +62 -0
- package/dist/valkey/acl-form.d.ts.map +1 -0
- package/dist/valkey/acl-managed.d.ts +4 -0
- package/dist/valkey/acl-managed.d.ts.map +1 -0
- package/dist/valkey/acl-ops.d.ts +37 -0
- package/dist/valkey/acl-ops.d.ts.map +1 -0
- package/dist/valkey/acl-profiles.d.ts +53 -0
- package/dist/valkey/acl-profiles.d.ts.map +1 -0
- package/dist/valkey/acl-reconcile.d.ts +26 -0
- package/dist/valkey/acl-reconcile.d.ts.map +1 -0
- package/dist/valkey/acl.d.ts +24 -0
- package/dist/valkey/acl.d.ts.map +1 -0
- package/dist/valkey/connection-service.d.ts +22 -0
- package/dist/valkey/connection-service.d.ts.map +1 -0
- package/dist/valkey/connection.d.ts +59 -0
- package/dist/valkey/connection.d.ts.map +1 -0
- package/dist/valkey/errors.d.ts +165 -0
- package/dist/valkey/errors.d.ts.map +1 -0
- package/dist/valkey/fake-acl.d.ts +29 -0
- package/dist/valkey/fake-acl.d.ts.map +1 -0
- package/dist/valkey/fake-valkey.d.ts +35 -0
- package/dist/valkey/fake-valkey.d.ts.map +1 -0
- package/dist/valkey/handler-test-fixture.d.ts +20 -0
- package/dist/valkey/handler-test-fixture.d.ts.map +1 -0
- package/dist/valkey/index.d.ts +18 -0
- package/dist/valkey/index.d.ts.map +1 -0
- package/dist/valkey/index.js +964 -0
- package/dist/valkey/index.js.map +27 -0
- package/dist/valkey/instance-attrs.d.ts +46 -0
- package/dist/valkey/instance-attrs.d.ts.map +1 -0
- package/dist/valkey/instance-form.d.ts +22 -0
- package/dist/valkey/instance-form.d.ts.map +1 -0
- package/dist/valkey/instance.d.ts +48 -0
- package/dist/valkey/instance.d.ts.map +1 -0
- package/dist/valkey/provider-socket-fixture.d.ts +8 -0
- package/dist/valkey/provider-socket-fixture.d.ts.map +1 -0
- package/dist/valkey/providers.d.ts +16 -0
- package/dist/valkey/providers.d.ts.map +1 -0
- package/dist/valkey/resp.d.ts +38 -0
- package/dist/valkey/resp.d.ts.map +1 -0
- package/dist/valkey/transport-error.d.ts +36 -0
- package/dist/valkey/transport-error.d.ts.map +1 -0
- package/dist/valkey/transport.d.ts +50 -0
- package/dist/valkey/transport.d.ts.map +1 -0
- package/docs/litellm-access-group.md +105 -0
- package/docs/litellm-credential.md +60 -0
- package/docs/litellm-key-metadata.md +56 -0
- package/docs/litellm-key.md +194 -0
- package/docs/litellm-mcp.md +187 -0
- package/docs/litellm-model.md +111 -0
- package/docs/litellm-policy-attachment.md +86 -0
- package/docs/litellm-policy.md +103 -0
- package/docs/litellm-team.md +117 -0
- package/docs/litellm-tool-policy.md +90 -0
- package/docs/litellm-toolset.md +92 -0
- package/docs/litellm.md +16 -9
- package/docs/peers.md +15 -6
- package/docs/postgres-grants-example.md +55 -0
- package/docs/postgres-grants.md +157 -0
- package/docs/postgres-role.md +126 -0
- package/docs/postgres-schema.md +139 -0
- package/docs/postgres.md +20 -3
- package/docs/valkey-transport.md +29 -0
- package/docs/valkey.md +187 -0
- package/package.json +6 -2
- package/src/ceph/ceph-argv.test.ts +1 -1
- package/src/launchd/sudo-allowlist.test.ts +2 -2
- package/src/linux/sudo-allowlist.test.ts +3 -3
- package/src/linux/sudo-runner.test.ts +2 -2
- package/src/litellm/access-group-form.ts +105 -0
- package/src/litellm/access-group-operations.ts +92 -0
- package/src/litellm/access-group-types.ts +49 -0
- package/src/litellm/access-group.test.ts +197 -0
- package/src/litellm/access-group.ts +151 -0
- package/src/litellm/credential-errors.ts +183 -0
- package/src/litellm/credential-form.test.ts +151 -0
- package/src/litellm/credential-form.ts +211 -0
- package/src/litellm/credential-guards.test.ts +241 -0
- package/src/litellm/credential-operations.ts +208 -0
- package/src/litellm/credential-recovery.test.ts +93 -0
- package/src/litellm/credential-rewrite.test.ts +164 -0
- package/src/litellm/credential-rewrite.ts +50 -0
- package/src/litellm/credential-types.ts +117 -0
- package/src/litellm/credential-values.ts +94 -0
- package/src/litellm/credential.test.ts +218 -0
- package/src/litellm/credential.ts +227 -0
- package/src/litellm/fake-access-group-litellm.ts +127 -0
- package/src/litellm/fake-credential-litellm.ts +216 -0
- package/src/litellm/fake-keys.ts +190 -0
- package/src/litellm/fake-litellm.ts +19 -9
- package/src/litellm/fake-mcp-litellm.ts +214 -0
- package/src/litellm/fake-model-litellm-post-update.ts +103 -0
- package/src/litellm/fake-model-litellm.ts +233 -0
- package/src/litellm/fake-policy-attachment-litellm.ts +97 -0
- package/src/litellm/fake-policy-litellm.ts +186 -0
- package/src/litellm/fake-registry-base.ts +69 -0
- package/src/litellm/fake-stack.ts +17 -1
- package/src/litellm/fake-team-litellm.ts +229 -0
- package/src/litellm/fake-tool-litellm.ts +88 -0
- package/src/litellm/fake-toolset-litellm.ts +110 -0
- package/src/litellm/index.ts +140 -0
- package/src/litellm/key-delete.test.ts +212 -0
- package/src/litellm/key-errors.ts +241 -0
- package/src/litellm/key-form.ts +200 -0
- package/src/litellm/key-harness.ts +121 -0
- package/src/litellm/key-metadata-errors.ts +49 -0
- package/src/litellm/key-metadata.test.ts +156 -0
- package/src/litellm/key-metadata.ts +74 -0
- package/src/litellm/key-operations.ts +184 -0
- package/src/litellm/key-rotation.test.ts +110 -0
- package/src/litellm/key-scope.test.ts +135 -0
- package/src/litellm/key-secret.test.ts +248 -0
- package/src/litellm/key-secret.ts +137 -0
- package/src/litellm/key-transport.test.ts +166 -0
- package/src/litellm/key.test.ts +231 -0
- package/src/litellm/key.ts +213 -0
- package/src/litellm/mcp-server-adopt.test.ts +86 -0
- package/src/litellm/mcp-server-alias.test.ts +184 -0
- package/src/litellm/mcp-server-credential.ts +85 -0
- package/src/litellm/mcp-server-errors.ts +141 -0
- package/src/litellm/mcp-server-exports.test.ts +15 -0
- package/src/litellm/mcp-server-form.test.ts +241 -0
- package/src/litellm/mcp-server-form.ts +233 -0
- package/src/litellm/mcp-server-handlers.test.ts +150 -0
- package/src/litellm/mcp-server-locate.ts +66 -0
- package/src/litellm/mcp-server-operations.ts +111 -0
- package/src/litellm/mcp-server-registry.test.ts +146 -0
- package/src/litellm/mcp-server-retype.test.ts +114 -0
- package/src/litellm/mcp-server-shadow.test.ts +91 -0
- package/src/litellm/mcp-server-shadow.ts +45 -0
- package/src/litellm/mcp-server-tools.test.ts +85 -0
- package/src/litellm/mcp-server-types.ts +143 -0
- package/src/litellm/mcp-server-url.ts +66 -0
- package/src/litellm/mcp-server.test.ts +213 -0
- package/src/litellm/mcp-server.ts +225 -0
- package/src/litellm/model-claim.ts +69 -0
- package/src/litellm/model-credential.ts +45 -0
- package/src/litellm/model-errors.ts +168 -0
- package/src/litellm/model-foreign-row.test.ts +173 -0
- package/src/litellm/model-form.test.ts +228 -0
- package/src/litellm/model-form.ts +223 -0
- package/src/litellm/model-locate.test.ts +128 -0
- package/src/litellm/model-locate.ts +67 -0
- package/src/litellm/model-operations.test.ts +93 -0
- package/src/litellm/model-operations.ts +146 -0
- package/src/litellm/model-params-preserve.test.ts +119 -0
- package/src/litellm/model-recovery.test.ts +57 -0
- package/src/litellm/model-types.ts +112 -0
- package/src/litellm/model.test.ts +222 -0
- package/src/litellm/model.ts +237 -0
- package/src/litellm/policy-attachment-form.ts +103 -0
- package/src/litellm/policy-attachment-operations.ts +74 -0
- package/src/litellm/policy-attachment-types.ts +48 -0
- package/src/litellm/policy-attachment.test.ts +198 -0
- package/src/litellm/policy-attachment.ts +178 -0
- package/src/litellm/policy-form.ts +122 -0
- package/src/litellm/policy-operations.ts +112 -0
- package/src/litellm/policy-types.ts +58 -0
- package/src/litellm/policy.test.ts +214 -0
- package/src/litellm/policy.ts +146 -0
- package/src/litellm/providers.ts +24 -3
- package/src/litellm/registry-errors.ts +88 -0
- package/src/litellm/registry-exports.test.ts +66 -0
- package/src/litellm/registry-support.ts +109 -0
- package/src/litellm/team-form.ts +140 -0
- package/src/litellm/team-members.test.ts +150 -0
- package/src/litellm/team-members.ts +58 -0
- package/src/litellm/team-operations.ts +90 -0
- package/src/litellm/team-permission.ts +159 -0
- package/src/litellm/team-read.test.ts +89 -0
- package/src/litellm/team-types.ts +106 -0
- package/src/litellm/team.test.ts +206 -0
- package/src/litellm/team.ts +159 -0
- package/src/litellm/tool-policy-form.ts +94 -0
- package/src/litellm/tool-policy-operations.ts +58 -0
- package/src/litellm/tool-policy-types.ts +48 -0
- package/src/litellm/tool-policy.test.ts +172 -0
- package/src/litellm/tool-policy.ts +125 -0
- package/src/litellm/toolset-form.ts +104 -0
- package/src/litellm/toolset-operations.ts +90 -0
- package/src/litellm/toolset-types.ts +47 -0
- package/src/litellm/toolset.test.ts +198 -0
- package/src/litellm/toolset.ts +151 -0
- package/src/ownership/ownership.test.ts +33 -1
- package/src/ownership/rows.ts +53 -0
- package/src/postgres/connection.ts +42 -7
- package/src/postgres/database-bigint-serialization.test.ts +1 -0
- package/src/postgres/database-refusals.test.ts +2 -2
- package/src/postgres/database-sql.ts +36 -9
- package/src/postgres/fake-grants-parse.ts +189 -0
- package/src/postgres/fake-grants-read.ts +250 -0
- package/src/postgres/fake-grants-sql.ts +207 -0
- package/src/postgres/fake-grants-write.ts +90 -0
- package/src/postgres/fake-role-sql.ts +240 -0
- package/src/postgres/fake-schema-semantics.test.ts +36 -0
- package/src/postgres/fake-schema-sql.ts +146 -0
- package/src/postgres/fake-sql-parse.ts +86 -0
- package/src/postgres/fake-sql-quote.ts +36 -0
- package/src/postgres/fake-sql.ts +166 -46
- package/src/postgres/fixtures/pg-REL_18_6-acl.h.txt +147 -0
- package/src/postgres/fixtures/pg-REL_18_6-aclexplode-func.txt +31 -0
- package/src/postgres/fixtures/pg-REL_18_6-alter-default-privileges-synopsis.txt +82 -0
- package/src/postgres/fixtures/pg-REL_18_6-alter_role.sgml.txt +44 -0
- package/src/postgres/fixtures/pg-REL_18_6-create_role.sgml.txt +26 -0
- package/src/postgres/fixtures/pg-REL_18_6-grant-synopsis.txt +95 -0
- package/src/postgres/fixtures/pg-REL_18_6-pg_attribute.h.txt +24 -0
- package/src/postgres/fixtures/pg-REL_18_6-pg_auth_members.h.txt +62 -0
- package/src/postgres/fixtures/pg-REL_18_6-pg_authid.h.txt +70 -0
- package/src/postgres/fixtures/pg-REL_18_6-pg_class.h.txt +33 -0
- package/src/postgres/fixtures/pg-REL_18_6-pg_default_acl.h.txt +81 -0
- package/src/postgres/fixtures/pg-REL_18_6-pg_namespace.h.txt +28 -0
- package/src/postgres/fixtures/pg-REL_18_6-revoke-synopsis.txt +124 -0
- package/src/postgres/grants-acl.test.ts +61 -0
- package/src/postgres/grants-attrs.ts +185 -0
- package/src/postgres/grants-database.test.ts +158 -0
- package/src/postgres/grants-declare.ts +172 -0
- package/src/postgres/grants-delete-proof.test.ts +154 -0
- package/src/postgres/grants-diff.ts +101 -0
- package/src/postgres/grants-errors.ts +215 -0
- package/src/postgres/grants-existence-guards.test.ts +113 -0
- package/src/postgres/grants-existence.ts +101 -0
- package/src/postgres/grants-lifecycle-guards.test.ts +208 -0
- package/src/postgres/grants-lifecycle-repair.test.ts +208 -0
- package/src/postgres/grants-lifecycle.test.ts +181 -0
- package/src/postgres/grants-ops.ts +229 -0
- package/src/postgres/grants-owner-revoke.test.ts +121 -0
- package/src/postgres/grants-ownership.ts +49 -0
- package/src/postgres/grants-plan-collateral.test.ts +202 -0
- package/src/postgres/grants-plan-diff.test.ts +204 -0
- package/src/postgres/grants-plan-restore.ts +43 -0
- package/src/postgres/grants-plan-revocations.test.ts +69 -0
- package/src/postgres/grants-plan.test.ts +148 -0
- package/src/postgres/grants-plan.ts +245 -0
- package/src/postgres/grants-provenance.test.ts +134 -0
- package/src/postgres/grants-psql-lifecycle.test.ts +105 -0
- package/src/postgres/grants-read-absent.test.ts +91 -0
- package/src/postgres/grants-read-defaults.ts +51 -0
- package/src/postgres/grants-read.ts +250 -0
- package/src/postgres/grants-refusals.test.ts +136 -0
- package/src/postgres/grants-refuse.ts +119 -0
- package/src/postgres/grants-relkind-wire.test.ts +111 -0
- package/src/postgres/grants-repair-plan.test.ts +201 -0
- package/src/postgres/grants-sql.test.ts +128 -0
- package/src/postgres/grants-sql.ts +144 -0
- package/src/postgres/grants-words.ts +34 -0
- package/src/postgres/grants.ts +110 -0
- package/src/postgres/index.ts +129 -5
- package/src/postgres/installed-classifier.ts +36 -0
- package/src/postgres/providers.ts +33 -9
- package/src/postgres/psql-executor-escaping.test.ts +67 -0
- package/src/postgres/psql-executor.test.ts +63 -2
- package/src/postgres/psql-executor.ts +74 -34
- package/src/postgres/role-adopt.test.ts +98 -0
- package/src/postgres/role-attrs.ts +137 -0
- package/src/postgres/role-diff.ts +93 -0
- package/src/postgres/role-errors.ts +206 -0
- package/src/postgres/role-guard.test.ts +60 -0
- package/src/postgres/role-identity.test.ts +197 -0
- package/src/postgres/role-lifecycle.test.ts +228 -0
- package/src/postgres/role-membership-options.test.ts +73 -0
- package/src/postgres/role-membership-repair.test.ts +153 -0
- package/src/postgres/role-membership-sql.ts +223 -0
- package/src/postgres/role-password-ascii.test.ts +53 -0
- package/src/postgres/role-password-transports.test.ts +123 -0
- package/src/postgres/role-password.test.ts +158 -0
- package/src/postgres/role-privilege.test.ts +107 -0
- package/src/postgres/role-provenance.test.ts +200 -0
- package/src/postgres/role-provider.ts +105 -0
- package/src/postgres/role-refusals.test.ts +225 -0
- package/src/postgres/role-scram.test.ts +38 -0
- package/src/postgres/role-scram.ts +40 -0
- package/src/postgres/role-secrets.ts +61 -0
- package/src/postgres/role-sql.ts +213 -0
- package/src/postgres/role-valid-until.test.ts +68 -0
- package/src/postgres/role.ts +226 -0
- package/src/postgres/schema-assert.ts +139 -0
- package/src/postgres/schema-attrs.ts +71 -0
- package/src/postgres/schema-delete-proofs.test.ts +192 -0
- package/src/postgres/schema-delete.ts +96 -0
- package/src/postgres/schema-diff.ts +44 -0
- package/src/postgres/schema-drop-2bp01.test.ts +146 -0
- package/src/postgres/schema-errors.ts +209 -0
- package/src/postgres/schema-handlers.test.ts +193 -0
- package/src/postgres/schema-identity.ts +39 -0
- package/src/postgres/schema-lifecycle.test.ts +246 -0
- package/src/postgres/schema-race.test.ts +70 -0
- package/src/postgres/schema-reconcile.ts +100 -0
- package/src/postgres/schema-refusals.test.ts +144 -0
- package/src/postgres/schema-socket.test.ts +162 -0
- package/src/postgres/schema-sql.ts +130 -0
- package/src/postgres/schema-takeover.test.ts +149 -0
- package/src/postgres/schema-test-kit.ts +85 -0
- package/src/postgres/schema.ts +130 -0
- package/src/release/binary-alias.test.ts +3 -3
- package/src/release/binary-claims.test.ts +3 -3
- package/src/release/binary-directory-umask.test.ts +65 -0
- package/src/release/fake-engine.ts +15 -0
- package/src/valkey/acl-attrs.ts +98 -0
- package/src/valkey/acl-compare.ts +57 -0
- package/src/valkey/acl-connection.ts +13 -0
- package/src/valkey/acl-delete.test.ts +127 -0
- package/src/valkey/acl-form.ts +239 -0
- package/src/valkey/acl-managed.ts +13 -0
- package/src/valkey/acl-ops.ts +122 -0
- package/src/valkey/acl-ownership.test.ts +118 -0
- package/src/valkey/acl-prefix.test.ts +38 -0
- package/src/valkey/acl-profiles.ts +81 -0
- package/src/valkey/acl-reconcile.ts +180 -0
- package/src/valkey/acl-reserved.test.ts +69 -0
- package/src/valkey/acl-revocation.test.ts +94 -0
- package/src/valkey/acl-seat-prefix.test.ts +111 -0
- package/src/valkey/acl-validation.test.ts +54 -0
- package/src/valkey/acl.test.ts +215 -0
- package/src/valkey/acl.ts +169 -0
- package/src/valkey/connection-service.ts +46 -0
- package/src/valkey/connection.ts +180 -0
- package/src/valkey/errors.ts +239 -0
- package/src/valkey/fake-acl.ts +128 -0
- package/src/valkey/fake-valkey.ts +224 -0
- package/src/valkey/handler-test-fixture.ts +43 -0
- package/src/valkey/handlers.test.ts +205 -0
- package/src/valkey/index.ts +54 -0
- package/src/valkey/instance-attrs.ts +48 -0
- package/src/valkey/instance-form.ts +104 -0
- package/src/valkey/instance.test.ts +108 -0
- package/src/valkey/instance.ts +160 -0
- package/src/valkey/provider-socket-fixture.ts +71 -0
- package/src/valkey/providers.test.ts +129 -0
- package/src/valkey/providers.ts +21 -0
- package/src/valkey/resp.ts +212 -0
- package/src/valkey/transport-bounds.test.ts +150 -0
- package/src/valkey/transport-error.ts +37 -0
- package/src/valkey/transport.test.ts +158 -0
- package/src/valkey/transport.ts +109 -0
- package/src/valkey/upstream-bounds.test.ts +14 -0
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/** vmalert's bytes as text, to compare with what a test reads off the disk. */
|
|
2
2
|
export declare const VMALERT_TEXT: string;
|
|
3
|
+
/**
|
|
4
|
+
* A directory Release.Binary accepts, whatever the process umask. The resource refuses a directory
|
|
5
|
+
* its group or others may write (binary-lifecycle.ts `directoryReady`), and a bare `mkdir` asks for
|
|
6
|
+
* 0777 and loses the umask's bits: 0775 under the 0002 a CT100 login shell has, so the suite
|
|
7
|
+
* passed under 022 and failed six tests under 0002 (measured 2026-10-01). A umask only ever takes
|
|
8
|
+
* bits away, so asking for 0755 outright can come out no wider than 0755 under any mask; the
|
|
9
|
+
* directories made on the way (`recursive`) get the same mode. Every test directory goes through
|
|
10
|
+
* here; the resource's refusal is right and stays as it is.
|
|
11
|
+
*/
|
|
12
|
+
export declare const makeBinaryDirectory: (path: string) => Promise<string>;
|
|
3
13
|
/** One stack over localRunner; `deploy` takes logical id → directory; `gets` counts downloads. */
|
|
4
14
|
export declare const realEngine: () => {
|
|
5
15
|
deploy: (binaries: Readonly<Record<string, string>>) => Promise<Readonly<Record<string, string>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-engine.d.ts","sourceRoot":"","sources":["../../src/release/fake-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fake-engine.d.ts","sourceRoot":"","sources":["../../src/release/fake-engine.ts"],"names":[],"mappings":"AAoBA,+EAA+E;AAC/E,eAAO,MAAM,YAAY,QAA2C,CAAC;AAErE;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,SAAgB,MAAM,KAAG,OAAO,CAAC,MAAM,CAGtE,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,UAAU;uBAiBK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;CAS3D,CAAC"}
|
package/dist/release/index.js
CHANGED
|
@@ -329,6 +329,40 @@ var recordedInstance = (fqn, instanceId) => Effect4.gen(function* () {
|
|
|
329
329
|
return (yield* wholeDeclaration(fqn, generation.props)) ? "whole" : "partial";
|
|
330
330
|
});
|
|
331
331
|
var isCreate = (fqn, instanceId) => Effect4.map(recordedGeneration(fqn, instanceId), (generation) => generation?.status === "creating");
|
|
332
|
+
var idOf = (attr) => {
|
|
333
|
+
if (typeof attr !== "object" || attr === null)
|
|
334
|
+
return;
|
|
335
|
+
const id = attr.id;
|
|
336
|
+
return typeof id === "string" && id !== "" ? id : undefined;
|
|
337
|
+
};
|
|
338
|
+
var olderGenerationIds = (fqn, instanceId) => Effect4.gen(function* () {
|
|
339
|
+
const found = yield* storeOf;
|
|
340
|
+
if (found === undefined)
|
|
341
|
+
return [];
|
|
342
|
+
const ids = [];
|
|
343
|
+
for (const at of [fqn, ...found.resources[fqn]?.FormerFqns ?? []]) {
|
|
344
|
+
collectOlder(yield* rowAt(found.store, found.where, at), instanceId, ids);
|
|
345
|
+
}
|
|
346
|
+
return ids;
|
|
347
|
+
});
|
|
348
|
+
var collectOlder = (row, instanceId, ids) => {
|
|
349
|
+
let at = row;
|
|
350
|
+
let seen = false;
|
|
351
|
+
while (typeof at === "object" && at !== null && !isActionState(at)) {
|
|
352
|
+
const generation = at;
|
|
353
|
+
if (!seen) {
|
|
354
|
+
seen = generation.instanceId === instanceId;
|
|
355
|
+
at = generation.old;
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
if (generation.instanceId !== instanceId) {
|
|
359
|
+
const id = idOf(generation.attr);
|
|
360
|
+
if (id !== undefined)
|
|
361
|
+
ids.push(id);
|
|
362
|
+
}
|
|
363
|
+
at = generation.old;
|
|
364
|
+
}
|
|
365
|
+
};
|
|
332
366
|
var forgetRefusedCreate = (fqn, instanceId) => Effect4.gen(function* () {
|
|
333
367
|
const found = yield* storeOf;
|
|
334
368
|
if (found === undefined)
|
|
@@ -1472,5 +1506,5 @@ export {
|
|
|
1472
1506
|
releaseUrl
|
|
1473
1507
|
};
|
|
1474
1508
|
|
|
1475
|
-
//# debugId=
|
|
1509
|
+
//# debugId=60C150A7AA04A77D64756E2164756E21
|
|
1476
1510
|
//# sourceMappingURL=index.js.map
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"/**\n * The one seam between the launchd providers and the host: every file read, file write and\n * `launchctl` call goes through a HostRunner, and nothing in this directory touches the host any\n * other way.\n *\n * ★ WHY A SEAM AND NOT DIRECT node:fs CALLS. launchd has no SDK — the provider renders a plist and\n * drives `launchctl` — so the only way to test the lifecycle without a real launchd (and without\n * writing /Library) is to swap the host out. fake-runner.ts is an in-memory host with a scripted\n * launchd; local-runner.ts is the real one. The same seam is where a consumer plugs in a runner\n * that reaches a host some other way.\n *\n * ★ PROMISES, NOT EFFECTS, ON PURPOSE. A consumer writing their own runner implements plain async\n * functions; the providers lift them into Effect at the call site (host-effect.ts).\n */\nimport * as Context from 'effect/Context';\nimport * as Layer from 'effect/Layer';\n\n/** One finished process. ⛔ `stdout` may carry anything the job's environment holds — never log it. */\nexport type ExecResult = {\n readonly exitCode: number;\n readonly stdout: string;\n readonly stderr: string;\n};\n\n/**\n * What `lstat` says about a path. ⚠️ lstat, not stat: a symlink is reported as a symlink, because\n * writing through one would change a file this resource never named.\n */\nexport type FileStat = {\n readonly kind: 'file' | 'directory' | 'symlink' | 'other';\n /** Permission bits only (`& 0o7777`), never the file-type bits. */\n readonly mode: number;\n readonly uid: number;\n readonly gid: number;\n readonly size: number;\n /**\n * The entry's identity, device and inode, when the runner can say. ★ Two spellings of ONE file\n * (`/tmp/x` and `/private/tmp/x`; `Bin` and `bin` on case-insensitive APFS) differ as strings\n * and match here, and a move must not delete its old path when that path IS the new file\n * (file-identity.ts). Optional: a runner that leaves them out gets a check after the fact.\n */\n readonly dev?: number;\n readonly ino?: number;\n};\n\nexport type WriteOptions = {\n /**\n * Permission bits for the final file. localRunner applies them BEFORE the file is visible at\n * `path`. ⚠️ sudoRunner's `install -S` does NOT: MEASURED 2026-09-22 on macOS 27.2 (an lstat\n * poller racing /usr/bin/install), the new inode appears at `path` as 0600 and is chmodded\n * 0.2–0.4 ms later. Never torn, never wider than declared, but briefly not executable.\n */\n readonly mode: number;\n /** Numeric owner; omitted means whoever the runner writes as. */\n readonly uid?: number;\n /** Numeric group; omitted means the directory's default. */\n readonly gid?: number;\n};\n\nexport type HostUser = { readonly uid: number; readonly gid: number; readonly home: string };\n\n/**\n * The two host families a HostRunner ever actually targets. ★ Not `NodeJS.Platform`: nothing\n * here runs against `win32`/`aix`/etc, and a narrower type is what makes `runner.platform ===\n * 'darwin'` exhaustive rather than a string comparison that silently matches nothing.\n */\nexport type HostPlatform = 'darwin' | 'linux';\n\nexport interface HostRunner {\n /**\n * ⛔ DECLARED, NEVER INFERRED — same rule as `privileged`, and the same failure mode. The OS of\n * the TARGET this runner writes to, never of the process running Alchemy: `localRunner()` may\n * run ON either, but `sshRunner()`/`sshSudoRunner()` always reach a Linux host from wherever\n * Alchemy itself happens to run.\n * 🔴 INCIDENT, homeflare-ct100 2026-09-27: `Host.Directory`'s chmod/chown end-of-options token\n * (directory-lifecycle.ts `chmodChownEnd`) read `process.platform` — the Mac mini's own OS —\n * instead of the runner's target. Deploying from the Mac to CT100 (a Debian LXC over\n * `sshSudoRunner`) dropped GNU's required `--`, and `sudo-allowlist-dir.ts`'s `dirProgramProblem`\n * refused every chown with `SudoRefusedError` even though the path was under a declared prefix.\n * `localRunner()`'s own local deploys never showed it: there, `process.platform` and the\n * target happen to be the same machine. This field is the fix: every call site that needs to\n * know the target's OS reads `runner.platform`, never `process.platform`.\n */\n readonly platform: HostPlatform;\n /**\n * ⛔ DECLARED, NEVER INFERRED. `true` only when this runner can do every root-needing call the\n * providers make of it: every call already runs as root (a runner that talks to a root helper,\n * say), or the runner elevates exactly those calls (sudoRunner). The providers refuse\n * system-domain writes unless `effectiveUid()` is 0 or this is `true`, so claiming it falsely\n * turns that refusal into an EACCES halfway through a deploy.\n * ⛔ THE KIT NEVER ELEVATES SILENTLY. localRunner() never calls `sudo`: a deploy that prompts for\n * a password mid-plan, or quietly borrows a cached sudo ticket, is exactly the \"no silent sudo\"\n * failure. sudoRunner() does call `sudo -n`, but only when a stack passes it explicitly, only\n * for the argv shapes in sudo-allowlist.ts, and logging each one (decided 2026-09-21).\n */\n readonly privileged: boolean;\n /** The uid file writes and launchctl calls run as. */\n effectiveUid(): number;\n /** Run a program with an argv — ⛔ never through a shell. */\n exec(argv: readonly string[]): Promise<ExecResult>;\n /** File bytes, or `undefined` when nothing is at `path`. */\n readFile(path: string): Promise<Uint8Array | undefined>;\n /** lstat, or `undefined` when nothing is at `path`. */\n stat(path: string): Promise<FileStat | undefined>;\n /**\n * Write `bytes` so that `path` holds either the old file or the new one, never a torn mix:\n * a temporary file in the same directory, mode and owner set on it, then rename(2) over `path`\n * (sudoRunner: the mode just after the rename, measured — see WriteOptions.mode; the owner too,\n * ⚠️ REASONED NOT MEASURED, since measuring it needs root).\n * ⚠️ The parent directory must exist; creating it would invent an owner and mode nobody declared.\n */\n writeFileAtomic(path: string, bytes: Uint8Array, options: WriteOptions): Promise<void>;\n /**\n * PLAN TIME: refuse, reading only and writing nothing, a write this runner would refuse at\n * apply — so the plan shows it before any resource is applied. Optional: a runner without it\n * refuses at the write. ★ sudoRunner implements it with the checks it makes before `sudo -n`;\n * ⛔ it never elevates, so a plan still never calls sudo.\n */\n checkWrite?(path: string, options: WriteOptions): Promise<void>;\n /** Remove a file. Idempotent: nothing at `path` is success. */\n removeFile(path: string): Promise<void>;\n /** A user by name or numeric id, or `undefined` when the host has none. */\n lookupUser(nameOrId: string): Promise<HostUser | undefined>;\n /** A group's gid by name or numeric id, or `undefined` when the host has none. */\n lookupGroup(nameOrId: string): Promise<number | undefined>;\n /** Wait between launchctl polls. ★ Injected so a test never sleeps for real. */\n sleep(ms: number): Promise<void>;\n}\n\n/** The Effect service every launchd provider reads its runner from. */\nexport class HostRunnerService extends Context.Service<HostRunnerService, HostRunner>()(\n 'homeflare/launchd/HostRunner',\n) {}\n\n/** Provide a runner to the providers: `Layer.provide(hostRunnerLayer(localRunner()))`. */\nexport const hostRunnerLayer = (runner: HostRunner): Layer.Layer<HostRunnerService> =>\n Layer.succeed(HostRunnerService, runner);\n\n/** True when this runner may write root-owned paths and drive the system domain. */\nexport const canActAsRoot = (runner: HostRunner): boolean =>\n runner.privileged || runner.effectiveUid() === 0;\n",
|
|
12
12
|
"/**\n * Whether a live object this stack holds no state for may be written — the apply-time half of the\n * house rule that NOTHING IS ADOPTED WITHOUT `--adopt` (decided 2026-09-21 for HostFile, LaunchdJob,\n * CaddyConfig and every Bao.* family). probe.ts is the plan-time half.\n *\n * ★ FAMILY-NEUTRAL ON PURPOSE. The engine questions here — what `--adopt` resolves to for one FQN,\n * whether this apply resumes the resource's own interrupted create — are the same for a vault\n * role, a launchd plist and a Caddy config, so they live once, outside every subpath's directory.\n */\nimport { AdoptPolicy } from 'alchemy/AdoptPolicy';\nimport { AlchemyContext } from 'alchemy/AlchemyContext';\nimport { Stack } from 'alchemy/Stack';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport { resumes, unfinished } from './resume.ts';\nimport { forgetRefusedCreate, isCreate } from './rows.ts';\n\n/**\n * Whether the resource at `fqn` may be adopted, resolved exactly as the planner resolves it (alchemy\n * beta.79 Plan.ts: `resource.Adopt ?? shouldAdopt`): a resource-scoped `adopt(…)`, else the\n * `AdoptPolicy` service, else `AlchemyContext.adopt`, else off.\n * ★ FOR A CREATE THE ENGINE NEVER PROBED. Alchemy skips the adoption probe while `news` holds an\n * Output, so an ownership check that must still honour `--adopt` can only run at apply. All three\n * reach the apply: Alchemist runs plan AND apply under the session context, which provides the\n * services from the CLI flag and the Stack the resources registered on (Alchemist/Session.ts,\n * routes/stack.ts; Apply.ts reads the same Stack).\n * ⛔ THE RESOURCE-SCOPED SETTING WINS, BOTH WAYS. The engine captures `adopt(…)` on the resource at\n * registration (Resource.ts `Adopt`, into `Stack.resources[fqn]`) and never hands it to a\n * provider. Reading only the deploy-wide flag let `--adopt` take over a resource declared\n * `.pipe(adopt(false))` — which the planner refuses — and refused one declared `adopt(true)`.\n * ⚠️ `resources` carries an `@internal` comment in Alchemy's source, but it is in the published types\n * and the planner reads `Adopt` from it. caddy/adopt-scope.test.ts registers through the real\n * `Resource`, so an upgrade that stops recording it there fails the suite.\n */\nexport const adoptEnabled = (fqn: string): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n const stack = yield* Effect.serviceOption(Stack);\n const scoped = Option.isSome(stack) ? stack.value.resources[fqn]?.Adopt : undefined;\n if (scoped !== undefined) return scoped;\n const policy = yield* Effect.serviceOption(AdoptPolicy);\n if (Option.isSome(policy)) return policy.value;\n const context = yield* Effect.serviceOption(AlchemyContext);\n return Option.isSome(context) ? context.value.adopt : false;\n });\n\n/** The three fields of a `reconcile` (or `read`) call that say whose object this is. */\nexport type Owner = {\n readonly fqn: string;\n readonly instanceId: string;\n /** The attributes state holds; `undefined` on a create. */\n readonly output: unknown;\n};\n\n/**\n * Whether `--adopt` may speak for this apply's generation: a CREATE (rows.ts isCreate), or an\n * UNFINISHED generation whose row this plan's diff saw with no attributes (resume.ts) — the\n * resume Alchemy itself offers `--adopt` for (\"Cannot resume creating … Re-run with --adopt\").\n * ⛔ NOT A FRESH REPLACE'S NEW GENERATION. The planner never probes it and never offers it adoption,\n * so the identity it moves to was never asked about under `--adopt`: 🔴 MEASURED 2026-09-21\n * (launchd/adopt-apply.test.ts), a HostFile whose path changed onto a file it did not own\n * overwrote that file under a deploy-wide `--adopt` meant for something else. A Bao rename onto a\n * taken identity already fails the plan, `--adopt` or not (rename.ts judgeMove); this keeps the\n * apply to the same answer.\n */\nconst adoptable = (owner: Owner): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n if (yield* isCreate(owner.fqn, owner.instanceId)) return true;\n return yield* unfinished(owner.instanceId);\n });\n\n/** Whether a stateless `reconcile` may take over a live object: adoption on, for an adoptable one. */\nexport const adoptsAtApply = (owner: Owner): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n if (!(yield* adoptEnabled(owner.fqn))) return false;\n return yield* adoptable(owner);\n });\n\n/** A lifecycle helper's hook for refuseTakeover, bound to one call's Owner: `(what) => …`. */\nexport type Claim = (what: string) => Effect.Effect<void>;\n\n/**\n * `reconcile`'s check, called with the live object it found BEFORE any write: dies unless that\n * object may be written. It may when state already vouches for it (`output`), when this apply\n * resumes the resource's own interrupted create or replace and its diff proved the object that\n * generation's (resume.ts), or when adoption is on for a create or an unfinished generation\n * (adoptable).\n * ⛔ WHY IT EXISTS AT ALL: THE PROBE DOES NOT GUARD EVERY CREATE. Alchemy skips it while `news` holds\n * an Output (Plan.ts), a new generation of a replace is never probed, and an object can appear\n * between plan and apply. Each of those used to be a silent takeover: written over, then recorded\n * as ours, and deleted with the stack under `destroy`.\n * ⚠️ A CHECK, THEN A WRITE — NOT A LOCK. Two creates of one name in the same deploy run\n * concurrently, both read nothing, and both write (measured with the fakes, 2026-09-21). Nothing\n * between a read and a write can close that; declare each name once.\n * ⚠️ AN IDENTICAL OBJECT IS STILL A TAKEOVER (decided 2026-09-21). Nothing would be written, but the\n * state row would claim it, and a later delete would remove what another owner still relies on.\n * ⛔ A REFUSED CREATE FORGETS ITS `creating` ROW (rows.ts forgetRefusedCreate), or the next plan's\n * recovery read would adopt the very object this refused.\n */\nexport const refuseTakeover = (owner: Owner, what: string): Effect.Effect<void> =>\n Effect.gen(function* () {\n if (owner.output !== undefined) return;\n if (yield* resumes(owner.instanceId)) return;\n const may = yield* adoptable(owner);\n if (may && (yield* adoptEnabled(owner.fqn))) return;\n yield* forgetRefusedCreate(owner.fqn, owner.instanceId);\n const remedy = may\n ? 'Deploy with --adopt (or wrap the resource in adopt(true)) to take it over, or remove it first.'\n : 'It is the new identity of a replace, which --adopt does not cover: remove it first.';\n return yield* Effect.die(\n new Error(\n `${what}: already exists, and this stack holds no state for it — the plan could not ask ` +\n 'first (a prop was still an Output, a replace moved onto it, or it appeared after the ' +\n `plan). Nothing was written. ${remedy}`,\n ),\n );\n });\n\n/** refuseTakeover bound to one call's Owner, for a lifecycle helper that finds the live object. */\nexport const claimFor =\n (owner: Owner): Claim =>\n (what) =>\n refuseTakeover(owner, what);\n",
|
|
13
13
|
"/**\n * Whether this apply RESUMES a create or replace the engine already started for this resource AND\n * the live object it will find is proven that generation's own — the one case in which a stateless\n * `reconcile` may write over a live object without `--adopt`.\n *\n * ★ HOW THE ENGINE TELLS US. Alchemy calls `diff` whenever a state row exists, and hands it `output`\n * = that row's attributes (alchemy beta.79 Plan.ts). A row with NO attributes is exactly an\n * unfinished generation: `creating` (a create interrupted after its write, before its commit),\n * `replacing` (the same for a replace), or `deleting` re-driven as a create. A fresh create is\n * never diffed at all. So the diff of such a row decides, and the apply that follows (the same\n * instance id: Apply.ts reuses the row's) finds the note.\n * ⛔ A ROW PROVES NOTHING BY ITSELF (red team, 2026-09-21). Apply commits it BEFORE reconcile runs, so\n * a deploy killed before the claim — an upstream that failed, a Ctrl-C — leaves a row whose create\n * never asked whose object sat at its identity. 🔴 MEASURED (openbao/adopt-holes.test.ts): with the\n * name an Output, the next deploy \"resumed\" that create and wrote over another owner's role, in\n * every family that had a note on the row alone. So the note is left only when the family's own\n * `read`, asked as the recovery read (probe.ts ownedRead: a recorded instance, a row carrying the\n * whole declaration, and a live object that matches it), answers \"ours\". For a `creating` row\n * that is the question Plan.ts already asked; for a `replacing` row it is the only time it is asked.\n * ⚠️ WHY NOT THE STATE STORE ALONE. At reconcile both look the same: Apply commits the fresh create's\n * `creating` row before calling reconcile, so a row with this instance id is always there.\n * ★ THE CHANNEL IS ALCHEMY'S OWN: `Artifacts`, the per-FQN bag the engine shares between one plan\n * and its apply (Artifacts.ts: \"diff computes … create / update reads the same artifact\").\n * Deploy.ts and the Alchemist session both hold one store across the pair.\n * ⚠️ IT FAILS CLOSED. No bag, a bag the plan never wrote, or an object the read cannot prove ours\n * reads as a fresh create, and adopt.ts then asks for `--adopt` — the safe direction.\n * ★ AN UNPROVEN RESUME IS STILL MARKED UNFINISHED (`noteUnfinished`), so `--adopt` can take it over\n * the way Alchemy's own \"Cannot resume creating … Re-run with --adopt\" offers for a create — while\n * a FRESH replace's new generation, which no diff ever saw without attributes, stays unadoptable.\n */\nimport { Unowned } from 'alchemy/AdoptPolicy';\nimport { Artifacts } from 'alchemy/Artifacts';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nconst PROVEN = 'homeflare/ownership/resumes';\nconst UNFINISHED = 'homeflare/ownership/unfinished';\n\nconst note = (key: string, instanceId: string): Effect.Effect<void> =>\n Effect.gen(function* () {\n const bag = yield* Effect.serviceOption(Artifacts);\n if (Option.isSome(bag)) yield* bag.value.set(key, instanceId);\n });\n\nconst noted = (key: string, instanceId: string): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n const bag = yield* Effect.serviceOption(Artifacts);\n if (Option.isNone(bag)) return false;\n return (yield* bag.value.get<string>(key)) === instanceId;\n });\n\n/**\n * `diff`'s note for a row with no attributes: `instanceId` is an unfinished generation of this\n * resource's own, which `--adopt` may resume when nothing proves it (adopt.ts adoptable). Returns\n * `undefined`, a diff's \"defer to the engine\".\n */\nexport const noteUnfinished = (instanceId: string): Effect.Effect<undefined> =>\n Effect.as(note(UNFINISHED, instanceId), undefined);\n\n/**\n * Note `instanceId` unfinished, and a proven resume when `recovered` — the family's `read` of the\n * row's props, asked with no attributes — answers a plain object: ours. `Unowned`, nothing, or a\n * read that fails or dies proves nothing. ⚠️ Never fails the plan: an unproven resume is refused\n * at apply instead, unless `--adopt`.\n */\nexport const noteResume = <R>(\n instanceId: string,\n recovered: Effect.Effect<unknown, unknown, R>,\n): Effect.Effect<void, never, R> =>\n Effect.gen(function* () {\n yield* noteUnfinished(instanceId);\n const unproven = () => Effect.succeed(undefined);\n const found = yield* recovered.pipe(Effect.catch(unproven), Effect.catchDefect(unproven));\n if (found === undefined || found === null || Unowned.is(found)) return;\n yield* note(PROVEN, instanceId);\n });\n\n/** Whether the plan for this apply noted `instanceId` as a proven resumed create or replace. */\nexport const resumes = (instanceId: string): Effect.Effect<boolean> => noted(PROVEN, instanceId);\n\n/** Whether the plan for this apply saw `instanceId` as an unfinished generation (proven or not). */\nexport const unfinished = (instanceId: string): Effect.Effect<boolean> =>\n noted(UNFINISHED, instanceId);\n\n/** The fields of a `read` or `diff` call provingResumes uses; a family's own input carries more. */\ntype Ask = {\n readonly id: string;\n readonly fqn: string;\n readonly instanceId: string;\n readonly olds: unknown;\n readonly output: unknown;\n};\ntype Hook = Effect.Effect<unknown, unknown, unknown>;\n\n/** The two hooks provingResumes wraps, as Alchemy's ProviderService declares them. */\ninterface Resumable {\n read?(input: Ask): Hook;\n diff?(input: Ask): Hook;\n}\n\n/**\n * A provider whose `diff`, for a row with no attributes, first asks the provider's own `read` whether\n * the live object is that unfinished generation's (noteResume), then runs as written. Every Bao.*\n * family is built through it, so their diffs answer such a row with a plain `undefined`.\n */\nexport const provingResumes = <S extends Resumable>(service: S): S => {\n const { diff, read } = service;\n if (diff === undefined || read === undefined) return service;\n const proving: Resumable['diff'] = (input) =>\n Effect.gen(function* () {\n if (input.output === undefined) {\n yield* noteResume(input.instanceId, read({ ...input, output: undefined }));\n }\n return yield* diff(input);\n });\n // ⚠️ The one cast: `diff` keeps the family's own signature — it is the family's diff, run after.\n return { ...service, diff: proving } as S;\n};\n",
|
|
14
|
-
"/**\n * The questions ownership/ asks of Alchemy's state store: does a row record this instance, and with\n * its whole declaration (probe.ts); is this apply a create rather than a replace's new generation\n * (adopt.ts); and — when reconcile refuses a create — forget the row Apply committed for it\n * (adopt.ts). Alchemy's own AWS.EC2.SecurityGroup provider reads the store the same way: the Stack\n * service names the stack and stage, and `State` yields the store.\n *\n * ⚠️ WITHOUT A STACK OR STATE IN CONTEXT, or with a store that errors, a row reads as \"not\n * recorded\" — the object is then `Unowned`, the safe answer — and nothing is forgotten, which\n * leaves the one gap forgetRefusedCreate exists to close. `alchemy deploy` and the Alchemist\n * session provide both.\n */\nimport { Stack } from 'alchemy/Stack';\nimport { State, type StateService, isActionState } from 'alchemy/State/State';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport { wholeDeclaration } from './whole.ts';\n\ntype Where = { readonly stack: string; readonly stage: string };\n\n/** The store, where this stack lives, and what it declares — or undefined outside a stack. */\nconst storeOf = Effect.gen(function* () {\n const stack = yield* Effect.serviceOption(Stack);\n const state = yield* Effect.serviceOption(State);\n if (Option.isNone(stack) || Option.isNone(state)) return undefined;\n const store: StateService = yield* state.value;\n const where: Where = { stack: stack.value.name, stage: stack.value.stage };\n return { resources: stack.value.resources, store, where };\n});\n\nconst rowAt = (store: StateService, where: Where, fqn: string) =>\n store.get({ ...where, fqn }).pipe(Effect.orElseSucceed(() => undefined));\n\n/** One generation of a persisted row, as far as ownership/ reads it. */\nexport type Generation = {\n readonly instanceId?: unknown;\n readonly status?: unknown;\n readonly props?: unknown;\n readonly attr?: unknown;\n readonly old?: unknown;\n /** Set by Apply on the `updating` row of an adoption, until that update commits (Apply.ts). */\n readonly adopting?: unknown;\n};\n\n/** The generation of a persisted row that carries `instanceId`: the row itself, or one in `old`. */\nconst generationOf = (row: unknown, instanceId: string): Generation | undefined => {\n let at = row;\n while (typeof at === 'object' && at !== null && !isActionState(at as never)) {\n const generation = at as Generation;\n if (generation.instanceId === instanceId) return generation;\n at = generation.old;\n }\n return undefined;\n};\n\n/** The generation `instanceId` names — at the FQN, or at a former FQN `renamedFrom` names. */\nexport const recordedGeneration = (\n fqn: string,\n instanceId: string,\n): Effect.Effect<Generation | undefined> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return undefined;\n for (const at of [fqn, ...(found.resources[fqn]?.FormerFqns ?? [])]) {\n const generation = generationOf(yield* rowAt(found.store, found.where, at), instanceId);\n if (generation !== undefined) return generation;\n }\n return undefined;\n });\n\n/**\n * What the state store says of `instanceId` for this resource (at its FQN, or at a former FQN its\n * `renamedFrom` names — the planner migrates that row before it recovers it):\n * · `absent` — no row holds it. ★ This is what separates the probe from the recovery read: the\n * probe's instance id is minted for the probe (Plan.ts `generateInstanceId()`), 128 random bits\n * no row can hold.\n * · `partial` — a row holds it, but its props lack part of the declaration: a prop stripped at\n * commit because it was still an Output (whole.ts). Those props cannot prove an object ours.\n * · `whole` — a row holds it with every prop the declaration names.\n */\nexport type Recorded = 'absent' | 'partial' | 'whole';\n\nexport const recordedInstance = (fqn: string, instanceId: string): Effect.Effect<Recorded> =>\n Effect.gen(function* () {\n const generation = yield* recordedGeneration(fqn, instanceId);\n if (generation === undefined) return 'absent';\n return (yield* wholeDeclaration(fqn, generation.props)) ? 'whole' : 'partial';\n });\n\n/**\n * Whether this apply's `instanceId` is a CREATE: the row Apply committed for it is `creating`.\n * ⛔ A REPLACE'S NEW GENERATION IS NOT ONE. Apply commits it as `replacing`, and the planner never\n * offers it adoption — the probe runs only for a resource with no state — so `--adopt` must not\n * let it write over whatever sits at its new identity (adopt.ts adoptsAtApply).\n */\nexport const isCreate = (fqn: string, instanceId: string): Effect.Effect<boolean> =>\n Effect.map(\n recordedGeneration(fqn, instanceId),\n (generation) => generation?.status === 'creating',\n );\n\n/**\n * ⛔ A REFUSED CREATE MUST NOT LEAVE A ROW THAT CLAIMS THE OBJECT IT REFUSED. Apply commits a\n * `creating` row for this instance before it calls reconcile, and a failed reconcile leaves it\n * there. The next plan's recovery read would then find our instance id and an object that can\n * match its props — a prop that was an Output is stripped from the row, and an omitted prop is\n * \"not managed\" — and adopt exactly what this apply refused. 🔴 MEASURED 2026-09-21: Bao.Mount\n * and Bao.AuthMethod did (openbao/adopt-core.test.ts). So the row goes, and state reads as if\n * the create never started: the next plan probes, and the probe answers `Unowned`.\n * ⚠️ ONLY a `creating` row of THIS instance with no attributes — the one Apply just wrote. A\n * `replacing` row carries the previous generation in `old` and is never touched.\n */\nexport const forgetRefusedCreate = (fqn: string, instanceId: string): Effect.Effect<void> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return;\n const row = yield* rowAt(found.store, found.where, fqn);\n const mine = row as { status?: unknown; instanceId?: unknown; attr?: unknown } | undefined;\n if (mine?.status !== 'creating' || mine.instanceId !== instanceId || mine.attr !== undefined) {\n return;\n }\n yield* found.store.delete({ ...found.where, fqn }).pipe(Effect.ignore);\n });\n",
|
|
14
|
+
"/**\n * The questions ownership/ asks of Alchemy's state store: does a row record this instance, and with\n * its whole declaration (probe.ts); is this apply a create rather than a replace's new generation\n * (adopt.ts); and — when reconcile refuses a create — forget the row Apply committed for it\n * (adopt.ts). Alchemy's own AWS.EC2.SecurityGroup provider reads the store the same way: the Stack\n * service names the stack and stage, and `State` yields the store.\n *\n * ⚠️ WITHOUT A STACK OR STATE IN CONTEXT, or with a store that errors, a row reads as \"not\n * recorded\" — the object is then `Unowned`, the safe answer — and nothing is forgotten, which\n * leaves the one gap forgetRefusedCreate exists to close. `alchemy deploy` and the Alchemist\n * session provide both.\n */\nimport { Stack } from 'alchemy/Stack';\nimport { State, type StateService, isActionState } from 'alchemy/State/State';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport { wholeDeclaration } from './whole.ts';\n\ntype Where = { readonly stack: string; readonly stage: string };\n\n/** The store, where this stack lives, and what it declares — or undefined outside a stack. */\nconst storeOf = Effect.gen(function* () {\n const stack = yield* Effect.serviceOption(Stack);\n const state = yield* Effect.serviceOption(State);\n if (Option.isNone(stack) || Option.isNone(state)) return undefined;\n const store: StateService = yield* state.value;\n const where: Where = { stack: stack.value.name, stage: stack.value.stage };\n return { resources: stack.value.resources, store, where };\n});\n\nconst rowAt = (store: StateService, where: Where, fqn: string) =>\n store.get({ ...where, fqn }).pipe(Effect.orElseSucceed(() => undefined));\n\n/** One generation of a persisted row, as far as ownership/ reads it. */\nexport type Generation = {\n readonly instanceId?: unknown;\n readonly status?: unknown;\n readonly props?: unknown;\n readonly attr?: unknown;\n readonly old?: unknown;\n /** Set by Apply on the `updating` row of an adoption, until that update commits (Apply.ts). */\n readonly adopting?: unknown;\n};\n\n/** The generation of a persisted row that carries `instanceId`: the row itself, or one in `old`. */\nconst generationOf = (row: unknown, instanceId: string): Generation | undefined => {\n let at = row;\n while (typeof at === 'object' && at !== null && !isActionState(at as never)) {\n const generation = at as Generation;\n if (generation.instanceId === instanceId) return generation;\n at = generation.old;\n }\n return undefined;\n};\n\n/** The generation `instanceId` names — at the FQN, or at a former FQN `renamedFrom` names. */\nexport const recordedGeneration = (\n fqn: string,\n instanceId: string,\n): Effect.Effect<Generation | undefined> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return undefined;\n for (const at of [fqn, ...(found.resources[fqn]?.FormerFqns ?? [])]) {\n const generation = generationOf(yield* rowAt(found.store, found.where, at), instanceId);\n if (generation !== undefined) return generation;\n }\n return undefined;\n });\n\n/**\n * What the state store says of `instanceId` for this resource (at its FQN, or at a former FQN its\n * `renamedFrom` names — the planner migrates that row before it recovers it):\n * · `absent` — no row holds it. ★ This is what separates the probe from the recovery read: the\n * probe's instance id is minted for the probe (Plan.ts `generateInstanceId()`), 128 random bits\n * no row can hold.\n * · `partial` — a row holds it, but its props lack part of the declaration: a prop stripped at\n * commit because it was still an Output (whole.ts). Those props cannot prove an object ours.\n * · `whole` — a row holds it with every prop the declaration names.\n */\nexport type Recorded = 'absent' | 'partial' | 'whole';\n\nexport const recordedInstance = (fqn: string, instanceId: string): Effect.Effect<Recorded> =>\n Effect.gen(function* () {\n const generation = yield* recordedGeneration(fqn, instanceId);\n if (generation === undefined) return 'absent';\n return (yield* wholeDeclaration(fqn, generation.props)) ? 'whole' : 'partial';\n });\n\n/**\n * Whether this apply's `instanceId` is a CREATE: the row Apply committed for it is `creating`.\n * ⛔ A REPLACE'S NEW GENERATION IS NOT ONE. Apply commits it as `replacing`, and the planner never\n * offers it adoption — the probe runs only for a resource with no state — so `--adopt` must not\n * let it write over whatever sits at its new identity (adopt.ts adoptsAtApply).\n */\nexport const isCreate = (fqn: string, instanceId: string): Effect.Effect<boolean> =>\n Effect.map(\n recordedGeneration(fqn, instanceId),\n (generation) => generation?.status === 'creating',\n );\n\nconst idOf = (attr: unknown): string | undefined => {\n if (typeof attr !== 'object' || attr === null) return undefined;\n const id = (attr as { readonly id?: unknown }).id;\n return typeof id === 'string' && id !== '' ? id : undefined;\n};\n\n/**\n * `attr.id` on every generation OLDER than `instanceId` in this FQN's state chain (and a former\n * FQN `renamedFrom` names). Walks `old` the way {@link generationOf} does, and skips the current\n * generation itself.\n * ⛔ THOSE IDS ARE NOT THIS GENERATION'S. A `replacing` row's reconcile runs with no attributes, so\n * a live row found by name can be the previous generation's own deployment. Recording that id on\n * the new generation makes both the same id, and `destroy()` then deletes the old generation by\n * it (Apply.ts, the retain check near 2168 and the provider delete that follows when the policy\n * is not `retain`). A same-instance `old` snapshot (an `updating` row) is not one of these.\n */\nexport const olderGenerationIds = (\n fqn: string,\n instanceId: string,\n): Effect.Effect<readonly string[]> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return [];\n const ids: string[] = [];\n for (const at of [fqn, ...(found.resources[fqn]?.FormerFqns ?? [])]) {\n collectOlder(yield* rowAt(found.store, found.where, at), instanceId, ids);\n }\n return ids;\n });\n\n/**\n * Once `instanceId` has been seen, collect `attr.id` from generations with a DIFFERENT instance\n * id. An `updating` row's `old` is the same instance's pre-update snapshot (Apply.ts), not a\n * replacement generation — that snapshot's id is the row this apply is already writing.\n */\nconst collectOlder = (row: unknown, instanceId: string, ids: string[]): void => {\n let at = row;\n let seen = false;\n while (typeof at === 'object' && at !== null && !isActionState(at as never)) {\n const generation = at as Generation;\n if (!seen) {\n seen = generation.instanceId === instanceId;\n at = generation.old;\n continue;\n }\n if (generation.instanceId !== instanceId) {\n const id = idOf(generation.attr);\n if (id !== undefined) ids.push(id);\n }\n at = generation.old;\n }\n};\n\n/**\n * ⛔ A REFUSED CREATE MUST NOT LEAVE A ROW THAT CLAIMS THE OBJECT IT REFUSED. Apply commits a\n * `creating` row for this instance before it calls reconcile, and a failed reconcile leaves it\n * there. The next plan's recovery read would then find our instance id and an object that can\n * match its props — a prop that was an Output is stripped from the row, and an omitted prop is\n * \"not managed\" — and adopt exactly what this apply refused. 🔴 MEASURED 2026-09-21: Bao.Mount\n * and Bao.AuthMethod did (openbao/adopt-core.test.ts). So the row goes, and state reads as if\n * the create never started: the next plan probes, and the probe answers `Unowned`.\n * ⚠️ ONLY a `creating` row of THIS instance with no attributes — the one Apply just wrote. A\n * `replacing` row carries the previous generation in `old` and is never touched.\n */\nexport const forgetRefusedCreate = (fqn: string, instanceId: string): Effect.Effect<void> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return;\n const row = yield* rowAt(found.store, found.where, fqn);\n const mine = row as { status?: unknown; instanceId?: unknown; attr?: unknown } | undefined;\n if (mine?.status !== 'creating' || mine.instanceId !== instanceId || mine.attr !== undefined) {\n return;\n }\n yield* found.store.delete({ ...found.where, fqn }).pipe(Effect.ignore);\n });\n",
|
|
15
15
|
"/**\n * Whether a state row's props say everything the declaration says — the test that separates a row\n * whose props can prove an object ours from one that cannot (probe.ts, rows.ts).\n *\n * ★ WHY A ROW CAN BE MISSING PART OF ITS DECLARATION. Apply commits the `creating` (or `replacing`)\n * row BEFORE reconcile runs, and strips every prop still an Output at that moment (alchemy\n * beta.79 Apply.ts `commit` → Diff.ts `stripUnresolved`); a JSON store then drops the key. So a\n * row written while an upstream was still being created carries a HOLE where that prop was.\n * ⛔ A HOLE IS \"UNKNOWN\", NOT \"UNMANAGED\". Most families read an absent prop as \"not managed\", so a\n * recovery read comparing the live object with holed props proves nothing: 🔴 MEASURED 2026-09-21\n * (openbao/adopt-holes.test.ts), a Bao.Mount whose `defaultLeaseTtl` was an Output, killed before\n * its reconcile ran, adopted — and tuned — another owner's mount on the next deploy; with the\n * NAME an Output, every role family read an empty name, found nothing, and the resumed create\n * wrote over another owner's role. Neither deploy had ever asked whose object it was.\n * ★ THE DECLARATION IS WHAT TELLS A HOLE FROM AN OMISSION. It still holds the Output (or the literal)\n * the row lacks, while an optional prop left out is absent from both.\n * ⚠️ CONSERVATIVE BY DESIGN: a prop added to the declaration after the crash also reads as a hole.\n * That costs one `--adopt`, never a takeover.\n */\nimport { Stack } from 'alchemy/Stack';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nconst absent = (value: unknown): boolean => value === undefined || value === null;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false;\n const proto: unknown = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n};\n\n/**\n * Whether `recorded` carries a value everywhere `declared` does. Plain objects and arrays are\n * walked; any other declared value — a literal, an Output, an Effect — needs a value in the row.\n */\nexport const carries = (declared: unknown, recorded: unknown): boolean => {\n if (absent(declared)) return true;\n if (absent(recorded)) return false;\n if (Array.isArray(declared)) {\n if (!Array.isArray(recorded)) return false;\n return declared.every((each, index) => carries(each, recorded[index]));\n }\n if (isPlainObject(declared)) {\n if (!isPlainObject(recorded)) return false;\n return Object.entries(declared).every(([key, each]) => carries(each, recorded[key]));\n }\n return true;\n};\n\n/**\n * Whether `props` — one generation's, from the state store — carry the whole declaration of the\n * resource at `fqn`. ⛔ FALSE WITH NOTHING TO COMPARE: no Stack in context, or a resource no longer\n * declared (an orphan's delete). That object then reads as `Unowned` and Apply leaves it in place\n * with a note, rather than deleting what it cannot prove it made.\n */\nexport const wholeDeclaration = (fqn: string, props: unknown): Effect.Effect<boolean> =>\n Effect.map(Effect.serviceOption(Stack), (stack) => {\n const declared = Option.isSome(stack) ? stack.value.resources[fqn] : undefined;\n return declared !== undefined && carries(declared.Props, props);\n });\n",
|
|
16
16
|
"/**\n * Release.Binary's plan-time answer: refuse what the plan can already see is wrong, `replace` when\n * the binary's identity moves, and otherwise compare the live file with the declaration.\n *\n * ⛔ THE PINS MUST BE PLAIN VALUES, AND ARE CHECKED EVEN WHILE `directory` IS AN OUTPUT. A pin that\n * is an Output would be computed during the deploy — a fetch by another name — so a malformed or\n * non-literal pin fails the plan here, before a byte is fetched, whatever else is unresolved.\n * ⚠️ A CREATE IS NEVER DIFFED: the engine plans a first deploy without calling diff, and skips\n * the adoption probe while any prop is an Output. A pin wired from another resource's Output on\n * a FIRST deploy therefore reaches no plan-time check; reconcile refuses it before any host call\n * or request, from the props as the stack program declared them (declared-pins.ts). 🔴 Until\n * 2026-09-22 it was checked there for shape only, and a swapped archive with swapped digests\n * installed (apply-pins.test.ts).\n * ⛔ A NEW PIN IS A NEW PATH (binary-form.ts inPlaceRefusal). When the path is resolved and\n * unchanged, a changed pin is refused here; when it is resolved and new, it is a `replace`.\n * ⚠️ WHILE THE DIRECTORY IS STILL AN OUTPUT the path is unknown, and the answer depends on whether\n * the BYTES move, because the path may turn out not to have:\n * - other bytes (or another name) → `replace`. If the path did not move after all, the new\n * generation's create finds the old file, which does not hold its bytes, and refuses\n * (file-converge.ts never overwrites what a generation does not own).\n * - the same bytes from another archive (a re-pin, a repack) → `update`, NEVER `replace`. 🔴 A\n * replace onto the same path would accept the old file as its own (same bytes, same mode) and\n * then Phase 2 would delete the OLD generation — at that same path, taking the new one's file\n * with it. An update reaches reconcile with `olds`, whose in-place guard refuses the same path,\n * and whose move (file-converge.ts) writes the new path before removing the old.\n * ★ Not the engine's default either way: a changed prop is an update by default, which is\n * exactly the in-place overwrite this resource refuses.\n * ★ Create-before-delete: two versions can sit in two directories at once, so nothing forces\n * `deleteFirst`; the old file goes only once the new one is written and verified.\n * ⚠️ HOUSE, NOT UPSTREAM: this reads the live file at plan time and can answer `noop`. Upstream's\n * guidance is a diff that rarely does either (docs/release-binary-upstream.md).\n */\nimport { type Diff, isResolved } from 'alchemy/Diff';\nimport type { Input } from 'alchemy/Input';\nimport { diffTarget } from '../launchd/file-converge.ts';\nimport { resolvedString } from '../launchd/host-effect.ts';\nimport type { HostRunner } from '../launchd/runner.ts';\nimport { adoptionProblem } from './binary-claim.ts';\nimport {\n type ReleaseBinaryAttributes,\n type ReleaseBinaryProps,\n inPlaceRefusal,\n pinProblems,\n pinsMoved,\n} from './binary-form.ts';\nimport { NOTHING, desiredBinary, refuse } from './binary-lifecycle.ts';\n\nexport const diffBinary = async (\n runner: HostRunner,\n news: Input<ReleaseBinaryProps>,\n olds: ReleaseBinaryProps,\n output: ReleaseBinaryAttributes,\n): Promise<Diff | undefined> => {\n const problems = pinProblems((news ?? {}) as Parameters<typeof pinProblems>[0]);\n if (problems.length > 0) throw refuse(output.path, `${problems.join('; ')}. ${NOTHING}`);\n // ⛔ A TAKEOVER IS ONLY EVER OF THE PINNED BINARY (binary-claim.ts): `output` here is a read of a\n // path with no state, so the plan refuses what it would otherwise print as `adopted`.\n const takeover = adoptionProblem(output.sha256, olds.sha256);\n if (takeover !== undefined) throw refuse(output.path, `${takeover}. ${NOTHING}`);\n // ★ pinProblems passed, so every pin — and `name` — is a plain value; only these are read below.\n const pins = news as Pick<ReleaseBinaryProps, 'archive' | 'member' | 'sha256' | 'name'>;\n const directory = resolvedString(news, 'directory');\n const path = directory === undefined ? undefined : `${directory}/${pins.name}`;\n const pinned = pinsMoved(olds, pins);\n if (pinned && path === output.path) {\n throw refuse(output.path, `${inPlaceRefusal(olds, pins)}. ${NOTHING}`);\n }\n // Resolved: a new path is a replace, other bytes or a mode or owner drift an update (diffTarget).\n if (isResolved(news)) return diffTarget(runner, (await desiredBinary(runner, news)).want, output);\n if (path !== undefined) return path === output.path ? undefined : { action: 'replace' };\n if (pins.name !== olds.name || pins.sha256 !== olds.sha256) return { action: 'replace' };\n return pinned ? { action: 'update' } : undefined;\n};\n",
|
|
17
17
|
"/**\n * Whether two paths name ONE file — the question a move must answer before it deletes its old\n * path, and a plan before it answers `replace`.\n *\n * 🔴 MEASURED 2026-09-22 (release/binary-alias.test.ts, localRunner over a real temp directory,\n * through Alchemy's own Plan and Apply): a Release.Binary whose directory was respelled to\n * another path for the SAME file — through a symlinked parent (`/tmp` → `/private/tmp`, `/etc`\n * → `/private/etc`), or by case alone on case-insensitive APFS, macOS's default — planned a\n * `replace`. The new generation took the file already there as its own (same bytes, same mode:\n * file-converge.ts's resume rule), then Phase 2 deleted the old generation's path, which was that\n * same file. The deploy SUCCEEDED and the binary was gone. The `update` route lost it in one step:\n * convergeFile's move removed the old path after \"writing\" the new one. Host.File shares both.\n * ★ IDENTITY, NOT SPELLING. Case-folding the strings would be wrong on a case-sensitive volume and\n * blind to a symlinked parent; device and inode from lstat are what the kernel itself compares.\n * ⚠️ A HARD LINK also shares an inode. At the old path of a move it is therefore kept, not removed:\n * one stray link left behind, rather than the risk of deleting the file just verified.\n */\nimport type { FileStat, HostRunner } from './runner.ts';\n\n/**\n * `true` when both entries exist and are one file; `false` when either is absent or they differ;\n * `undefined` when the runner reported no identity, so nobody can tell (fakes, custom runners).\n */\nexport const sameEntry = (\n a: FileStat | undefined,\n b: FileStat | undefined,\n): boolean | undefined => {\n if (a === undefined || b === undefined) return false;\n if (a.dev === undefined || a.ino === undefined || b.dev === undefined || b.ino === undefined) {\n return undefined;\n }\n return a.dev === b.dev && a.ino === b.ino;\n};\n\n/** Whether `a` and `b` are one file on this host right now. Equal strings always are. */\nexport const oneFile = async (\n runner: HostRunner,\n a: string,\n b: string,\n): Promise<boolean | undefined> => {\n if (a === b) return true;\n const [left, right] = await Promise.all([runner.stat(a), runner.stat(b)]);\n return sameEntry(left, right);\n};\n\n/**\n * The last step of a move: `remove` the old path unless it is the file just verified at `path`.\n * ⚠️ A runner that reports no identity cannot be asked beforehand, so `path` is checked after: a\n * file lost to a respelling then fails the deploy instead of reporting success.\n */\nexport const leaveOldPath = async (\n runner: HostRunner,\n oldPath: string,\n path: string,\n remove: () => Promise<void>,\n refuse: (path: string, message: string) => Error,\n): Promise<void> => {\n const same = await oneFile(runner, oldPath, path);\n if (same === true) return;\n await remove();\n if (same === undefined && (await runner.stat(path)) === undefined) {\n throw refuse(\n path,\n `removing the old path ${oldPath} removed this file too: they are one file under two ` +\n 'spellings (a symlinked parent, or case on a case-insensitive volume). Deploy again to ' +\n 'reinstall it, and keep one spelling.',\n );\n }\n};\n",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"/**\n * The release-binary provider with ONE HostRunner and its own HTTP client, as a single layer for a\n * host stack:\n *\n * const runner = localRunner();\n * Layer.mergeAll(launchdProviders(runner), releaseProviders(runner), …the stack's others)\n *\n * ★ PASS THE SAME RUNNER THE JOBS USE, so the binary and the daemon that runs it are written by one\n * identity on one host — a stack cannot install as one user and bootstrap as another by accident.\n * ⛔ THERE IS NO DEFAULT RUNNER. A binary is written wherever the runner reaches; a silent default to\n * \"this machine\" would install a Mac's daemons onto whichever laptop ran the deploy (the same\n * reasoning as linuxProviders()).\n * ★ `FetchHttpClient.layer` IS PROVIDED HERE, not left to the stack: the Mac host stack this exists\n * for provides no HTTP layer, and a missing one fails only at the first install.\n */\nimport * as Layer from 'effect/Layer';\nimport * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';\nimport { type HostRunner, hostRunnerLayer } from '../launchd/runner.ts';\nimport { ReleaseBinaryProvider } from './binary.ts';\n\nexport const releaseProviders = (runner: HostRunner) =>\n ReleaseBinaryProvider().pipe(\n Layer.provide(Layer.mergeAll(hostRunnerLayer(runner), FetchHttpClient.layer)),\n );\n",
|
|
32
32
|
"/**\n * VictoriaMetrics' release archives, pinned — the first data set for Release.Binary, and vendor\n * facts only: every digest copied from the vendor's own checksum file for that archive and\n * cross-checked against GitHub's asset digest ON THE RECORDED DATE. Nothing here names a host, a\n * path, a user or an estate. victoria.test.ts holds every pin to the committed checksum files\n * (fixtures/victoria/) — ⚠️ consistency, not provenance: it cannot re-read GitHub, so a fixture\n * edited together with its pins passes, and review is the gate for that.\n *\n * ★ PINNED IN CODE, NOT FETCHED AT APPLY. The checksum file is published by the same account, on\n * the same release, over the same channel as the archive it describes — and these releases are\n * MUTABLE (`\"immutable\": false` on v1.151.0, v1.52.0 and v0.10.0, measured 2026-09-22; the\n * vendor's own release Makefile says to delete an asset in the UI to re-upload it). Whoever can\n * swap an archive can swap its checksum file in the same minute, and a provider that trusts\n * whatever checksum file it finds would install the new bytes and call them verified. A pin\n * committed here changes only through a reviewed kit release, so a swapped asset is a REFUSAL\n * that names the digest it expected. It also means an apply makes one request, not two, and a\n * plan knows exactly which bytes it will install without touching the network.\n * ⚠️ TRUST ROOT. At apply, these pins alone: the transport (TLS, the redirect, the CDN) can fail\n * a download, never pass other bytes. The pins' own root is the GitHub release over TLS as read\n * on RECORDED (trust on first use), uploaded from a maintainer's personal account.\n * VictoriaMetrics publishes no signature, cosign bundle, SLSA provenance or GitHub artifact\n * attestation for these archives (measured 2026-09-22: no .sig/.asc/.pem/.bundle assets; the\n * attestations API answers 404 for all four digests, next to a positive control that answers\n * 200). A checksum file proves the download is not corrupt — integrity — not who built it.\n * ⛔ A NEW VERSION IS A NEW ENTRY, WALKED DOWN THE SAME WAY — docs/release-binary-catalogs.md.\n * Never `latest`, never sorted by publish date: VictoriaLogs v1.51.1 was published AFTER v1.52.0.\n * ⛔ EXACT NAMES. `-enterprise`, `-cluster` and `-enterprise-cluster` archives sit beside each of\n * these with every prefix in common, so each asset name below is written out whole — never\n * composed from a package and a version, which is how a template drifts onto a sibling.\n * ★ THE VENDOR'S `-prod` SUFFIX IS DROPPED ON PURPOSE: every member is `<binary>-prod`, and\n * installing it as `<binary>` keeps a job's argv[0], `ps` and `pgrep` names identical to the\n * builds it replaces. The map is written out per package, never derived.\n */\nimport type { ReleaseCatalog } from './catalog.ts';\n\nconst RECORDED = '2026-09-22';\nconst DOWNLOAD = 'https://github.com/VictoriaMetrics';\n\nexport const VICTORIA_RELEASES: ReleaseCatalog = {\n packages: {\n 'victoria-logs': {\n binaries: { 'victoria-logs': 'victoria-logs-prod' },\n versions: {\n '1.52.0': {\n 'darwin-arm64': {\n asset: 'victoria-logs-darwin-arm64-v1.52.0.tar.gz',\n checksums: {\n recorded: RECORDED,\n sha256: 'd4ca686c3cceec78a0f4e733ef9ab3f857549131ea48cd6f89f701cda406ac4b',\n url: `${DOWNLOAD}/VictoriaLogs/releases/download/v1.52.0/victoria-logs-darwin-arm64-v1.52.0_checksums.txt`,\n },\n members: {\n 'victoria-logs-prod':\n '9e48809e314902782959b3a4e683a3087476759d0293791a0564921c676ca7be',\n },\n repo: 'VictoriaMetrics/VictoriaLogs',\n sha256: '3157d4b6181d8a7e3e30918e2cbfcd4cc4cb66263e3ef21ea91e4f20f8980883',\n size: 10_943_697,\n tag: 'v1.52.0',\n },\n },\n },\n },\n 'victoria-metrics': {\n // ⛔ The SINGLE-NODE archive. `…-cluster.tar.gz` holds vminsert/vmselect/vmstorage instead.\n binaries: { 'victoria-metrics': 'victoria-metrics-prod' },\n versions: {\n '1.151.0': {\n 'darwin-arm64': {\n asset: 'victoria-metrics-darwin-arm64-v1.151.0.tar.gz',\n checksums: {\n recorded: RECORDED,\n sha256: '735745ee0e7b2d5b8118883f2d0ed124c2a12d70261c16380128f5e362566d1e',\n url: `${DOWNLOAD}/VictoriaMetrics/releases/download/v1.151.0/victoria-metrics-darwin-arm64-v1.151.0_checksums.txt`,\n },\n members: {\n 'victoria-metrics-prod':\n '3c493a95ac1e9034a3261b230c4d62f3b186a04aafcdbacc99bfc110dc5de6a1',\n },\n repo: 'VictoriaMetrics/VictoriaMetrics',\n sha256: '8792437c4c0b63719fed7b44ad18d4b4167bbe6861ab3e84c7bb010c922e7582',\n size: 12_739_105,\n tag: 'v1.151.0',\n },\n },\n },\n },\n 'victoria-traces': {\n binaries: { 'victoria-traces': 'victoria-traces-prod' },\n versions: {\n '0.10.0': {\n 'darwin-arm64': {\n asset: 'victoria-traces-darwin-arm64-v0.10.0.tar.gz',\n checksums: {\n recorded: RECORDED,\n sha256: 'cd32bfc21900b48ba543124e43827a1d13d735e45d50dbfd742c0ca6640e1aae',\n url: `${DOWNLOAD}/VictoriaTraces/releases/download/v0.10.0/victoria-traces-darwin-arm64-v0.10.0_checksums.txt`,\n },\n members: {\n 'victoria-traces-prod':\n '4759ec89a466129b9eefc22244a111e1f489739340747805fd93b58fd0f7b2dd',\n },\n repo: 'VictoriaMetrics/VictoriaTraces',\n sha256: 'cbe83f1d409cbb85fbf1c890c4a9b7fd34c1d74acec4dce2e0ebe46fcb260e38',\n size: 11_126_077,\n tag: 'v0.10.0',\n },\n },\n },\n },\n vmutils: {\n // ★ ONE ARCHIVE, SEVEN TOOLS (measured: 264 MB unpacked). Only a declared member is extracted.\n // vmalert-logs is not a tool of its own: it is vmalert run with `--rule.defaultRuleType=vlogs`.\n binaries: {\n vmagent: 'vmagent-prod',\n vmalert: 'vmalert-prod',\n 'vmalert-tool': 'vmalert-tool-prod',\n vmauth: 'vmauth-prod',\n vmbackup: 'vmbackup-prod',\n vmctl: 'vmctl-prod',\n vmrestore: 'vmrestore-prod',\n },\n versions: {\n '1.151.0': {\n 'darwin-arm64': {\n asset: 'vmutils-darwin-arm64-v1.151.0.tar.gz',\n checksums: {\n recorded: RECORDED,\n sha256: 'fda5a64fce9022bee7614c3fda27271c0826f1d7b90f8b162e1f48c77c0df04b',\n url: `${DOWNLOAD}/VictoriaMetrics/releases/download/v1.151.0/vmutils-darwin-arm64-v1.151.0_checksums.txt`,\n },\n members: {\n 'vmagent-prod': 'd3b6fa1f71ef48beac619f15f8adfa7610e76605caf37db1ebfbb379b6692329',\n 'vmalert-prod': '62845795167e9ff47890e83ac4ac5934693c105767db88591c95a08f3c4fb354',\n 'vmalert-tool-prod':\n 'cbffb9495e4bb1457c9d45e0a7064b3a3a29b2cfd1ae24bfe8f00ec327c26998',\n // ⚠️ gitleaks' generic-api-key rule reads this one public digest as a key (its\n // entropy; measured 2026-09-22). It is the vendor's published SHA-256 of vmauth-prod.\n 'vmauth-prod': '398df9e0f5b7035d037e39ee9ff66a10ddde5333d832602463aa4d2865fdb508', // gitleaks:allow\n 'vmbackup-prod': '1974a2ee211b49bf581287808e010846f6c47ff135276214c6da628567777b9e',\n 'vmctl-prod': '998b111eee206b98e6d25fdf2fbaa455ecc17c7f9e7c3b2373e127cef762459f',\n 'vmrestore-prod': 'fc824df7215b01b57921ed46afde7fea6b6698adf13d9ea8e3fe36e194ef8190',\n },\n repo: 'VictoriaMetrics/VictoriaMetrics',\n sha256: '27d68bac90e28929214091ed9d27f2e9fef25a080407e2c8661ea9b52dd6b183',\n size: 123_584_800,\n tag: 'v1.151.0',\n },\n },\n },\n },\n },\n vendor: 'VictoriaMetrics',\n};\n"
|
|
33
33
|
],
|
|
34
|
-
"mappings": "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",
|
|
35
|
-
"debugId": "
|
|
34
|
+
"mappings": "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",
|
|
35
|
+
"debugId": "60C150A7AA04A77D64756E2164756E21",
|
|
36
36
|
"names": []
|
|
37
37
|
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Valkey.AclFile` props attributes.
|
|
3
|
+
*
|
|
4
|
+
* ⛔ PASSWORDS BY REFERENCE, NEVER IN STATE. Each ACL user's password is a `{ fromEnv }` reference
|
|
5
|
+
* (see `secrets/write-only.ts`); the value exists only in the deploying process's memory and on
|
|
6
|
+
* the wire to the server. State stores an scrypt SEAL, so a later plan can check "is the value
|
|
7
|
+
* in my environment the one I wrote" without holding anything a reader could send to Valkey.
|
|
8
|
+
* ★ THE KEY PREFIX IS THE ISOLATION. `~<name>:*` limits a seat to its own keyspace; a seat
|
|
9
|
+
* gets `WRITE` only where its job writes. The deny list (`-scan -randomkey -dbsize -pubsub`)
|
|
10
|
+
* closes keyspace/channel enumeration, matching `homeflare-ct100/src/valkey-acl.ts`.
|
|
11
|
+
* ★ THE COMMAND ALLOW-LIST IS A FIXED PROFILE, NOT A PROP. `profile: 'seat'` carries the seat
|
|
12
|
+
* allow-list with pub/sub restricted to the user's own channel; `profile: 'service'` carries
|
|
13
|
+
* `+@all -@dangerous` with channels from the declaration, for one consumer that owns the whole
|
|
14
|
+
* instance (LiteLLM's cache user on `:6380`); `profile: 'monitor'` carries the key-less,
|
|
15
|
+
* channel-less `redis_exporter` rule set (ct100#117). It is deliberately no free-form rules
|
|
16
|
+
* prop: a declaration could widen itself, which would let a seat request `FLUSHALL` or
|
|
17
|
+
* `ACL SETUSER` and defeat the isolation the resource enforces.
|
|
18
|
+
*/
|
|
19
|
+
import type { FromEnv } from '../secrets/write-only.ts';
|
|
20
|
+
/** The fixed rule set a user carries. */
|
|
21
|
+
export type ValkeyAclProfile = 'seat' | 'service' | 'monitor';
|
|
22
|
+
/** One ACL user, limited to a key prefix and a fixed command allow-list. */
|
|
23
|
+
export interface ValkeyAclUser {
|
|
24
|
+
/** The username (matches the seat name). */
|
|
25
|
+
readonly name: string;
|
|
26
|
+
/**
|
|
27
|
+
* The key pattern the user may touch, sent as `~<keyPrefix>`. Optional: a `seat` defaults to
|
|
28
|
+
* exactly `<name>:*` — CT100's template (`homeflare-ct100/src/valkey-acl.ts`) — and a
|
|
29
|
+
* `service` defaults to `*` (the whole instance; LiteLLM's cache user declares `hf-litellm:*`).
|
|
30
|
+
* A `monitor` must not carry one — it is key-less (`resetkeys`), so a declared prefix is
|
|
31
|
+
* refused (`ValkeyAclMonitorKeyPrefix`).
|
|
32
|
+
*/
|
|
33
|
+
readonly keyPrefix?: string;
|
|
34
|
+
/** Channel globs without `&`. Defaults to the key prefix. Seats must keep `<name>:*`;
|
|
35
|
+
* monitors must have none. Services may declare a separate channel namespace. */
|
|
36
|
+
readonly channelPatterns?: ReadonlyArray<string>;
|
|
37
|
+
/** The fixed allow-list this user carries. */
|
|
38
|
+
readonly profile: ValkeyAclProfile;
|
|
39
|
+
/** The password, by reference. */
|
|
40
|
+
readonly password: FromEnv;
|
|
41
|
+
}
|
|
42
|
+
/** The ACL users of one instance. */
|
|
43
|
+
export interface ValkeyAclFileProps {
|
|
44
|
+
/** The instance the ACL file belongs to — matches the `Valkey.Instance` name. */
|
|
45
|
+
readonly instance: string;
|
|
46
|
+
/** The ACL users, keyed by username. */
|
|
47
|
+
readonly users: Readonly<Record<string, ValkeyAclUser>>;
|
|
48
|
+
/**
|
|
49
|
+
* ★ EXCLUSIVE OWNERSHIP IS OPT-IN, OFF BY DEFAULT (round-3 finding 1). `true` means this
|
|
50
|
+
* declaration is the ONLY writer of the instance's ACL: reconcile `ACL DELUSER`s every user
|
|
51
|
+
* it did not declare. `false` — the default — leaves never-managed users (CT100's key-less
|
|
52
|
+
* `monitor` for `redis_exporter`, an operator's debugging user) untouched and reports them
|
|
53
|
+
* with a warning, because reconcile cannot know what a template renderer or a human still
|
|
54
|
+
* needs. The measured incident: reconcile deleted CT100's `monitor` and closed the
|
|
55
|
+
* exporter's connection.
|
|
56
|
+
* Removing a previously managed user from the declaration always revokes it.
|
|
57
|
+
*/
|
|
58
|
+
readonly exclusive?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/** One user's live ACL fields, parsed from `ACL LIST`. Every field except `passwordSeal`
|
|
61
|
+
* comes from the server's own echo (measured semantics in `acl-form.ts`'s header), so `diff`
|
|
62
|
+
* can see exactly what `reconcile`'s read-back asserts — a user widened or disabled outside the
|
|
63
|
+
* stack must show up as an update, never as a silent no-op. */
|
|
64
|
+
export interface ValkeyAclUserAttributes {
|
|
65
|
+
readonly name: string;
|
|
66
|
+
/** The first live key pattern without its `~`, or `''` when the user has none. */
|
|
67
|
+
readonly keyPrefix: string;
|
|
68
|
+
/** Any live key pattern beyond the first, `~`-stripped. This family declares exactly one
|
|
69
|
+
* pattern per user, so a non-empty list means the ACL was widened outside the stack. */
|
|
70
|
+
readonly extraKeyPatterns: ReadonlyArray<string>;
|
|
71
|
+
/** The live channel patterns as the server echoes them (`&claude:*`; `&*` is all channels;
|
|
72
|
+
* an empty list — the bare `resetchannels` marker — means no channel access at all). */
|
|
73
|
+
readonly channelPatterns: ReadonlyArray<string>;
|
|
74
|
+
/** The profile the live rule set was recognised as — `unrecognized` when the rules match
|
|
75
|
+
* neither fixed profile (something outside the stack edited them). */
|
|
76
|
+
readonly profile: ValkeyAclProfile | 'unrecognized';
|
|
77
|
+
/** The live `on` flag: a user this family declared but the host disabled is drift. */
|
|
78
|
+
readonly on: boolean;
|
|
79
|
+
/** The live `nopass` flag: a passwordless user authenticates as nobody, which bypasses the
|
|
80
|
+
* per-seat password boundary, so it always drifts for a user this family manages. */
|
|
81
|
+
readonly nopass: boolean;
|
|
82
|
+
/** Any password token (`#<hash>`, `>pw`, `<pw`) present. Never the value. */
|
|
83
|
+
readonly hasPassword: boolean;
|
|
84
|
+
/** The scrypt seal of the password the family last wrote, threaded from state. */
|
|
85
|
+
readonly passwordSeal: string;
|
|
86
|
+
}
|
|
87
|
+
/** The live ACL attributes of one instance. */
|
|
88
|
+
export interface ValkeyAclFileAttributes {
|
|
89
|
+
readonly instance: string;
|
|
90
|
+
readonly users: Readonly<Record<string, ValkeyAclUserAttributes>>;
|
|
91
|
+
/** Last managed declaration, separate from observed users. Optional for earlier state. */
|
|
92
|
+
readonly managedUsers?: ReadonlyArray<string>;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=acl-attrs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acl-attrs.d.ts","sourceRoot":"","sources":["../../src/valkey/acl-attrs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,yCAAyC;AACzC,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9D,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;qFACiF;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,qCAAqC;AACrC,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACxD;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;+DAG+D;AAC/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;4FACwF;IACxF,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD;4FACwF;IACxF,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD;0EACsE;IACtE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC;IACpD,sFAAsF;IACtF,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB;yFACqF;IACrF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAClE,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC/C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comparison logic between a live `ACL LIST` line and the declaration: whether a user matches,
|
|
3
|
+
* what profile its rules were recognised as, and set equality over the token lists.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from `acl-form.ts` (which owns building and parsing) to keep both files under the cap;
|
|
6
|
+
* tests import these comparisons directly.
|
|
7
|
+
*/
|
|
8
|
+
import type { ValkeyAclProfile, ValkeyAclUser } from './acl-attrs.ts';
|
|
9
|
+
import type { ParsedAclUser } from './acl-form.ts';
|
|
10
|
+
/** Whether two string lists carry the same members — order ignored, duplicates and extras caught
|
|
11
|
+
* by the length guard (the echo's order is the server's business; a wider or duplicated list is
|
|
12
|
+
* not). */
|
|
13
|
+
export declare const sameSet: (a: ReadonlyArray<string>, b: ReadonlyArray<string>) => boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Recognise a live rule set as one of the three fixed profiles. The echo is normalised first
|
|
16
|
+
* (`acl-form.ts`'s header): drop the `-@all` baseline the server echoes for a reset user, since
|
|
17
|
+
* the seat set never grants it back and a `+@all` cancels it. `unrecognized` means something
|
|
18
|
+
* outside the stack edited the rules — that user drifts.
|
|
19
|
+
*/
|
|
20
|
+
export declare const inferProfile: (rules: ReadonlyArray<string>) => ValkeyAclProfile | 'unrecognized';
|
|
21
|
+
/**
|
|
22
|
+
* Whether a live user line is exactly as declared — every visible disagreement is a match failure,
|
|
23
|
+
* not just a changed prefix (a widened rule set, a disabled flag, or a stripped password is exactly
|
|
24
|
+
* what reconcile exists to restore). Passwords are never compared here: the live line holds only a
|
|
25
|
+
* hash, and the stored seal is what `diff`/`reconcile` check for rotation.
|
|
26
|
+
*/
|
|
27
|
+
export declare const matchesDeclared: (live: ParsedAclUser, user: ValkeyAclUser) => boolean;
|
|
28
|
+
//# sourceMappingURL=acl-compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acl-compare.d.ts","sourceRoot":"","sources":["../../src/valkey/acl-compare.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AASnD;;WAEW;AACX,eAAO,MAAM,OAAO,MAAO,aAAa,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,KAAG,OAO5E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,UAAW,aAAa,CAAC,MAAM,CAAC,KAAG,gBAAgB,GAAG,cAM9E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,aAAa,QAAQ,aAAa,KAAG,OAOhC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Map the whole connection operation, including socket acquisition and AUTH transport errors. */
|
|
2
|
+
import * as Effect from 'effect/Effect';
|
|
3
|
+
import { ValkeyInstanceUnreachable } from './errors.ts';
|
|
4
|
+
import type { ValkeySocketError } from './transport.ts';
|
|
5
|
+
export declare const aclUnreachable: (instance: string) => (_error: ValkeySocketError) => Effect.Effect<never, import("./connection-service.ts").ValkeyConnectionMissing | ValkeyInstanceUnreachable, import("./connection-service.ts").ValkeyConnection>;
|
|
6
|
+
//# sourceMappingURL=acl-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acl-connection.d.ts","sourceRoot":"","sources":["../../src/valkey/acl-connection.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,cAAc,aAAc,MAAM,cAAc,iBAAiB,oKAM1E,CAAC"}
|