github TypeScript re-analysis due

matematicsolutions/patron

github

Self-hosted, GDPR-safe AI agent for law firms. Zero-cloud, hash-chained audit trail (AI Act art. 12), bring-your-own-model, 9 language editions. Hard fork of willchen96/mike, AGPL-3.0.

maintainer
matematicsolutions
license
AGPL-3.0
first seen
2026-06-15
last seen
2026-08-25
releases · 30d
3
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport http counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit feb7a73 · analyzer v30 · 2w ago

skills & prompt files 2

danger signals2

code evidence vv1.0.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 435

filesystem 34

  • fs (weak) matematicsolutions-patron-feb7a73/backend/scripts/eval-judge-pl.ts :16 import { readFileSync, writeFileSync } from "node:fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/scripts/rodo-export.ts :12 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/scripts/run-migrations.ts :27 import { readFile, readdir } from "fs/promises";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/scripts/smoke-desktop.ts :17 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/scripts/vec-bench.cjs :18 const fs = require("fs");
  • fs (weak) matematicsolutions-patron-feb7a73/backend/scripts/verify-audit-bundle.ts :15 import { readFileSync } from "node:fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/scripts/verify-audit-pack.ts :22 import { readFileSync } from "node:fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/brain/store.test.ts :3 import fs from "fs";
  • fs matematicsolutions-patron-feb7a73/backend/src/lib/brain/store.ts :12 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/chat/search-scope.test.ts :4 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/chat/tool-dispatch-mutation-gate.test.ts :8 import fs from "fs";
  • fs matematicsolutions-patron-feb7a73/backend/src/lib/convert/ocrRunner.ts :22 import fs from "fs";
  • fs matematicsolutions-patron-feb7a73/backend/src/lib/db/sqlite-connection.ts :17 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/db/supabase-shim.test.ts :4 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/documentIngest.test.ts :5 import fs from "fs";
  • fs matematicsolutions-patron-feb7a73/backend/src/lib/documentIngest.ts :16 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/graph/crossDocLinks.test.ts :4 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/mcp/baseline.test.ts :4 import fs from "fs";
  • fs matematicsolutions-patron-feb7a73/backend/src/lib/mcp/index.ts :11 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/mutation-approval.test.ts :4 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/pl-entities/audit-log.test.ts :11 import { mkdtemp, readFile, rm } from "fs/promises";
  • fs matematicsolutions-patron-feb7a73/backend/src/lib/pl-entities/audit-log.ts :30 import { appendFile } from "fs/promises";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/retrieval/dualSimilarity.eval.test.ts :19 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/retrieval/events.wiring.eval.test.ts :21 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/retrieval/hygiene.test.ts :4 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/retrieval/pageProvenance.test.ts :4 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/retrieval/retrieval.test.ts :5 import fs from "fs";
  • fs (weak) matematicsolutions-patron-feb7a73/backend/src/lib/rodo/forget.test.ts :5 import fs from "fs";
  • fs matematicsolutions-patron-feb7a73/backend/src/lib/storage.ts :23 import fs from "fs";
  • fs matematicsolutions-patron-feb7a73/backend/src/routes/folders.ts :11 import { promises as fs } from "node:fs";
  • fs matematicsolutions-patron-feb7a73/desktop/main.js :5 const fs = require('fs');
  • fs (weak) matematicsolutions-patron-feb7a73/desktop/scripts/prepare-resources.cjs :30 const fs = require("fs");
  • fs (weak) matematicsolutions-patron-feb7a73/frontend/src/scripts/convert-courts-to-ts.js :1 const fs = require("fs");
  • fs (weak) matematicsolutions-patron-feb7a73/scripts/bundle-mcp.cjs :25 const fs = require("fs");

shell / exec 5

  • shell (weak) matematicsolutions-patron-feb7a73/backend/scripts/smoke-desktop.ts :13 import { spawn, spawnSync } from "child_process";
  • shell matematicsolutions-patron-feb7a73/backend/src/lib/convert/ocrRunner.ts :21 import { spawn } from "child_process";
  • shell matematicsolutions-patron-feb7a73/backend/src/lib/db/supabase-shim.ts :500 private exec(): Result {
  • shell matematicsolutions-patron-feb7a73/desktop/main.js :2 const { spawn } = require('child_process');
  • shell (weak) matematicsolutions-patron-feb7a73/desktop/scripts/prepare-resources.cjs :32 const { execFileSync, execSync } = require("child_process");

network 17

  • net (weak) matematicsolutions-patron-feb7a73/backend/scripts/smoke-desktop.ts :14 import net from "net";
  • net matematicsolutions-patron-feb7a73/backend/src/lib/llm/openai.ts :118 const response = await fetch(OPENAI_RESPONSES_URL, {
  • net matematicsolutions-patron-feb7a73/backend/src/lib/llm/openrouter.ts :173 const response = await fetch(OPENROUTER_URL, {
  • net matematicsolutions-patron-feb7a73/desktop/main.js :4 const http = require('http');
  • net matematicsolutions-patron-feb7a73/frontend/src/app/components/assistant/AssistantMessage.tsx :122 const resp = await fetch(
  • net matematicsolutions-patron-feb7a73/frontend/src/app/components/assistant/EditCard.tsx :250 const resp = await fetch(
  • net matematicsolutions-patron-feb7a73/frontend/src/app/components/shared/DocPanel.tsx :365 const resp = await fetch(
  • net matematicsolutions-patron-feb7a73/frontend/src/app/components/shared/DocxView.tsx :156 const resp = await fetch(
  • net matematicsolutions-patron-feb7a73/frontend/src/app/hooks/useDocumentVersions.ts :62 const resp = await fetch(
  • net matematicsolutions-patron-feb7a73/frontend/src/app/hooks/useFetchDocxBytes.ts :96 const bin = await fetch(url, {
  • net matematicsolutions-patron-feb7a73/frontend/src/app/hooks/useFetchSingleDoc.ts :52 const response = await fetch(
  • net matematicsolutions-patron-feb7a73/frontend/src/app/lib/patronApi.ts :54 const response = await fetch(`${API_BASE}${path}`, {
  • net matematicsolutions-patron-feb7a73/frontend/src/app/support/page.tsx :61 const response = await fetch("/api/support", {
  • net matematicsolutions-patron-feb7a73/frontend/src/components/audit-export-button.tsx :79 const res = await fetch(`/api/audit/export/${eventId}`, {
  • net matematicsolutions-patron-feb7a73/frontend/src/components/merkle-verify-button.tsx :38 const res = await fetch(`/api/audit/merkle/verify/${eventId}`, {
  • net matematicsolutions-patron-feb7a73/frontend/src/hooks/useAuditLog.ts :81 const res = await fetch(`/api/audit/log?${params.toString()}`, {
  • net matematicsolutions-patron-feb7a73/frontend/src/hooks/useMcpSecurityStatus.ts :55 const res = await fetch(ENDPOINT, {

secrets 18

  • secrets (weak) matematicsolutions-patron-feb7a73/backend/scripts/rodo-delete.ts :31 process.env.SUPABASE_SERVICE_ROLE_KEY ??
  • secrets (weak) matematicsolutions-patron-feb7a73/backend/scripts/rodo-export.ts :20 process.env.SUPABASE_SERVICE_ROLE_KEY ??
  • secrets (weak) matematicsolutions-patron-feb7a73/backend/scripts/run-migrations.ts :45 process.env.SUPABASE_SECRET_KEY ??
  • secrets (weak) matematicsolutions-patron-feb7a73/backend/scripts/trigger-merkle.ts :30 process.env.SUPABASE_SECRET_KEY ??
  • secrets (weak) matematicsolutions-patron-feb7a73/backend/scripts/verify-audit-chain.ts :23 process.env.SUPABASE_SERVICE_ROLE_KEY ??
  • secrets (weak) matematicsolutions-patron-feb7a73/backend/src/lib/db/atrest.test.ts :5 const ENV = process.env.PATRON_DB_ENCRYPTION_KEY;
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/db/atrest.ts :30 const key = process.env.PATRON_DB_ENCRYPTION_KEY;
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/downloadTokens.ts :13 const secret = process.env.DOWNLOAD_SIGNING_SECRET;
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/llm/claude.ts :24 const key = override?.trim() || process.env.ANTHROPIC_API_KEY?.trim() || "";
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/llm/gemini.ts :32 const key = override?.trim() || process.env.GEMINI_API_KEY?.trim() || "";
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/llm/openai.ts :39 const key = override?.trim() || process.env.OPENAI_API_KEY?.trim() || "";
  • secrets (weak) matematicsolutions-patron-feb7a73/backend/src/lib/llm/openrouter-credits.test.ts :6 const ENV = process.env.OPENROUTER_API_KEY;
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/llm/openrouter.ts :34 override?.trim() || process.env.OPENROUTER_API_KEY?.trim() || "";
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/storage.ts :31 process.env.R2_SECRET_ACCESS_KEY,
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/supabase.ts :28 const key = process.env.SUPABASE_SECRET_KEY || "";
  • secrets matematicsolutions-patron-feb7a73/backend/src/lib/userApiKeys.ts :29 process.env.ANTHROPIC_API_KEY?.trim() ||
  • secrets matematicsolutions-patron-feb7a73/backend/src/middleware/auth.ts :11 const serviceKey = process.env.SUPABASE_SECRET_KEY ?? "";
  • secrets matematicsolutions-patron-feb7a73/frontend/src/lib/storage.ts :26 secretAccessKey: process.env.R2_SECRET_ACCESS_KEY!,

database 10

  • db (weak) matematicsolutions-patron-feb7a73/backend/scripts/smoke-desktop.ts :16 import Database from "better-sqlite3";
  • db (weak) matematicsolutions-patron-feb7a73/backend/scripts/vec-bench.cjs :14 const Database = require("better-sqlite3");
  • db (weak) matematicsolutions-patron-feb7a73/backend/src/lib/db/atrest.test.ts :2 import Database from "better-sqlite3";
  • db matematicsolutions-patron-feb7a73/backend/src/lib/db/atrest.ts :18 import type Database from "better-sqlite3";
  • db (weak) matematicsolutions-patron-feb7a73/backend/src/lib/db/migrate.sqlite.test.ts :2 import Database from "better-sqlite3";
  • db matematicsolutions-patron-feb7a73/backend/src/lib/db/migrate.sqlite.ts :19 import type Database from "better-sqlite3";
  • db matematicsolutions-patron-feb7a73/backend/src/lib/db/sqlite-connection.ts :14 import Database from "better-sqlite3";
  • db matematicsolutions-patron-feb7a73/backend/src/lib/db/supabase-shim.ts :17 import type DatabaseType from "better-sqlite3";
  • db (weak) matematicsolutions-patron-feb7a73/backend/src/lib/retrieval/hygiene.test.ts :7 import Database from "better-sqlite3";
  • db (weak) matematicsolutions-patron-feb7a73/desktop/scripts/prepare-resources.cjs :235 // Przebuduj natywny modul pod Electron, inaczej `require('better-sqlite3')`