github analyzed f35f054

FrontAgent/FrontAgent

github

Frontend AI coding agent platform with CLI, VS Code extension, desktop app, MCP server, RAG planning, Skills, SDD guardrails, browser automation, and LoRA planner models | 面向前端工程的 AI Agent 平台,支持 CLI、VS Code 插件、桌面端、MCP 服务、RAG、Skills、SDD、浏览器自动化与 LoRA 规划模型

maintainer
FrontAgent
license
MIT
first seen
2026-06-05
last seen
2026-06-21
releases · 30d
2
short id

Drift inferred · capture-to-capture

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

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

tools

  • frontagent_init_sdd

    creates an SDD template. Existing files are not overwritten unless force=true.

  • frontagent_list_skills

    lists visible content skills.

  • frontagent_plan_task

    generates a FrontAgent execution plan without executing tools or writing files.

  • frontagent_run_task

    runs a full FrontAgent task. Inputs include task, type, files, url, sddPath, and securityMode.

  • frontagent_status

    returns project root, SDD status, visible skills, LLM backend status, RAG status, and run-log directory.

  • frontagent_validate_sdd

    validates the project SDD file.

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

analyzed commit f35f054 · analyzer v19 · 1d ago

skills & prompt files 20

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

filesystem 50

  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/bootstrap.ts :8 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/info.ts :1 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/init.ts :1 import { existsSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/prompt.ts :1 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/rag.ts :10 } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/run.tsx :5 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/validate.ts :1 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/run-logger.ts :2 import { appendFileSync, mkdirSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/cli/src/version.ts :1 import { existsSync, readFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/desktop/src/main/runtimeIO.ts :7 import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/apps/desktop/vite.config.ts :1 import { readFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/context/project-instructions.ts :1 import { closeSync, existsSync, openSync, readFileSync, readSync, statSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/executor/executor.ts :1 import { existsSync, statSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/memory/open-memory-gateway.ts :10 } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/memory/store.ts :1 import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-content/loader.ts :1 import { type Dirent, existsSync, readdirSync, readFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-content/resolver.ts :1 import { existsSync, readFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/improve.ts :1 import { cpSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/reporting.ts :1 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/scaffold.ts :1 import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/skill-lab.ts :1 import { cpSync, existsSync, mkdirSync, readFileSync, rmSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/utils.ts :1 import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/core/src/sub-agents/process-isolated-code-quality-subagent.ts :7 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/hallucination-guard/src/checks/file-existence.ts :6 import { existsSync, statSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/hallucination-guard/src/checks/import-validity.ts :6 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/path-safety.ts :1 import { existsSync, realpathSync, statSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/snapshot.ts :13 } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/apply-patch.ts :6 import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/create-file.ts :6 import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/list-directory.ts :6 import { readdirSync, statSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/read-file.ts :6 import { readFileSync, statSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/search-code.ts :6 import { readFileSync, statSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-filesense/src/engine.ts :7 import { promises as fs } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-filesense/src/tools.ts :6 import { realpathSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/knowledge-base.ts :1 import { existsSync, mkdirSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/repository.ts :3 import { existsSync, mkdirSync, rmSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/config.ts :1 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/hooks.ts :2 import { existsSync, readFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/mcp-server.ts :3 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/run-logger.ts :2 import { createWriteStream, mkdirSync, type WriteStream } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/run.ts :1 import { existsSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/sdd.ts :1 import { existsSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/session-store.ts :10 } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/settings.ts :1 import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/sdd/src/artifacts/store.ts :18 } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/sdd/src/constitution/parser.ts :6 import { existsSync, readFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/packages/sdd/src/parser.ts :6 import { existsSync, readFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/scripts/sync-vscode-version.mjs :1 import { readFileSync, writeFileSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/scripts/workflows/contract-check.mjs :2 import { existsSync, readFileSync, realpathSync } from 'node:fs';
  • fs FrontAgent-FrontAgent-f35f054/scripts/workflows/install-hooks.mjs :2 import { existsSync } from 'node:fs';

shell / exec 7

  • shell FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/rag.ts :1 import { execFile } from 'node:child_process';
  • shell FrontAgent-FrontAgent-f35f054/packages/core/src/sub-agents/process-isolated-code-quality-subagent.ts :6 import { spawn } from 'node:child_process';
  • shell FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/repository.ts :1 import { execFile } from 'node:child_process';
  • shell FrontAgent-FrontAgent-f35f054/packages/mcp-shell/src/index.ts :6 import { spawn } from 'node:child_process';
  • shell FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/hooks.ts :1 import { spawn } from 'node:child_process';
  • shell FrontAgent-FrontAgent-f35f054/scripts/workflows/contract-check.mjs :1 import { execFileSync, spawnSync } from 'node:child_process';
  • shell FrontAgent-FrontAgent-f35f054/scripts/workflows/install-hooks.mjs :1 import { execFileSync } from 'node:child_process';

network 8

  • net FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/rag.ts :139 const response = await fetch(sourceUrl);
  • net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/embedding.ts :78 const response = await fetch(endpoint, {
  • net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/providers.ts :231 const response = await fetch(this.config.endpoint, {
  • net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/reranker.ts :154 const response = await fetch(endpoint, {
  • net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/weaviate.ts :94 const getResponse = await fetch(`${baseURL}/v1/schema/${collectionName}`, {
  • net FrontAgent-FrontAgent-f35f054/packages/mcp-web-fetch/src/engine.ts :3 import { Agent } from 'undici';
  • net FrontAgent-FrontAgent-f35f054/packages/mcp-web-fetch/src/url-safety.ts :1 import { isIP } from 'node:net';
  • net FrontAgent-FrontAgent-f35f054/packages/mcp-web/src/browser.ts :88 const response = await route.fetch({ maxRedirects: 0 });

secrets 8

  • secrets FrontAgent-FrontAgent-f35f054/apps/cli/src/bootstrap.ts :52 return cliValue ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? process.env.API_KEY;
  • secrets FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/info.ts :25 const apiKey = process.env[`${provider.toUpperCase()}_API_KEY`] || process.env.API_KEY;
  • secrets FrontAgent-FrontAgent-f35f054/apps/cli/src/index.ts :235 process.env.FRONTAGENT_RAG_KEYWORD_CANDIDATES || '40',
  • secrets FrontAgent-FrontAgent-f35f054/apps/vscode/src/settings-resolve.ts :73 providerApiKey ?? legacyApiKey ?? settingsApiKey ?? providerEnvApiKey ?? process.env.API_KEY,
  • secrets FrontAgent-FrontAgent-f35f054/packages/core/src/llm/llm-service.ts :110 const key = apiKey ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? process.env.API_KEY;
  • secrets FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/config.ts :41 process.env.FRONTAGENT_RAG_EMBEDDING_API_KEY ??
  • secrets FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/providers.ts :67 apiKey: config?.apiKey ?? process.env.FRONTAGENT_OPENVIKING_API_KEY ?? '',
  • secrets FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/config.ts :160 return explicitValue ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? process.env.API_KEY;

declared dependencies 9

  • playwright@^1.60.0
  • ts-morph@^28.0.0
  • @biomejs/biome@2.4.16
  • @types/node@^25.9.1
  • esbuild@^0.28.0
  • gitnexus@1.6.6
  • turbo@^2.9.14
  • typescript@^6.0.3
  • vitest@^4.1.7

obfuscation 2

  • dynamic require()/import() FrontAgent-FrontAgent-f35f054/apps/cli/src/index.ts :57 const runtimeNode = (await import(runtimeNodePackageName())) as {
  • dynamic require()/import() FrontAgent-FrontAgent-f35f054/packages/hallucination-guard/src/checks/import-validity.ts :112 const packageJson = await import(packageJsonPath, { with: { type: 'json' } });