npm JavaScript analyzed 1.0.169

context-mode

v1.0.169
npm

MCP plugin that saves 98% of your context window. Works with Claude Code, Gemini CLI, VS Code Copilot, OpenCode, and Codex CLI. Sandboxed code execution, FTS5 knowledge base, and intent-driven search.

maintainer
mksglu
license
Elastic-2.0
first seen
2026-05-22
last seen
2026-08-14
releases · 30d
0
short id

Drift inferred · capture-to-capture

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

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

tools

  • ctx_batch_execute
  • ctx_doctor
  • ctx_execute
  • ctx_execute_file
  • ctx_fetch_and_index
  • ctx_index
  • ctx_insight
  • ctx_purge
  • ctx_search
  • ctx_stats
  • ctx_upgrade
skills & danger signals npm-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed v1.0.169 · analyzer v32 · 5h ago

skills & prompt files 21

danger signals3

code evidence v1.0.169 · npm-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 283

filesystem 90

  • fs package/bin/statusline.mjs :28 import { existsSync, readFileSync } from "node:fs";
  • fs package/build/adapters/antigravity-cli/index.js :19 import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs package/build/adapters/antigravity/index.js :19 import { readFileSync, writeFileSync, mkdirSync, } from "node:fs";
  • fs package/build/adapters/base.js :38 import { accessSync, copyFileSync, constants, mkdirSync } from "node:fs";
  • fs package/build/adapters/claude-code/index.js :14 import { readFileSync, writeFileSync, existsSync, readdirSync, chmodSync, accessSync, mkdirSync, constants, } from "node:fs";
  • fs package/build/adapters/codex/index.js :17 import { existsSync, readFileSync, writeFileSync, accessSync, copyFileSync, constants, mkdirSync, } from "node:fs";
  • fs package/build/adapters/copilot-base.js :20 import { readFileSync, writeFileSync, mkdirSync, accessSync, chmodSync, constants, } from "node:fs";
  • fs package/build/adapters/copilot-cli/index.js :19 import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs package/build/adapters/cursor/index.js :7 import { readFileSync, writeFileSync, mkdirSync, accessSync, chmodSync, constants, existsSync, readdirSync, } from "node:fs";
  • fs package/build/adapters/detect.js :23 import { existsSync, readFileSync } from "node:fs";
  • fs package/build/adapters/gemini-cli/index.js :21 import { readFileSync, writeFileSync, mkdirSync, accessSync, chmodSync, existsSync, constants, } from "node:fs";
  • fs package/build/adapters/jetbrains-copilot/index.js :11 import { readFileSync, } from "node:fs";
  • fs package/build/adapters/kimi/index.js :18 import { readFileSync, writeFileSync, accessSync, copyFileSync, constants, mkdirSync, } from "node:fs";
  • fs package/build/adapters/kimi/paths.js :2 import { existsSync } from "node:fs";
  • fs package/build/adapters/kiro/index.js :20 import { readFileSync, writeFileSync, mkdirSync, } from "node:fs";
  • fs package/build/adapters/omp/index.js :27 import { readFileSync, writeFileSync, mkdirSync, } from "node:fs";
  • fs package/build/adapters/omp/plugin.js :27 import { existsSync, mkdirSync } from "node:fs";
  • fs package/build/adapters/openclaw/index.js :18 import { readFileSync, writeFileSync, copyFileSync, accessSync, constants, } from "node:fs";
  • fs package/build/adapters/openclaw/plugin.js :32 import { existsSync, mkdirSync, readFileSync } from "node:fs";
  • fs package/build/adapters/opencode/index.js :18 import { readFileSync, writeFileSync, mkdirSync, copyFileSync, accessSync, existsSync, constants, } from "node:fs";
  • fs package/build/adapters/opencode/plugin.js :25 import { existsSync, readFileSync } from "node:fs";
  • fs package/build/adapters/pi/extension.js :14 import { existsSync, mkdirSync } from "node:fs";
  • fs package/build/adapters/pi/index.js :30 import { readFileSync, writeFileSync, mkdirSync, } from "node:fs";
  • fs package/build/adapters/pi/mcp-bridge.js :23 import { existsSync } from "node:fs";
  • fs package/build/adapters/qwen-code/index.js :15 import { readFileSync, writeFileSync, existsSync, } from "node:fs";
  • fs package/build/adapters/vscode-copilot/index.js :12 import { readFileSync, mkdirSync, accessSync, existsSync, constants, } from "node:fs";
  • fs package/build/adapters/zed/index.js :13 import { readFileSync, writeFileSync, mkdirSync, } from "node:fs";
  • fs package/build/cli.js :19 import { readFileSync, cpSync, accessSync, existsSync, readdirSync, rmSync, closeSync, openSync, chmodSync, lstatSync, realpathSync, statSync, constants } from "node:fs";
  • fs package/build/db-base.js :9 import { existsSync, unlinkSync, renameSync } from "node:fs";
  • fs package/build/executor.js :2 import { mkdtempSync, writeFileSync, rmSync, existsSync } from "node:fs";
  • fs package/build/runtime.js :2 import { existsSync } from "node:fs";
  • fs package/build/search/auto-memory.js :8 import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
  • fs package/build/security.js :1 import { readFileSync, realpathSync } from "node:fs";
  • fs package/build/server.js :5 import { existsSync, unlinkSync, readdirSync, readFileSync, writeFileSync, writeSync, renameSync, rmSync, mkdirSync, statSync, symlinkSync, lstatSync, realpathSync } from "node:fs";
  • fs package/build/session/analytics.js :12 import { existsSync, readdirSync, statSync } from "node:fs";
  • fs package/build/session/db.js :11 import { accessSync, constants, existsSync, mkdirSync, realpathSync, renameSync } from "node:fs";
  • fs package/build/session/event-emit.js :21 import { existsSync } from "node:fs";
  • fs package/build/session/persist-tool-calls.js :20 import { existsSync } from "node:fs";
  • fs package/build/session/purge.js :34 import { existsSync, unlinkSync } from "node:fs";
  • fs package/build/session/retrieval-marker.js :19 import { appendFileSync, readFileSync, rmSync } from "node:fs";
  • fs package/build/store-directory.js :22 import { readdirSync, statSync, lstatSync, realpathSync, existsSync, readFileSync, } from "node:fs";
  • fs package/build/store.js :12 import { readFileSync, readdirSync, unlinkSync, existsSync, statSync, openSync, fstatSync, closeSync } from "node:fs";
  • fs package/build/util/plugin-cache-integrity.js :25 import { existsSync } from "node:fs";
  • fs package/build/util/project-dir.js :1 import * as fs from "node:fs";
  • fs package/cli.bundle.mjs :518 const FILE_CONTENT = require("fs").readFileSync(FILE_CONTENT_PATH, "utf-8");
  • fs package/hooks/antigravity-cli/posttooluse.mjs :29 import { readFileSync, unlinkSync } from "node:fs";
  • fs package/hooks/antigravity-cli/pretooluse.mjs :14 import { writeFileSync } from "node:fs";
  • fs package/hooks/cache-heal-utils.mjs :35 } from "node:fs";
  • fs package/hooks/codex/precompact.mjs :19 import { appendFileSync } from "node:fs";
  • fs package/hooks/codex/sessionstart.mjs :31 import { existsSync, readFileSync, unlinkSync } from "node:fs";
  • fs package/hooks/codex/stop.mjs :17 import { existsSync, readFileSync, readdirSync } from "node:fs";
  • fs package/hooks/copilot-cli/posttooluse.mjs :15 import { appendFileSync, mkdirSync } from "node:fs";
  • fs package/hooks/copilot-cli/precompact.mjs :15 import { appendFileSync, mkdirSync } from "node:fs";
  • fs package/hooks/copilot-cli/sessionstart.mjs :21 import { readFileSync, unlinkSync } from "node:fs";
  • fs package/hooks/core/codex-caps.mjs :20 import { readFileSync, writeFileSync } from "node:fs";
  • fs package/hooks/core/mcp-ready.mjs :14 import { readFileSync, readdirSync, statSync, unlinkSync } from "node:fs";
  • fs package/hooks/core/routing.mjs :20 import { existsSync, mkdirSync, rmSync, rmdirSync, readdirSync, unlinkSync, openSync, closeSync, readFileSync, writeFileSync, statSync, constants as fsConstants } from "node:fs";
  • fs package/hooks/cursor/sessionstart.mjs :28 import { unlinkSync } from "node:fs";
  • fs package/hooks/ensure-deps.mjs :22 import { existsSync, copyFileSync, renameSync, unlinkSync } from "node:fs";
  • fs package/hooks/gemini-cli/aftermodel.mjs :28 import { appendFileSync } from "node:fs";
  • fs package/hooks/gemini-cli/aftertool.mjs :15 import { appendFileSync } from "node:fs";
  • fs package/hooks/gemini-cli/precompress.mjs :14 import { appendFileSync } from "node:fs";
  • fs package/hooks/gemini-cli/sessionstart.mjs :26 import { readFileSync, unlinkSync } from "node:fs";
  • fs package/hooks/heal-partial-install.mjs :128 } from "node:fs";
  • fs package/hooks/jetbrains-copilot/posttooluse.mjs :15 import { appendFileSync } from "node:fs";
  • fs package/hooks/jetbrains-copilot/precompact.mjs :14 import { appendFileSync } from "node:fs";
  • fs package/hooks/jetbrains-copilot/sessionstart.mjs :26 import { readFileSync, unlinkSync } from "node:fs";
  • fs package/hooks/kimi/precompact.mjs :19 import { appendFileSync } from "node:fs";
  • fs package/hooks/kimi/sessionstart.mjs :31 import { existsSync, readFileSync, unlinkSync } from "node:fs";
  • fs package/hooks/kimi/stop.mjs :23 import { existsSync, readFileSync } from "node:fs";
  • fs package/hooks/kiro/agentspawn.mjs :35 import { unlinkSync } from "node:fs";
  • fs package/hooks/normalize-hooks.mjs :16 import { existsSync, readFileSync, writeFileSync } from "node:fs";
  • fs package/hooks/platform-bridge.mjs :7 import fs from "node:fs";
  • fs package/hooks/pretooluse.mjs :68 'import { existsSync } from "node:fs";',
  • fs package/hooks/qwen-code/stop.mjs :30 import { existsSync, readFileSync, readdirSync } from "node:fs";
  • fs package/hooks/run-hook.mjs :28 import { existsSync, mkdirSync, appendFileSync } from "node:fs";
  • fs package/hooks/session-directive.mjs :8 import { writeFileSync } from "node:fs";
  • fs package/hooks/session-helpers.mjs :22 import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs package/hooks/session-loaders.mjs :11 import { existsSync, readFileSync } from "node:fs";
  • fs package/hooks/stop.mjs :16 import { readFileSync } from "node:fs";
  • fs package/hooks/suppress-stderr.mjs :16 import { closeSync, openSync } from "node:fs";
  • fs package/hooks/vscode-copilot/posttooluse.mjs :15 import { appendFileSync } from "node:fs";
  • fs package/hooks/vscode-copilot/precompact.mjs :14 import { appendFileSync } from "node:fs";
  • fs package/hooks/vscode-copilot/sessionstart.mjs :32 import { readFileSync, unlinkSync } from "node:fs";
  • fs (weak) package/scripts/heal-better-sqlite3.mjs :44 import { existsSync as fsExistsSync } from "node:fs";
  • fs (weak) package/scripts/heal-installed-plugins.mjs :20 import { existsSync, readFileSync, writeFileSync, readdirSync, unlinkSync, statSync } from "node:fs";
  • fs (weak) package/scripts/plugin-cache-integrity.mjs :31 import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
  • fs (weak) package/scripts/postinstall.mjs :11 import { existsSync, mkdirSync, readFileSync, writeFileSync, symlinkSync, lstatSync, unlinkSync } from "node:fs";
  • fs package/server.bundle.mjs :247 const FILE_CONTENT = require("fs").readFileSync(FILE_CONTENT_PATH, "utf-8");
  • fs package/start.mjs :3 import { existsSync, chmodSync, readFileSync, writeFileSync, readdirSync, symlinkSync, mkdirSync, lstatSync, unlinkSync } from "node:fs";

shell / exec 24

  • shell package/bin/statusline.mjs :31 import { execFileSync } from "node:child_process";
  • shell package/build/adapters/codex/index.js :16 import { execFileSync } from "node:child_process";
  • shell package/build/adapters/cursor/index.js :8 import { execSync } from "node:child_process";
  • shell package/build/adapters/kimi/index.js :17 import { execFileSync } from "node:child_process";
  • shell package/build/adapters/omp/plugin.js :96 * and its bin is NOT on PATH, so the bare command would fail to spawn (the
  • shell package/build/adapters/pi/mcp-bridge.js :25 import { spawn, execSync } from "node:child_process";
  • shell package/build/cli.js :18 import { execFileSync, execSync, execFile as nodeExecFile } from "node:child_process";
  • shell package/build/db-base.js :36 exec(sql) {
  • shell package/build/executor.js :1 import { spawn, execSync, execFileSync } from "node:child_process";
  • shell package/build/lifecycle.js :22 import { execFileSync } from "node:child_process";
  • shell package/build/runtime.js :1 import { execFileSync, execSync } from "node:child_process";
  • shell package/build/security.js :703 /exec(?:Sync|File|FileSync)?\(\s*(['"`])(.*?)\1/g,
  • shell package/build/server.js :6 import { spawnSync } from "node:child_process";
  • shell package/build/session/analytics.js :11 import { execFileSync } from "node:child_process";
  • shell package/build/session/db.js :10 import { execFileSync } from "node:child_process";
  • shell package/build/util/sibling-mcp.js :28 import { execFileSync } from "node:child_process";
  • shell package/cli.bundle.mjs :945 EXAMPLE: ctx_execute(language: "javascript", code: "const out = require('child_process').execSync('npm test', {encoding:'utf8', stdio:['ignore','pipe','pipe']}); console.log(out.split('\\\\n').filter(
  • shell package/hooks/core/codex-caps.mjs :19 import { execFileSync } from "node:child_process";
  • shell package/hooks/ensure-deps.mjs :23 import { execSync } from "node:child_process";
  • shell package/hooks/platform-bridge.mjs :10 import { execSync } from "node:child_process";
  • shell (weak) package/scripts/heal-better-sqlite3.mjs :45 import { execSync, execFileSync, spawnSync } from "node:child_process";
  • shell (weak) package/scripts/postinstall.mjs :12 import { execSync } from "node:child_process";
  • shell package/server.bundle.mjs :687 EXAMPLE: ctx_execute(language: "javascript", code: "const out = require('child_process').execSync('npm test', {encoding:'utf8', stdio:['ignore','pipe','pipe']}); console.log(out.split('\\\\n').filter(
  • shell package/start.mjs :2 import { execSync, spawn } from "node:child_process";

network 5

  • net package/build/cli.js :20 import { request as httpsRequest } from "node:https";
  • net package/build/server.js :10 import { request as httpsRequest } from "node:https";
  • net package/cli.bundle.mjs :814 const resp = await fetch(currentUrl, { redirect: 'manual' });
  • net package/hooks/platform-bridge.mjs :286 const res = await fetch(buildUrl(cfg, ev.type), {
  • net package/server.bundle.mjs :979 const resp = await fetch(currentUrl, { redirect: 'manual' });

secrets 1

  • secrets package/build/session/analytics.js :1517 const usingDynamicPrice = process.env.PI_CONTEXT_MODE_PRICE_OUTPUT_PER_TOKEN !== undefined;

database 2

  • db package/build/db-base.js :289 _Database = require("better-sqlite3");
  • db package/hooks/ensure-deps.mjs :98 * Note: require('better-sqlite3') only loads the JS wrapper — the native

tool registrations 21

  • ctx_search package/build/search/ctx-search-schema.js :53
  • ctx_execute package/build/server.js :1455
  • ctx_execute_file package/build/server.js :1810
  • ctx_index package/build/server.js :1988
  • ctx_search package/build/server.js :2279
  • ctx_fetch_and_index package/build/server.js :3100
  • ctx_batch_execute package/build/server.js :3331
  • ctx_stats package/build/server.js :3559
  • ctx_doctor package/build/server.js :3772
  • ctx_upgrade package/build/server.js :3901
  • ctx_purge package/build/server.js :4068
  • ctx_insight package/build/server.js :4394
  • ctx_execute package/cli.bundle.mjs :915
  • ctx_fetch_and_index package/cli.bundle.mjs :1081
  • ctx_batch_execute package/cli.bundle.mjs :1109
  • ctx_purge package/cli.bundle.mjs :1141
  • ctx_execute package/server.bundle.mjs :657
  • ctx_execute_file package/server.bundle.mjs :761
  • ctx_fetch_and_index package/server.bundle.mjs :1075
  • ctx_batch_execute package/server.bundle.mjs :1103
  • ctx_purge package/server.bundle.mjs :1135

install hooks 2

  • prepublishOnly package/package.json :88 npm run build
  • postinstall package/package.json :101 node scripts/postinstall.mjs

declared dependencies 15

  • @modelcontextprotocol/sdk@^1.26.0
  • @clack/prompts@^1.0.1
  • @mixmark-io/domino@^2.2.0
  • better-sqlite3@^12.6.2
  • picocolors@^1.1.1
  • turndown@^7.2.0
  • turndown-plugin-gfm@^1.0.2
  • zod@^3.25.0
  • @types/better-sqlite3@^7.6.13
  • @types/node@^22.19.11
  • @types/turndown@^5.0.5
  • esbuild@^0.27.3
  • tsx@^4.21.0
  • typescript@^5.7.0
  • vitest@^4.0.18

obfuscation 4

  • dynamic require()/import() package/build/cli.js :1494 await import(`${pathToFileURL(ensureDepsPath).href}?upgrade=${Date.now()}`);
  • dynamic require()/import() package/build/server.js :2554 const TurndownService = require(${turndownPath});
  • dynamic require()/import() package/cli.bundle.mjs :665 const TurndownService = require(${n});
  • dynamic require()/import() package/server.bundle.mjs :830 const TurndownService = require(${n});