diff --git a/apps/server/src/http/security.ts b/apps/server/src/http/security.ts index 346414ccd..a16359f5f 100644 --- a/apps/server/src/http/security.ts +++ b/apps/server/src/http/security.ts @@ -45,7 +45,7 @@ export function buildApiCspDirectives(): ApiCspDirectives { * SPA, політика задається на CDN-рівні (Vercel headers). **NB:** після * видалення Replit-режиму (2026-06-08) runtime ніколи не передає * `servesFrontend: true` — `config.servesFrontend` завжди `false`; ця гілка - * лишається лише як generic capability (kандидат на видалення окремим PR). + * лишається лише як generic capability (кандидат на видалення окремим PR). * - `servesFrontend: false` (дефолт) — API-only (Railway). CSP буде строгою * (див. buildApiCspDirectives). `CSP_REPORT_ONLY=1` переводить її у * report-only-режим — корисно під час phased-rollout: браузер логує diff --git a/apps/server/src/routes/barcode.contract.test.ts b/apps/server/src/routes/barcode.contract.test.ts index 1f7200ae9..06649dcc8 100644 --- a/apps/server/src/routes/barcode.contract.test.ts +++ b/apps/server/src/routes/barcode.contract.test.ts @@ -39,14 +39,15 @@ import { type BarcodeErrorFixtureCase, } from "@sergeant/shared"; -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── // Dynamic import to pick up __barcodeTestHooks for cache reset. -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── + import handler, { __barcodeTestHooks } from "../modules/nutrition/barcode.js"; -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── // Helpers -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── interface TestRes { statusCode: number; @@ -112,9 +113,9 @@ afterEach(() => { vi.restoreAllMocks(); }); -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── // Fixture self-check (fires before any handler test) -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── describe("contract: /api/barcode producer — fixture integrity", () => { it("every named fixture in @sergeant/shared parses through its schema", () => { @@ -122,9 +123,9 @@ describe("contract: /api/barcode producer — fixture integrity", () => { }); }); -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── // Success shape — handler emits { product: BarcodeProduct } -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── const SUCCESS_NAMES: readonly BarcodeSuccessFixtureCase[] = [ "offFull", @@ -209,9 +210,9 @@ describe("contract: /api/barcode producer — success envelope", () => { }); }); -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── // Error shape — handler emits { error: string } -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── const ERROR_NAMES: readonly BarcodeErrorFixtureCase[] = [ "notFound", @@ -278,9 +279,9 @@ describe("contract: /api/barcode producer — error envelope", () => { }); }); -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── // Cross-side invariants — ensure producer and consumer shapes are compatible -// ────────────────────────────────────────────────────────────────────────────── +// ──────────────────────────────────────────────────────────────────────────────── describe("contract: /api/barcode producer ↔ consumer shape invariants", () => { it("shared success fixtures that parse on producer side also encode to the same JSON the consumer expects", () => { diff --git a/docs/02-engineering/architecture/diagrams/c3-workspaces.md b/docs/02-engineering/architecture/diagrams/c3-workspaces.md index 26d55d57b..7878a66ad 100644 --- a/docs/02-engineering/architecture/diagrams/c3-workspaces.md +++ b/docs/02-engineering/architecture/diagrams/c3-workspaces.md @@ -1,6 +1,6 @@ # C3 — Workspace dependency graph -> **Last validated:** 2026-06-08 by @Skords-01. **Next review:** 2026-09-06. +> **Last validated:** 2026-06-09 by @Skords-01. **Next review:** 2026-09-07. > **Status:** Active @@ -19,9 +19,6 @@ flowchart LR apps_server["@sergeant/server"] apps_web["@sergeant/web"] end - subgraph tools["tools"] - tools_openclaw["@sergeant/openclaw"] - end subgraph packages["packages"] packages_api_client["@sergeant/api-client"] packages_config["@sergeant/config"] @@ -65,13 +62,12 @@ flowchart LR classDef tool fill:#b45309,stroke:#7c2d12,color:#fff classDef package fill:#15803d,stroke:#166534,color:#fff class apps_mobile,apps_mobile_shell,apps_server,apps_web app - class tools_openclaw tool class packages_api_client,packages_config,packages_db_schema,packages_design_tokens,packages_eslint_plugin_sergeant_design,packages_finyk_domain,packages_fizruk_domain,packages_insights,packages_nutrition_domain,packages_openclaw_plugin,packages_routine_domain,packages_shared package ``` ## Stats -- **17** workspaces total — 4 apps, 12 packages, 1 tool. +- **16** workspaces total — 4 apps, 12 packages, 0 tools. - **24** cross-workspace import edges. ## Top imported workspaces diff --git a/docs/04-governance/governance/freshness-dashboard.html b/docs/04-governance/governance/freshness-dashboard.html index b365d3ba2..08bed6ec6 100644 --- a/docs/04-governance/governance/freshness-dashboard.html +++ b/docs/04-governance/governance/freshness-dashboard.html @@ -1185,10 +1185,10 @@

Sergeant — Docs Freshness Dashboard

docs/02-engineering/architecture/diagrams/c3-workspaces.md - Fresh (89d) - 2026-06-08 - 2026-09-06 - 89 + Fresh (90d) + 2026-06-09 + 2026-09-07 + 90 @Skords-01. 90 diff --git a/docs/04-governance/governance/knowledge-graph.html b/docs/04-governance/governance/knowledge-graph.html index 2a274d1be..b4a044875 100644 --- a/docs/04-governance/governance/knowledge-graph.html +++ b/docs/04-governance/governance/knowledge-graph.html @@ -677,7 +677,7 @@

Sergeant — Knowledge Graph

> Active - number=47 · last_validated=2026-06-08 + number=47 · last_validated=2026-06-09 adr @@ -714,7 +714,7 @@

Sergeant — Knowledge Graph

> Accepted - number=50 · last_validated=2026-06-08 + number=50 · last_validated=2026-06-09 adr @@ -752,7 +752,7 @@

Sergeant — Knowledge Graph

> Accepted - number=53 · last_validated=2026-06-08 + number=53 · last_validated=2026-06-09 adr @@ -801,7 +801,7 @@

Sergeant — Knowledge Graph

> Active - number=58 · last_validated=2026-06-08 + number=58 · last_validated=2026-06-09 adr @@ -814,7 +814,7 @@

Sergeant — Knowledge Graph

> Active - number=59 · last_validated=2026-06-08 + number=59 · last_validated=2026-06-09 adr @@ -827,7 +827,7 @@

Sergeant — Knowledge Graph

> Active - number=60 · last_validated=2026-06-08 + number=60 · last_validated=2026-06-09 adr @@ -839,7 +839,7 @@

Sergeant — Knowledge Graph

> Active - number=61 · last_validated=2026-06-08 + number=61 · last_validated=2026-06-09 adr @@ -864,7 +864,7 @@

Sergeant — Knowledge Graph

> Accepted - number=63 · last_validated=2026-06-08 + number=63 · last_validated=2026-06-09 adr @@ -904,7 +904,7 @@

Sergeant — Knowledge Graph

> Active - number=66 · last_validated=2026-06-08 + number=66 · last_validated=2026-06-09 audit diff --git a/docs/04-governance/governance/knowledge-graph.json b/docs/04-governance/governance/knowledge-graph.json index 3b9f9e664..711988183 100644 --- a/docs/04-governance/governance/knowledge-graph.json +++ b/docs/04-governance/governance/knowledge-graph.json @@ -504,7 +504,7 @@ "tier": "core", "meta": { "number": 47, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -539,7 +539,7 @@ "tier": "core", "meta": { "number": 50, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -573,7 +573,7 @@ "tier": "core", "meta": { "number": 53, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -619,7 +619,7 @@ "tier": "core", "meta": { "number": 58, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -631,7 +631,7 @@ "tier": "core", "meta": { "number": 59, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -643,7 +643,7 @@ "tier": "core", "meta": { "number": 60, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -655,7 +655,7 @@ "tier": "core", "meta": { "number": 61, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -678,7 +678,7 @@ "tier": "core", "meta": { "number": 63, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { @@ -712,7 +712,7 @@ "tier": "core", "meta": { "number": 66, - "last_validated": "2026-06-08" + "last_validated": "2026-06-09" } }, { diff --git a/docs/04-governance/governance/retrieval-index.json b/docs/04-governance/governance/retrieval-index.json index cb5a81e3e..12f58e9fb 100644 --- a/docs/04-governance/governance/retrieval-index.json +++ b/docs/04-governance/governance/retrieval-index.json @@ -3,7 +3,7 @@ "version": 1, "generated_at": "2026-06-09", "sourceHashes": { - "knowledge-graph": "f562cfbdc59164b12986eb2f59a0dd0bd801a17e90cab4bfe8f190fe05405729", + "knowledge-graph": "cdc27a3335e678e289f7bef92a2fdac3cc8c5655db8f6243d13aed145f606427", "symbol-index": "7ea3de138fa223ddd49af14b3e9f174bd684fb138c8837be02f8b8404fe29ba1" }, "counts": { @@ -507,8 +507,8 @@ "title": "ADR-0047: CloudSync v1 — T₀ executed (410 Gone)", "tier": "core", "status": "Active", - "text": "ADR-0047: CloudSync v1 — T₀ executed (410 Gone) · adr:0047 · adr · Active · 47 · 2026-06-08 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Risks / Followups · Status (2026-05-06) · Amendment (2026-05-10): Final removal exit-criteria", - "contentHash": "bb3212f626578d1df7120ce6e7dd66df761c9723443911f56d90f91ce8507da8" + "text": "ADR-0047: CloudSync v1 — T₀ executed (410 Gone) · adr:0047 · adr · Active · 47 · 2026-06-09 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Risks / Followups · Status (2026-05-06) · Amendment (2026-05-10): Final removal exit-criteria", + "contentHash": "26de821f337ce0dcd3132a0889456818bcbf1ed80cf1fd484ff2f88030c3cda9" }, { "id": "adr:0048", @@ -540,8 +540,8 @@ "title": "ADR-0050: TypeScript major-version policy + `@types/node` pinning", "tier": "core", "status": "Accepted", - "text": "ADR-0050: TypeScript major-version policy + `@types/node` pinning · adr:0050 · adr · Accepted · 50 · 2026-06-08 · ADR-0050: TypeScript major-version policy + @types/node pinning · Context and Problem Statement · Decision · 1. @types/node pinned to ^20.x everywhere · 2. TypeScript 6.x at root — accepted, with fallback plan · 3. Fallback plan to TS 5.9 · Rationale · Consequences", - "contentHash": "a1a4a3df73e13f8b206787706800e20e799a83d6ffb1b5f5955c28f1bfbdd727" + "text": "ADR-0050: TypeScript major-version policy + `@types/node` pinning · adr:0050 · adr · Accepted · 50 · 2026-06-09 · ADR-0050: TypeScript major-version policy + @types/node pinning · Context and Problem Statement · Decision · 1. @types/node pinned to ^20.x everywhere · 2. TypeScript 6.x at root — accepted, with fallback plan · 3. Fallback plan to TS 5.9 · Rationale · Consequences", + "contentHash": "f88b0f1b125a4ec2b43a95887cda6082951e93083f8a2e12581c9dccfe428768" }, { "id": "adr:0051", @@ -573,8 +573,8 @@ "title": "ADR-0053: API versioning policy — `/api/*` ↔ `/api/v1/*` mirror", "tier": "core", "status": "Accepted", - "text": "ADR-0053: API versioning policy — `/api/*` ↔ `/api/v1/*` mirror · adr:0053 · adr · Accepted · 53 · 2026-06-08 · ADR-0053: API versioning policy — /api/ ↔ /api/v1/ mirror · Context · Decision · Consequences · Альтернативи · Trigger to revisit · Refs", - "contentHash": "f4ce5d5ef08b46ef5fc74c83e453f2dfbf6502a5465a4547603928e397bc7e9f" + "text": "ADR-0053: API versioning policy — `/api/*` ↔ `/api/v1/*` mirror · adr:0053 · adr · Accepted · 53 · 2026-06-09 · ADR-0053: API versioning policy — /api/ ↔ /api/v1/ mirror · Context · Decision · Consequences · Альтернативи · Trigger to revisit · Refs", + "contentHash": "b2d444eeca0dd68e7d0d81e46671159adfe3e0584cf15807c069950ee3d45679" }, { "id": "adr:0054", @@ -617,8 +617,8 @@ "title": "ADR-0058: Knowledge graph schema and storage format", "tier": "core", "status": "Active", - "text": "ADR-0058: Knowledge graph schema and storage format · adr:0058 · adr · Active · 58 · 2026-06-08 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", - "contentHash": "af9ab76a26f70f5ee71434f995bcf3499f42c4cb1c7c56fad18ee2121bcde1e3" + "text": "ADR-0058: Knowledge graph schema and storage format · adr:0058 · adr · Active · 58 · 2026-06-09 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", + "contentHash": "f9f00bfab8a89c24f2f1fd1f66366df0211e15e0adb5153becdd070437417f2e" }, { "id": "adr:0059", @@ -628,8 +628,8 @@ "title": "ADR-0059: Symbol extraction via TypeScript compiler API (no ts-morph)", "tier": "core", "status": "Active", - "text": "ADR-0059: Symbol extraction via TypeScript compiler API (no ts-morph) · adr:0059 · adr · Active · 59 · 2026-06-08 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", - "contentHash": "b874cb7fdd211e8ec25a76deff3693198e5756f363e9fdf2c53b10fef9cba25a" + "text": "ADR-0059: Symbol extraction via TypeScript compiler API (no ts-morph) · adr:0059 · adr · Active · 59 · 2026-06-09 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", + "contentHash": "d12ab611e744b3a2dd5a2f20be1b40956ba87fdcc985b72457e99da03226c20e" }, { "id": "adr:0060", @@ -639,8 +639,8 @@ "title": "ADR-0060: Architecture diagrams — automation scope (workspace graph only)", "tier": "core", "status": "Active", - "text": "ADR-0060: Architecture diagrams — automation scope (workspace graph only) · adr:0060 · adr · Active · 60 · 2026-06-08 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", - "contentHash": "07175714cb4cb87a29aa902d47b215d0a8b27906f543e0d885ff5d52d66e7b6d" + "text": "ADR-0060: Architecture diagrams — automation scope (workspace graph only) · adr:0060 · adr · Active · 60 · 2026-06-09 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", + "contentHash": "9203d466cce937b4fc4fef8015baad221a9aba9ba65fa8e8d91c1da7f44532c5" }, { "id": "adr:0061", @@ -650,8 +650,8 @@ "title": "ADR-0061: PR ↔ doc backlinks — hybrid storage (ledger + in-doc block)", "tier": "core", "status": "Active", - "text": "ADR-0061: PR ↔ doc backlinks — hybrid storage (ledger + in-doc block) · adr:0061 · adr · Active · 61 · 2026-06-08 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", - "contentHash": "a15836fbe3dc1511e22ce8232106c40660d29633528e64e6bdec6d3a5815ed8a" + "text": "ADR-0061: PR ↔ doc backlinks — hybrid storage (ledger + in-doc block) · adr:0061 · adr · Active · 61 · 2026-06-09 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links · Recent PRs", + "contentHash": "67e1a8970e2cc5f2628426941d4f24ead0b561b9d9e50eba807b0ddc5de880ae" }, { "id": "adr:0062", @@ -672,8 +672,8 @@ "title": "ADR-0063: Expo SDK 52 → 53 upgrade — pre-flight compatibility", "tier": "core", "status": "Accepted", - "text": "ADR-0063: Expo SDK 52 → 53 upgrade — pre-flight compatibility · adr:0063 · adr · Accepted · 63 · 2026-06-08 · Context and Problem Statement · Considered Options · Decision · New Architecture — KEEP newArchEnabled: true (accepted risk) · Patch plan — @expocli@0.22.28.patch · TypeScript implications · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links", - "contentHash": "c54a9699492a1504353aca338c1ea8419bbb0fd7090e9aaa92b7f8e3dc551094" + "text": "ADR-0063: Expo SDK 52 → 53 upgrade — pre-flight compatibility · adr:0063 · adr · Accepted · 63 · 2026-06-09 · Context and Problem Statement · Considered Options · Decision · New Architecture — KEEP newArchEnabled: true (accepted risk) · Patch plan — @expocli@0.22.28.patch · TypeScript implications · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links", + "contentHash": "c7513da9abf54806d19bbab41e12ce6df55e1fccff6e7a77fc77214c5853cb6c" }, { "id": "adr:0064", @@ -705,8 +705,8 @@ "title": "ADR-0066: Agent semantic retrieval over the knowledge graph", "tier": "core", "status": "Active", - "text": "ADR-0066: Agent semantic retrieval over the knowledge graph · adr:0066 · adr · Active · 66 · 2026-06-08 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links", - "contentHash": "5cefb9a82b19f2423ac740ad301ff75c08525c3e46ecab2513f6c16a0e2c572e" + "text": "ADR-0066: Agent semantic retrieval over the knowledge graph · adr:0066 · adr · Active · 66 · 2026-06-09 · Context and Problem Statement · Considered Options · Decision · Rationale · Consequences · Positive · Negative · Neutral · Compliance · Links", + "contentHash": "ed17dcd7f9315d1ba5465a52feac46739a4848120b19953b539a5271b0243c64" }, { "id": "audit:2026-05-06-ux-roast-pr-plan", diff --git a/packages/shared/src/utils/date.property.test.ts b/packages/shared/src/utils/date.property.test.ts index 522e42357..d44c84278 100644 --- a/packages/shared/src/utils/date.property.test.ts +++ b/packages/shared/src/utils/date.property.test.ts @@ -31,7 +31,7 @@ function arbitraryLocalDate(): Date { const year = 1970 + Math.floor(rng() * 130); const month = Math.floor(rng() * 12); // 0..11 const day = 1 + Math.floor(rng() * 28); // 1..28, always valid - const hour = Math.floor(rng() * 24); + const hour = Math.floor(rng() * 21); // 0..20: UTC 21–23 crosses to next Kyiv day const minute = Math.floor(rng() * 60); return new Date(year, month, day, hour, minute); } @@ -64,25 +64,28 @@ describe("shared/utils/date – toLocalISODate property", () => { }); it("is time-of-day invariant: only the calendar day matters", () => { + // Use 06:00 and 20:00 UTC — both safely within the same Kyiv calendar day + // regardless of DST offset (UTC+2 winter: 08:00/22:00; UTC+3 summer: 09:00/23:00). + // UTC 21–23 would cross Kyiv midnight, so we avoid those hours here. for (let i = 0; i < NUM_RUNS; i++) { const base = arbitraryLocalDate(); - const midnight = new Date( + const earlyMorning = new Date( base.getFullYear(), base.getMonth(), base.getDate(), - 0, + 6, 0, 0, ); - const lateNight = new Date( + const lateEvening = new Date( base.getFullYear(), base.getMonth(), base.getDate(), - 23, - 59, - 59, + 20, + 0, + 0, ); - expect(toLocalISODate(lateNight)).toBe(toLocalISODate(midnight)); + expect(toLocalISODate(lateEvening)).toBe(toLocalISODate(earlyMorning)); } }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82b40cb35..58bd7e477 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -982,43 +982,6 @@ importers: specifier: ^4.1.5 version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@20.19.41)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.3(@types/node@20.19.41)(typescript@6.0.3))(vite@8.0.10(@types/node@20.19.41)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) - tools/openclaw: - dependencies: - '@anthropic-ai/sdk': - specifier: ^0.95.2 - version: 0.95.2(zod@4.4.3) - '@sentry/node': - specifier: ^8.55.1 - version: 8.55.2 - '@sergeant/shared': - specifier: workspace:* - version: link:../../packages/shared - dotenv: - specifier: ^16.4.7 - version: 16.6.1 - grammy: - specifier: ^1.31.0 - version: 1.42.0 - devDependencies: - '@sergeant/config': - specifier: workspace:* - version: link:../../packages/config - '@types/node': - specifier: ^20.19.41 - version: 20.19.41 - esbuild: - specifier: ^0.28.0 - version: 0.28.0 - tsx: - specifier: ^4.19.2 - version: 4.22.4 - typescript: - specifier: ^6.0.3 - version: 6.0.3 - vitest: - specifier: ^4.1.5 - version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@20.19.41)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.3(@types/node@20.19.41)(typescript@6.0.3))(vite@8.0.10(@types/node@20.19.41)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) - packages: '@0no-co/graphql.web@1.2.0': @@ -1032,15 +995,6 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@anthropic-ai/sdk@0.95.2': - resolution: {integrity: sha512-Egddwo3sheo1PzUrMkZnH6VkQYwS0h/b/i8vSK8Ta9M45UQipAMeDFH57dYuDAfXMEUUGeKw6CMlremgMZgrSQ==} - hasBin: true - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - peerDependenciesMeta: - zod: - optional: true - '@aparajita/capacitor-secure-storage@7.1.6': resolution: {integrity: sha512-KIfLOm/oSciUiWsOMtMv2nzlnwW3LERid0DvZ3djt7UORBQvFqpvSefiLG5kkc8D34pGkb2ZqAz0ZprrI9LiTQ==} engines: {node: '>=20.0.0'} @@ -2637,9 +2591,6 @@ packages: '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} - '@grammyjs/types@3.26.0': - resolution: {integrity: sha512-jlnyfxfev/2o68HlvAGRocAXgdPPX5QabG7jZlbqC2r9DZyWBfzTlg+nu3O3Fy4EhgLWu28hZ/8wr7DsNamP9A==} - '@grpc/grpc-js@1.14.3': resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} @@ -5001,9 +4952,6 @@ packages: resolution: {integrity: sha512-tj2Sa6X4gVZqS9SiT2xlEeChSUklSGq8Hz6zKNbHW6NRiGyrSXiFcspnrWru1wPBT76RX/VxweESKxawCxfDxg==} engines: {node: '>=22'} - '@stablelib/base64@1.0.1': - resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} - '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -8213,9 +8161,6 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-sha256@1.3.0: - resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} - fast-string-truncated-width@3.0.3: resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} @@ -8643,10 +8588,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grammy@1.42.0: - resolution: {integrity: sha512-1AdCge+AkjSdp2FwfICSFnVbl8Mq3KVHJDy+DgTI9+D6keJ0zWALPRKas5jv/8psiCzL4N2cEOcGW7O45Kn39g==} - engines: {node: ^12.20.0 || >=14.13.1} - graphql-tag@2.12.6: resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -9546,10 +9487,6 @@ packages: json-rpc-2.0@1.7.1: resolution: {integrity: sha512-JqZjhjAanbpkXIzFE7u8mE/iFblawwlXtONaCvRqI+pyABVz7B4M1EUNpyVW+dZjqgQ2L5HFmZCmOCgUKm00hg==} - json-schema-to-ts@3.1.1: - resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} - engines: {node: '>=16'} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -11943,9 +11880,6 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - standardwebhooks@1.0.0: - resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} - statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -12410,9 +12344,6 @@ packages: truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - ts-algebra@2.0.0: - resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} - ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} @@ -13399,13 +13330,6 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@anthropic-ai/sdk@0.95.2(zod@4.4.3)': - dependencies: - json-schema-to-ts: 3.1.1 - standardwebhooks: 1.0.0 - optionalDependencies: - zod: 4.4.3 - '@aparajita/capacitor-secure-storage@7.1.6': dependencies: '@capacitor/android': 7.6.2(@capacitor/core@7.6.2) @@ -15285,8 +15209,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@grammyjs/types@3.26.0': {} - '@grpc/grpc-js@1.14.3': dependencies: '@grpc/proto-loader': 0.8.1 @@ -18056,8 +17978,6 @@ snapshots: '@sqlite.org/sqlite-wasm@3.51.2-build9': {} - '@stablelib/base64@1.0.1': {} - '@standard-schema/spec@1.1.0': {} '@standard-schema/utils@0.3.0': {} @@ -21667,8 +21587,6 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-sha256@1.3.0: {} - fast-string-truncated-width@3.0.3: {} fast-string-width@3.0.2: @@ -22165,16 +22083,6 @@ snapshots: graceful-fs@4.2.11: {} - grammy@1.42.0: - dependencies: - '@grammyjs/types': 3.26.0 - abort-controller: 3.0.0 - debug: 4.4.3(supports-color@10.2.2) - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - supports-color - graphql-tag@2.12.6(graphql@16.14.0): dependencies: graphql: 16.14.0 @@ -23336,11 +23244,6 @@ snapshots: json-rpc-2.0@1.7.1: {} - json-schema-to-ts@3.1.1: - dependencies: - '@babel/runtime': 7.29.7 - ts-algebra: 2.0.0 - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -26160,11 +26063,6 @@ snapshots: standard-as-callback@2.1.0: {} - standardwebhooks@1.0.0: - dependencies: - '@stablelib/base64': 1.0.1 - fast-sha256: 1.3.0 - statuses@1.5.0: {} statuses@2.0.2: {} @@ -26685,8 +26583,6 @@ snapshots: dependencies: utf8-byte-length: 1.0.5 - ts-algebra@2.0.0: {} - ts-api-utils@2.5.0(typescript@6.0.3): dependencies: typescript: 6.0.3