npm JavaScript analyzed 1.2.1

@hasna/projects

v1.2.1
npm

High-level project management CLI, MCP server, SDK, and AI SDK agent loop for coding agents

maintainer
andreihasna2
licence
Apache-2.0
first seen
2026-08-19
last seen
2026-09-17
releases · 30d
14
short id

Drift inferred · capture-to-capture

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

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

No tools enumerated yet for this server.

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

code files: 84

filesystem 5

  • fs package/dist/cli/index.js :4242 import { chmod, mkdir, readFile, rename, writeFile } from "fs/promises";
  • fs package/dist/index.js :3010 import { existsSync as existsSync4 } from "fs";
  • fs package/dist/mcp/index.js :2267 import { readFileSync as readFileSync5 } from "fs";
  • fs package/dist/project-store.js :121 import { existsSync as existsSync2, mkdirSync } from "fs";
  • fs package/dist/serve/index.js :5 import { readFileSync as readFileSync3 } from "fs";

shell / exec 4

  • shell package/dist/cli/index.js :4248 import { spawn } from "child_process";
  • shell package/dist/index.js :4480 const result = Bun.spawnSync({
  • shell package/dist/mcp/index.js :7955 const result = Bun.spawnSync({
  • shell package/dist/serve/index.js :787 const result = Bun.spawnSync({

network 3

  • net package/dist/cli/index.js :2330 const response = await fetch(discoveryUrl, {
  • net package/dist/index.js :295 const response = await fetch(discoveryUrl, {
  • net package/dist/mcp/index.js :296 const response = await fetch(discoveryUrl, {

secrets 3

  • secrets package/dist/cli/index.js :2639 process.env.VERCEL_OIDC_TOKEN = maybeToken.token;
  • secrets package/dist/index.js :604 process.env.VERCEL_OIDC_TOKEN = maybeToken.token;
  • secrets package/dist/mcp/index.js :605 process.env.VERCEL_OIDC_TOKEN = maybeToken.token;

database 1

  • db package/dist/serve/index.js :249 import pg from "pg";

install hooks 3

  • prepack package/package.json :60 bun run build && bun run scan:artifact
  • prepublishOnly package/package.json :61 bun run typecheck && bun test && bun run contracts:conformance && contracts no-cloud-scan .
  • postinstall package/package.json :62 mkdir -p $HOME/.hasna/projects 2>/dev/null || true

declared dependencies 20

  • @modelcontextprotocol/sdk@^1.12.1
  • @hasna/contracts@1.1.0
  • @hasna/conversations@0.7.8
  • @hasna/events@0.1.3
  • @hasna/mementos@0.14.85
  • @hasna/secrets@0.4.2
  • @hasna/todos@0.15.49
  • @json-render/core@0.19.0
  • @openrouter/ai-sdk-provider@^2.9.0
  • ai@^6.0.197
  • chalk@^5.4.1
  • commander@^13.1.0
show 8 more
  • nanoid@^5.0.9
  • pg@^8.13.3
  • zod@3.25.76
  • @types/bun@1.3.14
  • @types/pg@^8.11.11
  • ajv@8.20.0
  • typescript@^5.7.3
  • @hasna/loops@>=0.6.4

cursor-plugin 2

  • opaque (low) package/.cursor/hooks.json bundled .cursor/ plugin descriptor (package/.cursor/hooks.json) — presence-detected; review the descriptor
  • opaque (low) package/.cursor/hooks/goal-continue.sh bundled .cursor/ plugin descriptor (package/.cursor/hooks/goal-continue.sh) — presence-detected; review the descriptor