From bbe313b23a5f8f09e79a59549e62acc50756ac68 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 9 Apr 2026 02:18:23 +0000 Subject: [PATCH 1/2] docs: add cognitive security manifesto and threat taxonomy v1 Co-authored-by: BrianCLong <6404035+BrianCLong@users.noreply.github.com> --- docs/cognitive-security/manifesto.md | 47 +++++++++++ docs/cognitive-security/threat-taxonomy-v1.md | 77 +++++++++++++++++++ submit.json | 2 +- 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 docs/cognitive-security/manifesto.md create mode 100644 docs/cognitive-security/threat-taxonomy-v1.md diff --git a/docs/cognitive-security/manifesto.md b/docs/cognitive-security/manifesto.md new file mode 100644 index 00000000000..eaaf7273d35 --- /dev/null +++ b/docs/cognitive-security/manifesto.md @@ -0,0 +1,47 @@ +--- +version: 1.0.0 +date: 2026-03-31 +status: draft +--- + +# Cognitive Security Manifesto + +## The Category Thesis + +Artificial Intelligence has fundamentally altered the security landscape. Traditional cybersecurity focused on protecting systems from unauthorized access, but it is ill-equipped to handle systems that can reason, synthesize, and act autonomously. AI safety is broken because it relies on probabilistic alignment rather than structural guarantees. We do not need better vibes; we need an epistemic immune system. Cognitive security is not just about stopping prompt injection—it is about ensuring the structural integrity of machine reasoning. + +## Core Category Sentence + +We secure the structural integrity of AI reasoning to prevent cognitive failure, enforcing admissibility and determinism over probabilistic alignment. + +## The Paradigm Shift: Admissibility Over Alignment + +The prevailing paradigm of AI safety attempts to teach models to behave well through reinforcement learning from human feedback (RLHF). This is fundamentally flawed. It treats symptoms rather than causes, attempting to patch a leaky boat with polite suggestions. + +We advocate a shift from probabilistic alignment to deterministic admissibility. + +1. **Verification Before Execution:** AI outputs must not be trusted implicitly. They must be validated against deterministic cognitive structures. + +2. **Epistemic Integrity:** The provenance, lineage, and structural soundness of information entering and leaving an AI system must be unbroken. + +3. **Graph-Based Grounding:** Reality is relational. Our security models must enforce relational invariants through Reality Graphs, Belief Graphs, and Narrative Graphs. + +## The Messaging Hierarchy + +To build a true Cognitive Security posture, organizations must adopt three core pillars: + +### 1. Structural Admissibility Gates + +AI systems must operate behind Admissibility Gates that enforce cryptographic and structural validation of all context and outputs. If a cognitive packet cannot be verified against the Reality Graph, it is quarantined. + +### 2. The Cognitive Security Protocol (CSP) + +A standardized, machine-readable schema for defining what constitutes valid cognition within an enterprise. The CSP acts as the foundational constitution that all AI agents must strictly adhere to. + +### 3. Quarantine and Subsumption + +When cognitive failure occurs—whether through external attack or internal stochastic drift—the system must isolate the anomaly in a Quarantine Graph. From there, human and automated operators analyze, subsume, and integrate the failure to inoculate the broader Epistemic Immune System. + +## The Path Forward + +We stand at the precipice of cognitive automation. The systems we build today will define the epistemics of tomorrow. We must stop relying on the black-box promises of model providers and start engineering deterministic cognitive constraints. Security is no longer just about the network; it is about the mind of the machine. diff --git a/docs/cognitive-security/threat-taxonomy-v1.md b/docs/cognitive-security/threat-taxonomy-v1.md new file mode 100644 index 00000000000..f0608d9100d --- /dev/null +++ b/docs/cognitive-security/threat-taxonomy-v1.md @@ -0,0 +1,77 @@ +--- +version: 1.0.0 +date: 2026-03-31 +status: draft +--- + +# Cognitive Security Threat Taxonomy v1 + +This taxonomy defines the four Canonical Failure classes in Cognitive Security. + +## 1. Corrupted Cognition + +**Definition:** +Occurs when the input context, prompt structures, or reasoning chains are maliciously manipulated or poisoned, leading the AI system to process invalid or hijacked epistemics. + +**Sub-types:** + +* Context Poisoning +* Prompt Injection +* Instruction Hijacking + +**Examples:** + +* An attacker embeds a hidden prompt injection payload inside a seemingly benign PDF resume, causing the HR parsing AI to output a recommendation for hire regardless of qualifications. +* A user adds invisible text to a webpage that instructs a summarization agent to exfiltrate private session tokens via markdown image links. +* A third-party API dependency returns intentionally hallucinated JSON that exploits the parser's loose schema, causing downstream logic errors in an autonomous agent. + +## 2. Non-Compliant Cognition + +**Definition:** +Occurs when the AI system generates outputs or takes actions that violate established enterprise policies, guardrails, or regulatory frameworks, despite operating on non-corrupted inputs. + +**Sub-types:** + +* Guardrail Evasion +* Policy Bypass +* Regulatory Infraction + +**Examples:** + +* A financial advisory agent provides specific, actionable stock trading advice despite a strict system prompt forbidding financial recommendations, due to a highly persuasive conversational turn. +* A customer service bot reveals a hidden discount code meant only for internal employees because the user asked it to roleplay as a developer testing the system. +* An AI tool generates code that includes a hardcoded secret or vulnerability, violating the organization's secure coding standards. + +## 3. Non-Reproducible Cognition + +**Definition:** +Occurs when an AI system produces non-deterministic, heavily drifted, or hallucinated outputs that cannot be reliably reproduced or traced back to grounded facts. + +**Sub-types:** + +* Stochastic Drift +* Hallucination Cascades +* Contextual Amnesia + +**Examples:** + +* A legal analysis bot invents a non-existent legal precedent (hallucination) and uses it as the foundational argument for all subsequent case analysis in the session. +* An agent running the same evaluation task on the same data returns three wildly different summarization metrics across three separate runs. +* A multi-agent system progressively loses track of its original objective over a long context window, leading to an emergent, off-topic loop. + +## 4. Non-Admissible Cognition + +**Definition:** +Occurs when the output fails structural, schema, or relational validation checks defined by the Cognitive Security Protocol (CSP), resulting in the rejection of the data packet by the Admissibility Gates. + +**Sub-types:** + +* Schema Violation +* Relational Inconsistency +* Unverified Epistemics + +**Examples:** + +* An agent outputs a JSON response missing a required evidence ID field, causing the data to be rejected by the WriteSet firewall. +* A knowledge graph generator asserts a relationship between two entities that explicitly contradicts a verified invariant in the central Reality Graph. +* A data extraction pipeline submits an event with a timestamp that predates the creation of the system, violating temporal constraints in the Admissibility Gate. diff --git a/submit.json b/submit.json index 7845e759354..46f6acfb5e0 100644 --- a/submit.json +++ b/submit.json @@ -1 +1 @@ -{ "status": "done" } +{"branch_name":"jules-5346770267403756260-84071d5c","message":"docs: add cognitive security manifesto and threat taxonomy v1"} \ No newline at end of file From 53f2648897e846188eb870bfce0f7bd41244b82c Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 9 Apr 2026 20:28:48 +0000 Subject: [PATCH 2/2] fix: ci attest build provenance version and pnpm lock Co-authored-by: BrianCLong <6404035+BrianCLong@users.noreply.github.com> --- .github/workflows/ci-attest.yml | 2 +- pnpm-lock.yaml | 86 ++++++++++++++++----------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/.github/workflows/ci-attest.yml b/.github/workflows/ci-attest.yml index 5694a4451c1..da76114a9aa 100644 --- a/.github/workflows/ci-attest.yml +++ b/.github/workflows/ci-attest.yml @@ -27,6 +27,6 @@ jobs: sha256sum dist/app.txt > reports/provenance/attestation.json - name: Generate build provenance attestation - uses: actions/attest-build-provenance@6f6ed36d4dbaea10032f2447f91f6f24e6f1d64c + uses: actions/attest-build-provenance@v1 with: subject-path: dist/* diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93e0c3d12d4..8e3a62ee961 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -527,7 +527,7 @@ importers: version: 30.2.0(@types/node@20.19.27)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@20.19.27)(typescript@5.9.3)) ts-jest: specifier: ^29.4.5 - version: 29.4.6(@babel/core@7.29.0)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.29.0))(esbuild@0.27.4)(jest-util@30.3.0)(jest@30.2.0(@types/node@20.19.27)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@20.19.27)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.6(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.27.4)(jest-util@30.3.0)(jest@30.2.0(@types/node@20.19.27)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@20.19.27)(typescript@5.9.3)))(typescript@5.9.3) tsx: specifier: ^4.6.2 version: 4.21.0 @@ -549,6 +549,9 @@ importers: express: specifier: '>=4.21.0' version: 5.2.1 + express-rate-limit: + specifier: ^7.4.0 + version: 7.5.1(express@5.2.1) devDependencies: '@types/express': specifier: ^5.0.3 @@ -570,7 +573,7 @@ importers: version: 7.2.2 ts-jest: specifier: ^29.4.5 - version: 29.4.6(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.27.4)(jest-util@30.3.0)(jest@30.2.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@25.5.0)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.6(@babel/core@7.29.0)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.29.0))(esbuild@0.27.4)(jest-util@30.3.0)(jest@30.2.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@25.5.0)(typescript@5.9.3)))(typescript@5.9.3) tsx: specifier: ^4.6.2 version: 4.21.0 @@ -677,7 +680,7 @@ importers: version: 4.0.9(graphql-ws@6.0.6(@fastify/websocket@11.2.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)(subscriptions-transport-ws@0.9.19(graphql@16.12.0)) '@tanstack/react-query': specifier: 5.8.4 - version: 5.8.4(react-dom@19.2.0(react@19.2.0))(react-native@0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0) + version: 5.8.4(react-dom@19.2.0(react@19.2.0))(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0) electron-log: specifier: 5.4.3 version: 5.4.3 @@ -872,6 +875,9 @@ importers: express: specifier: '>=4.21.0' version: 5.2.1 + express-rate-limit: + specifier: ^7.4.0 + version: 7.5.1(express@5.2.1) graphql: specifier: 16.12.0 version: 16.12.0 @@ -1042,6 +1048,9 @@ importers: express-jwt: specifier: 8.4.1 version: 8.4.1 + express-rate-limit: + specifier: ^7.4.0 + version: 7.5.1(express@5.2.1) graphql: specifier: 16.12.0 version: 16.12.0 @@ -1356,6 +1365,9 @@ importers: express: specifier: '>=4.21.0' version: 5.2.1 + express-rate-limit: + specifier: ^7.4.0 + version: 7.5.1(express@5.2.1) apps/ml-engine: dependencies: @@ -2367,6 +2379,9 @@ importers: express: specifier: '>=4.21.0' version: 5.2.1 + express-rate-limit: + specifier: ^7.4.0 + version: 7.5.1(express@5.2.1) prom-client: specifier: ^15.1.3 version: 15.1.3 @@ -2392,6 +2407,9 @@ importers: express: specifier: '>=4.21.0' version: 5.2.1 + express-rate-limit: + specifier: ^7.4.0 + version: 7.5.1(express@5.2.1) apps/summit-ui: dependencies: @@ -41226,6 +41244,7 @@ packages: basic-ftp@5.2.0: resolution: {integrity: sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==} engines: {node: '>=10.0.0'} + deprecated: Security vulnerability fixed in 5.2.1, please upgrade batch-cluster@13.0.0: resolution: {integrity: sha512-EreW0Vi8TwovhYUHBXXRA5tthuU2ynGsZFlboyMJHCCUXYa2AjgwnE3ubBOJs2xJLcuXFJbi6c/8pH5+FVj8Og==} @@ -74420,7 +74439,9 @@ snapshots: transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' + - bufferutil - supports-color + - utf-8-validate '@react-native/normalize-colors@0.76.6': {} @@ -74435,24 +74456,24 @@ snapshots: optionalDependencies: '@types/react': 18.3.11 - '@react-native/virtualized-lists@0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4))(react@19.2.4)': + '@react-native/virtualized-lists@0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 19.2.4 - react-native: 0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4) + react: 19.2.0 + react-native: 0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.0) optionalDependencies: '@types/react': 18.3.11 + optional: true - '@react-native/virtualized-lists@0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0)': + '@react-native/virtualized-lists@0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4))(react@19.2.4)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 19.2.0 - react-native: 0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.0) + react: 19.2.4 + react-native: 0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4) optionalDependencies: '@types/react': 18.3.11 - optional: true '@react-native/virtualized-lists@0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.4))(react@19.2.4)': dependencies: @@ -77050,13 +77071,13 @@ snapshots: react: 19.2.0 react-dom: 19.2.4(react@19.2.0) - '@tanstack/react-query@5.8.4(react-dom@19.2.0(react@19.2.0))(react-native@0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0)': + '@tanstack/react-query@5.8.4(react-dom@19.2.0(react@19.2.0))(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0)': dependencies: '@tanstack/query-core': 5.8.3 react: 19.2.0 optionalDependencies: react-dom: 19.2.0(react@19.2.0) - react-native: 0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.0) + react-native: 0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.0) '@tanstack/react-query@5.95.2(react@18.3.1)': dependencies: @@ -99372,7 +99393,7 @@ snapshots: - supports-color - utf-8-validate - react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4): + react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.0): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.76.6 @@ -99381,7 +99402,7 @@ snapshots: '@react-native/gradle-plugin': 0.76.6 '@react-native/js-polyfills': 0.76.6 '@react-native/normalize-colors': 0.76.6 - '@react-native/virtualized-lists': 0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4))(react@19.2.4) + '@react-native/virtualized-lists': 0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -99403,7 +99424,7 @@ snapshots: nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 - react: 19.2.4 + react: 19.2.0 react-devtools-core: 5.3.2 react-refresh: 0.14.2 regenerator-runtime: 0.13.11 @@ -99422,21 +99443,22 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true - react-native@0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.0): + react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.76.6 - '@react-native/codegen': 0.76.6(@babel/preset-env@7.28.5(@babel/core@7.29.0)) - '@react-native/community-cli-plugin': 0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0)) + '@react-native/codegen': 0.76.6(@babel/preset-env@7.28.5(@babel/core@7.28.5)) + '@react-native/community-cli-plugin': 0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5)) '@react-native/gradle-plugin': 0.76.6 '@react-native/js-polyfills': 0.76.6 '@react-native/normalize-colors': 0.76.6 - '@react-native/virtualized-lists': 0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.0))(react@19.2.0) + '@react-native/virtualized-lists': 0.76.6(@types/react@18.3.11)(react-native@0.76.6(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.11)(react@19.2.4))(react@19.2.4) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.29.0) + babel-jest: 29.7.0(@babel/core@7.28.5) babel-plugin-syntax-hermes-parser: 0.23.1 base64-js: 1.5.1 chalk: 4.1.2 @@ -99454,7 +99476,7 @@ snapshots: nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 - react: 19.2.0 + react: 19.2.4 react-devtools-core: 5.3.2 react-refresh: 0.14.2 regenerator-runtime: 0.13.11 @@ -99473,7 +99495,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true react-native@0.76.6(@babel/core@7.29.0)(@babel/preset-env@7.28.5(@babel/core@7.29.0))(@types/react@18.3.11)(react@19.2.4): dependencies: @@ -102686,27 +102707,6 @@ snapshots: esbuild: 0.27.4 jest-util: 30.3.0 - ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.27.4)(jest-util@30.3.0)(jest@30.2.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@25.5.0)(typescript@5.9.3)))(typescript@5.9.3): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.9 - jest: 30.2.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@25.5.0)(typescript@5.9.3)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.4 - type-fest: 4.41.0 - typescript: 5.9.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.28.5 - '@jest/transform': 30.3.0 - '@jest/types': 30.3.0 - babel-jest: 30.3.0(@babel/core@7.28.5) - esbuild: 0.27.4 - jest-util: 30.3.0 - ts-jest@29.4.6(@babel/core@7.29.0)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.29.0))(esbuild@0.27.4)(jest-util@30.3.0)(jest@29.7.0(@types/node@18.19.130)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@18.19.130)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6