From ca823bd584da1e52d285c9a2403d5b4147518ee0 Mon Sep 17 00:00:00 2001
From: Yohe-Am <56622350+Yohe-Am@users.noreply.github.com>
Date: Wed, 14 Jan 2026 07:25:11 +0300
Subject: [PATCH 01/18] wip: init commit
---
AGENTS.md | 23 +
CONTRIBUTING.md | 65 +
README.md | 4 +
deno.jsonc | 56 +
deno.lock | 1797 +++++++++++++++++
digi6 | 1 +
flake.lock | 61 +
flake.nix | 67 +
ghjk | 1 +
herald | 1 +
s3-tests | 1 +
s3proxy | 1 +
sample-http | 1 +
sample-rust | 1 +
src/Api.ts | 10 +
src/Backends/S3/Backend.ts | 179 ++
src/Backends/S3/Client.ts | 252 +++
src/Backends/S3/Signer.ts | 123 ++
src/Config/Layer.ts | 36 +
src/Domain/Config.ts | 130 ++
src/Frontend/Api.ts | 50 +
src/Frontend/Buckets/Create.ts | 11 +
src/Frontend/Buckets/Delete.ts | 11 +
src/Frontend/Buckets/Head.ts | 11 +
src/Frontend/Buckets/List.ts | 25 +
src/Frontend/Health/Api.ts | 12 +
src/Frontend/Health/Http.ts | 12 +
src/Frontend/Http.ts | 31 +
src/Frontend/Objects/Proxy.ts | 21 +
src/Frontend/Utils.ts | 82 +
src/Http.ts | 41 +
src/Logging/Layer.ts | 17 +
src/Services/Backend.ts | 57 +
src/Services/BackendResolver.ts | 84 +
src/Services/S3Xml.ts | 86 +
src/Tracing.ts | 31 +
src/main.ts | 13 +
tests/config.test.ts | 364 ++++
tests/health.test.ts | 55 +
tests/herald.test.yaml | 10 +
.../__snapshots__/buckets.test.ts.snap | 115 ++
.../buckets_delete_non-existent/baseline.xml | 1 +
.../buckets_delete_non-existent/proxy.xml | 1 +
.../__snapshots__/buckets_list/baseline.xml | 1 +
.../__snapshots__/buckets_list/proxy.xml | 1 +
.../__snapshots__/objects.test.ts.snap | 47 +
tests/integration/buckets.test.ts | 131 ++
tests/integration/objects.test.ts | 166 ++
tests/utils.ts | 413 ++++
tools/compose.yml | 37 +
x/compose-down.ts | 6 +
x/compose-up.ts | 10 +
x/dev.ts | 6 +
x/snapdiff.ts | 99 +
x/utils.ts | 23 +
55 files changed, 4891 insertions(+)
create mode 100644 AGENTS.md
create mode 100644 CONTRIBUTING.md
create mode 100644 README.md
create mode 100644 deno.jsonc
create mode 100644 deno.lock
create mode 120000 digi6
create mode 100644 flake.lock
create mode 100644 flake.nix
create mode 120000 ghjk
create mode 120000 herald
create mode 120000 s3-tests
create mode 120000 s3proxy
create mode 120000 sample-http
create mode 120000 sample-rust
create mode 100644 src/Api.ts
create mode 100644 src/Backends/S3/Backend.ts
create mode 100644 src/Backends/S3/Client.ts
create mode 100644 src/Backends/S3/Signer.ts
create mode 100644 src/Config/Layer.ts
create mode 100644 src/Domain/Config.ts
create mode 100644 src/Frontend/Api.ts
create mode 100644 src/Frontend/Buckets/Create.ts
create mode 100644 src/Frontend/Buckets/Delete.ts
create mode 100644 src/Frontend/Buckets/Head.ts
create mode 100644 src/Frontend/Buckets/List.ts
create mode 100644 src/Frontend/Health/Api.ts
create mode 100644 src/Frontend/Health/Http.ts
create mode 100644 src/Frontend/Http.ts
create mode 100644 src/Frontend/Objects/Proxy.ts
create mode 100644 src/Frontend/Utils.ts
create mode 100644 src/Http.ts
create mode 100644 src/Logging/Layer.ts
create mode 100644 src/Services/Backend.ts
create mode 100644 src/Services/BackendResolver.ts
create mode 100644 src/Services/S3Xml.ts
create mode 100644 src/Tracing.ts
create mode 100644 src/main.ts
create mode 100644 tests/config.test.ts
create mode 100644 tests/health.test.ts
create mode 100644 tests/herald.test.yaml
create mode 100644 tests/integration/__snapshots__/buckets.test.ts.snap
create mode 100644 tests/integration/__snapshots__/buckets_delete_non-existent/baseline.xml
create mode 100644 tests/integration/__snapshots__/buckets_delete_non-existent/proxy.xml
create mode 100644 tests/integration/__snapshots__/buckets_list/baseline.xml
create mode 100644 tests/integration/__snapshots__/buckets_list/proxy.xml
create mode 100644 tests/integration/__snapshots__/objects.test.ts.snap
create mode 100644 tests/integration/buckets.test.ts
create mode 100644 tests/integration/objects.test.ts
create mode 100644 tests/utils.ts
create mode 100644 tools/compose.yml
create mode 100755 x/compose-down.ts
create mode 100755 x/compose-up.ts
create mode 100755 x/dev.ts
create mode 100755 x/snapdiff.ts
create mode 100644 x/utils.ts
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..b3db2d5
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,23 @@
+- We're using the effects library https://effect.website/llms.txt
+ - Their HTTP implementation is described in ./HTTP_PLATFORM.md
+ - Prefer generators over effect piping.
+ - Use methods on `Effect.Option` like `Option.isNone` instead of looking at
+ _tag.
+- **NEVER** assume default values using `??` or ternary operators for critical
+ configuration or external input (e.g., `bucket.region ?? "us-east-1"`,
+ `request.headers.host ?? "localhost"`). Always fail explicitly with a
+ descriptive error.
+- Use `Effect.fail` or `Effect.die` instead of returning "unknown" or empty
+ strings when expected data is missing.
+- When mapping external errors (like S3 SDK exceptions), be as specific as
+ possible. Avoid generic "Unknown" or "S3 error" messages.
+
+- Reference ./herald, ./s3proxy and ./s3-tests for S3 behavior and other S3
+ proxy imps.
+- Reference ./ghjk for Deno typescript conventions especially ./ghjk/tests/.
+- Reference ./sample-http for how to do some things using the Effect library.
+
+- Prefer to preserve comments unless they are progress comments written by an
+ agent.
+- Maintain strict type safety. Avoid "any" casts or requirement hacks.
+- Use the structured `Logger` layer for all diagnostic output.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..800f2a3
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,65 @@
+# Contributing
+
+## Repo Map
+
+- `src/Domain`: Core logic and data models. Contains Effect Schemas for global
+ configuration and logic for bucket matching.
+
+- `src/Config`: Application configuration loading. Defines the AppConfig service
+ layer.
+
+- `src/Services`: Shared service abstractions and implementations.
+
+ - `src/Services/Backend.ts`: Generic storage backend interface and
+ domain-specific error types.
+
+ - `src/Services/BackendResolver.ts`: Logic for dynamically providing the
+ correct backend based on request context.
+
+ - `src/Services/S3Xml.ts`: S3-compatible XML response and error formatting.
+
+- `src/Backends/S3`: S3 protocol implementation.
+
+ - `src/Backends/S3/Backend.ts`: S3-specific implementation of the
+ BackendService using AWS SDK.
+
+ - `src/Backends/S3/Client.ts`: Low-level S3 client management and raw HTTP
+ proxying logic.
+
+ - `src/Backends/S3/Signer.ts`: AWS Signature Version 4 implementation for
+ request signing.
+
+- `src/Frontend`: HTTP ingress layer.
+
+ - `src/Frontend/Api.ts`: HttpApi definition for the S3 compatibility layer.
+
+ - `src/Frontend/Http.ts`: Main HTTP server setup and endpoint group
+ registrations.
+
+ - `src/Frontend/Utils.ts`: Shared frontend helpers for backend resolution and
+ error handling.
+
+ - `src/Frontend/Buckets/`: Handlers for bucket-level S3 operations.
+
+ - `src/Frontend/Health/`: Handlers for system health monitoring.
+
+- `tests/`: Test suite.
+
+ - `tests/integration/`: End-to-end tests comparing proxy behavior against a
+ MinIO baseline.
+
+ - `tests/config.test.ts`: Unit tests for configuration inheritance and glob
+ matching.
+
+ - `tests/utils.ts`: Shared test harness, Effect-based assertions, and snapshot
+ normalization logic.
+
+- `x/`: CLI utilities and development scripts.
+
+ - `x/snapdiff.ts`: Tool for comparing Herald proxy snapshots against baseline
+ responses.
+
+- `tools/`: Infrastructure and development tools.
+
+ - `tools/compose.yml`: Docker configuration for local development services
+ (MinIO, Redis).
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..452d7da
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+# > herald
+
+Herald is an S3 proxy that supports:
+- TODO
diff --git a/deno.jsonc b/deno.jsonc
new file mode 100644
index 0000000..db14414
--- /dev/null
+++ b/deno.jsonc
@@ -0,0 +1,56 @@
+{
+ "tasks": {
+ "dev": "deno run --allow-all --watch src/main.ts",
+ "test": "deno test --allow-all tests/",
+ "snapdiff": "deno run --allow-all x/snapdiff.ts"
+ },
+ "imports": {
+ "@david/dax": "jsr:@david/dax@^0.44.2",
+ "@effect/platform": "npm:@effect/platform@^0.90.3",
+ "@effect/platform-node": "npm:@effect/platform-node@^0.96.0",
+ "@effect/opentelemetry": "npm:@effect/opentelemetry@^0.56.2",
+ "@effect/opentelemetry/NodeSdk": "npm:@effect/opentelemetry@^0.56.2/NodeSdk",
+ "@opentelemetry/exporter-trace-otlp-http": "npm:@opentelemetry/exporter-trace-otlp-http@^0.203.0",
+ "@opentelemetry/sdk-trace-base": "npm:@opentelemetry/sdk-trace-base@^2.0.1",
+ "@opentelemetry/sdk-trace-node": "npm:@opentelemetry/sdk-trace-node@^2.0.1",
+ "@std/assert": "jsr:@std/assert@1",
+ "@std/yaml": "jsr:@std/yaml@^1.0.5",
+ "@std/path": "jsr:@std/path@^1.0.8",
+ "@std/fmt": "jsr:@std/fmt@^1.0.3",
+ "@std/testing": "jsr:@std/testing@^1.0.0",
+ "@smithy/signature-v4": "npm:@smithy/signature-v4@^4.2.0",
+ "@smithy/types": "npm:@smithy/types@^3.7.0",
+ "@aws-crypto/sha256": "npm:@aws-crypto/sha256-js@^5.2.0",
+ "@aws-sdk/client-s3": "npm:@aws-sdk/client-s3@^3.x",
+ "effect": "npm:effect@^3.17.7",
+ "node:http": "node:http",
+ "node:assert": "node:assert",
+ "jest-diff": "npm:jest-diff@^29.7.0",
+ "cliffy/ansi/": "https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/"
+ },
+ "compilerOptions": {},
+ "lint": {
+ "exclude": [
+ "x",
+ ".git",
+ "play.ts",
+ "vendor/**"
+ ],
+ "rules": {
+ "include": [
+ "no-console",
+ "no-sync-fn-in-async-fn",
+ "no-external-import",
+ "no-inferrable-types",
+ "no-self-compare",
+ "no-throw-literal",
+ "verbatim-module-syntax",
+ "no-await-in-loop",
+ "ban-untagged-todo"
+ ],
+ "exclude": [
+ // "no-explicit-any"
+ ]
+ }
+ }
+}
diff --git a/deno.lock b/deno.lock
new file mode 100644
index 0000000..bad9e93
--- /dev/null
+++ b/deno.lock
@@ -0,0 +1,1797 @@
+{
+ "version": "5",
+ "specifiers": {
+ "jsr:@david/console-static-text@0.3": "0.3.0",
+ "jsr:@david/dax@~0.44.2": "0.44.2",
+ "jsr:@david/path@0.2": "0.2.0",
+ "jsr:@david/which@~0.4.1": "0.4.1",
+ "jsr:@std/assert@1": "1.0.16",
+ "jsr:@std/assert@^1.0.15": "1.0.16",
+ "jsr:@std/bytes@^1.0.5": "1.0.6",
+ "jsr:@std/fmt@1": "1.0.8",
+ "jsr:@std/fs@1": "1.0.21",
+ "jsr:@std/fs@^1.0.19": "1.0.21",
+ "jsr:@std/fs@^1.0.20": "1.0.21",
+ "jsr:@std/internal@^1.0.12": "1.0.12",
+ "jsr:@std/io@0.225": "0.225.2",
+ "jsr:@std/path@1": "1.1.4",
+ "jsr:@std/path@^1.0.8": "1.1.4",
+ "jsr:@std/path@^1.1.2": "1.1.4",
+ "jsr:@std/path@^1.1.4": "1.1.4",
+ "jsr:@std/testing@1": "1.0.16",
+ "jsr:@std/yaml@^1.0.5": "1.0.9",
+ "npm:@aws-crypto/sha256-js@^5.2.0": "5.2.0",
+ "npm:@aws-sdk/client-s3@3": "3.937.0",
+ "npm:@effect/opentelemetry@~0.56.2": "0.56.6_@effect+platform@0.90.10__effect@3.19.14_@opentelemetry+sdk-trace-base@2.3.0__@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-node@2.3.0__@opentelemetry+api@1.9.0_@opentelemetry+semantic-conventions@1.38.0_effect@3.19.14",
+ "npm:@effect/platform-node@0.96": "0.96.1_@effect+cluster@0.48.16__@effect+platform@0.90.10___effect@3.19.14__@effect+rpc@0.69.5___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+sql@0.44.2___@effect+experimental@0.54.6____@effect+platform@0.90.10_____effect@3.19.14____effect@3.19.14___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+workflow@0.9.6___@effect+platform@0.90.10____effect@3.19.14___@effect+rpc@0.69.5____@effect+platform@0.90.10_____effect@3.19.14____effect@3.19.14___effect@3.19.14__effect@3.19.14_@effect+platform@0.90.10__effect@3.19.14_@effect+rpc@0.69.5__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_@effect+sql@0.44.2__@effect+experimental@0.54.6___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_effect@3.19.14",
+ "npm:@effect/platform@~0.90.3": "0.90.10_effect@3.19.14",
+ "npm:@opentelemetry/exporter-trace-otlp-http@0.203": "0.203.0_@opentelemetry+api@1.9.0",
+ "npm:@opentelemetry/sdk-trace-base@^2.0.1": "2.3.0_@opentelemetry+api@1.9.0",
+ "npm:@opentelemetry/sdk-trace-node@^2.0.1": "2.3.0_@opentelemetry+api@1.9.0",
+ "npm:@smithy/signature-v4@^4.2.0": "4.2.4",
+ "npm:@smithy/types@^3.7.0": "3.7.2",
+ "npm:effect@^3.17.7": "3.19.14",
+ "npm:jest-diff@*": "29.7.0",
+ "npm:jest-diff@^29.7.0": "29.7.0",
+ "npm:npm@*": "11.7.0"
+ },
+ "jsr": {
+ "@david/console-static-text@0.3.0": {
+ "integrity": "2dfb46ecee525755f7989f94ece30bba85bd8ffe3e8666abc1bf926e1ee0698d"
+ },
+ "@david/dax@0.44.2": {
+ "integrity": "26f5985f66a4340d55fb05ca90a0063bb5f0d670a326e14cb33a974aafcbb8d9",
+ "dependencies": [
+ "jsr:@david/console-static-text",
+ "jsr:@david/path",
+ "jsr:@david/which",
+ "jsr:@std/fmt",
+ "jsr:@std/fs@^1.0.20",
+ "jsr:@std/io",
+ "jsr:@std/path@1"
+ ]
+ },
+ "@david/path@0.2.0": {
+ "integrity": "f2d7aa7f02ce5a55e27c09f9f1381794acb09d328f8d3c8a2e3ab3ffc294dccd",
+ "dependencies": [
+ "jsr:@std/fs@1",
+ "jsr:@std/path@1"
+ ]
+ },
+ "@david/which@0.4.1": {
+ "integrity": "896a682b111f92ab866cc70c5b4afab2f5899d2f9bde31ed00203b9c250f225e"
+ },
+ "@std/assert@1.0.16": {
+ "integrity": "6a7272ed1eaa77defe76e5ff63ca705d9c495077e2d5fd0126d2b53fc5bd6532",
+ "dependencies": [
+ "jsr:@std/internal"
+ ]
+ },
+ "@std/bytes@1.0.6": {
+ "integrity": "f6ac6adbd8ccd99314045f5703e23af0a68d7f7e58364b47d2c7f408aeb5820a"
+ },
+ "@std/fmt@1.0.8": {
+ "integrity": "71e1fc498787e4434d213647a6e43e794af4fd393ef8f52062246e06f7e372b7"
+ },
+ "@std/fs@1.0.21": {
+ "integrity": "d720fe1056d78d43065a4d6e0eeb2b19f34adb8a0bc7caf3a4dbf1d4178252cd",
+ "dependencies": [
+ "jsr:@std/internal",
+ "jsr:@std/path@^1.1.4"
+ ]
+ },
+ "@std/internal@1.0.12": {
+ "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027"
+ },
+ "@std/io@0.225.2": {
+ "integrity": "3c740cd4ee4c082e6cfc86458f47e2ab7cb353dc6234d5e9b1f91a2de5f4d6c7",
+ "dependencies": [
+ "jsr:@std/bytes"
+ ]
+ },
+ "@std/path@1.1.4": {
+ "integrity": "1d2d43f39efb1b42f0b1882a25486647cb851481862dc7313390b2bb044314b5",
+ "dependencies": [
+ "jsr:@std/internal"
+ ]
+ },
+ "@std/testing@1.0.16": {
+ "integrity": "a917ffdeb5924c9be436dc78bc32e511760e14d3a96e49c607fc5ecca86d0092",
+ "dependencies": [
+ "jsr:@std/assert@^1.0.15",
+ "jsr:@std/fs@^1.0.19",
+ "jsr:@std/internal",
+ "jsr:@std/path@^1.1.2"
+ ]
+ },
+ "@std/yaml@1.0.9": {
+ "integrity": "6bad3dc766dd85b4b37eabcba81b6aa4eac7a392792ae29abcfb0f90602d55bb"
+ }
+ },
+ "npm": {
+ "@aws-crypto/crc32@5.2.0": {
+ "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==",
+ "dependencies": [
+ "@aws-crypto/util",
+ "@aws-sdk/types",
+ "tslib"
+ ]
+ },
+ "@aws-crypto/crc32c@5.2.0": {
+ "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==",
+ "dependencies": [
+ "@aws-crypto/util",
+ "@aws-sdk/types",
+ "tslib"
+ ]
+ },
+ "@aws-crypto/sha1-browser@5.2.0": {
+ "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==",
+ "dependencies": [
+ "@aws-crypto/supports-web-crypto",
+ "@aws-crypto/util",
+ "@aws-sdk/types",
+ "@aws-sdk/util-locate-window",
+ "@smithy/util-utf8@2.3.0",
+ "tslib"
+ ]
+ },
+ "@aws-crypto/sha256-browser@5.2.0": {
+ "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
+ "dependencies": [
+ "@aws-crypto/sha256-js",
+ "@aws-crypto/supports-web-crypto",
+ "@aws-crypto/util",
+ "@aws-sdk/types",
+ "@aws-sdk/util-locate-window",
+ "@smithy/util-utf8@2.3.0",
+ "tslib"
+ ]
+ },
+ "@aws-crypto/sha256-js@5.2.0": {
+ "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
+ "dependencies": [
+ "@aws-crypto/util",
+ "@aws-sdk/types",
+ "tslib"
+ ]
+ },
+ "@aws-crypto/supports-web-crypto@5.2.0": {
+ "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@aws-crypto/util@5.2.0": {
+ "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/util-utf8@2.3.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/client-s3@3.937.0": {
+ "integrity": "sha512-ioeNe6HSc7PxjsUQY7foSHmgesxM5KwAeUtPhIHgKx99nrM+7xYCfW4FMvHypUzz7ZOvqlCdH7CEAZ8ParBvVg==",
+ "dependencies": [
+ "@aws-crypto/sha1-browser",
+ "@aws-crypto/sha256-browser",
+ "@aws-crypto/sha256-js",
+ "@aws-sdk/core",
+ "@aws-sdk/credential-provider-node",
+ "@aws-sdk/middleware-bucket-endpoint",
+ "@aws-sdk/middleware-expect-continue",
+ "@aws-sdk/middleware-flexible-checksums",
+ "@aws-sdk/middleware-host-header",
+ "@aws-sdk/middleware-location-constraint",
+ "@aws-sdk/middleware-logger",
+ "@aws-sdk/middleware-recursion-detection",
+ "@aws-sdk/middleware-sdk-s3",
+ "@aws-sdk/middleware-ssec",
+ "@aws-sdk/middleware-user-agent",
+ "@aws-sdk/region-config-resolver",
+ "@aws-sdk/signature-v4-multi-region",
+ "@aws-sdk/types",
+ "@aws-sdk/util-endpoints",
+ "@aws-sdk/util-user-agent-browser",
+ "@aws-sdk/util-user-agent-node",
+ "@smithy/config-resolver",
+ "@smithy/core",
+ "@smithy/eventstream-serde-browser",
+ "@smithy/eventstream-serde-config-resolver",
+ "@smithy/eventstream-serde-node",
+ "@smithy/fetch-http-handler",
+ "@smithy/hash-blob-browser",
+ "@smithy/hash-node",
+ "@smithy/hash-stream-node",
+ "@smithy/invalid-dependency",
+ "@smithy/md5-js",
+ "@smithy/middleware-content-length",
+ "@smithy/middleware-endpoint",
+ "@smithy/middleware-retry",
+ "@smithy/middleware-serde",
+ "@smithy/middleware-stack",
+ "@smithy/node-config-provider",
+ "@smithy/node-http-handler",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "@smithy/url-parser",
+ "@smithy/util-base64",
+ "@smithy/util-body-length-browser",
+ "@smithy/util-body-length-node",
+ "@smithy/util-defaults-mode-browser",
+ "@smithy/util-defaults-mode-node",
+ "@smithy/util-endpoints",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-retry",
+ "@smithy/util-stream",
+ "@smithy/util-utf8@4.2.0",
+ "@smithy/util-waiter",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/client-sso@3.936.0": {
+ "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==",
+ "dependencies": [
+ "@aws-crypto/sha256-browser",
+ "@aws-crypto/sha256-js",
+ "@aws-sdk/core",
+ "@aws-sdk/middleware-host-header",
+ "@aws-sdk/middleware-logger",
+ "@aws-sdk/middleware-recursion-detection",
+ "@aws-sdk/middleware-user-agent",
+ "@aws-sdk/region-config-resolver",
+ "@aws-sdk/types",
+ "@aws-sdk/util-endpoints",
+ "@aws-sdk/util-user-agent-browser",
+ "@aws-sdk/util-user-agent-node",
+ "@smithy/config-resolver",
+ "@smithy/core",
+ "@smithy/fetch-http-handler",
+ "@smithy/hash-node",
+ "@smithy/invalid-dependency",
+ "@smithy/middleware-content-length",
+ "@smithy/middleware-endpoint",
+ "@smithy/middleware-retry",
+ "@smithy/middleware-serde",
+ "@smithy/middleware-stack",
+ "@smithy/node-config-provider",
+ "@smithy/node-http-handler",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "@smithy/url-parser",
+ "@smithy/util-base64",
+ "@smithy/util-body-length-browser",
+ "@smithy/util-body-length-node",
+ "@smithy/util-defaults-mode-browser",
+ "@smithy/util-defaults-mode-node",
+ "@smithy/util-endpoints",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-retry",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/core@3.936.0": {
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@aws-sdk/xml-builder",
+ "@smithy/core",
+ "@smithy/node-config-provider",
+ "@smithy/property-provider",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/signature-v4@5.3.5",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "@smithy/util-base64",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-env@3.936.0": {
+ "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/types",
+ "@smithy/property-provider",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-http@3.936.0": {
+ "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/types",
+ "@smithy/fetch-http-handler",
+ "@smithy/node-http-handler",
+ "@smithy/property-provider",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "@smithy/util-stream",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-ini@3.936.0": {
+ "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/credential-provider-env",
+ "@aws-sdk/credential-provider-http",
+ "@aws-sdk/credential-provider-login",
+ "@aws-sdk/credential-provider-process",
+ "@aws-sdk/credential-provider-sso",
+ "@aws-sdk/credential-provider-web-identity",
+ "@aws-sdk/nested-clients",
+ "@aws-sdk/types",
+ "@smithy/credential-provider-imds",
+ "@smithy/property-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-login@3.936.0": {
+ "integrity": "sha512-8DVrdRqPyUU66gfV7VZNToh56ZuO5D6agWrkLQE/xbLJOm2RbeRgh6buz7CqV8ipRd6m+zCl9mM4F3osQLZn8Q==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/nested-clients",
+ "@aws-sdk/types",
+ "@smithy/property-provider",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-node@3.936.0": {
+ "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==",
+ "dependencies": [
+ "@aws-sdk/credential-provider-env",
+ "@aws-sdk/credential-provider-http",
+ "@aws-sdk/credential-provider-ini",
+ "@aws-sdk/credential-provider-process",
+ "@aws-sdk/credential-provider-sso",
+ "@aws-sdk/credential-provider-web-identity",
+ "@aws-sdk/types",
+ "@smithy/credential-provider-imds",
+ "@smithy/property-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-process@3.936.0": {
+ "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/types",
+ "@smithy/property-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-sso@3.936.0": {
+ "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==",
+ "dependencies": [
+ "@aws-sdk/client-sso",
+ "@aws-sdk/core",
+ "@aws-sdk/token-providers",
+ "@aws-sdk/types",
+ "@smithy/property-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/credential-provider-web-identity@3.936.0": {
+ "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/nested-clients",
+ "@aws-sdk/types",
+ "@smithy/property-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-bucket-endpoint@3.936.0": {
+ "integrity": "sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@aws-sdk/util-arn-parser",
+ "@smithy/node-config-provider",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "@smithy/util-config-provider",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-expect-continue@3.936.0": {
+ "integrity": "sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-flexible-checksums@3.936.0": {
+ "integrity": "sha512-l3GG6CrSQtMCM6fWY7foV3JQv0WJWT+3G6PSP3Ceb/KEE/5Lz5PrYFXTBf+bVoYL1b0bGjGajcgAXpstBmtHtQ==",
+ "dependencies": [
+ "@aws-crypto/crc32",
+ "@aws-crypto/crc32c",
+ "@aws-crypto/util",
+ "@aws-sdk/core",
+ "@aws-sdk/types",
+ "@smithy/is-array-buffer@4.2.0",
+ "@smithy/node-config-provider",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-stream",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-host-header@3.936.0": {
+ "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-location-constraint@3.936.0": {
+ "integrity": "sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-logger@3.936.0": {
+ "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-recursion-detection@3.936.0": {
+ "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@aws/lambda-invoke-store",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-sdk-s3@3.936.0": {
+ "integrity": "sha512-UQs/pVq4cOygsnKON0pOdSKIWkfgY0dzq4h+fR+xHi/Ng3XzxPJhWeAE6tDsKrcyQc1X8UdSbS70XkfGYr5hng==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/types",
+ "@aws-sdk/util-arn-parser",
+ "@smithy/core",
+ "@smithy/node-config-provider",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/signature-v4@5.3.5",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "@smithy/util-config-provider",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-stream",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-ssec@3.936.0": {
+ "integrity": "sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/middleware-user-agent@3.936.0": {
+ "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/types",
+ "@aws-sdk/util-endpoints",
+ "@smithy/core",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/nested-clients@3.936.0": {
+ "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
+ "dependencies": [
+ "@aws-crypto/sha256-browser",
+ "@aws-crypto/sha256-js",
+ "@aws-sdk/core",
+ "@aws-sdk/middleware-host-header",
+ "@aws-sdk/middleware-logger",
+ "@aws-sdk/middleware-recursion-detection",
+ "@aws-sdk/middleware-user-agent",
+ "@aws-sdk/region-config-resolver",
+ "@aws-sdk/types",
+ "@aws-sdk/util-endpoints",
+ "@aws-sdk/util-user-agent-browser",
+ "@aws-sdk/util-user-agent-node",
+ "@smithy/config-resolver",
+ "@smithy/core",
+ "@smithy/fetch-http-handler",
+ "@smithy/hash-node",
+ "@smithy/invalid-dependency",
+ "@smithy/middleware-content-length",
+ "@smithy/middleware-endpoint",
+ "@smithy/middleware-retry",
+ "@smithy/middleware-serde",
+ "@smithy/middleware-stack",
+ "@smithy/node-config-provider",
+ "@smithy/node-http-handler",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "@smithy/url-parser",
+ "@smithy/util-base64",
+ "@smithy/util-body-length-browser",
+ "@smithy/util-body-length-node",
+ "@smithy/util-defaults-mode-browser",
+ "@smithy/util-defaults-mode-node",
+ "@smithy/util-endpoints",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-retry",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/region-config-resolver@3.936.0": {
+ "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/config-resolver",
+ "@smithy/node-config-provider",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/signature-v4-multi-region@3.936.0": {
+ "integrity": "sha512-8qS0GFUqkmwO7JZ0P8tdluBmt1UTfYUah8qJXGzNh9n1Pcb0AIeT117cCSiCUtwk+gDbJvd4hhRIhJCNr5wgjg==",
+ "dependencies": [
+ "@aws-sdk/middleware-sdk-s3",
+ "@aws-sdk/types",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/signature-v4@5.3.5",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/token-providers@3.936.0": {
+ "integrity": "sha512-vvw8+VXk0I+IsoxZw0mX9TMJawUJvEsg3EF7zcCSetwhNPAU8Xmlhv7E/sN/FgSmm7b7DsqKoW6rVtQiCs1PWQ==",
+ "dependencies": [
+ "@aws-sdk/core",
+ "@aws-sdk/nested-clients",
+ "@aws-sdk/types",
+ "@smithy/property-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/types@3.936.0": {
+ "integrity": "sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/util-arn-parser@3.893.0": {
+ "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@aws-sdk/util-endpoints@3.936.0": {
+ "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/types@4.9.0",
+ "@smithy/url-parser",
+ "@smithy/util-endpoints",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/util-locate-window@3.893.0": {
+ "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@aws-sdk/util-user-agent-browser@3.936.0": {
+ "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
+ "dependencies": [
+ "@aws-sdk/types",
+ "@smithy/types@4.9.0",
+ "bowser",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/util-user-agent-node@3.936.0": {
+ "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
+ "dependencies": [
+ "@aws-sdk/middleware-user-agent",
+ "@aws-sdk/types",
+ "@smithy/node-config-provider",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@aws-sdk/xml-builder@3.930.0": {
+ "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "fast-xml-parser",
+ "tslib"
+ ]
+ },
+ "@aws/lambda-invoke-store@0.2.3": {
+ "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw=="
+ },
+ "@effect/cluster@0.48.16_@effect+platform@0.90.10__effect@3.19.14_@effect+rpc@0.69.5__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_@effect+sql@0.44.2__@effect+experimental@0.54.6___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_@effect+workflow@0.9.6__@effect+platform@0.90.10___effect@3.19.14__@effect+rpc@0.69.5___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__effect@3.19.14_effect@3.19.14": {
+ "integrity": "sha512-ZZkrSMVetOvlRDD8mPCX3IcVJtvUZBp6++lUKNGIT6LRIObRP4lVwtei85Z+4g49WpeLvJnSdH0zjPtGieFDHQ==",
+ "dependencies": [
+ "@effect/platform",
+ "@effect/rpc",
+ "@effect/sql",
+ "@effect/workflow",
+ "effect"
+ ]
+ },
+ "@effect/experimental@0.54.6_@effect+platform@0.90.10__effect@3.19.14_effect@3.19.14": {
+ "integrity": "sha512-UqHMvCQmrZT6kUVoUC0lqyno4Yad+j9hBGCdUjW84zkLwAq08tPqySiZUKRwY+Ae5B2Ab8rISYJH7nQvct9DMQ==",
+ "dependencies": [
+ "@effect/platform",
+ "effect",
+ "uuid"
+ ]
+ },
+ "@effect/opentelemetry@0.56.6_@effect+platform@0.90.10__effect@3.19.14_@opentelemetry+sdk-trace-base@2.3.0__@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-node@2.3.0__@opentelemetry+api@1.9.0_@opentelemetry+semantic-conventions@1.38.0_effect@3.19.14": {
+ "integrity": "sha512-cBi9frXujTIEGXChkl4VdQfvDe7QvzC18SM8wK0CKYSgH9ZL7v/F5f5/3fTSTfEdO9ZyBk73s5Jbbogab0Q01g==",
+ "dependencies": [
+ "@effect/platform",
+ "@opentelemetry/sdk-trace-base@2.3.0_@opentelemetry+api@1.9.0",
+ "@opentelemetry/sdk-trace-node",
+ "@opentelemetry/semantic-conventions",
+ "effect"
+ ],
+ "optionalPeers": [
+ "@opentelemetry/sdk-trace-base@2.3.0_@opentelemetry+api@1.9.0",
+ "@opentelemetry/sdk-trace-node"
+ ]
+ },
+ "@effect/platform-node-shared@0.49.2_@effect+cluster@0.48.16__@effect+platform@0.90.10___effect@3.19.14__@effect+rpc@0.69.5___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+sql@0.44.2___@effect+experimental@0.54.6____@effect+platform@0.90.10_____effect@3.19.14____effect@3.19.14___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+workflow@0.9.6___@effect+platform@0.90.10____effect@3.19.14___@effect+rpc@0.69.5____@effect+platform@0.90.10_____effect@3.19.14____effect@3.19.14___effect@3.19.14__effect@3.19.14_@effect+platform@0.90.10__effect@3.19.14_@effect+rpc@0.69.5__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_@effect+sql@0.44.2__@effect+experimental@0.54.6___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_effect@3.19.14": {
+ "integrity": "sha512-uYlQi2swDV9hdHatr2Onov3G+VlEF+3+Qm9dvdOZiZNE1bVqvs/zs6LVT8Yrz/3Vq/4JPzGcN+acx0iiJo5ZVw==",
+ "dependencies": [
+ "@effect/cluster",
+ "@effect/platform",
+ "@effect/rpc",
+ "@effect/sql",
+ "@parcel/watcher",
+ "effect",
+ "multipasta",
+ "ws"
+ ]
+ },
+ "@effect/platform-node@0.96.1_@effect+cluster@0.48.16__@effect+platform@0.90.10___effect@3.19.14__@effect+rpc@0.69.5___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+sql@0.44.2___@effect+experimental@0.54.6____@effect+platform@0.90.10_____effect@3.19.14____effect@3.19.14___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+workflow@0.9.6___@effect+platform@0.90.10____effect@3.19.14___@effect+rpc@0.69.5____@effect+platform@0.90.10_____effect@3.19.14____effect@3.19.14___effect@3.19.14__effect@3.19.14_@effect+platform@0.90.10__effect@3.19.14_@effect+rpc@0.69.5__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_@effect+sql@0.44.2__@effect+experimental@0.54.6___@effect+platform@0.90.10____effect@3.19.14___effect@3.19.14__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_effect@3.19.14": {
+ "integrity": "sha512-4nfB/XRJJ246MCdI7klTE/aVvA9txfI83RnymS7pNyoG4CXUKELi87JrkrWFTtOlewzt5UMWpmqsFmm2qHxx3A==",
+ "dependencies": [
+ "@effect/cluster",
+ "@effect/platform",
+ "@effect/platform-node-shared",
+ "@effect/rpc",
+ "@effect/sql",
+ "effect",
+ "mime",
+ "undici",
+ "ws"
+ ]
+ },
+ "@effect/platform@0.90.10_effect@3.19.14": {
+ "integrity": "sha512-QhDPgCaLfIMQKOCoCPQvRUS+Y34iYJ07jdZ/CBAvYFvg/iUBebsmFuHL63RCD/YZH9BuK/kqqLYAA3M0fmUEgg==",
+ "dependencies": [
+ "effect",
+ "find-my-way-ts",
+ "msgpackr",
+ "multipasta"
+ ]
+ },
+ "@effect/rpc@0.69.5_@effect+platform@0.90.10__effect@3.19.14_effect@3.19.14": {
+ "integrity": "sha512-LLCZP/aiaW4HeoIaoZuVZpJb/PFCwdJP21b3xP6l+1yoRVw8HlKYyfy/outRCF+BT4ndtY0/utFSeGWC21Qr7w==",
+ "dependencies": [
+ "@effect/platform",
+ "effect"
+ ]
+ },
+ "@effect/sql@0.44.2_@effect+experimental@0.54.6__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_@effect+platform@0.90.10__effect@3.19.14_effect@3.19.14": {
+ "integrity": "sha512-DEcvriHvj88zu7keruH9NcHQzam7yQzLNLJO6ucDXMCAwWzYZSJOsmkxBznRFv8ylFtccSclKH2fuj+wRKPjCQ==",
+ "dependencies": [
+ "@effect/experimental",
+ "@effect/platform",
+ "effect",
+ "uuid"
+ ]
+ },
+ "@effect/workflow@0.9.6_@effect+platform@0.90.10__effect@3.19.14_@effect+rpc@0.69.5__@effect+platform@0.90.10___effect@3.19.14__effect@3.19.14_effect@3.19.14": {
+ "integrity": "sha512-uPBpSJ8NYwYA6VLZovfejwNik+2kAaoDtlPi+VTlxFMscWNYx+xlGiRg8CO/oa2pHCwkJYjOI27SGOlUawiz1w==",
+ "dependencies": [
+ "@effect/platform",
+ "@effect/rpc",
+ "effect"
+ ]
+ },
+ "@jest/schemas@29.6.3": {
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "dependencies": [
+ "@sinclair/typebox"
+ ]
+ },
+ "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": {
+ "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
+ "os": ["darwin"],
+ "cpu": ["arm64"]
+ },
+ "@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": {
+ "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
+ "os": ["darwin"],
+ "cpu": ["x64"]
+ },
+ "@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": {
+ "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
+ "os": ["linux"],
+ "cpu": ["arm64"]
+ },
+ "@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": {
+ "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
+ "os": ["linux"],
+ "cpu": ["arm"]
+ },
+ "@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": {
+ "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
+ "os": ["linux"],
+ "cpu": ["x64"]
+ },
+ "@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": {
+ "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
+ "os": ["win32"],
+ "cpu": ["x64"]
+ },
+ "@opentelemetry/api-logs@0.203.0": {
+ "integrity": "sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==",
+ "dependencies": [
+ "@opentelemetry/api"
+ ]
+ },
+ "@opentelemetry/api@1.9.0": {
+ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="
+ },
+ "@opentelemetry/context-async-hooks@2.3.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-hGcsT0qDP7Il1L+qT3JFpiGl1dCjF794Bb4yCRCYdr7XC0NwHtOF3ngF86Gk6TUnsakbyQsDQ0E/S4CU0F4d4g==",
+ "dependencies": [
+ "@opentelemetry/api"
+ ]
+ },
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/semantic-conventions"
+ ]
+ },
+ "@opentelemetry/core@2.3.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-PcmxJQzs31cfD0R2dE91YGFcLxOSN4Bxz7gez5UwSUjCai8BwH/GI5HchfVshHkWdTkUs0qcaPJgVHKXUp7I3A==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/semantic-conventions"
+ ]
+ },
+ "@opentelemetry/exporter-trace-otlp-http@0.203.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/otlp-exporter-base",
+ "@opentelemetry/otlp-transformer",
+ "@opentelemetry/resources@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/sdk-trace-base@2.0.1_@opentelemetry+api@1.9.0"
+ ]
+ },
+ "@opentelemetry/otlp-exporter-base@0.203.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/otlp-transformer"
+ ]
+ },
+ "@opentelemetry/otlp-transformer@0.203.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/api-logs",
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/resources@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/sdk-logs",
+ "@opentelemetry/sdk-metrics",
+ "@opentelemetry/sdk-trace-base@2.0.1_@opentelemetry+api@1.9.0",
+ "protobufjs"
+ ]
+ },
+ "@opentelemetry/resources@2.0.1_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/semantic-conventions"
+ ]
+ },
+ "@opentelemetry/resources@2.3.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-shlr2l5g+87J8wqYlsLyaUsgKVRO7RtX70Ckd5CtDOWtImZgaUDmf4Z2ozuSKQLM2wPDR0TE/3bPVBNJtRm/cQ==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/core@2.3.0_@opentelemetry+api@1.9.0",
+ "@opentelemetry/semantic-conventions"
+ ]
+ },
+ "@opentelemetry/sdk-logs@0.203.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/api-logs",
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/resources@2.0.1_@opentelemetry+api@1.9.0"
+ ]
+ },
+ "@opentelemetry/sdk-metrics@2.0.1_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/resources@2.0.1_@opentelemetry+api@1.9.0"
+ ]
+ },
+ "@opentelemetry/sdk-trace-base@2.0.1_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/core@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/resources@2.0.1_@opentelemetry+api@1.9.0",
+ "@opentelemetry/semantic-conventions"
+ ]
+ },
+ "@opentelemetry/sdk-trace-base@2.3.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-B0TQ2e9h0ETjpI+eGmCz8Ojb+lnYms0SE3jFwEKrN/PK4aSVHU28AAmnOoBmfub+I3jfgPwvDJgomBA5a7QehQ==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/core@2.3.0_@opentelemetry+api@1.9.0",
+ "@opentelemetry/resources@2.3.0_@opentelemetry+api@1.9.0",
+ "@opentelemetry/semantic-conventions"
+ ]
+ },
+ "@opentelemetry/sdk-trace-node@2.3.0_@opentelemetry+api@1.9.0": {
+ "integrity": "sha512-oGsG3vIiC8zYjOWE4CgtS6d2gQhp4pT04AI9UL1wtJOxTSNVZiiIPgHnOp/qKJSwkD4YJHSohi6inSilPmGM2Q==",
+ "dependencies": [
+ "@opentelemetry/api",
+ "@opentelemetry/context-async-hooks",
+ "@opentelemetry/core@2.3.0_@opentelemetry+api@1.9.0",
+ "@opentelemetry/sdk-trace-base@2.3.0_@opentelemetry+api@1.9.0"
+ ]
+ },
+ "@opentelemetry/semantic-conventions@1.38.0": {
+ "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg=="
+ },
+ "@parcel/watcher-android-arm64@2.5.1": {
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "os": ["android"],
+ "cpu": ["arm64"]
+ },
+ "@parcel/watcher-darwin-arm64@2.5.1": {
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "os": ["darwin"],
+ "cpu": ["arm64"]
+ },
+ "@parcel/watcher-darwin-x64@2.5.1": {
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "os": ["darwin"],
+ "cpu": ["x64"]
+ },
+ "@parcel/watcher-freebsd-x64@2.5.1": {
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "os": ["freebsd"],
+ "cpu": ["x64"]
+ },
+ "@parcel/watcher-linux-arm-glibc@2.5.1": {
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "os": ["linux"],
+ "cpu": ["arm"]
+ },
+ "@parcel/watcher-linux-arm-musl@2.5.1": {
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "os": ["linux"],
+ "cpu": ["arm"]
+ },
+ "@parcel/watcher-linux-arm64-glibc@2.5.1": {
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "os": ["linux"],
+ "cpu": ["arm64"]
+ },
+ "@parcel/watcher-linux-arm64-musl@2.5.1": {
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "os": ["linux"],
+ "cpu": ["arm64"]
+ },
+ "@parcel/watcher-linux-x64-glibc@2.5.1": {
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "os": ["linux"],
+ "cpu": ["x64"]
+ },
+ "@parcel/watcher-linux-x64-musl@2.5.1": {
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "os": ["linux"],
+ "cpu": ["x64"]
+ },
+ "@parcel/watcher-win32-arm64@2.5.1": {
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "os": ["win32"],
+ "cpu": ["arm64"]
+ },
+ "@parcel/watcher-win32-ia32@2.5.1": {
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "os": ["win32"],
+ "cpu": ["ia32"]
+ },
+ "@parcel/watcher-win32-x64@2.5.1": {
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "os": ["win32"],
+ "cpu": ["x64"]
+ },
+ "@parcel/watcher@2.5.1": {
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dependencies": [
+ "detect-libc@1.0.3",
+ "is-glob",
+ "micromatch",
+ "node-addon-api"
+ ],
+ "optionalDependencies": [
+ "@parcel/watcher-android-arm64",
+ "@parcel/watcher-darwin-arm64",
+ "@parcel/watcher-darwin-x64",
+ "@parcel/watcher-freebsd-x64",
+ "@parcel/watcher-linux-arm-glibc",
+ "@parcel/watcher-linux-arm-musl",
+ "@parcel/watcher-linux-arm64-glibc",
+ "@parcel/watcher-linux-arm64-musl",
+ "@parcel/watcher-linux-x64-glibc",
+ "@parcel/watcher-linux-x64-musl",
+ "@parcel/watcher-win32-arm64",
+ "@parcel/watcher-win32-ia32",
+ "@parcel/watcher-win32-x64"
+ ],
+ "scripts": true
+ },
+ "@protobufjs/aspromise@1.1.2": {
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
+ },
+ "@protobufjs/base64@1.1.2": {
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+ },
+ "@protobufjs/codegen@2.0.4": {
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+ },
+ "@protobufjs/eventemitter@1.1.0": {
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
+ },
+ "@protobufjs/fetch@1.1.0": {
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
+ "dependencies": [
+ "@protobufjs/aspromise",
+ "@protobufjs/inquire"
+ ]
+ },
+ "@protobufjs/float@1.0.2": {
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
+ },
+ "@protobufjs/inquire@1.1.0": {
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
+ },
+ "@protobufjs/path@1.1.2": {
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
+ },
+ "@protobufjs/pool@1.1.0": {
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
+ },
+ "@protobufjs/utf8@1.1.0": {
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
+ },
+ "@sinclair/typebox@0.27.8": {
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="
+ },
+ "@smithy/abort-controller@4.2.5": {
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/chunked-blob-reader-native@4.2.1": {
+ "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==",
+ "dependencies": [
+ "@smithy/util-base64",
+ "tslib"
+ ]
+ },
+ "@smithy/chunked-blob-reader@5.2.0": {
+ "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/config-resolver@4.4.3": {
+ "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==",
+ "dependencies": [
+ "@smithy/node-config-provider",
+ "@smithy/types@4.9.0",
+ "@smithy/util-config-provider",
+ "@smithy/util-endpoints",
+ "@smithy/util-middleware@4.2.5",
+ "tslib"
+ ]
+ },
+ "@smithy/core@3.18.5": {
+ "integrity": "sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==",
+ "dependencies": [
+ "@smithy/middleware-serde",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "@smithy/util-base64",
+ "@smithy/util-body-length-browser",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-stream",
+ "@smithy/util-utf8@4.2.0",
+ "@smithy/uuid",
+ "tslib"
+ ]
+ },
+ "@smithy/credential-provider-imds@4.2.5": {
+ "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==",
+ "dependencies": [
+ "@smithy/node-config-provider",
+ "@smithy/property-provider",
+ "@smithy/types@4.9.0",
+ "@smithy/url-parser",
+ "tslib"
+ ]
+ },
+ "@smithy/eventstream-codec@4.2.5": {
+ "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==",
+ "dependencies": [
+ "@aws-crypto/crc32",
+ "@smithy/types@4.9.0",
+ "@smithy/util-hex-encoding@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/eventstream-serde-browser@4.2.5": {
+ "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==",
+ "dependencies": [
+ "@smithy/eventstream-serde-universal",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/eventstream-serde-config-resolver@4.3.5": {
+ "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/eventstream-serde-node@4.2.5": {
+ "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==",
+ "dependencies": [
+ "@smithy/eventstream-serde-universal",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/eventstream-serde-universal@4.2.5": {
+ "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==",
+ "dependencies": [
+ "@smithy/eventstream-codec",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/fetch-http-handler@5.3.6": {
+ "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==",
+ "dependencies": [
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/querystring-builder",
+ "@smithy/types@4.9.0",
+ "@smithy/util-base64",
+ "tslib"
+ ]
+ },
+ "@smithy/hash-blob-browser@4.2.6": {
+ "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==",
+ "dependencies": [
+ "@smithy/chunked-blob-reader",
+ "@smithy/chunked-blob-reader-native",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/hash-node@4.2.5": {
+ "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "@smithy/util-buffer-from@4.2.0",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/hash-stream-node@4.2.5": {
+ "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/invalid-dependency@4.2.5": {
+ "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/is-array-buffer@2.2.0": {
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/is-array-buffer@3.0.0": {
+ "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/is-array-buffer@4.2.0": {
+ "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/md5-js@4.2.5": {
+ "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/middleware-content-length@4.2.5": {
+ "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==",
+ "dependencies": [
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/middleware-endpoint@4.3.12": {
+ "integrity": "sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==",
+ "dependencies": [
+ "@smithy/core",
+ "@smithy/middleware-serde",
+ "@smithy/node-config-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "@smithy/url-parser",
+ "@smithy/util-middleware@4.2.5",
+ "tslib"
+ ]
+ },
+ "@smithy/middleware-retry@4.4.12": {
+ "integrity": "sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==",
+ "dependencies": [
+ "@smithy/node-config-provider",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/service-error-classification",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-retry",
+ "@smithy/uuid",
+ "tslib"
+ ]
+ },
+ "@smithy/middleware-serde@4.2.6": {
+ "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==",
+ "dependencies": [
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/middleware-stack@4.2.5": {
+ "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/node-config-provider@4.3.5": {
+ "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==",
+ "dependencies": [
+ "@smithy/property-provider",
+ "@smithy/shared-ini-file-loader",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/node-http-handler@4.4.5": {
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "dependencies": [
+ "@smithy/abort-controller",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/querystring-builder",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/property-provider@4.2.5": {
+ "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/protocol-http@4.1.8": {
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "dependencies": [
+ "@smithy/types@3.7.2",
+ "tslib"
+ ]
+ },
+ "@smithy/protocol-http@5.3.5": {
+ "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/querystring-builder@4.2.5": {
+ "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "@smithy/util-uri-escape@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/querystring-parser@4.2.5": {
+ "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/service-error-classification@4.2.5": {
+ "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==",
+ "dependencies": [
+ "@smithy/types@4.9.0"
+ ]
+ },
+ "@smithy/shared-ini-file-loader@4.4.0": {
+ "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/signature-v4@4.2.4": {
+ "integrity": "sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==",
+ "dependencies": [
+ "@smithy/is-array-buffer@3.0.0",
+ "@smithy/protocol-http@4.1.8",
+ "@smithy/types@3.7.2",
+ "@smithy/util-hex-encoding@3.0.0",
+ "@smithy/util-middleware@3.0.11",
+ "@smithy/util-uri-escape@3.0.0",
+ "@smithy/util-utf8@3.0.0",
+ "tslib"
+ ]
+ },
+ "@smithy/signature-v4@5.3.5": {
+ "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==",
+ "dependencies": [
+ "@smithy/is-array-buffer@4.2.0",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "@smithy/util-hex-encoding@4.2.0",
+ "@smithy/util-middleware@4.2.5",
+ "@smithy/util-uri-escape@4.2.0",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/smithy-client@4.9.8": {
+ "integrity": "sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==",
+ "dependencies": [
+ "@smithy/core",
+ "@smithy/middleware-endpoint",
+ "@smithy/middleware-stack",
+ "@smithy/protocol-http@5.3.5",
+ "@smithy/types@4.9.0",
+ "@smithy/util-stream",
+ "tslib"
+ ]
+ },
+ "@smithy/types@3.7.2": {
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/types@4.9.0": {
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/url-parser@4.2.5": {
+ "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==",
+ "dependencies": [
+ "@smithy/querystring-parser",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-base64@4.3.0": {
+ "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==",
+ "dependencies": [
+ "@smithy/util-buffer-from@4.2.0",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-body-length-browser@4.2.0": {
+ "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/util-body-length-node@4.2.1": {
+ "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/util-buffer-from@2.2.0": {
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "dependencies": [
+ "@smithy/is-array-buffer@2.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-buffer-from@3.0.0": {
+ "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==",
+ "dependencies": [
+ "@smithy/is-array-buffer@3.0.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-buffer-from@4.2.0": {
+ "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==",
+ "dependencies": [
+ "@smithy/is-array-buffer@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-config-provider@4.2.0": {
+ "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/util-defaults-mode-browser@4.3.11": {
+ "integrity": "sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==",
+ "dependencies": [
+ "@smithy/property-provider",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-defaults-mode-node@4.2.14": {
+ "integrity": "sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==",
+ "dependencies": [
+ "@smithy/config-resolver",
+ "@smithy/credential-provider-imds",
+ "@smithy/node-config-provider",
+ "@smithy/property-provider",
+ "@smithy/smithy-client",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-endpoints@3.2.5": {
+ "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==",
+ "dependencies": [
+ "@smithy/node-config-provider",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-hex-encoding@3.0.0": {
+ "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/util-hex-encoding@4.2.0": {
+ "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/util-middleware@3.0.11": {
+ "integrity": "sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==",
+ "dependencies": [
+ "@smithy/types@3.7.2",
+ "tslib"
+ ]
+ },
+ "@smithy/util-middleware@4.2.5": {
+ "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==",
+ "dependencies": [
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-retry@4.2.5": {
+ "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==",
+ "dependencies": [
+ "@smithy/service-error-classification",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-stream@4.5.6": {
+ "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==",
+ "dependencies": [
+ "@smithy/fetch-http-handler",
+ "@smithy/node-http-handler",
+ "@smithy/types@4.9.0",
+ "@smithy/util-base64",
+ "@smithy/util-buffer-from@4.2.0",
+ "@smithy/util-hex-encoding@4.2.0",
+ "@smithy/util-utf8@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-uri-escape@3.0.0": {
+ "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/util-uri-escape@4.2.0": {
+ "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@smithy/util-utf8@2.3.0": {
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "dependencies": [
+ "@smithy/util-buffer-from@2.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-utf8@3.0.0": {
+ "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==",
+ "dependencies": [
+ "@smithy/util-buffer-from@3.0.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-utf8@4.2.0": {
+ "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==",
+ "dependencies": [
+ "@smithy/util-buffer-from@4.2.0",
+ "tslib"
+ ]
+ },
+ "@smithy/util-waiter@4.2.5": {
+ "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==",
+ "dependencies": [
+ "@smithy/abort-controller",
+ "@smithy/types@4.9.0",
+ "tslib"
+ ]
+ },
+ "@smithy/uuid@1.1.0": {
+ "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==",
+ "dependencies": [
+ "tslib"
+ ]
+ },
+ "@standard-schema/spec@1.1.0": {
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="
+ },
+ "@types/node@24.10.1": {
+ "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
+ "dependencies": [
+ "undici-types"
+ ]
+ },
+ "ansi-styles@4.3.0": {
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": [
+ "color-convert"
+ ]
+ },
+ "ansi-styles@5.2.0": {
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="
+ },
+ "bowser@2.13.0": {
+ "integrity": "sha512-yHAbSRuT6LTeKi6k2aS40csueHqgAsFEgmrOsfRyFpJnFv5O2hl9FYmWEUZ97gZ/dG17U4IQQcTx4YAFYPuWRQ=="
+ },
+ "braces@3.0.3": {
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dependencies": [
+ "fill-range"
+ ]
+ },
+ "chalk@4.1.2": {
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dependencies": [
+ "ansi-styles@4.3.0",
+ "supports-color"
+ ]
+ },
+ "color-convert@2.0.1": {
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": [
+ "color-name"
+ ]
+ },
+ "color-name@1.1.4": {
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "detect-libc@1.0.3": {
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "bin": true
+ },
+ "detect-libc@2.1.2": {
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="
+ },
+ "diff-sequences@29.6.3": {
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q=="
+ },
+ "effect@3.19.14": {
+ "integrity": "sha512-3vwdq0zlvQOxXzXNKRIPKTqZNMyGCdaFUBfMPqpsyzZDre67kgC1EEHDV4EoQTovJ4w5fmJW756f86kkuz7WFA==",
+ "dependencies": [
+ "@standard-schema/spec",
+ "fast-check"
+ ]
+ },
+ "fast-check@3.23.2": {
+ "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==",
+ "dependencies": [
+ "pure-rand"
+ ]
+ },
+ "fast-xml-parser@5.2.5": {
+ "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==",
+ "dependencies": [
+ "strnum"
+ ],
+ "bin": true
+ },
+ "fill-range@7.1.1": {
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dependencies": [
+ "to-regex-range"
+ ]
+ },
+ "find-my-way-ts@0.1.6": {
+ "integrity": "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="
+ },
+ "has-flag@4.0.0": {
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "is-extglob@2.1.1": {
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+ },
+ "is-glob@4.0.3": {
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": [
+ "is-extglob"
+ ]
+ },
+ "is-number@7.0.0": {
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "jest-diff@29.7.0": {
+ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+ "dependencies": [
+ "chalk",
+ "diff-sequences",
+ "jest-get-type",
+ "pretty-format"
+ ]
+ },
+ "jest-get-type@29.6.3": {
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="
+ },
+ "long@5.3.2": {
+ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="
+ },
+ "micromatch@4.0.8": {
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dependencies": [
+ "braces",
+ "picomatch"
+ ]
+ },
+ "mime@3.0.0": {
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "bin": true
+ },
+ "msgpackr-extract@3.0.3": {
+ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
+ "dependencies": [
+ "node-gyp-build-optional-packages"
+ ],
+ "optionalDependencies": [
+ "@msgpackr-extract/msgpackr-extract-darwin-arm64",
+ "@msgpackr-extract/msgpackr-extract-darwin-x64",
+ "@msgpackr-extract/msgpackr-extract-linux-arm",
+ "@msgpackr-extract/msgpackr-extract-linux-arm64",
+ "@msgpackr-extract/msgpackr-extract-linux-x64",
+ "@msgpackr-extract/msgpackr-extract-win32-x64"
+ ],
+ "scripts": true,
+ "bin": true
+ },
+ "msgpackr@1.11.8": {
+ "integrity": "sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==",
+ "optionalDependencies": [
+ "msgpackr-extract"
+ ]
+ },
+ "multipasta@0.2.7": {
+ "integrity": "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA=="
+ },
+ "node-addon-api@7.1.1": {
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="
+ },
+ "node-gyp-build-optional-packages@5.2.2": {
+ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
+ "dependencies": [
+ "detect-libc@2.1.2"
+ ],
+ "bin": true
+ },
+ "npm@11.7.0": {
+ "integrity": "sha512-wiCZpv/41bIobCoJ31NStIWKfAxxYyD1iYnWCtiyns8s5v3+l8y0HCP/sScuH6B5+GhIfda4HQKiqeGZwJWhFw==",
+ "bin": true
+ },
+ "picomatch@2.3.1": {
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ },
+ "pretty-format@29.7.0": {
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "dependencies": [
+ "@jest/schemas",
+ "ansi-styles@5.2.0",
+ "react-is"
+ ]
+ },
+ "protobufjs@7.5.4": {
+ "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==",
+ "dependencies": [
+ "@protobufjs/aspromise",
+ "@protobufjs/base64",
+ "@protobufjs/codegen",
+ "@protobufjs/eventemitter",
+ "@protobufjs/fetch",
+ "@protobufjs/float",
+ "@protobufjs/inquire",
+ "@protobufjs/path",
+ "@protobufjs/pool",
+ "@protobufjs/utf8",
+ "@types/node",
+ "long"
+ ],
+ "scripts": true
+ },
+ "pure-rand@6.1.0": {
+ "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="
+ },
+ "react-is@18.3.1": {
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ },
+ "strnum@2.1.1": {
+ "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw=="
+ },
+ "supports-color@7.2.0": {
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": [
+ "has-flag"
+ ]
+ },
+ "to-regex-range@5.0.1": {
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": [
+ "is-number"
+ ]
+ },
+ "tslib@2.8.1": {
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ },
+ "undici-types@7.16.0": {
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="
+ },
+ "undici@7.18.2": {
+ "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw=="
+ },
+ "uuid@11.1.0": {
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "bin": true
+ },
+ "ws@8.19.0": {
+ "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="
+ }
+ },
+ "remote": {
+ "https://deno.land/std@0.196.0/fmt/colors.ts": "a7eecffdf3d1d54db890723b303847b6e0a1ab4b528ba6958b8f2e754cf1b3bc",
+ "https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/colors.ts": "328916ea1627c202b39f2ed0f1ca65a573cfb75fa8986aa3dbcc0b7463911005"
+ },
+ "workspace": {
+ "dependencies": [
+ "jsr:@david/dax@~0.44.2",
+ "jsr:@std/assert@1",
+ "jsr:@std/fmt@^1.0.3",
+ "jsr:@std/path@^1.0.8",
+ "jsr:@std/testing@1",
+ "jsr:@std/yaml@^1.0.5",
+ "npm:@aws-crypto/sha256-js@^5.2.0",
+ "npm:@aws-sdk/client-s3@3",
+ "npm:@effect/opentelemetry@~0.56.2",
+ "npm:@effect/platform-node@0.96",
+ "npm:@effect/platform@~0.90.3",
+ "npm:@opentelemetry/exporter-trace-otlp-http@0.203",
+ "npm:@opentelemetry/sdk-trace-base@^2.0.1",
+ "npm:@opentelemetry/sdk-trace-node@^2.0.1",
+ "npm:@smithy/signature-v4@^4.2.0",
+ "npm:@smithy/types@^3.7.0",
+ "npm:effect@^3.17.7",
+ "npm:jest-diff@^29.7.0"
+ ]
+ }
+}
diff --git a/digi6 b/digi6
new file mode 120000
index 0000000..f719390
--- /dev/null
+++ b/digi6
@@ -0,0 +1 @@
+../digi6
\ No newline at end of file
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..668cde7
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,61 @@
+{
+ "nodes": {
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1767609335,
+ "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "250481aafeb741edfe23d29195671c19b36b6dca",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1767364772,
+ "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "lastModified": 1765674936,
+ "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
+ "owner": "nix-community",
+ "repo": "nixpkgs.lib",
+ "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixpkgs.lib",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-parts": "flake-parts",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..6627b13
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,67 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+ flake-parts.url = "github:hercules-ci/flake-parts";
+ };
+ outputs = { flake-parts, ... } @ inputs: flake-parts.lib.mkFlake { inherit inputs; } {
+ imports = [
+ # ./module.nix
+ ];
+
+ perSystem = { config, self', inputs', pkgs, system, ... }: {
+ # Allows definition of system-specific attributes
+ # without needing to declare the system explicitly!
+ #
+ # Quick rundown of the provided arguments:
+ # - config is a reference to the full configuration, lazily evaluated
+ # - self' is the outputs as provided here, without system. (self'.packages.default)
+ # - inputs' is the input without needing to specify system (inputs'.foo.packages.bar)
+ # - pkgs is an instance of nixpkgs for your specific system
+ # - system is the system this configuration is for
+
+ devShells.default = pkgs.mkShell {
+ buildInputs = with pkgs; [
+ # inputs'.hk.packages.hk
+ # corepack
+ # nodejs_24
+ # biome
+ deno
+ uv
+
+ # For systems that do not ship with Python by default (required by `node-gyp`)
+ # python3
+
+ # infisical
+ #
+ # opentofu
+ # terragrunt
+ # awscli2
+ ];
+ shellHook = ''
+ export PATH=$PATH:$PWD/x/
+ exec $(getent passwd $USER | cut -d: -f7)
+ '';
+ };
+
+ packages = let
+ # Import tools/default.nix - flake-parts will handle source filtering
+ webTools = import ./tools/default.nix { inherit pkgs; };
+ in {
+ # Web app build output
+ webApp = webTools.webApp;
+
+ # Docker/OCI image for the web app
+ webImage = webTools.webImage;
+ };
+ };
+
+ flake = {
+ # The usual flake attributes can be defined here, including
+ # system-agnostic and/or arbitrary outputs.
+ };
+
+
+ # Declared systems that your flake supports. These will be enumerated in perSystem
+ systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
+ };
+}
diff --git a/ghjk b/ghjk
new file mode 120000
index 0000000..4855491
--- /dev/null
+++ b/ghjk
@@ -0,0 +1 @@
+../../rust/ghjk/
\ No newline at end of file
diff --git a/herald b/herald
new file mode 120000
index 0000000..bfe949e
--- /dev/null
+++ b/herald
@@ -0,0 +1 @@
+../herald
\ No newline at end of file
diff --git a/s3-tests b/s3-tests
new file mode 120000
index 0000000..9c01fa5
--- /dev/null
+++ b/s3-tests
@@ -0,0 +1 @@
+../../python/s3-tests/
\ No newline at end of file
diff --git a/s3proxy b/s3proxy
new file mode 120000
index 0000000..27ea8bf
--- /dev/null
+++ b/s3proxy
@@ -0,0 +1 @@
+../../java/s3proxy/
\ No newline at end of file
diff --git a/sample-http b/sample-http
new file mode 120000
index 0000000..dfd9d33
--- /dev/null
+++ b/sample-http
@@ -0,0 +1 @@
+../sample-http/
\ No newline at end of file
diff --git a/sample-rust b/sample-rust
new file mode 120000
index 0000000..b7cd242
--- /dev/null
+++ b/sample-rust
@@ -0,0 +1 @@
+../../rust/Yohe-Am-backend-1/
\ No newline at end of file
diff --git a/src/Api.ts b/src/Api.ts
new file mode 100644
index 0000000..7c7cf12
--- /dev/null
+++ b/src/Api.ts
@@ -0,0 +1,10 @@
+import { HttpApi, OpenApi } from "@effect/platform"
+import { HealthApi } from "./Frontend/Health/Api.ts"
+import { S3Api } from "./Frontend/Api.ts"
+
+export class Api extends HttpApi.make("api")
+ .add(HealthApi)
+ .add(S3Api)
+ .annotate(OpenApi.Title, "Herald API")
+{ }
+
diff --git a/src/Backends/S3/Backend.ts b/src/Backends/S3/Backend.ts
new file mode 100644
index 0000000..69e299d
--- /dev/null
+++ b/src/Backends/S3/Backend.ts
@@ -0,0 +1,179 @@
+import { Effect } from "effect"
+import {
+ ListBucketsCommand,
+ CreateBucketCommand,
+ DeleteBucketCommand,
+ HeadBucketCommand,
+ type ListBucketsCommandOutput,
+ S3Client as S3ClientSDK
+} from "@aws-sdk/client-s3"
+import type { MaterializedBucket } from "../../Domain/Config.ts"
+import { AppConfig } from "../../Config/Layer.ts"
+import {
+ type BackendService,
+ type BucketInfo,
+ NoSuchBucket,
+ NoSuchKey,
+ BucketAlreadyExists,
+ BucketAlreadyOwnedByYou,
+ InternalError,
+ AccessDenied,
+ type BackendError
+} from "../../Services/Backend.ts"
+import { S3Client } from "./Client.ts"
+
+/**
+ * Maps S3 SDK exceptions to internal BackendError types.
+ */
+function mapS3Error(e: unknown, bucketName?: string): BackendError {
+ const err = e as {
+ name?: string;
+ Code?: string;
+ Message?: string;
+ message?: string;
+ $metadata?: { httpStatusCode?: number };
+ };
+ const name = err?.name || err?.Code ||
+ (e instanceof Error ? e.name : "UnknownError");
+ const message = err?.message || err?.Message ||
+ "An unknown S3 error occurred";
+ const bucket = bucketName ?? "unknown-bucket";
+
+ switch (name) {
+ case "NoSuchBucket":
+ case "NotFound":
+ return new NoSuchBucket({ bucketName: bucket, message });
+ case "NoSuchKey":
+ return new NoSuchKey({ bucketName: bucket, key: "unknown", message });
+ case "BucketAlreadyExists":
+ return new BucketAlreadyExists({ bucketName: bucket, message });
+ case "BucketAlreadyOwnedByYou":
+ return new BucketAlreadyOwnedByYou({ bucketName: bucket, message });
+ case "AccessDenied":
+ case "Forbidden":
+ return new AccessDenied({ message });
+ }
+
+ // Handle case where it might be a raw 404 from HEAD request
+ if (err?.$metadata?.httpStatusCode === 404) {
+ return new NoSuchKey({ bucketName: bucket, key: "unknown", message: "Not Found" });
+ }
+
+ return new InternalError({
+ message: e instanceof Error ? e.message : String(e),
+ });
+}
+
+/**
+ * Creates an S3-specific Backend implementation for a given configuration context.
+ */
+export const makeS3Backend = (
+ bucket: MaterializedBucket | { backend_id: string },
+): Effect.Effect${code}NoSuchBucketNoSuchBucketNoSuchBucketNoSuchBucketNoSuchKey
InvalidArgument