@arcbridge/adapters 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -129,8 +129,33 @@ function generateAgentFile(role) {
|
|
|
129
129
|
var ClaudeAdapter = class {
|
|
130
130
|
platform = "claude";
|
|
131
131
|
generateProjectConfig(targetDir, config) {
|
|
132
|
-
const
|
|
133
|
-
|
|
132
|
+
const arcbridgeContent = generateClaudeMd(config);
|
|
133
|
+
const claudeMdPath = join(targetDir, "CLAUDE.md");
|
|
134
|
+
const marker = "<!-- arcbridge-generated -->";
|
|
135
|
+
if (existsSync(claudeMdPath)) {
|
|
136
|
+
const existing = readFileSync(claudeMdPath, "utf-8");
|
|
137
|
+
const markerIndex = existing.indexOf(marker);
|
|
138
|
+
const legacyIndex = existing.indexOf("## ArcBridge Workflow");
|
|
139
|
+
const splitIndex = markerIndex >= 0 ? markerIndex : legacyIndex;
|
|
140
|
+
if (splitIndex >= 0) {
|
|
141
|
+
const userContent = existing.slice(0, splitIndex).trimEnd();
|
|
142
|
+
writeFileSync(claudeMdPath, `${userContent}
|
|
143
|
+
|
|
144
|
+
${marker}
|
|
145
|
+
|
|
146
|
+
${arcbridgeContent}`, "utf-8");
|
|
147
|
+
} else {
|
|
148
|
+
writeFileSync(claudeMdPath, `${existing.trimEnd()}
|
|
149
|
+
|
|
150
|
+
${marker}
|
|
151
|
+
|
|
152
|
+
${arcbridgeContent}`, "utf-8");
|
|
153
|
+
}
|
|
154
|
+
} else {
|
|
155
|
+
writeFileSync(claudeMdPath, `${marker}
|
|
156
|
+
|
|
157
|
+
${arcbridgeContent}`, "utf-8");
|
|
158
|
+
}
|
|
134
159
|
const mcpJsonPath = join(targetDir, ".mcp.json");
|
|
135
160
|
if (!existsSync(mcpJsonPath)) {
|
|
136
161
|
const mcpConfig = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/claude/claude-adapter.ts","../src/copilot/copilot-adapter.ts","../src/index.ts"],"sourcesContent":["import { mkdirSync, writeFileSync, existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { AgentRole, ArcBridgeConfig } from \"@arcbridge/core\";\nimport type { PlatformAdapter } from \"../types.js\";\n\nfunction generateClaudeMd(config: ArcBridgeConfig): string {\n const lines: string[] = [\n `# ${config.project_name}`,\n \"\",\n `> Auto-generated by ArcBridge. Edit .arcbridge/ files to update.`,\n \"\",\n \"## Project Overview\",\n \"\",\n `- **Type:** ${config.project_type}`,\n `- **Quality Priorities:** ${config.quality_priorities.join(\", \")}`,\n \"\",\n \"## How to Work in This Project\",\n \"\",\n \"This project follows the **Plan → Build → Sync → Review** convention using ArcBridge.\",\n \"ArcBridge provides MCP tools that give you architectural awareness. **Use them throughout your work.**\",\n \"\",\n \"### Before Starting Any Work\",\n \"\",\n \"1. Check project status: `arcbridge_get_project_status`\",\n \"2. Review current tasks: `arcbridge_get_current_tasks`\",\n \"3. Activate the appropriate role (see below): `arcbridge_activate_role`\",\n \"\",\n \"### When Planning or Refining Architecture\",\n \"\",\n \"Activate the **architect** role: `arcbridge_activate_role({ role: \\\"architect\\\" })`\",\n \"\",\n \"Then use:\",\n \"- `arcbridge_get_building_blocks` — view current architecture decomposition\",\n \"- `arcbridge_get_quality_scenarios` — view quality requirements\",\n \"- `arcbridge_get_open_questions` — find architectural gaps to resolve\",\n \"- `arcbridge_propose_arc42_update` — propose doc updates from recent code changes\",\n \"\",\n \"### When Implementing Features\",\n \"\",\n \"Activate the **implementer** role: `arcbridge_activate_role({ role: \\\"implementer\\\" })`\",\n \"\",\n \"Then use:\",\n \"- `arcbridge_get_guidance` — get context-aware guidance for the file/block you're working on\",\n \"- `arcbridge_get_current_tasks` — check what tasks are expected in the current phase\",\n \"- `arcbridge_search_symbols` / `arcbridge_get_symbol` — understand existing code\",\n \"- `arcbridge_get_dependency_graph` — check module dependencies before adding new ones\",\n \"- `arcbridge_update_task` — mark tasks as in-progress or done as you complete them\",\n \"- `arcbridge_reindex` — re-index after significant code changes\",\n \"\",\n \"### After Implementing (Phase Boundary Review)\",\n \"\",\n \"Before completing a phase, consult the review roles. Not every role is needed every phase — use this guide:\",\n \"\",\n \"| Role | When to consult | How |\",\n \"|------|----------------|-----|\",\n \"| **code-reviewer** | Every phase | `arcbridge_activate_role({ role: \\\"code-reviewer\\\" })` then `arcbridge_get_practice_review` |\",\n \"| **security-reviewer** | Phases with auth, uploads, API routes, user input | `arcbridge_activate_role({ role: \\\"security-reviewer\\\" })` then `arcbridge_run_role_check` |\",\n \"| **quality-guardian** | Every 2nd phase, or when quality scenarios are linked | `arcbridge_activate_role({ role: \\\"quality-guardian\\\" })` then `arcbridge_get_practice_review` |\",\n \"| **architect** | When drift is detected or architecture evolved significantly | `arcbridge_activate_role({ role: \\\"architect\\\" })` then `arcbridge_check_drift` |\",\n \"\",\n \"Then run the standard checks:\",\n \"\",\n \"1. **Drift check:** `arcbridge_check_drift` — catch undeclared dependencies and missing modules\",\n \"2. **Verify scenarios:** `arcbridge_verify_scenarios` — run linked tests for quality scenarios\",\n \"\",\n \"### Completing a Phase\",\n \"\",\n \"Activate the **phase-manager** role: `arcbridge_activate_role({ role: \\\"phase-manager\\\" })`\",\n \"\",\n \"Then: `arcbridge_complete_phase` — validates three gates: all tasks done, no critical drift, must-have quality scenarios not failing.\",\n \"\",\n ];\n\n // Add React/Next.js section only for relevant project types\n if (config.project_type === \"nextjs-app-router\" || config.project_type === \"react-vite\") {\n lines.push(\n \"## React & Next.js Analysis\",\n \"\",\n \"- `arcbridge_get_component_graph` — view component hierarchy, props, state, and context usage\",\n \"- `arcbridge_get_route_map` — view Next.js route tree (pages, layouts, API routes)\",\n \"- `arcbridge_get_boundary_analysis` — analyze server/client boundaries and detect violations\",\n \"\",\n );\n }\n\n lines.push(\n \"## Agent Roles\",\n \"\",\n \"Activate roles with `arcbridge_activate_role` to get specialized context and tool guidance:\",\n \"\",\n \"| Role | When to Use |\",\n \"|------|-------------|\",\n \"| `architect` | Defining building blocks, reviewing dependencies, creating ADRs |\",\n \"| `implementer` | Writing code within the established architecture |\",\n \"| `security-reviewer` | Auditing auth, input validation, client/server boundaries |\",\n \"| `quality-guardian` | Reviewing test coverage, quality scenarios, quality gates |\",\n \"| `phase-manager` | Completing phases, managing task transitions |\",\n \"| `code-reviewer` | Reviewing code for correctness, patterns, edge cases |\",\n \"| `onboarding` | Understanding the project (for new developers) |\",\n \"\",\n \"Roles are defined in `.arcbridge/agents/` and `.claude/agents/`.\",\n \"\",\n );\n\n return lines.join(\"\\n\");\n}\n\nfunction generateAgentFile(role: AgentRole): string {\n const lines: string[] = [\n `# ${role.name}`,\n \"\",\n role.description,\n \"\",\n \"## Tools\",\n \"\",\n ...role.required_tools.map((t) => `- ${t}`),\n \"\",\n ];\n\n if (role.denied_tools.length > 0) {\n lines.push(\"## Denied Tools\", \"\", ...role.denied_tools.map((t) => `- ${t}`), \"\");\n }\n\n if (role.read_only) {\n lines.push(\"## Access\", \"\", \"This role is **read-only**.\", \"\");\n }\n\n if (role.quality_focus.length > 0) {\n lines.push(\n \"## Quality Focus\",\n \"\",\n ...role.quality_focus.map((q) => `- ${q}`),\n \"\",\n );\n }\n\n lines.push(\"## Instructions\", \"\", role.system_prompt, \"\");\n\n return lines.join(\"\\n\");\n}\n\nexport class ClaudeAdapter implements PlatformAdapter {\n platform = \"claude\";\n\n generateProjectConfig(targetDir: string, config: ArcBridgeConfig): void {\n const content = generateClaudeMd(config);\n writeFileSync(join(targetDir, \"CLAUDE.md\"), content, \"utf-8\");\n\n // Generate .mcp.json if it doesn't already exist\n const mcpJsonPath = join(targetDir, \".mcp.json\");\n if (!existsSync(mcpJsonPath)) {\n const mcpConfig = {\n mcpServers: {\n arcbridge: {\n command: \"npx\",\n args: [\"@arcbridge/mcp-server\"],\n },\n },\n };\n writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + \"\\n\", \"utf-8\");\n } else {\n // If .mcp.json exists, add arcbridge server if not already present\n try {\n const existing = JSON.parse(readFileSync(mcpJsonPath, \"utf-8\")) as {\n mcpServers?: Record<string, unknown>;\n };\n if (!existing.mcpServers?.arcbridge) {\n existing.mcpServers = existing.mcpServers ?? {};\n existing.mcpServers.arcbridge = {\n command: \"npx\",\n args: [\"@arcbridge/mcp-server\"],\n };\n writeFileSync(mcpJsonPath, JSON.stringify(existing, null, 2) + \"\\n\", \"utf-8\");\n }\n } catch {\n // If we can't parse existing .mcp.json, leave it alone\n }\n }\n }\n\n generateAgentConfigs(targetDir: string, roles: AgentRole[]): void {\n const agentsDir = join(targetDir, \".claude\", \"agents\");\n mkdirSync(agentsDir, { recursive: true });\n\n for (const role of roles) {\n const content = generateAgentFile(role);\n writeFileSync(join(agentsDir, `${role.role_id}.md`), content, \"utf-8\");\n }\n }\n}\n","import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { AgentRole, ArcBridgeConfig } from \"@arcbridge/core\";\nimport type { PlatformAdapter } from \"../types.js\";\n\nfunction generateCopilotInstructions(config: ArcBridgeConfig): string {\n const lines: string[] = [\n `# ${config.project_name} - Copilot Instructions`,\n \"\",\n `> Auto-generated by ArcBridge. Edit .arcbridge/ files to update.`,\n \"\",\n \"## Project Context\",\n \"\",\n `This is a ${config.project_type} project.`,\n \"\",\n `**Quality Priorities:** ${config.quality_priorities.join(\", \")}`,\n \"\",\n \"## Architecture\",\n \"\",\n \"Architecture documentation is in `.arcbridge/arc42/`.\",\n \"Quality scenarios are in `.arcbridge/arc42/10-quality-scenarios.yaml`.\",\n \"Phase plan is in `.arcbridge/plan/`.\",\n \"\",\n \"## Code Intelligence\",\n \"\",\n \"Use ArcBridge MCP tools to explore the codebase:\",\n \"- `arcbridge_search_symbols` — Search for functions, classes, types\",\n \"- `arcbridge_get_symbol` — Get full details on a symbol\",\n \"- `arcbridge_get_dependency_graph` — Analyze module dependencies\",\n \"- `arcbridge_reindex` — Re-index after code changes\",\n \"\",\n \"## React & Next.js Analysis\",\n \"\",\n \"- `arcbridge_get_component_graph` — View component hierarchy, props, state, and context\",\n \"- `arcbridge_get_route_map` — View Next.js route tree (pages, layouts, API routes)\",\n \"- `arcbridge_get_boundary_analysis` — Analyze server/client boundaries\",\n \"\",\n \"## Architecture Bridge\",\n \"\",\n \"- `arcbridge_check_drift` — Detect architecture drift and boundary violations\",\n \"- `arcbridge_get_guidance` — Get context-aware guidance for code changes\",\n \"- `arcbridge_get_open_questions` — Surface architectural gaps\",\n \"- `arcbridge_propose_arc42_update` — Generate arc42 update proposals from code changes\",\n \"- `arcbridge_get_practice_review` — Review recent changes across 5 practice dimensions\",\n \"\",\n \"## Conventions\",\n \"\",\n \"- Follow existing patterns in the codebase\",\n \"- Stay within building block boundaries\",\n \"- Write tests for new functionality\",\n \"- Check quality scenarios before submitting changes\",\n \"\",\n ];\n\n return lines.join(\"\\n\");\n}\n\nfunction generateAgentFile(role: AgentRole): string {\n const lines: string[] = [\n `# ${role.name}`,\n \"\",\n role.description,\n \"\",\n ];\n\n if (role.read_only) {\n lines.push(\"**Access:** Read-only\", \"\");\n }\n\n if (role.quality_focus.length > 0) {\n lines.push(\n \"## Quality Focus\",\n \"\",\n ...role.quality_focus.map((q) => `- ${q}`),\n \"\",\n );\n }\n\n lines.push(\"## Instructions\", \"\", role.system_prompt, \"\");\n\n return lines.join(\"\\n\");\n}\n\nexport class CopilotAdapter implements PlatformAdapter {\n platform = \"copilot\";\n\n generateProjectConfig(targetDir: string, config: ArcBridgeConfig): void {\n const githubDir = join(targetDir, \".github\");\n mkdirSync(githubDir, { recursive: true });\n\n const content = generateCopilotInstructions(config);\n writeFileSync(\n join(githubDir, \"copilot-instructions.md\"),\n content,\n \"utf-8\",\n );\n }\n\n generateAgentConfigs(targetDir: string, roles: AgentRole[]): void {\n const agentsDir = join(targetDir, \".github\", \"agents\");\n mkdirSync(agentsDir, { recursive: true });\n\n for (const role of roles) {\n const content = generateAgentFile(role);\n writeFileSync(join(agentsDir, `${role.role_id}.md`), content, \"utf-8\");\n }\n }\n}\n","export type { PlatformAdapter } from \"./types.js\";\nexport { ClaudeAdapter } from \"./claude/claude-adapter.js\";\nexport { CopilotAdapter } from \"./copilot/copilot-adapter.js\";\n\nimport type { PlatformAdapter } from \"./types.js\";\nimport { ClaudeAdapter } from \"./claude/claude-adapter.js\";\nimport { CopilotAdapter } from \"./copilot/copilot-adapter.js\";\n\nconst adapters: Record<string, () => PlatformAdapter> = {\n claude: () => new ClaudeAdapter(),\n copilot: () => new CopilotAdapter(),\n};\n\nexport function getAdapter(platform: string): PlatformAdapter {\n const factory = adapters[platform];\n if (!factory) {\n throw new Error(\n `Unknown platform: ${platform}. Available: ${Object.keys(adapters).join(\", \")}`,\n );\n }\n return factory();\n}\n"],"mappings":"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","names":["mkdirSync","writeFileSync","join","generateAgentFile"]}
|
|
1
|
+
{"version":3,"sources":["../src/claude/claude-adapter.ts","../src/copilot/copilot-adapter.ts","../src/index.ts"],"sourcesContent":["import { mkdirSync, writeFileSync, existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { AgentRole, ArcBridgeConfig } from \"@arcbridge/core\";\nimport type { PlatformAdapter } from \"../types.js\";\n\nfunction generateClaudeMd(config: ArcBridgeConfig): string {\n const lines: string[] = [\n `# ${config.project_name}`,\n \"\",\n `> Auto-generated by ArcBridge. Edit .arcbridge/ files to update.`,\n \"\",\n \"## Project Overview\",\n \"\",\n `- **Type:** ${config.project_type}`,\n `- **Quality Priorities:** ${config.quality_priorities.join(\", \")}`,\n \"\",\n \"## How to Work in This Project\",\n \"\",\n \"This project follows the **Plan → Build → Sync → Review** convention using ArcBridge.\",\n \"ArcBridge provides MCP tools that give you architectural awareness. **Use them throughout your work.**\",\n \"\",\n \"### Before Starting Any Work\",\n \"\",\n \"1. Check project status: `arcbridge_get_project_status`\",\n \"2. Review current tasks: `arcbridge_get_current_tasks`\",\n \"3. Activate the appropriate role (see below): `arcbridge_activate_role`\",\n \"\",\n \"### When Planning or Refining Architecture\",\n \"\",\n \"Activate the **architect** role: `arcbridge_activate_role({ role: \\\"architect\\\" })`\",\n \"\",\n \"Then use:\",\n \"- `arcbridge_get_building_blocks` — view current architecture decomposition\",\n \"- `arcbridge_get_quality_scenarios` — view quality requirements\",\n \"- `arcbridge_get_open_questions` — find architectural gaps to resolve\",\n \"- `arcbridge_propose_arc42_update` — propose doc updates from recent code changes\",\n \"\",\n \"### When Implementing Features\",\n \"\",\n \"Activate the **implementer** role: `arcbridge_activate_role({ role: \\\"implementer\\\" })`\",\n \"\",\n \"Then use:\",\n \"- `arcbridge_get_guidance` — get context-aware guidance for the file/block you're working on\",\n \"- `arcbridge_get_current_tasks` — check what tasks are expected in the current phase\",\n \"- `arcbridge_search_symbols` / `arcbridge_get_symbol` — understand existing code\",\n \"- `arcbridge_get_dependency_graph` — check module dependencies before adding new ones\",\n \"- `arcbridge_update_task` — mark tasks as in-progress or done as you complete them\",\n \"- `arcbridge_reindex` — re-index after significant code changes\",\n \"\",\n \"### After Implementing (Phase Boundary Review)\",\n \"\",\n \"Before completing a phase, consult the review roles. Not every role is needed every phase — use this guide:\",\n \"\",\n \"| Role | When to consult | How |\",\n \"|------|----------------|-----|\",\n \"| **code-reviewer** | Every phase | `arcbridge_activate_role({ role: \\\"code-reviewer\\\" })` then `arcbridge_get_practice_review` |\",\n \"| **security-reviewer** | Phases with auth, uploads, API routes, user input | `arcbridge_activate_role({ role: \\\"security-reviewer\\\" })` then `arcbridge_run_role_check` |\",\n \"| **quality-guardian** | Every 2nd phase, or when quality scenarios are linked | `arcbridge_activate_role({ role: \\\"quality-guardian\\\" })` then `arcbridge_get_practice_review` |\",\n \"| **architect** | When drift is detected or architecture evolved significantly | `arcbridge_activate_role({ role: \\\"architect\\\" })` then `arcbridge_check_drift` |\",\n \"\",\n \"Then run the standard checks:\",\n \"\",\n \"1. **Drift check:** `arcbridge_check_drift` — catch undeclared dependencies and missing modules\",\n \"2. **Verify scenarios:** `arcbridge_verify_scenarios` — run linked tests for quality scenarios\",\n \"\",\n \"### Completing a Phase\",\n \"\",\n \"Activate the **phase-manager** role: `arcbridge_activate_role({ role: \\\"phase-manager\\\" })`\",\n \"\",\n \"Then: `arcbridge_complete_phase` — validates three gates: all tasks done, no critical drift, must-have quality scenarios not failing.\",\n \"\",\n ];\n\n // Add React/Next.js section only for relevant project types\n if (config.project_type === \"nextjs-app-router\" || config.project_type === \"react-vite\") {\n lines.push(\n \"## React & Next.js Analysis\",\n \"\",\n \"- `arcbridge_get_component_graph` — view component hierarchy, props, state, and context usage\",\n \"- `arcbridge_get_route_map` — view Next.js route tree (pages, layouts, API routes)\",\n \"- `arcbridge_get_boundary_analysis` — analyze server/client boundaries and detect violations\",\n \"\",\n );\n }\n\n lines.push(\n \"## Agent Roles\",\n \"\",\n \"Activate roles with `arcbridge_activate_role` to get specialized context and tool guidance:\",\n \"\",\n \"| Role | When to Use |\",\n \"|------|-------------|\",\n \"| `architect` | Defining building blocks, reviewing dependencies, creating ADRs |\",\n \"| `implementer` | Writing code within the established architecture |\",\n \"| `security-reviewer` | Auditing auth, input validation, client/server boundaries |\",\n \"| `quality-guardian` | Reviewing test coverage, quality scenarios, quality gates |\",\n \"| `phase-manager` | Completing phases, managing task transitions |\",\n \"| `code-reviewer` | Reviewing code for correctness, patterns, edge cases |\",\n \"| `onboarding` | Understanding the project (for new developers) |\",\n \"\",\n \"Roles are defined in `.arcbridge/agents/` and `.claude/agents/`.\",\n \"\",\n );\n\n return lines.join(\"\\n\");\n}\n\nfunction generateAgentFile(role: AgentRole): string {\n const lines: string[] = [\n `# ${role.name}`,\n \"\",\n role.description,\n \"\",\n \"## Tools\",\n \"\",\n ...role.required_tools.map((t) => `- ${t}`),\n \"\",\n ];\n\n if (role.denied_tools.length > 0) {\n lines.push(\"## Denied Tools\", \"\", ...role.denied_tools.map((t) => `- ${t}`), \"\");\n }\n\n if (role.read_only) {\n lines.push(\"## Access\", \"\", \"This role is **read-only**.\", \"\");\n }\n\n if (role.quality_focus.length > 0) {\n lines.push(\n \"## Quality Focus\",\n \"\",\n ...role.quality_focus.map((q) => `- ${q}`),\n \"\",\n );\n }\n\n lines.push(\"## Instructions\", \"\", role.system_prompt, \"\");\n\n return lines.join(\"\\n\");\n}\n\nexport class ClaudeAdapter implements PlatformAdapter {\n platform = \"claude\";\n\n generateProjectConfig(targetDir: string, config: ArcBridgeConfig): void {\n const arcbridgeContent = generateClaudeMd(config);\n const claudeMdPath = join(targetDir, \"CLAUDE.md\");\n const marker = \"<!-- arcbridge-generated -->\";\n\n if (existsSync(claudeMdPath)) {\n const existing = readFileSync(claudeMdPath, \"utf-8\");\n\n // Detect where ArcBridge content starts: marker from current version,\n // or the generated heading from older versions (before marker was added)\n const markerIndex = existing.indexOf(marker);\n const legacyIndex = existing.indexOf(\"## ArcBridge Workflow\");\n const splitIndex = markerIndex >= 0 ? markerIndex : legacyIndex;\n\n if (splitIndex >= 0) {\n // Replace everything from the ArcBridge section onwards\n const userContent = existing.slice(0, splitIndex).trimEnd();\n writeFileSync(claudeMdPath, `${userContent}\\n\\n${marker}\\n\\n${arcbridgeContent}`, \"utf-8\");\n } else {\n // No existing ArcBridge content — append\n writeFileSync(claudeMdPath, `${existing.trimEnd()}\\n\\n${marker}\\n\\n${arcbridgeContent}`, \"utf-8\");\n }\n } else {\n writeFileSync(claudeMdPath, `${marker}\\n\\n${arcbridgeContent}`, \"utf-8\");\n }\n\n // Generate .mcp.json if it doesn't already exist\n const mcpJsonPath = join(targetDir, \".mcp.json\");\n if (!existsSync(mcpJsonPath)) {\n const mcpConfig = {\n mcpServers: {\n arcbridge: {\n command: \"npx\",\n args: [\"@arcbridge/mcp-server\"],\n },\n },\n };\n writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + \"\\n\", \"utf-8\");\n } else {\n // If .mcp.json exists, add arcbridge server if not already present\n try {\n const existing = JSON.parse(readFileSync(mcpJsonPath, \"utf-8\")) as {\n mcpServers?: Record<string, unknown>;\n };\n if (!existing.mcpServers?.arcbridge) {\n existing.mcpServers = existing.mcpServers ?? {};\n existing.mcpServers.arcbridge = {\n command: \"npx\",\n args: [\"@arcbridge/mcp-server\"],\n };\n writeFileSync(mcpJsonPath, JSON.stringify(existing, null, 2) + \"\\n\", \"utf-8\");\n }\n } catch {\n // If we can't parse existing .mcp.json, leave it alone\n }\n }\n }\n\n generateAgentConfigs(targetDir: string, roles: AgentRole[]): void {\n const agentsDir = join(targetDir, \".claude\", \"agents\");\n mkdirSync(agentsDir, { recursive: true });\n\n for (const role of roles) {\n const content = generateAgentFile(role);\n writeFileSync(join(agentsDir, `${role.role_id}.md`), content, \"utf-8\");\n }\n }\n}\n","import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { AgentRole, ArcBridgeConfig } from \"@arcbridge/core\";\nimport type { PlatformAdapter } from \"../types.js\";\n\nfunction generateCopilotInstructions(config: ArcBridgeConfig): string {\n const lines: string[] = [\n `# ${config.project_name} - Copilot Instructions`,\n \"\",\n `> Auto-generated by ArcBridge. Edit .arcbridge/ files to update.`,\n \"\",\n \"## Project Context\",\n \"\",\n `This is a ${config.project_type} project.`,\n \"\",\n `**Quality Priorities:** ${config.quality_priorities.join(\", \")}`,\n \"\",\n \"## Architecture\",\n \"\",\n \"Architecture documentation is in `.arcbridge/arc42/`.\",\n \"Quality scenarios are in `.arcbridge/arc42/10-quality-scenarios.yaml`.\",\n \"Phase plan is in `.arcbridge/plan/`.\",\n \"\",\n \"## Code Intelligence\",\n \"\",\n \"Use ArcBridge MCP tools to explore the codebase:\",\n \"- `arcbridge_search_symbols` — Search for functions, classes, types\",\n \"- `arcbridge_get_symbol` — Get full details on a symbol\",\n \"- `arcbridge_get_dependency_graph` — Analyze module dependencies\",\n \"- `arcbridge_reindex` — Re-index after code changes\",\n \"\",\n \"## React & Next.js Analysis\",\n \"\",\n \"- `arcbridge_get_component_graph` — View component hierarchy, props, state, and context\",\n \"- `arcbridge_get_route_map` — View Next.js route tree (pages, layouts, API routes)\",\n \"- `arcbridge_get_boundary_analysis` — Analyze server/client boundaries\",\n \"\",\n \"## Architecture Bridge\",\n \"\",\n \"- `arcbridge_check_drift` — Detect architecture drift and boundary violations\",\n \"- `arcbridge_get_guidance` — Get context-aware guidance for code changes\",\n \"- `arcbridge_get_open_questions` — Surface architectural gaps\",\n \"- `arcbridge_propose_arc42_update` — Generate arc42 update proposals from code changes\",\n \"- `arcbridge_get_practice_review` — Review recent changes across 5 practice dimensions\",\n \"\",\n \"## Conventions\",\n \"\",\n \"- Follow existing patterns in the codebase\",\n \"- Stay within building block boundaries\",\n \"- Write tests for new functionality\",\n \"- Check quality scenarios before submitting changes\",\n \"\",\n ];\n\n return lines.join(\"\\n\");\n}\n\nfunction generateAgentFile(role: AgentRole): string {\n const lines: string[] = [\n `# ${role.name}`,\n \"\",\n role.description,\n \"\",\n ];\n\n if (role.read_only) {\n lines.push(\"**Access:** Read-only\", \"\");\n }\n\n if (role.quality_focus.length > 0) {\n lines.push(\n \"## Quality Focus\",\n \"\",\n ...role.quality_focus.map((q) => `- ${q}`),\n \"\",\n );\n }\n\n lines.push(\"## Instructions\", \"\", role.system_prompt, \"\");\n\n return lines.join(\"\\n\");\n}\n\nexport class CopilotAdapter implements PlatformAdapter {\n platform = \"copilot\";\n\n generateProjectConfig(targetDir: string, config: ArcBridgeConfig): void {\n const githubDir = join(targetDir, \".github\");\n mkdirSync(githubDir, { recursive: true });\n\n const content = generateCopilotInstructions(config);\n writeFileSync(\n join(githubDir, \"copilot-instructions.md\"),\n content,\n \"utf-8\",\n );\n }\n\n generateAgentConfigs(targetDir: string, roles: AgentRole[]): void {\n const agentsDir = join(targetDir, \".github\", \"agents\");\n mkdirSync(agentsDir, { recursive: true });\n\n for (const role of roles) {\n const content = generateAgentFile(role);\n writeFileSync(join(agentsDir, `${role.role_id}.md`), content, \"utf-8\");\n }\n }\n}\n","export type { PlatformAdapter } from \"./types.js\";\nexport { ClaudeAdapter } from \"./claude/claude-adapter.js\";\nexport { CopilotAdapter } from \"./copilot/copilot-adapter.js\";\n\nimport type { PlatformAdapter } from \"./types.js\";\nimport { ClaudeAdapter } from \"./claude/claude-adapter.js\";\nimport { CopilotAdapter } from \"./copilot/copilot-adapter.js\";\n\nconst adapters: Record<string, () => PlatformAdapter> = {\n claude: () => new ClaudeAdapter(),\n copilot: () => new CopilotAdapter(),\n};\n\nexport function getAdapter(platform: string): PlatformAdapter {\n const factory = adapters[platform];\n if (!factory) {\n throw new Error(\n `Unknown platform: ${platform}. Available: ${Object.keys(adapters).join(\", \")}`,\n );\n }\n return factory();\n}\n"],"mappings":"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","names":["mkdirSync","writeFileSync","join","generateAgentFile"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcbridge/adapters",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Platform adapters for ArcBridge — Claude Code and GitHub Copilot config generators",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@arcbridge/core": "0.1.
|
|
35
|
+
"@arcbridge/core": "0.1.5"
|
|
36
36
|
},
|
|
37
37
|
"engines": {
|
|
38
38
|
"node": ">=22.16.0"
|