@noodleseed/one 0.118.0 → 0.119.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/catalog-data-bootstrap-authoring.d.ts.map +1 -1
- package/dist/commands/catalog-data-bootstrap-authoring.js +62 -1
- package/dist/commands/catalog-data-bootstrap-authoring.js.map +1 -1
- package/dist/commands/project-setup.d.ts.map +1 -1
- package/dist/commands/project-setup.js +21 -2
- package/dist/commands/project-setup.js.map +1 -1
- package/dist/deploy.d.ts +2 -0
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +6 -1
- package/dist/deploy.js.map +1 -1
- package/dist/local-compile.d.ts +2 -0
- package/dist/local-compile.d.ts.map +1 -1
- package/dist/local-compile.js +10 -1
- package/dist/local-compile.js.map +1 -1
- package/dist/plugin-mode/plugin-operation-contract.d.ts +3 -3
- package/node_modules/@noodle-borg/admission-limits/dist/client-address.d.ts +7 -0
- package/node_modules/@noodle-borg/admission-limits/dist/client-address.d.ts.map +1 -0
- package/node_modules/@noodle-borg/admission-limits/dist/client-address.js +68 -0
- package/node_modules/@noodle-borg/admission-limits/dist/client-address.js.map +1 -0
- package/node_modules/@noodle-borg/admission-limits/dist/counter-store.d.ts +28 -2
- package/node_modules/@noodle-borg/admission-limits/dist/counter-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/counter-store.js +31 -1
- package/node_modules/@noodle-borg/admission-limits/dist/counter-store.js.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/envelope.d.ts +11 -0
- package/node_modules/@noodle-borg/admission-limits/dist/envelope.d.ts.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/envelope.js +7 -0
- package/node_modules/@noodle-borg/admission-limits/dist/envelope.js.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.js +4 -3
- package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.js.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/admission-limits/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/index.js +1 -0
- package/node_modules/@noodle-borg/admission-limits/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/postgres-counter-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/postgres-counter-store.js +11 -5
- package/node_modules/@noodle-borg/admission-limits/dist/postgres-counter-store.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -4
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts +3 -2
- package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-ownership.d.ts +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-ownership.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.d.ts +3 -3
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.js +3 -3
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-agent-guide-ref.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/skill-agent-guide-ref.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +13 -3
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +14 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +5 -1
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.d.ts +8 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js +244 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.d.ts +4 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.js +90 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.js.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.d.ts +18 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.js +18 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.js.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.d.ts +133 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.js +2 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.js.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.d.ts +14 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.js +257 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.js.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.d.ts +9 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.js +138 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.js.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/index.d.ts +4 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/index.js +4 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-types.d.ts +19 -0
- package/node_modules/@noodle-borg/agent-packaging/dist/product-skill-types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-validation.d.ts +2 -0
- package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-validation.d.ts.map +1 -1
- package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-validation.js +32 -4
- package/node_modules/@noodle-borg/agent-packaging/dist/product-skill-validation.js.map +1 -0
- package/node_modules/@noodle-borg/agent-packaging/package.json +28 -0
- package/node_modules/@noodle-borg/app-package/dist/schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/app-package/dist/schema.js +4 -2
- package/node_modules/@noodle-borg/app-package/dist/schema.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts +32 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js +17 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.d.ts +70 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.js +18 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.js.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts +50 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js +43 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.d.ts +21 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.js +41 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.js.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts +4 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.js +4 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts +11 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js +24 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.d.ts +36 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.js +102 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.js.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.d.ts +6 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.js +12 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +4 -3
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.js +1 -12
- package/node_modules/@noodle-borg/authoring/dist/assistant.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/distribution.d.ts +46 -0
- package/node_modules/@noodle-borg/authoring/dist/distribution.d.ts.map +1 -0
- package/node_modules/@noodle-borg/authoring/dist/distribution.js +7 -0
- package/node_modules/@noodle-borg/authoring/dist/distribution.js.map +1 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts +5 -0
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.js +4 -0
- package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/index.js +1 -0
- package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +4 -5
- package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.js.map +1 -1
- package/node_modules/@noodle-borg/plugin-distribution/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/index.js +3 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.d.ts +30 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.d.ts.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.js +269 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.js.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.d.ts +4 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.d.ts.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.js +239 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.js.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.d.ts +21 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.js +2 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.js.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.d.ts +10 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.js +120 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.js.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.d.ts +7 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.d.ts.map +1 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.js +24 -0
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.js.map +1 -0
- package/node_modules/@noodle-borg/{agent-kit → plugin-distribution}/dist/product-skill-markdown.d.ts +1 -1
- package/node_modules/@noodle-borg/plugin-distribution/dist/product-skill-markdown.d.ts.map +1 -0
- package/node_modules/@noodle-borg/{agent-kit → plugin-distribution}/dist/product-skill-markdown.js +1 -1
- package/node_modules/@noodle-borg/{agent-kit → plugin-distribution}/dist/product-skill-markdown.js.map +1 -1
- package/node_modules/@noodle-borg/plugin-distribution/package.json +35 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +19 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts +42 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +46 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +7 -2
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js +77 -19
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +1 -0
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/node_modules/@noodleseed/assistant/dist/{chunk-SUHNNWKP.js → chunk-7L52WJ2E.js} +67 -2
- package/node_modules/@noodleseed/assistant/dist/chunk-7L52WJ2E.js.map +1 -0
- package/node_modules/@noodleseed/assistant/dist/{chunk-RRJIK473.js → chunk-NPV64PUX.js} +6 -1
- package/node_modules/@noodleseed/assistant/dist/{chunk-RRJIK473.js.map → chunk-NPV64PUX.js.map} +1 -1
- package/node_modules/@noodleseed/assistant/dist/{client-B_l59rWg.d.cts → client-401BAJqk.d.cts} +13 -1
- package/node_modules/@noodleseed/assistant/dist/{client-MnLfiyo2.d.ts → client-Ii_xTV09.d.ts} +13 -1
- package/node_modules/@noodleseed/assistant/dist/client.cjs +5 -0
- package/node_modules/@noodleseed/assistant/dist/client.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/client.d.cts +1 -1
- package/node_modules/@noodleseed/assistant/dist/client.d.ts +1 -1
- package/node_modules/@noodleseed/assistant/dist/client.js +1 -1
- package/node_modules/@noodleseed/assistant/dist/embed.global.js +32 -32
- package/node_modules/@noodleseed/assistant/dist/index.cjs +70 -0
- package/node_modules/@noodleseed/assistant/dist/index.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/index.d.cts +2 -2
- package/node_modules/@noodleseed/assistant/dist/index.d.ts +2 -2
- package/node_modules/@noodleseed/assistant/dist/index.js +2 -2
- package/node_modules/@noodleseed/assistant/dist/react/client.cjs +5 -0
- package/node_modules/@noodleseed/assistant/dist/react/client.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/react/client.d.cts +1 -1
- package/node_modules/@noodleseed/assistant/dist/react/client.d.ts +1 -1
- package/node_modules/@noodleseed/assistant/dist/react/client.js +1 -1
- package/node_modules/@noodleseed/assistant/dist/react.cjs +70 -0
- package/node_modules/@noodleseed/assistant/dist/react.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/react.d.cts +1 -1
- package/node_modules/@noodleseed/assistant/dist/react.d.ts +1 -1
- package/node_modules/@noodleseed/assistant/dist/react.js +2 -2
- package/node_modules/@noodleseed/assistant/package.json +1 -1
- package/package.json +5 -2
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-markdown.d.ts.map +0 -1
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-types.d.ts.map +0 -1
- package/node_modules/@noodle-borg/agent-kit/dist/product-skill-validation.js.map +0 -1
- package/node_modules/@noodleseed/assistant/dist/chunk-SUHNNWKP.js.map +0 -1
- /package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-types.js +0 -0
- /package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-types.js.map +0 -0
|
@@ -13,13 +13,18 @@ export interface CounterRequest {
|
|
|
13
13
|
readonly limit: number;
|
|
14
14
|
/** Units to consume; a mint and a turn are both 1 today. */
|
|
15
15
|
readonly amount?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Which window the ceiling belongs to. Solvency bounds are daily (the default); the per-address
|
|
18
|
+
* fairness tier is hourly, so a visitor's accidental burst forgives itself within the same visit.
|
|
19
|
+
*/
|
|
20
|
+
readonly window?: 'day' | 'hour';
|
|
16
21
|
}
|
|
17
22
|
export interface CounterOutcome {
|
|
18
23
|
readonly allowed: boolean;
|
|
19
24
|
/** Units used after this call (unchanged when the call was denied). */
|
|
20
25
|
readonly used: number;
|
|
21
26
|
readonly limit: number;
|
|
22
|
-
/** Start of the
|
|
27
|
+
/** Start of the window after the one this counter belongs to. */
|
|
23
28
|
readonly resetAt: Date;
|
|
24
29
|
}
|
|
25
30
|
export interface DailyCounterStore {
|
|
@@ -41,5 +46,26 @@ export interface DailyCounterStore {
|
|
|
41
46
|
}
|
|
42
47
|
/** Counters roll at UTC midnight — a fixed boundary no tenant timezone can shift. */
|
|
43
48
|
export declare function dayKey(now: Date): string;
|
|
44
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Tier 3 rolls hourly rather than daily. A fairness bound wants a window short enough that an
|
|
51
|
+
* accidental burst forgives itself within the same visit, where a solvency bound wants the whole day.
|
|
52
|
+
*/
|
|
53
|
+
export declare function hourKey(now: Date): string;
|
|
54
|
+
/**
|
|
55
|
+
* The row identity for a request, and the reason the hour is folded into the **key** rather than the day.
|
|
56
|
+
*
|
|
57
|
+
* The counter table's `day` column is a real `date`, so an hour-resolution value cannot go there: it
|
|
58
|
+
* fails at the database with `invalid input syntax for type date`, which is exactly how the per-address
|
|
59
|
+
* tier took production down after passing every test — the shared suite only exercised the daily window
|
|
60
|
+
* and the route tests used a mocked counter, so no test ever put an hourly request through real SQL.
|
|
61
|
+
*
|
|
62
|
+
* Partitioning by date and distinguishing the hour inside the key keeps both windows in one table with
|
|
63
|
+
* no migration and no ambiguity: a daily row and an hourly row can never collide, because the hourly key
|
|
64
|
+
* carries a suffix the daily key cannot produce.
|
|
65
|
+
*/
|
|
66
|
+
export declare function counterRow(request: Pick<CounterRequest, 'key' | 'window'>, now: Date): {
|
|
67
|
+
readonly key: string;
|
|
68
|
+
readonly day: string;
|
|
69
|
+
};
|
|
70
|
+
export declare function nextReset(now: Date, window?: 'day' | 'hour'): Date;
|
|
45
71
|
//# sourceMappingURL=counter-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter-store.d.ts","sourceRoot":"","sources":["../src/counter-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,cAAc;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"counter-store.d.ts","sourceRoot":"","sources":["../src/counter-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,cAAc;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrE,mDAAmD;IACnD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,qFAAqF;AACrF,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAExC;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAC,EAC/C,GAAG,EAAE,IAAI,GACR;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAKhD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI,CAUzE"}
|
|
@@ -10,8 +10,38 @@
|
|
|
10
10
|
export function dayKey(now) {
|
|
11
11
|
return now.toISOString().slice(0, 10);
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Tier 3 rolls hourly rather than daily. A fairness bound wants a window short enough that an
|
|
15
|
+
* accidental burst forgives itself within the same visit, where a solvency bound wants the whole day.
|
|
16
|
+
*/
|
|
17
|
+
export function hourKey(now) {
|
|
18
|
+
return now.toISOString().slice(0, 13);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The row identity for a request, and the reason the hour is folded into the **key** rather than the day.
|
|
22
|
+
*
|
|
23
|
+
* The counter table's `day` column is a real `date`, so an hour-resolution value cannot go there: it
|
|
24
|
+
* fails at the database with `invalid input syntax for type date`, which is exactly how the per-address
|
|
25
|
+
* tier took production down after passing every test — the shared suite only exercised the daily window
|
|
26
|
+
* and the route tests used a mocked counter, so no test ever put an hourly request through real SQL.
|
|
27
|
+
*
|
|
28
|
+
* Partitioning by date and distinguishing the hour inside the key keeps both windows in one table with
|
|
29
|
+
* no migration and no ambiguity: a daily row and an hourly row can never collide, because the hourly key
|
|
30
|
+
* carries a suffix the daily key cannot produce.
|
|
31
|
+
*/
|
|
32
|
+
export function counterRow(request, now) {
|
|
33
|
+
return {
|
|
34
|
+
key: request.window === 'hour' ? `${request.key}@${hourKey(now)}` : request.key,
|
|
35
|
+
day: dayKey(now),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function nextReset(now, window = 'day') {
|
|
14
39
|
const next = new Date(now);
|
|
40
|
+
if (window === 'hour') {
|
|
41
|
+
next.setUTCMinutes(0, 0, 0);
|
|
42
|
+
next.setUTCHours(next.getUTCHours() + 1);
|
|
43
|
+
return next;
|
|
44
|
+
}
|
|
15
45
|
next.setUTCHours(0, 0, 0, 0);
|
|
16
46
|
next.setUTCDate(next.getUTCDate() + 1);
|
|
17
47
|
return next;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter-store.js","sourceRoot":"","sources":["../src/counter-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"counter-store.js","sourceRoot":"","sources":["../src/counter-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2CH,qFAAqF;AACrF,MAAM,UAAU,MAAM,CAAC,GAAS;IAC9B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAS;IAC/B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CACxB,OAA+C,EAC/C,GAAS;IAET,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;QAC/E,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAS,EAAE,SAAyB,KAAK;IACjE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -39,6 +39,17 @@ export interface AdmissionEnvelope {
|
|
|
39
39
|
* writes durable session rows forever while spending nothing.
|
|
40
40
|
*/
|
|
41
41
|
readonly mintsPerDay: number;
|
|
42
|
+
/**
|
|
43
|
+
* Sessions one source address may mint per hour, and turns it may run (admission tier 3).
|
|
44
|
+
*
|
|
45
|
+
* A different question from the daily caps, which is why it is a separate tier rather than a tighter
|
|
46
|
+
* number: the per-surface cap governs **solvency** — the customer's model spend is bounded whatever
|
|
47
|
+
* happens — while this governs **fairness**, so one visitor cannot consume the surface's whole day
|
|
48
|
+
* before anybody else arrives. Losing this tier loses fairness and never solvency, which is why the
|
|
49
|
+
* pilot shipped without it.
|
|
50
|
+
*/
|
|
51
|
+
readonly mintsPerAddressHour: number;
|
|
52
|
+
readonly turnsPerAddressHour: number;
|
|
42
53
|
}
|
|
43
54
|
/** Ceilings. Nothing may exceed these, whatever the manifest or managed config asks for. */
|
|
44
55
|
export declare const ADMISSION_MAXIMUM: AdmissionEnvelope;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAKD,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,EAAE,iBAa9B,CAAC;AAEH,+FAA+F;AAC/F,eAAO,MAAM,kBAAkB,EAAE,iBAO/B,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,SAAS,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,iBAAiB,CAoBnF;AAED,kGAAkG;AAClG,wBAAgB,UAAU,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE/D"}
|
|
@@ -26,12 +26,17 @@ export const ADMISSION_MAXIMUM = Object.freeze({
|
|
|
26
26
|
sessionAbsoluteMs: 2 * HOUR,
|
|
27
27
|
turnsPerDay: 100_000,
|
|
28
28
|
mintsPerDay: 30_000,
|
|
29
|
+
mintsPerAddressHour: 1_000,
|
|
30
|
+
turnsPerAddressHour: 5_000,
|
|
29
31
|
});
|
|
30
32
|
/** What a surface gets when nobody configures it. Conservative by intent for a first pilot. */
|
|
31
33
|
export const ADMISSION_DEFAULTS = Object.freeze({
|
|
32
34
|
...ADMISSION_MAXIMUM,
|
|
33
35
|
turnsPerDay: 1_000,
|
|
34
36
|
mintsPerDay: 300,
|
|
37
|
+
// One visitor opening ten conversations an hour is already unusual; sixty turns is a long session.
|
|
38
|
+
mintsPerAddressHour: 10,
|
|
39
|
+
turnsPerAddressHour: 60,
|
|
35
40
|
});
|
|
36
41
|
/**
|
|
37
42
|
* Build an envelope from an operator request. Every field is clamped to {@link ADMISSION_MAXIMUM};
|
|
@@ -56,6 +61,8 @@ export function clamp(requested = {}) {
|
|
|
56
61
|
sessionIdleMs: bound('sessionIdleMs'),
|
|
57
62
|
sessionAbsoluteMs: bound('sessionAbsoluteMs'),
|
|
58
63
|
turnsPerDay: bound('turnsPerDay'),
|
|
64
|
+
mintsPerAddressHour: bound('mintsPerAddressHour'),
|
|
65
|
+
turnsPerAddressHour: bound('turnsPerAddressHour'),
|
|
59
66
|
mintsPerDay: bound('mintsPerDay'),
|
|
60
67
|
};
|
|
61
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0CH,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;AAEzB,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAChE,iBAAiB,EAAE,KAAK;IACxB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC;IACnB,mBAAmB,EAAE,CAAC;IACtB,iBAAiB,EAAE,EAAE,GAAG,MAAM;IAC9B,aAAa,EAAE,EAAE,GAAG,MAAM;IAC1B,iBAAiB,EAAE,CAAC,GAAG,IAAI;IAC3B,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,MAAM;IACnB,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,KAAK;CAC3B,CAAC,CAAC;AAEH,+FAA+F;AAC/F,MAAM,CAAC,MAAM,kBAAkB,GAAsB,MAAM,CAAC,MAAM,CAAC;IACjE,GAAG,iBAAiB;IACpB,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,GAAG;IAChB,mGAAmG;IACnG,mBAAmB,EAAE,EAAE;IACvB,mBAAmB,EAAE,EAAE;CACxB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,YAAwC,EAAE;IAC9D,MAAM,KAAK,GAAG,CAAC,GAA4B,EAAU,EAAE;QACrD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;IACF,OAAO;QACL,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC;QAC7C,eAAe,EAAE,KAAK,CAAC,iBAAiB,CAAC;QACzC,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC;QAC7C,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,CAAC;QAC3C,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;QACjD,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC;QAC7C,aAAa,EAAE,KAAK,CAAC,eAAe,CAAC;QACrC,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC;QAC7C,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC;QACjC,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;QACjD,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;QACjD,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,UAAU,CAAC,QAA2B;IACpD,OAAO,QAAQ,CAAC,WAAW,KAAK,CAAC,IAAI,QAAQ,CAAC,WAAW,KAAK,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-counter-store.d.ts","sourceRoot":"","sources":["../src/in-memory-counter-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"in-memory-counter-store.d.ts","sourceRoot":"","sources":["../src/in-memory-counter-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EAGvB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;;IACjE,QAAQ,CAAC,OAAO,SAAS;IAGnB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAapE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAGpD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dayKey, nextReset, } from './counter-store.js';
|
|
1
|
+
import { counterRow, dayKey, nextReset, } from './counter-store.js';
|
|
2
2
|
/**
|
|
3
3
|
* Process-local counters for local development and tests.
|
|
4
4
|
*
|
|
@@ -10,10 +10,11 @@ export class InMemoryDailyCounterStore {
|
|
|
10
10
|
durable = false;
|
|
11
11
|
#used = new Map();
|
|
12
12
|
async consume(request, now) {
|
|
13
|
-
const
|
|
13
|
+
const row = counterRow(request, now);
|
|
14
|
+
const key = `${row.day}:${row.key}`;
|
|
14
15
|
const amount = request.amount ?? 1;
|
|
15
16
|
const used = this.#used.get(key) ?? 0;
|
|
16
|
-
const resetAt = nextReset(now);
|
|
17
|
+
const resetAt = nextReset(now, request.window);
|
|
17
18
|
if (used + amount > request.limit) {
|
|
18
19
|
return { allowed: false, used, limit: request.limit, resetAt };
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-counter-store.js","sourceRoot":"","sources":["../src/in-memory-counter-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"in-memory-counter-store.js","sourceRoot":"","sources":["../src/in-memory-counter-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,MAAM,EACN,SAAS,GACV,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,OAAO,yBAAyB;IAC3B,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,GAAS;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,GAAS;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* and arrive once trusted ingress metadata is verified. Losing the latter degrades fairness, never
|
|
8
8
|
* solvency — which is why the cap, not the rate limit, is the tier that ships first.
|
|
9
9
|
*/
|
|
10
|
+
export * from './client-address.js';
|
|
10
11
|
export * from './counter-store.js';
|
|
11
12
|
export * from './envelope.js';
|
|
12
13
|
export * from './in-memory-counter-store.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* and arrive once trusted ingress metadata is verified. Losing the latter degrades fairness, never
|
|
8
8
|
* solvency — which is why the cap, not the rate limit, is the tier that ships first.
|
|
9
9
|
*/
|
|
10
|
+
export * from './client-address.js';
|
|
10
11
|
export * from './counter-store.js';
|
|
11
12
|
export * from './envelope.js';
|
|
12
13
|
export * from './in-memory-counter-store.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-counter-store.d.ts","sourceRoot":"","sources":["../src/postgres-counter-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"postgres-counter-store.d.ts","sourceRoot":"","sources":["../src/postgres-counter-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EAGvB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;;IACjE,QAAQ,CAAC,OAAO,QAAQ;gBAGZ,IAAI,EAAE,IAAI;IAIhB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IA0CpE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAOpD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dayKey, nextReset, } from './counter-store.js';
|
|
1
|
+
import { counterRow, dayKey, nextReset, } from './counter-store.js';
|
|
2
2
|
/**
|
|
3
3
|
* Durable daily counters shared by every service instance.
|
|
4
4
|
*
|
|
@@ -27,8 +27,8 @@ export class PostgresDailyCounterStore {
|
|
|
27
27
|
}
|
|
28
28
|
async consume(request, now) {
|
|
29
29
|
const amount = request.amount ?? 1;
|
|
30
|
-
const day =
|
|
31
|
-
const resetAt = nextReset(now);
|
|
30
|
+
const { key: counterKey, day } = counterRow(request, now);
|
|
31
|
+
const resetAt = nextReset(now, request.window);
|
|
32
32
|
// A zero limit can never be satisfied; skip the round trip and report the switched-off surface.
|
|
33
33
|
if (request.limit <= 0) {
|
|
34
34
|
return { allowed: false, used: 0, limit: request.limit, resetAt };
|
|
@@ -42,18 +42,24 @@ export class PostgresDailyCounterStore {
|
|
|
42
42
|
ON CONFLICT (counter_key, day) DO UPDATE
|
|
43
43
|
SET used = admission_daily_counters.used + $3::bigint, updated_at = now()
|
|
44
44
|
WHERE admission_daily_counters.used + $3::bigint <= $4::bigint
|
|
45
|
-
RETURNING used`, [
|
|
45
|
+
RETURNING used`, [counterKey, day, amount, request.limit]);
|
|
46
46
|
const row = result.rows[0];
|
|
47
47
|
if (row === undefined) {
|
|
48
48
|
return {
|
|
49
49
|
allowed: false,
|
|
50
|
-
|
|
50
|
+
// The stored key, not the requested one: an hourly row carries its window in the key, and
|
|
51
|
+
// reading the raw key would report a denied visitor as having used nothing.
|
|
52
|
+
used: await this.#usedFor(counterKey, day),
|
|
51
53
|
limit: request.limit,
|
|
52
54
|
resetAt,
|
|
53
55
|
};
|
|
54
56
|
}
|
|
55
57
|
return { allowed: true, used: Number(row.used), limit: request.limit, resetAt };
|
|
56
58
|
}
|
|
59
|
+
async #usedFor(counterKey, day) {
|
|
60
|
+
const result = await this.#pool.query('SELECT used FROM admission_daily_counters WHERE counter_key = $1 AND day = $2', [counterKey, day]);
|
|
61
|
+
return result.rows[0] === undefined ? 0 : Number(result.rows[0].used);
|
|
62
|
+
}
|
|
57
63
|
async peek(key, now) {
|
|
58
64
|
const result = await this.#pool.query('SELECT used FROM admission_daily_counters WHERE counter_key = $1 AND day = $2', [key, dayKey(now)]);
|
|
59
65
|
return result.rows[0] === undefined ? 0 : Number(result.rows[0].used);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-counter-store.js","sourceRoot":"","sources":["../src/postgres-counter-store.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"postgres-counter-store.js","sourceRoot":"","sources":["../src/postgres-counter-store.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,UAAU,EAEV,MAAM,EACN,SAAS,GACV,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;GAQG;AACH,MAAM,OAAO,yBAAyB;IAC3B,OAAO,GAAG,IAAI,CAAC;IACf,KAAK,CAAO;IAErB,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;;;;;;;KAQtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,GAAS;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,gGAAgG;QAChG,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK;QACnC,iGAAiG;QACjG,8FAA8F;QAC9F,+CAA+C;QAC/C;;;;;sBAKgB,EAChB,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CACzC,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,0FAA0F;gBAC1F,4EAA4E;gBAC5E,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;gBAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO;aACR,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,GAAW;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACnC,+EAA+E,EAC/E,CAAC,UAAU,EAAE,GAAG,CAAC,CAClB,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,GAAS;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACnC,+EAA+E,EAC/E,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CACnB,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-groups.d.ts","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;CAC1D;AAED,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAShD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"command-groups.d.ts","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;CAC1D;AAED,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAShD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA6O5D,CAAC"}
|
|
@@ -44,7 +44,7 @@ export const COMMAND_GROUPS = {
|
|
|
44
44
|
},
|
|
45
45
|
export: {
|
|
46
46
|
group: 'Authoring & validation',
|
|
47
|
-
summary: 'Compile locally and write
|
|
47
|
+
summary: 'Compile locally and write a portable manifest or target host-plugin archive (no service).',
|
|
48
48
|
},
|
|
49
49
|
docs: { group: 'Authoring & validation', summary: 'Export docs in an LLM-readable format.' },
|
|
50
50
|
connect: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-groups.js","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,8FAA8F;AAC9F,+FAA+F;AAC/F,+FAA+F;AAC/F,gGAAgG;AAWhG,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,wBAAwB;IACxB,qBAAqB;IACrB,4BAA4B;IAC5B,eAAe;IACf,gBAAgB;IAChB,4BAA4B;IAC5B,iBAAiB;IACjB,YAAY;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAsC;IAC/D,KAAK,EAAE;QACL,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EACL,0FAA0F;KAC7F;IACD,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,gCAAgC,EAAE;IACpF,KAAK,EAAE;QACL,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,4EAA4E;KACtF;IACD,MAAM,EAAE;QACN,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,0EAA0E;KACpF;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,oFAAoF;KAC9F;IACD,KAAK,EAAE;QACL,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EACL,oIAAoI;KACvI;IACD,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,0CAA0C,EAAE;IAC9F,MAAM,EAAE;QACN,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,oDAAoD;KAC9D;IACD,MAAM,EAAE;QACN,KAAK,EAAE,wBAAwB;QAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"command-groups.js","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example-files.d.ts","sourceRoot":"","sources":["../../src/generated/example-files.ts"],"names":[],"mappings":"AAIA,oGAAoG;AACpG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAUlD,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,
|
|
1
|
+
{"version":3,"file":"example-files.d.ts","sourceRoot":"","sources":["../../src/generated/example-files.ts"],"names":[],"mappings":"AAIA,oGAAoG;AACpG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAUlD,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EA4E9D,CAAC"}
|