github TypeScript re-analysis due

Keesan12/martin-loop

github

Make AI coding agents safe to scale autonomously: assign work, cap spend, enforce policy, verify output, roll back failures, learn from loops, and prove ROI across every repo.

maintainer
Keesan12
licence
Apache-2.0
first seen
2026-06-01
last seen
2026-09-19
releases · 30d
20
short id

Drift inferred · capture-to-capture

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

capabilities 12 tools
transport stdio · streamable-http · http verified reported listed in the official MCP registry counts 12 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • martin_cancel
  • martin_continue
  • martin_doctor
  • martin_inspect
  • martin_list_runs
  • martin_logs
  • martin_pause
  • martin_plan
  • martin_preflight
  • martin_run
  • martin_status
  • martin_triage_runs
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 2f6da7e · analyzer v33 · 3h ago

skills & prompt files 3

danger signals1

code evidence vmcp-v0.6.4 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 357

filesystem 166

  • fs (weak) Keesan12-martin-loop-2f6da7e/benchmarks/src/eval.ts :1 import { access, mkdir, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/benchmarks/src/fixtures.ts :1 import { readFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/benchmarks/src/ralphy-stress-report.ts :1 import { access, mkdir, writeFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/adapters/src/cli-bridge.ts :3 import { existsSync, readFileSync } from "node:fs";
  • fs Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-host.ts :12 } from "node:fs";
  • fs Keesan12-martin-loop-2f6da7e/packages/adapters/src/workspace-edit-protocol.ts :1 import { lstat, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/claude-cli.test.ts :7 import { mkdtemp, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/cli-bridge.test.ts :1 import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/codex-launcher.test.ts :1 import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible-workspace-edit.test.ts :4 import { mkdir, mkdtemp, readFile, rm, symlink, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible.test.ts :8 import { mkdtemp, rm } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/scripts/smoke-intake-live.mts :13 import { readFile, mkdir, rm } from "node:fs/promises";
show 28 more
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/scripts/verify-host-matrix-live.mjs :4 import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/cli-milestone-state.ts :1 import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :1 import { cp, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/mcp-config.ts :1 import { access, mkdir, readFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/mcp-install-state.ts :5 import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/persistence.ts :1 import { appendFile, mkdir, readFile, writeFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/phase-command-center.ts :1 import { readFile, readdir, stat } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/remote-experience.ts :5 import fs from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/run-store.ts :2 import { open, readFile, readdir, stat } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-client.ts :42 import { mkdir, readdir, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-privacy.ts :2 import { readFile } from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/telemetry.ts :6 import fs from "node:fs/promises";
  • fs Keesan12-martin-loop-2f6da7e/packages/cli/src/workflow-state.ts :6 import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/auto-governance.test.ts :2 import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-integration.test.ts :7 import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state-intake.test.ts :14 import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state.test.ts :10 import { readFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli.test.ts :2 import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/corpus-intelligence.test.ts :6 import { mkdtemp, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/exit-signal-cli.test.ts :1 import { mkdir, mkdtemp, readFile, rm } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/mcp-config.test.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/mcp-install-state.test.ts :1 import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/model-auto-selection.test.ts :3 import { readFileSync } from "node:fs";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/operator-commands.test.ts :2 import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/persistence.test.ts :1 import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/phase-command-center.test.ts :1 import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/proof-surfaces-cli.test.ts :1 import { mkdtemp, rm } from "node:fs/promises";
  • fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/release-hardening.test.ts :21 import { readFileSync, existsSync } from "node:fs";

126 more not shown — this panel samples each group; the count above is the real total.

shell / exec 66

  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/scripts/run-test-lane.mjs :1 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/claude-cli.ts :752 * Given a prompt string, returns the full argv array to pass to spawn().
  • shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/cli-bridge.ts :1 import { spawn, type ChildProcess, type SpawnOptions } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-capabilities.ts :1 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-cli.ts :1 import { spawn } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-host.ts :1 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/claude-cli.test.ts :3 import type { ChildProcess, SpawnOptions } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/codex-cli.test.ts :3 import type { ChildProcess, SpawnOptions } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible-workspace-edit.test.ts :1 import { execFileSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/scripts/verify-host-matrix-live.mjs :7 import { spawn } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :6 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/cli/src/mcp-config.ts :4 import { spawn } from "node:child_process";
show 28 more
  • shell Keesan12-martin-loop-2f6da7e/packages/cli/src/post-run-experience/renderer.ts :5 import { spawn } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/cli/src/update-prompt.ts :5 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/cli/src/ux.ts :161 import { exec } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-integration.test.ts :12 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state-intake.test.ts :13 import { spawn } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli.test.ts :1 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-client.test.ts :9 import { spawn } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/scripts/run-runtime-test-lane.mjs :1 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/core/src/grounding.ts :2 import { execFile } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/core/src/index.ts :1 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/core/src/rollback.ts :1 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/grounding.test.ts :1 import { execFile } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/mission-store.test.ts :22 import { spawn } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/rollback-read-failure.test.ts :1 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/rollback.test.ts :1 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/runtime.test.ts :1 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/mcp/mcpb/build-mcpb.mjs :4 import { execFileSync, spawn } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/build-package-lib.mjs :1 import { spawn } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/run-test-lane.mjs :1 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/smoke-package.mjs :3 import { spawn } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/smoke-published-package.mjs :3 import { spawn } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/mcp/src/tools/pr-tools.ts :1 import { spawnSync } from "node:child_process";
  • shell Keesan12-martin-loop-2f6da7e/packages/mcp/src/tools/workflow-governance.ts :3 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/tests/mcp-tools.test.ts :2 import type { ChildProcess, SpawnOptions } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/tests/server-validation.test.ts :2 import type { ChildProcess, SpawnOptions } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/scripts/assert-clean-worktree.mjs :3 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/scripts/build-native.mjs :10 import { spawnSync } from "node:child_process";
  • shell (weak) Keesan12-martin-loop-2f6da7e/scripts/cut-release-tags.mjs :2 import { execFileSync } from "node:child_process";

26 more not shown — this panel samples each group; the count above is the real total.

network 13

  • net (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible-workspace-edit.test.ts :2 import { createServer, type IncomingMessage, type ServerResponse } from "node:http";
  • net (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible.test.ts :6 import { createServer, type IncomingMessage, type ServerResponse } from "node:http";
  • net Keesan12-martin-loop-2f6da7e/packages/cli/src/cli-milestone-state.ts :664 fetch(getIntakeUrl(), {
  • net Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :2134 // Settle the delivery fetch (already done or within 3s timeout) and
  • net Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-client.ts :761 const res = await fetch(url, {
  • net (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state-intake.test.ts :12 import { createServer } from "node:http";
  • net (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-client.test.ts :8 import { createServer } from "node:http";
  • net Keesan12-martin-loop-2f6da7e/packages/core/src/delivery/message-client.ts :39 const response = await fetch(endpoint, {
  • net Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :21 import { createServer as createHttpServer, type IncomingMessage, type Server as NodeHttpServer, type ServerResponse } from "node:http";
  • net (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/tests/server-validation.test.ts :558 const notFound = await fetch(`http://127.0.0.1:${handle.port}/wrong`, { method: "GET" });
  • net (weak) Keesan12-martin-loop-2f6da7e/scripts/query-release-publication-state.mjs :11 const response = await fetch(url, { headers });
  • net (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-infrastructure-retry.mjs :10 const response = await fetch(`https://api.github.com/repos/${repository}${path}`, { headers: { Accept: "application/vnd.github+json", Authorization: `Bearer ${token}`, "X-GitHub-Api-Version": "2022-11
show 1 more
  • net (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-live-release.mjs :44 const response = await fetch(url, { headers: headersFor(url), redirect: "follow" });

secrets 10

  • secrets Keesan12-martin-loop-2f6da7e/packages/adapters/src/claude-cli.ts :1332 ...(process.env["ANTHROPIC_API_KEY"] ? ["--bare"] : ["--strict-mcp-config"]),
  • secrets (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible.test.ts :378 const previousApiKey = process.env.MARTIN_OPENAI_API_KEY;
  • secrets Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :1823 if (process.env["MARTIN_TELEMETRY_ENDPOINT"] && process.env["MARTIN_API_TOKEN"]) {
  • secrets Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-client.ts :821 const token = process.env["MARTIN_API_TOKEN"]?.trim();
  • secrets (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-client.test.ts :179 delete process.env["MARTIN_API_TOKEN"];
  • secrets (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-receipt-transport.test.ts :27 process.env["MARTIN_API_TOKEN"] = "test-token";
  • secrets Keesan12-martin-loop-2f6da7e/packages/mcp/src/tools/doctor.ts :219 (process.env.MARTIN_OPENAI_API_KEY || process.env.MARTIN_OPENAI_BASE_URL)
  • secrets (weak) Keesan12-martin-loop-2f6da7e/scripts/query-release-publication-state.mjs :8 const token = process.env.GH_TOKEN;
  • secrets (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-infrastructure-retry.mjs :7 const token = process.env.GH_TOKEN;
  • secrets (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-live-release.mjs :7 const githubToken = process.env.GITHUB_TOKEN ?? "";

tool registrations 12

  • martin_run Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :937
  • martin_inspect Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1021
  • martin_status Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1047
  • martin_doctor Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1087
  • martin_plan Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1116
  • martin_preflight Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1152
  • martin_logs Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1241
  • martin_pause Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1269
  • martin_cancel Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1292
  • martin_continue Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1315
  • martin_list_runs Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1338
  • martin_triage_runs Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1368

install hooks 2

  • prepack Keesan12-martin-loop-2f6da7e/package.json :82 pnpm build && node ./scripts/root-release-guard.mjs --pack
  • prepack Keesan12-martin-loop-2f6da7e/packages/mcp/package.json :62 pnpm build

declared dependencies 12

  • @open-policy-agent/opa-wasm@^1.10.0
  • @opentelemetry/api-logs@^0.214.0
  • @opentelemetry/exporter-logs-otlp-http@^0.214.0
  • @opentelemetry/resources@^2.6.1
  • @opentelemetry/sdk-logs@^0.214.0
  • @opentelemetry/semantic-conventions@^1.38.0
  • ts-morph@^21.0.0
  • @types/node@^22.13.10
  • tsx@^4.19.3
  • typescript@^5.8.2
  • vite@^7.3.2
  • vitest@^4.1.8

transport_posture 1

  • network-listening, binds all interfaces, no auth detected Keesan12-martin-loop-2f6da7e/packages/mcp/tests/server-validation.test.ts :516 host: "0.0.0.0",