Local coding tools for ChatGPT Developer Mode and MCP clients with safe editing and shell execution.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
agentic_doctor
Diagnose Node, package managers, Git and native SQLite availability.
-
bash
Fallback for shell interactions that have no typed tool; prefer run_package_script for package scripts and the Git tools for Git.
-
changed_files_summary
Fast Git status and diff abstraction.
-
context_budget
Estimate token count for files.
-
edit
Targeted string replacements.
-
edit_dry_run
Preview edits without writing.
-
expand_compressed_block
Expand omitted blocks from read_compressed.
-
file_dependencies
Inward and outward dependency map.
-
open_workspace
Opens a project. Supports mode="checkout" or mode="worktree".
-
project_bootstrap
Scans package managers, monorepo bounds, and base dependencies.
-
read
Hardened file reader with startLine, endLine, offset, limit.
-
read_many
Read multiple files at once.
-
risk_assess_command
Preview policy assessment before bash.
-
semantic_pack
Compact goal-relevant summary with token budget.
-
suggest_checks
Advisory planner returning a deterministic VerificationPlan.
-
task_context
Computes a RiskProfile (risk level, score, blast radius) from focused paths.
-
token_audit
Analyze token usage across files read.
-
tree
Directory tree visualization.
-
workspace_summary
Compact architectural summary of the workspace.
-
worktree_install_deps
Install dependencies in a managed worktree; use verify: true to load native bindings.
-
write
Create or overwrite files.
analyzed commit 181e21d · analyzer v33 · 2d ago
skills & prompt files 2
code files: 184
filesystem 76
- fs hugolsramos01-bit-mcp-agentic-server-181e21d/eval/run.mjs :12
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/extract-tools.cjs :1
const fs = require('fs'); - fs hugolsramos01-bit-mcp-agentic-server-181e21d/fix-tests.cjs :1
const fs = require('fs'); - fs hugolsramos01-bit-mcp-agentic-server-181e21d/perf/_executor-synthetic-workflow.mjs :1
import fs from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/perf/_executor-warm.mjs :1
import fs from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/perf/_executor.mjs :1
import fs from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/perf/agent-loop.mjs :1
import fs from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/perf/code-regions.mjs :14
import { readFileSync, statSync, mkdirSync, writeFileSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/perf/tool-latency.mjs :2
import { mkdirSync, writeFileSync, existsSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/clean.mjs :1
import { rmSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/dev-server.mjs :2
import { readdirSync, statSync, watch } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/fix-node-pty-permissions.mjs :1
import { chmod } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/smoke-package.mjs :3
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/test-http.mjs :5
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/test-runtime-mcp.mjs :3
import { mkdir, rm, writeFile, cp, readdir, stat } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/analysis-regression.test.ts :3
import { mkdtemp, writeFile, rm, mkdir } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/apply-patch.test.ts :2
import { chmod, mkdtemp, readFile, stat, symlink, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/apply-patch.ts :3
import { constants, type Stats } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/assistant-tools.test.ts :5
import { writeFileSync, mkdirSync, rmSync } from "fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/assistant-tools.ts :4
import { existsSync, readFileSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/ast-tools.test.ts :3
import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/ast-tools.ts :2
import { existsSync, readFileSync, statSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/bootstrap-tools.ts :2
import { existsSync, readFileSync, readdirSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/code-region-cache.test.ts :5
import { writeFileSync, mkdirSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/code-region-cache.ts :1
import { stat, readFile } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/git-change-paths.test.ts :5
import { mkdtempSync, rmSync, writeFileSync, mkdirSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/git-change-paths.ts :2
import { existsSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/task-context.test.ts :5
import { mkdtemp, writeFile, mkdir, rm } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/test-proximity.test.ts :5
import { mkdtemp, writeFile, mkdir } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/test-proximity.ts :2
import { access } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/verification-evidence.test.ts :3
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/verification-evidence.ts :1
import { existsSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/checkpoint-tools.test.ts :3
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/checkpoint-tools.ts :2
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, rmSync, copyFileSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/cli.test.ts :3
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/cli.ts :5
import { mkdtempSync, writeFileSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/config.test.ts :2
import { existsSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/db/client.ts :1
import { chmodSync, mkdirSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/diagnostics.ts :2
import { readFileSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/fastapi-tools.ts :1
import { readdir, readFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/git-worktrees.ts :4
import { mkdir, realpath, rm, stat } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/git.test.ts :3
import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/git.ts :3
import { realpathSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/import-resolver.test.ts :9
import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/import-resolver.ts :19
import { existsSync, statSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/knowledge-tools.ts :2
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/local-agent-path.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/local-agent-profiles.test.ts :2
import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/local-agent-profiles.ts :1
import { existsSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/local-agent-store.test.ts :2
import { mkdtempSync, rmSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/native-dependency-verifier.test.ts :2
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/oauth-store.test.ts :3
import { mkdtemp, rm, stat } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/process-runner/resolve-executable.ts :2
import * as fs from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/process-runner/run-process.ts :2
import { existsSync, readFileSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/regression.test.ts :14
import { mkdtemp, mkdir, writeFile } from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/review-checkpoints.test.ts :2
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/review-checkpoints.ts :1
import { mkdtemp, rm } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/roots.ts :10
import { realpathSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/security/path-resolution.ts :1
import { existsSync, realpathSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/security/secure-fs.ts :1
import { readFileSync, writeFileSync, statSync, lstatSync, readdirSync, existsSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/security/security-regression.test.ts :3
import { mkdtempSync, mkdirSync, realpathSync, writeFileSync } from 'node:fs'; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/semantic-tools.ts :2
import { existsSync, statSync, readFileSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/server.ts :4
import { readFileSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/server/atomic-mutation.test.ts :9
} from "node:fs/promises"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/server/mutation-receipt.test.ts :5
import { mkdtemp, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/server/mutation-receipt.ts :1
import { stat, access } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/server/tool-utils.ts :2
import { readFileSync, existsSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/skills.test.ts :1
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/skills.ts :1
import { existsSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/tournament-tools.ts :2
import { existsSync, writeFileSync, readFileSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/user-config.ts :7
} from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/visual-review.ts :2
import { existsSync, readFileSync, rmSync } from "node:fs"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/workspace-index.ts :10
import { existsSync, readFileSync, readdirSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/workspace-store.test.ts :3
import { mkdtempSync, rmSync } from "node:fs"; - fs (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/workspaces.test.ts :2
import { mkdtemp, mkdir, rm, stat, symlink, writeFile } from "node:fs/promises"; - fs hugolsramos01-bit-mcp-agentic-server-181e21d/src/workspaces.ts :2
import type { Stats } from "node:fs";
shell / exec 41
- shell hugolsramos01-bit-mcp-agentic-server-181e21d/fix-tests.cjs :7
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/perf/agent-loop.mjs :4
import { spawnSync } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/perf/server-hot-path.mjs :1
import { spawn } from 'child_process'; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/perf/tool-latency.mjs :1
import { spawnSync } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/dev-server.mjs :1
import { spawn } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/smoke-package.mjs :1
import { spawnSync, spawn } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/test-http.mjs :1
import { spawn } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/test-runtime-mcp.mjs :1
import { spawn } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/analysis-regression.test.ts :6
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/assistant-tools.ts :6
import { execFile } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/ast-tools.test.ts :2
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/ast-tools.ts :5
import { exec } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/bootstrap-tools.ts :4
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/file-dependencies-internal.ts :1
import { execFile } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/git-change-paths.test.ts :3
import { execFileSync } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/git-change-paths.ts :1
import { execFile } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/task-context.test.ts :8
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/task-context.ts :1
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/check-selector.ts :1
import { execFile } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/checkpoint-tools.test.ts :2
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/checkpoint-tools.ts :3
import { execFile, execFileSync } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/cli.test.ts :2
import { execFileSync } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/cli.ts :4
import { spawn } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/git-worktrees.ts :2
import { execFile } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/git.test.ts :2
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/git.ts :2
import { execFile } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/import-resolver.test.ts :12
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/local-agent-adapters.ts :1
import { spawn, spawnSync, type ChildProcessWithoutNullStreams } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/local-agent-availability.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/process-runner/process-runner.test.ts :59
// If it's Windows, the resolver should have appended .cmd so spawn() succeeds. - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/process-runner/resolve-executable.ts :16
// when `shell: false` is used in child_process. - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/process-runner/run-process.ts :1
import { spawn, type ChildProcess } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/process-sessions.test.ts :2
import * as childProcess from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/process-sessions.ts :9
import { spawn } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/review-checkpoints.test.ts :1
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/server.ts :340
const cp = await import("node:child_process"); - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/server/mutation-receipt.test.ts :7
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/server/mutation-receipt.ts :39
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/visual-review.ts :1
import { execFile } from "node:child_process"; - shell hugolsramos01-bit-mcp-agentic-server-181e21d/src/workspace-index.ts :12
import { execFile } from "node:child_process"; - shell (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/workspaces.test.ts :1
import { execFile } from "node:child_process";
network 5
- net (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/debug-token.mjs :12
import http from "node:http"; - net (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/smoke-package.mjs :65
const noTokenRes = await fetch(`http://127.0.0.1:${actualPort}/mcp`); - net (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/scripts/test-http.mjs :76
const noTokenRes = await fetch(`http://127.0.0.1:${port}/mcp`); - net (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/change-intelligence/task-context.test.ts :1311
"export async function apiFetch(path) { return fetch(path); }", - net (weak) hugolsramos01-bit-mcp-agentic-server-181e21d/src/visual-review.test.ts :3
import { createServer } from "node:http";
secrets 1
- secrets hugolsramos01-bit-mcp-agentic-server-181e21d/src/cli.ts :94
if (process.env.AGENTIC_OAUTH_OWNER_TOKEN) return;
database 3
- db hugolsramos01-bit-mcp-agentic-server-181e21d/src/cli.ts :716
const Database = require("better-sqlite3") as typeof import("better-sqlite3"); - db hugolsramos01-bit-mcp-agentic-server-181e21d/src/db/client.ts :3
import Database from "better-sqlite3"; - db hugolsramos01-bit-mcp-agentic-server-181e21d/src/db/migrations.ts :1
import type Database from "better-sqlite3";
install hooks 1
- postinstall hugolsramos01-bit-mcp-agentic-server-181e21d/package.json :31
node scripts/fix-node-pty-permissions.mjs
declared dependencies 29
- @modelcontextprotocol/ext-apps@^1.7.2
- @modelcontextprotocol/sdk@1.30.0
- @agentclientprotocol/sdk@^1.1.0
- @anthropic-ai/claude-agent-sdk@^0.3.200
- @clack/prompts@^1.5.1
- @hugolsramos01-bit/pi-coding-agent@0.80.7-agentic.1
- @openai/codex-sdk@^0.142.5
- @opencode-ai/sdk@^1.17.13
- @pierre/diffs@^1.2.5
- better-sqlite3@^12.10.0
- diff@^8.0.3
- drizzle-orm@^0.45.2
- express@^5.2.1
- react@^19.2.6
- react-dom@^19.2.6
- semver@^7.8.4
- yaml@^2.9.0
- zod@^4.4.3
- typescript@^6.0.3
- @types/better-sqlite3@^7.6.13
- @types/express@^5.0.6
- @types/node@^25.9.1
- @types/react@^19.2.15
- @types/react-dom@^19.2.3
- @types/semver@^7.7.1
- @vitejs/plugin-react@^6.0.2
- tsx@^4.22.3
- vite@^8.0.14
- node-pty@^1.1.0