@directive-run/cli 0.4.2 → 0.7.0

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/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/constants.ts","../src/lib/detect.ts","../src/lib/merge.ts","../src/lib/monorepo.ts","../src/templates/claude.ts","../src/templates/cursor.ts","../src/templates/copilot.ts","../src/templates/cline.ts","../src/templates/windsurf.ts","../src/templates/index.ts","../src/commands/ai-rules.ts","../src/commands/init.ts","../src/commands/new.ts","../src/lib/loader.ts","../src/commands/inspect.ts","../src/commands/explain.ts","../src/commands/graph.ts","../src/commands/doctor.ts","../src/commands/examples.ts","../src/cli.ts"],"names":["CLI_NAME","SECTION_START","SECTION_END","TOOL_SIGNALS","detectTools","rootDir","detected","tool","signal","existsSync","join","getToolConfig","id","t","getAllToolIds","mergeSection","existingContent","newSection","startIdx","endIdx","wrapped","separator","hasDirectiveSection","content","MONOREPO_SIGNALS","detectMonorepo","startDir","dir","resolve","dirname","pkgPath","readFileSync","generateClaudeRules","corePatterns","getKnowledge","antiPatterns","naming","schemaTypes","generateCursorRules","generateCopilotRules","generateClineRules","generateWindsurfRules","generators","getTemplate","toolId","generator","parseArgs","args","opts","i","val","aiRulesCommand","pc","mono","targetDir","placement","relative","selectedTools","config","choices","s","filePath","fileExists","writeFile","action","mkdirSync","writeFileSync","aiRulesUpdateCommand","ruleFiles","updated","file","existing","newContent","merged","aiRulesCheckCommand","checked","stale","freshContent","detectPackageManager","installCmd","pm","pkg","getTemplates","moduleName","generateCounterModule","generateCounterMain","generateAuthModule","generateAuthMain","generateAIModule","generateAIMain","name","toCamelCase","camelName","_","c","initCommand","h","nameResult","templateId","templates","choice","template","skipped","rel","depsCmd","ALL_SECTIONS","generateModule","sections","hasConstraints","hasResolvers","code","generateOrchestrator","findModulesDir","newModuleCommand","newOrchestratorCommand","loadSystem","resolved","mod","isSystem","key","err","obj","sys","arg","formatFacts","facts","lines","entries","value","formatted","formatValue","formatConstraints","constraints","status","hits","formatResolverDefs","resolverDefs","resolvers","def","stateStr","formatResolverState","formatUnmet","unmet","u","formatInflight","inflight","now","inf","elapsed","state","error","duration","dur","findWarnings","inspection","warnings","r","inspectCommand","system","factsObj","w","requirementId","explainCommand","explanation","resolverEntries","formatState","payload","resolverStatus","renderAsciiGraph","constraintMap","entry","resolversByType","info","reqType","usedResolvers","renderHtmlGraph","nodes","edges","factKeys","reqTypes","reqIdx","nodeMap","n","svgWidth","maxY","edgeSvg","e","from","to","nodeSvg","escapeHtml","headerSvg","text","graphCommand","html","outputPath","exec","openCmd","checkCoreInstalled","deps","checkVersionCompatibility","directivePackages","k","checkTypeScript","tsconfigPath","stripped","co","issues","checkDuplicateInstances","nodeModules","duplicates","scopeDir","packages","readdirSync","nestedCore","checkAIRulesFreshness","found","doctorCommand","checks","failures","check","icon","CATEGORIES","getCategory","cat","names","getDescription","line","trimmed","jsdocMatch","examplesListCommand","filter","examples","getAllExamples","byCategory","categoryOrder","sortedCategories","a","b","items","item","desc","examplesCopyCommand","dest","getExample","rewritten","HELP","main","fileURLToPath","__dirname","command","subcommand"],"mappings":"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","file":"cli.js","sourcesContent":["export const CLI_NAME = \"directive\";\nexport const CLI_ALIAS = \"dr\";\nexport const PACKAGE_NAME = \"@directive-run/cli\";\nexport const SECTION_START = \"<!-- directive:start -->\";\nexport const SECTION_END = \"<!-- directive:end -->\";\n","import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport interface DetectedTool {\n name: string;\n id: \"cursor\" | \"claude\" | \"copilot\" | \"windsurf\" | \"cline\";\n outputPath: string;\n}\n\nconst TOOL_SIGNALS: Array<{\n id: DetectedTool[\"id\"];\n name: string;\n signals: string[];\n outputPath: string;\n}> = [\n {\n id: \"cursor\",\n name: \"Cursor\",\n signals: [\".cursor\", \".cursorrules\"],\n outputPath: \".cursorrules\",\n },\n {\n id: \"claude\",\n name: \"Claude Code\",\n signals: [\".claude\"],\n outputPath: \".claude/CLAUDE.md\",\n },\n {\n id: \"copilot\",\n name: \"GitHub Copilot\",\n signals: [\".github\"],\n outputPath: \".github/copilot-instructions.md\",\n },\n {\n id: \"windsurf\",\n name: \"Windsurf\",\n signals: [\".windsurfrules\"],\n outputPath: \".windsurfrules\",\n },\n {\n id: \"cline\",\n name: \"Cline\",\n signals: [\".clinerules\"],\n outputPath: \".clinerules\",\n },\n];\n\nexport function detectTools(rootDir: string): DetectedTool[] {\n const detected: DetectedTool[] = [];\n\n for (const tool of TOOL_SIGNALS) {\n const hasSignal = tool.signals.some((signal) =>\n existsSync(join(rootDir, signal)),\n );\n\n if (hasSignal) {\n detected.push({\n name: tool.name,\n id: tool.id,\n outputPath: join(rootDir, tool.outputPath),\n });\n }\n }\n\n return detected;\n}\n\nexport function getToolConfig(id: DetectedTool[\"id\"]) {\n const tool = TOOL_SIGNALS.find((t) => t.id === id);\n if (!tool) {\n throw new Error(`Unknown tool: ${id}`);\n }\n\n return tool;\n}\n\nexport function getAllToolIds(): DetectedTool[\"id\"][] {\n return TOOL_SIGNALS.map((t) => t.id);\n}\n","import { SECTION_END, SECTION_START } from \"./constants.js\";\n\n/**\n * Replace the Directive section within existing content, or append it.\n * Section markers: <!-- directive:start --> ... <!-- directive:end -->\n */\nexport function mergeSection(\n existingContent: string,\n newSection: string,\n): string {\n const startIdx = existingContent.indexOf(SECTION_START);\n const endIdx = existingContent.indexOf(SECTION_END);\n\n const wrapped = `${SECTION_START}\\n${newSection}\\n${SECTION_END}`;\n\n if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {\n return (\n existingContent.slice(0, startIdx) +\n wrapped +\n existingContent.slice(endIdx + SECTION_END.length)\n );\n }\n\n const separator = existingContent.endsWith(\"\\n\") ? \"\\n\" : \"\\n\\n\";\n\n return existingContent + separator + wrapped + \"\\n\";\n}\n\n/**\n * Check if content already has a Directive section.\n */\nexport function hasDirectiveSection(content: string): boolean {\n return (\n content.includes(SECTION_START) && content.includes(SECTION_END)\n );\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport interface MonorepoInfo {\n isMonorepo: boolean;\n rootDir: string;\n tool?: \"pnpm\" | \"turbo\" | \"npm\" | \"yarn\";\n}\n\nconst MONOREPO_SIGNALS = [\n { file: \"pnpm-workspace.yaml\", tool: \"pnpm\" as const },\n { file: \"turbo.json\", tool: \"turbo\" as const },\n];\n\nexport function detectMonorepo(startDir: string): MonorepoInfo {\n let dir = resolve(startDir);\n\n while (dir !== dirname(dir)) {\n for (const signal of MONOREPO_SIGNALS) {\n if (existsSync(join(dir, signal.file))) {\n return { isMonorepo: true, rootDir: dir, tool: signal.tool };\n }\n }\n\n const pkgPath = join(dir, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n if (pkg.workspaces) {\n const tool = existsSync(join(dir, \"yarn.lock\"))\n ? (\"yarn\" as const)\n : (\"npm\" as const);\n\n return { isMonorepo: true, rootDir: dir, tool };\n }\n } catch {\n // ignore parse errors\n }\n }\n\n dir = dirname(dir);\n }\n\n return { isMonorepo: false, rootDir: startDir };\n}\n","import { getKnowledge } from \"../lib/knowledge.js\";\n\n/**\n * Generate Claude Code rules (~30KB).\n * Strategy: Full anti-patterns + core-patterns + naming + schema-types (most critical),\n * condensed summaries for everything else.\n */\nexport function generateClaudeRules(): string {\n // These 4 files are included in full (~25KB)\n const corePatterns = getKnowledge(\"core-patterns\");\n const antiPatterns = getKnowledge(\"anti-patterns\");\n const naming = getKnowledge(\"naming\");\n const schemaTypes = getKnowledge(\"schema-types\");\n\n return `# Directive — Complete AI Coding Rules\n\n> Constraint-driven runtime for TypeScript. Declare requirements, let the runtime resolve them.\n> https://directive.run | \\`npm install @directive-run/core\\`\n> Full reference with examples: https://directive.run/llms.txt\n\n## Core Patterns\n\n${corePatterns}\n\n---\n\n## Anti-Patterns (All 36)\n\n${antiPatterns}\n\n### AI Package Anti-Patterns (21-36)\n\n| # | WRONG | CORRECT |\n|---|-------|---------|\n| 21 | TS types for factsSchema: \\`{ confidence: number }\\` | Use \\`{ confidence: t.number() }\\` |\n| 22 | \\`facts.cache.push(item)\\` in orchestrator | \\`facts.cache = [...facts.cache, item]\\` |\n| 23 | Returning data from orchestrator \\`resolve\\` | Resolvers return \\`void\\` — mutate \\`context.facts\\` |\n| 24 | Forgetting \\`orchestrator.start()\\` multi-agent | Single: implicit. Multi: must call \\`start()\\` |\n| 25 | Catching \\`Error\\` not \\`GuardrailError\\` | \\`GuardrailError\\` has \\`.guardrailName\\`, \\`.errorCode\\` |\n| 26 | \\`from '@directive-run/ai'\\` for adapters | Subpath: \\`from '@directive-run/ai/openai'\\` |\n| 27 | Assuming \\`{ input_tokens }\\` structure | Normalized: \\`{ inputTokens, outputTokens }\\` |\n| 28 | Same CircuitBreaker across agents | Create separate instances per dependency |\n| 29 | \\`budgetWarningThreshold: 1.5\\` | Must be 0-1 (percentage) |\n| 30 | \\`race\\` minSuccess > agents.length | Must be \\`1 ≤ minSuccess ≤ agents.length\\` |\n| 31 | Async summarizer with autoManage: true | Use \\`autoManage: false\\` for sync control |\n| 32 | Side effects in reflect \\`evaluator\\` | Evaluator must be pure |\n| 33 | Task calling \\`runSingleAgent\\` | Tasks can't call agents — separate node |\n| 34 | Task expecting object input | Input is always \\`string\\` — \\`JSON.parse(input)\\` |\n| 35 | Task ID same as agent ID | IDs share namespace — distinct names |\n| 36 | \\`from '@directive-run/ai/mcp'\\` | \\`from '@directive-run/ai'\\` (main export) |\n\n---\n\n## Naming Conventions\n\n${naming}\n\n---\n\n## Schema Type Builders\n\n${schemaTypes}\n\n---\n\n## Multi-Module Quick Reference\n\n\\`\\`\\`typescript\n// Two modules with cross-module dependency\nconst authSchema = { facts: { token: t.string(), isAuth: t.boolean() } };\nconst authModule = createModule(\"auth\", { schema: authSchema, /* ... */ });\n\nconst cartModule = createModule(\"cart\", {\n schema: { facts: { items: t.array<CartItem>() } },\n crossModuleDeps: { auth: authSchema }, // Declare dependency\n constraints: {\n checkout: {\n when: (facts) => facts.self.items.length > 0 && facts.auth.isAuth, // facts.self.* for own, facts.auth.* for cross\n require: () => ({ type: \"CHECKOUT\" }),\n },\n },\n // ...\n});\n\nconst system = createSystem({ modules: { auth: authModule, cart: cartModule } });\n// Access: system.facts.auth.token, system.events.cart.addItem({...})\n\\`\\`\\`\n\nKey rules:\n- \\`facts.self.*\\` for own module facts in constraints/resolvers\n- \\`facts.otherModule.*\\` for cross-module reads\n- \\`crossModuleDeps\\` must declare consumed schemas\n- \\`system.events.moduleName.eventName(payload)\\` for namespaced events\n- The \\`::\\` separator is internal — always use dot notation\n\n---\n\n## Constraints\n\n- \\`when(facts)\\` → boolean. When true, requirement is emitted.\n- \\`require(facts)\\` → \\`{ type: \"TYPE\", ...data }\\` object (never string literal)\n- \\`priority: number\\` — higher evaluated first\n- \\`after: [\"constraintName\"]\\` — ordering within same priority\n- Async: \\`async: true\\` + \\`deps: ['factName']\\` (deps REQUIRED for async)\n- Constraints DECLARE needs, resolvers FULFILL them — decoupled.\n\n---\n\n## Resolvers\n\n- \\`resolve(req, context)\\` — async, returns \\`void\\`. Mutate \\`context.facts.*\\`.\n- \\`requirement: \"TYPE\"\\` — which type this handles\n- \\`key: (req) => string\\` — deduplication key\n- \\`retry: { attempts: 3, backoff: \"exponential\", initialDelay: 100 }\\`\n- \\`batch: { maxSize: 10, windowMs: 50 }\\` for N+1 prevention\n- Always \\`await system.settle()\\` after start to wait for resolution\n\n---\n\n## System API\n\n- \\`system.facts.fieldName\\` — read/write facts\n- \\`system.derive.derivationName\\` — read derived values\n- \\`system.events.eventName(payload)\\` — dispatch events\n- \\`system.subscribe(listener)\\` — subscribe to all changes\n- \\`system.read(key)\\` — read fact or derivation by string key\n- \\`system.inspect()\\` — full state snapshot\n- \\`system.settle()\\` — wait for async operations\n- \\`system.start()\\` / \\`system.stop()\\` / \\`system.destroy()\\`\n\n---\n\n## React (\\`@directive-run/react\\`)\n\n\\`\\`\\`typescript\nimport { useSelector, useEvent } from \"@directive-run/react\";\n\nconst count = useSelector(system, (s) => s.facts.count);\nconst events = useEvent(system);\n// onClick={() => events.increment()}\n\\`\\`\\`\n\n**NO** \\`useDirective()\\` hook. Use \\`useSelector\\` + \\`useEvent\\`.\n\n---\n\n## Plugins (\\`@directive-run/core/plugins\\`)\n\n\\`devtoolsPlugin()\\`, \\`loggingPlugin()\\`, \\`persistencePlugin(config)\\`,\n\\`createCircuitBreaker(config)\\`, \\`createObservability(config)\\`\n\n---\n\n## AI Package (\\`@directive-run/ai\\`)\n\n### Single-Agent Orchestrator\n\n\\`\\`\\`typescript\nimport { createAgentOrchestrator, t } from '@directive-run/ai';\nimport { createAnthropicRunner } from '@directive-run/ai/anthropic';\n\nconst orchestrator = createAgentOrchestrator({\n runner: createAnthropicRunner({ apiKey }),\n factsSchema: { result: t.string(), confidence: t.number() },\n init: (facts) => { facts.result = \"\"; facts.confidence = 0; },\n maxTokenBudget: 100000,\n budgetWarningThreshold: 0.8,\n guardrails: { input: [...], output: [...] },\n memory: createAgentMemory({ strategy: createSlidingWindowStrategy({ maxMessages: 30 }) }),\n debug: true,\n});\n\nconst result = await orchestrator.run(agent, \"analyze this\");\n\\`\\`\\`\n\n### Multi-Agent\n\n\\`\\`\\`typescript\nimport { createMultiAgentOrchestrator, parallel, sequential, dag } from '@directive-run/ai';\n\nconst orch = createMultiAgentOrchestrator({\n agents: { researcher: agentA, writer: agentB },\n patterns: {\n pipeline: sequential([\"researcher\", \"writer\"]),\n brainstorm: parallel([\"researcher\", \"writer\"], mergeResults),\n workflow: dag([\n { id: \"research\", handler: \"researcher\" },\n { id: \"write\", handler: \"writer\", dependencies: [\"research\"] },\n ]),\n },\n runner,\n});\norch.start(); // Required for multi-agent!\n\\`\\`\\`\n\n8 patterns: \\`parallel\\`, \\`sequential\\`, \\`supervisor\\`, \\`dag\\`, \\`reflect\\`, \\`race\\`, \\`debate\\`, \\`goal\\`\n\n### Adapter Imports (Subpath!)\n\n\\`\\`\\`typescript\nimport { createAnthropicRunner } from '@directive-run/ai/anthropic';\nimport { createOpenAIRunner } from '@directive-run/ai/openai';\nimport { createOllamaRunner } from '@directive-run/ai/ollama';\nimport { createGeminiRunner } from '@directive-run/ai/gemini';\n\\`\\`\\`\n\n### Guardrails\n\n\\`createPIIGuardrail\\`, \\`createModerationGuardrail\\`, \\`createRateLimitGuardrail\\`,\n\\`createToolGuardrail\\`, \\`createOutputSchemaGuardrail\\`, \\`createLengthGuardrail\\`,\n\\`createContentFilterGuardrail\\`\n\n\\`GuardrailResult: { passed: boolean, reason?: string, transformed?: unknown }\\`\n\n### Memory\n\n\\`createAgentMemory({ strategy, summarizer?, autoManage? })\\`\nStrategies: \\`createSlidingWindowStrategy\\`, \\`createTokenBasedStrategy\\`, \\`createHybridStrategy\\`\nSummarizers: \\`createTruncationSummarizer\\`, \\`createKeyPointsSummarizer\\`, \\`createLLMSummarizer(runner)\\`\n\n### Streaming\n\n\\`\\`\\`typescript\nconst streamResult = orchestrator.runStream(agent, \"analyze\");\nfor await (const chunk of streamResult.stream) {\n switch (chunk.type) {\n case \"token\": process.stdout.write(chunk.data); break;\n case \"done\": console.log(\"Tokens:\", chunk.totalTokens); break;\n case \"error\": console.error(chunk.error); break;\n }\n}\n\\`\\`\\`\n\nBackpressure: \\`\"buffer\"\\` (default), \\`\"block\"\\`, \\`\"drop\"\\`\n`;\n}\n","/**\n * Generate Cursor rules (<10KB).\n * Handcrafted condensed content — core patterns, top 10 anti-patterns, naming, 1 mini example.\n */\nexport function generateCursorRules(): string {\n return `# Directive — AI Coding Rules\n\n> Constraint-driven runtime for TypeScript. \\`npm install @directive-run/core\\`\n> Full reference: https://directive.run/llms.txt\n\n## Schema Shape (CRITICAL)\n\n\\`\\`\\`typescript\nimport { createModule, createSystem, t } from \"@directive-run/core\";\n\nconst myModule = createModule(\"name\", {\n schema: {\n facts: { count: t.number(), items: t.array<string>() },\n derivations: { total: \"number\" },\n events: { increment: \"void\", addItem: \"string\" },\n requirements: { FETCH_DATA: { url: \"string\" } },\n },\n init: (facts) => { facts.count = 0; facts.items = []; },\n derive: {\n total: (facts) => facts.items.length + facts.count,\n },\n events: {\n increment: (facts) => { facts.count += 1; },\n addItem: (facts, item) => { facts.items = [...facts.items, item]; },\n },\n constraints: {\n fetchWhenReady: {\n when: (facts) => facts.count > 0 && facts.items.length === 0,\n require: (facts) => ({ type: \"FETCH_DATA\", url: \"/api/items\" }),\n },\n },\n resolvers: {\n fetchData: {\n requirement: \"FETCH_DATA\",\n resolve: async (req, context) => {\n const data = await fetch(req.url).then(r => r.json());\n context.facts.items = data;\n },\n },\n },\n});\n\nconst system = createSystem({ module: myModule });\nawait system.settle();\n\\`\\`\\`\n\n## Top 10 Anti-Patterns\n\n| # | WRONG | CORRECT |\n|---|-------|---------|\n| 1 | \\`facts.profile as ResourceState<Profile>\\` | Remove cast — schema provides types |\n| 2 | \\`{ phase: t.string() }\\` flat schema | \\`schema: { facts: { phase: t.string() } }\\` |\n| 3 | \\`facts.items\\` in multi-module | \\`facts.self.items\\` |\n| 4 | \\`t.map()\\`, \\`t.set()\\`, \\`t.promise()\\` | Don't exist. Use \\`t.object<Map<K,V>>()\\` |\n| 5 | \\`(req, ctx)\\` in resolver | \\`(req, context)\\` — never abbreviate |\n| 6 | \\`createModule(\"n\", { phase: t.string() })\\` | Must wrap: \\`schema: { facts: { ... } }\\` |\n| 7 | \\`system.dispatch('login', {...})\\` | \\`system.events.login({...})\\` |\n| 8 | \\`facts.items.push(item)\\` | \\`facts.items = [...facts.items, item]\\` |\n| 9 | \\`useDirective(system)\\` | \\`useSelector(system, s => s.facts.count)\\` |\n| 10 | \\`facts['auth::status']\\` | \\`facts.auth.status\\` dot notation |\n\n## Naming\n\n- \\`req\\` = requirement (not request). Parameter: \\`(req, context)\\`\n- \\`derive\\` / derivations — never \"computed\" or \"selectors\"\n- Resolvers return \\`void\\` — mutate \\`context.facts\\` instead\n- Always use braces for returns: \\`if (x) { return y; }\\`\n- Multi-module: \\`facts.self.fieldName\\` for own module facts\n- Events: \\`system.events.eventName(payload)\\` — not \\`system.dispatch()\\`\n- Import from main: \\`import { createModule } from '@directive-run/core'\\`\n\n## Schema Types That Exist\n\n\\`t.string<T>()\\`, \\`t.number()\\`, \\`t.boolean()\\`, \\`t.array<T>()\\`, \\`t.object<T>()\\`,\n\\`t.enum(\"a\",\"b\")\\`, \\`t.literal(value)\\`, \\`t.nullable(inner)\\`, \\`t.optional(inner)\\`, \\`t.union(...)\\`\n\nChainable: \\`.default()\\`, \\`.validate()\\`, \\`.transform()\\`, \\`.brand<>()\\`, \\`.refine()\\`\n\n**DO NOT USE** (hallucinations): \\`t.map()\\`, \\`t.set()\\`, \\`t.date()\\`, \\`t.tuple()\\`, \\`t.record()\\`, \\`t.promise()\\`, \\`t.any()\\`\n\n## Key Pattern: Constraint → Requirement → Resolver\n\nWhen the user wants \"do X when Y\": create THREE things:\n1. **Constraint**: \\`when: (facts) => Y_condition\\` → \\`require: { type: \"DO_X\" }\\`\n2. **Resolver**: handles \"DO_X\", calls API, sets \\`context.facts\\`\n3. They are **decoupled**. Constraint declares need, resolver fulfills it.\n`;\n}\n","import { generateCursorRules } from \"./cursor.js\";\n\n/**\n * Generate GitHub Copilot instructions (~12KB).\n * Cursor content + all 20 anti-patterns + schema types detail + AI basics.\n */\nexport function generateCopilotRules(): string {\n const base = generateCursorRules();\n\n // Add anti-patterns 11-20 that cursor doesn't include\n const extraAntiPatterns = `\n## Anti-Patterns 11-20\n\n| # | WRONG | CORRECT |\n|---|-------|---------|\n| 11 | \\`module(\"name\").schema({...}).build()\\` | Prefer \\`createModule(\"name\", {...})\\` object syntax |\n| 12 | Returning data from \\`resolve\\` | Resolvers return \\`void\\` — mutate \\`context.facts\\` |\n| 13 | Async logic in \\`init\\` | \\`init\\` is synchronous, facts assignment only |\n| 14 | \\`await system.start()\\` without settle | Add \\`await system.settle()\\` after start |\n| 15 | Missing \\`crossModuleDeps\\` | Declare \\`crossModuleDeps: { auth: authSchema }\\` |\n| 16 | \\`require: \"TYPE\"\\` string literal | \\`require: { type: \"TYPE\" }\\` object form |\n| 17 | Passthrough derivation \\`(f) => f.count\\` | Remove — read fact directly |\n| 18 | \\`from '@directive-run/core/module'\\` | \\`from '@directive-run/core'\\` (main export) |\n| 19 | \\`async when()\\` without \\`deps\\` | Add \\`deps: ['factName']\\` for async constraints |\n| 20 | No error boundary on resolver | Use try-catch or module error boundary config |\n`;\n\n // Add multi-module basics\n const multiModule = `\n## Multi-Module\n\n\\`\\`\\`typescript\nconst system = createSystem({\n modules: { auth: authModule, cart: cartModule },\n});\n\n// Access: system.facts.auth.token, system.events.cart.addItem({...})\n// In constraints/resolvers: use facts.self.* for own module\n// Declare deps: crossModuleDeps: { auth: authSchema }\n\\`\\`\\`\n`;\n\n // Add AI basics\n const aiBasics = `\n## AI Package Basics (\\`@directive-run/ai\\`)\n\n\\`\\`\\`typescript\nimport { createAgentOrchestrator, t } from '@directive-run/ai';\nimport { createAnthropicRunner } from '@directive-run/ai/anthropic'; // Subpath import!\n\nconst orchestrator = createAgentOrchestrator({\n runner: createAnthropicRunner({ apiKey: process.env.ANTHROPIC_API_KEY }),\n factsSchema: { result: t.string(), confidence: t.number() }, // Use t.*() !\n init: (facts) => { facts.result = \"\"; facts.confidence = 0; },\n});\n\nconst result = await orchestrator.run(agent, \"analyze this\");\n\\`\\`\\`\n\n**AI Anti-Patterns:**\n- Use \\`t.number()\\` not \\`number\\` for factsSchema\n- Subpath imports: \\`from '@directive-run/ai/anthropic'\\` not \\`from '@directive-run/ai'\\`\n- Token usage normalized: \\`{ inputTokens, outputTokens }\\` (not provider-specific)\n- \\`facts.cache = [...facts.cache, item]\\` not \\`facts.cache.push(item)\\`\n`;\n\n return base + extraAntiPatterns + multiModule + aiBasics;\n}\n","import { generateCopilotRules } from \"./copilot.js\";\n\n/**\n * Generate Cline rules (~12KB).\n * Same content as Copilot.\n */\nexport function generateClineRules(): string {\n return generateCopilotRules();\n}\n","import { generateCopilotRules } from \"./copilot.js\";\n\n/**\n * Generate Windsurf rules (~12KB).\n * Same content as Copilot.\n */\nexport function generateWindsurfRules(): string {\n return generateCopilotRules();\n}\n","import type { DetectedTool } from \"../lib/detect.js\";\nimport { generateClaudeRules } from \"./claude.js\";\nimport { generateClineRules } from \"./cline.js\";\nimport { generateCopilotRules } from \"./copilot.js\";\nimport { generateCursorRules } from \"./cursor.js\";\nimport { generateLlmsTxt } from \"./llms-txt.js\";\nimport { generateWindsurfRules } from \"./windsurf.js\";\n\nconst generators: Record<DetectedTool[\"id\"], () => string> = {\n cursor: generateCursorRules,\n claude: generateClaudeRules,\n copilot: generateCopilotRules,\n windsurf: generateWindsurfRules,\n cline: generateClineRules,\n};\n\nexport function getTemplate(toolId: DetectedTool[\"id\"]): string {\n const generator = generators[toolId];\n if (!generator) {\n throw new Error(`No template for tool: ${toolId}`);\n }\n\n return generator();\n}\n\nexport { generateLlmsTxt };\n","import * as p from \"@clack/prompts\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\nimport { CLI_NAME } from \"../lib/constants.js\";\nimport {\n type DetectedTool,\n detectTools,\n getAllToolIds,\n getToolConfig,\n} from \"../lib/detect.js\";\nimport { hasDirectiveSection, mergeSection } from \"../lib/merge.js\";\nimport { detectMonorepo } from \"../lib/monorepo.js\";\nimport { getTemplate } from \"../templates/index.js\";\n\ninterface Options {\n force: boolean;\n merge: boolean;\n tools: string[];\n dir: string;\n}\n\nfunction parseArgs(args: string[]): Options {\n const opts: Options = {\n force: false,\n merge: false,\n tools: [],\n dir: process.cwd(),\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--force\":\n opts.force = true;\n break;\n case \"--merge\":\n opts.merge = true;\n break;\n case \"--tool\": {\n const val = args[++i];\n if (val) {\n opts.tools.push(val);\n }\n break;\n }\n case \"--dir\": {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n break;\n }\n }\n }\n\n return opts;\n}\n\nexport async function aiRulesCommand(args: string[]) {\n const opts = parseArgs(args);\n\n p.intro(pc.bgCyan(pc.black(\" directive ai-rules \")));\n\n // Step 1: Detect monorepo\n const mono = detectMonorepo(opts.dir);\n let targetDir = opts.dir;\n\n if (mono.isMonorepo && mono.rootDir !== opts.dir) {\n const placement = await p.select({\n message: \"Monorepo detected. Where should AI rules be installed?\",\n options: [\n {\n value: \"root\",\n label: `Monorepo root (${relative(opts.dir, mono.rootDir) || \".\"})`,\n hint: \"recommended\",\n },\n {\n value: \"workspace\",\n label: `Current workspace (${relative(mono.rootDir, opts.dir)})`,\n },\n ],\n });\n\n if (p.isCancel(placement)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n if (placement === \"root\") {\n targetDir = mono.rootDir;\n }\n }\n\n // Step 2: Detect or select tools\n let selectedTools: DetectedTool[];\n\n if (opts.tools.length > 0) {\n selectedTools = opts.tools.map((id) => {\n const config = getToolConfig(id as DetectedTool[\"id\"]);\n\n return {\n name: config.name,\n id: config.id,\n outputPath: join(targetDir, config.outputPath),\n };\n });\n } else {\n const detected = detectTools(targetDir);\n\n if (detected.length > 0) {\n const choices = await p.multiselect({\n message: `Detected ${detected.length} AI tool(s). Which should get Directive rules?`,\n options: detected.map((t) => ({\n value: t.id,\n label: t.name,\n hint: relative(targetDir, t.outputPath),\n })),\n initialValues: detected.map((t) => t.id),\n required: true,\n });\n\n if (p.isCancel(choices)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n selectedTools = (choices as DetectedTool[\"id\"][]).map((id) => {\n const config = getToolConfig(id);\n\n return {\n name: config.name,\n id: config.id,\n outputPath: join(targetDir, config.outputPath),\n };\n });\n } else {\n const choices = await p.multiselect({\n message:\n \"No AI tools detected. Which tools do you use?\",\n options: getAllToolIds().map((id) => {\n const config = getToolConfig(id);\n\n return { value: id, label: config.name };\n }),\n required: true,\n });\n\n if (p.isCancel(choices)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n selectedTools = (choices as DetectedTool[\"id\"][]).map((id) => {\n const config = getToolConfig(id);\n\n return {\n name: config.name,\n id: config.id,\n outputPath: join(targetDir, config.outputPath),\n };\n });\n }\n }\n\n if (selectedTools.length === 0) {\n p.cancel(\"No tools selected.\");\n process.exit(0);\n }\n\n // Step 3: Write files\n const s = p.spinner();\n\n for (const tool of selectedTools) {\n s.start(`Generating ${tool.name} rules...`);\n\n const content = getTemplate(tool.id);\n const filePath = tool.outputPath;\n const fileExists = existsSync(filePath);\n\n s.stop(`Generated ${tool.name} rules.`);\n\n if (fileExists && !opts.force) {\n const existingContent = readFileSync(filePath, \"utf-8\");\n\n if (opts.merge) {\n writeFile(filePath, mergeSection(existingContent, content));\n p.log.success(\n `${pc.green(\"Merged\")} Directive section into ${pc.dim(relative(targetDir, filePath))}`,\n );\n continue;\n }\n\n if (hasDirectiveSection(existingContent)) {\n const action = await p.select({\n message: `${relative(targetDir, filePath)} already has a Directive section. What should we do?`,\n options: [\n {\n value: \"merge\",\n label: \"Update Directive section only\",\n hint: \"recommended\",\n },\n { value: \"overwrite\", label: \"Overwrite entire file\" },\n { value: \"skip\", label: \"Skip this file\" },\n ],\n });\n\n if (p.isCancel(action)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n if (action === \"merge\") {\n writeFile(filePath, mergeSection(existingContent, content));\n p.log.success(\n `${pc.green(\"Updated\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else if (action === \"overwrite\") {\n writeFile(filePath, content);\n p.log.success(\n `${pc.green(\"Wrote\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else {\n p.log.info(`Skipped ${pc.dim(relative(targetDir, filePath))}`);\n }\n } else {\n const action = await p.select({\n message: `${relative(targetDir, filePath)} already exists. What should we do?`,\n options: [\n {\n value: \"append\",\n label: \"Append Directive section\",\n hint: \"preserves existing content\",\n },\n { value: \"overwrite\", label: \"Overwrite entire file\" },\n { value: \"skip\", label: \"Skip this file\" },\n ],\n });\n\n if (p.isCancel(action)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n if (action === \"append\") {\n writeFile(filePath, mergeSection(existingContent, content));\n p.log.success(\n `${pc.green(\"Appended\")} to ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else if (action === \"overwrite\") {\n writeFile(filePath, content);\n p.log.success(\n `${pc.green(\"Wrote\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else {\n p.log.info(`Skipped ${pc.dim(relative(targetDir, filePath))}`);\n }\n }\n } else {\n writeFile(filePath, content);\n p.log.success(\n `${pc.green(\"Created\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n }\n }\n\n p.outro(\n `Done! Run ${pc.cyan(`${CLI_NAME} ai-rules init --merge`)} anytime to update.`,\n );\n}\n\nfunction writeFile(filePath: string, content: string) {\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n writeFileSync(filePath, content, \"utf-8\");\n}\n\n// ---------------------------------------------------------------------------\n// ai-rules update — regenerate all existing rule files\n// ---------------------------------------------------------------------------\n\nexport async function aiRulesUpdateCommand(args: string[]) {\n const opts = parseArgs(args);\n const targetDir = opts.dir;\n\n const ruleFiles: Array<{ id: DetectedTool[\"id\"]; path: string }> = [\n { id: \"cursor\", path: join(targetDir, \".cursorrules\") },\n { id: \"claude\", path: join(targetDir, \".claude/CLAUDE.md\") },\n { id: \"copilot\", path: join(targetDir, \".github/copilot-instructions.md\") },\n { id: \"windsurf\", path: join(targetDir, \".windsurfrules\") },\n { id: \"cline\", path: join(targetDir, \".clinerules\") },\n ];\n\n let updated = 0;\n\n for (const file of ruleFiles) {\n if (!existsSync(file.path)) {\n continue;\n }\n\n const existing = readFileSync(file.path, \"utf-8\");\n if (!hasDirectiveSection(existing)) {\n continue;\n }\n\n const newContent = getTemplate(file.id);\n const merged = mergeSection(existing, newContent);\n\n writeFile(file.path, merged);\n console.log(\n `${pc.green(\"Updated\")} ${pc.dim(relative(targetDir, file.path))}`,\n );\n updated++;\n }\n\n if (updated === 0) {\n console.log(\n pc.dim(\n `No existing rule files found. Run ${pc.cyan(`${CLI_NAME} ai-rules init`)} first.`,\n ),\n );\n } else {\n console.log(\n pc.green(`\\nUpdated ${updated} file(s) to latest knowledge version.`),\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// ai-rules check — exit non-zero if rules are stale (CI-friendly)\n// ---------------------------------------------------------------------------\n\nexport async function aiRulesCheckCommand(args: string[]) {\n const opts = parseArgs(args);\n const targetDir = opts.dir;\n\n const ruleFiles: Array<{ id: DetectedTool[\"id\"]; path: string; name: string }> = [\n { id: \"cursor\", path: join(targetDir, \".cursorrules\"), name: \"Cursor\" },\n { id: \"claude\", path: join(targetDir, \".claude/CLAUDE.md\"), name: \"Claude Code\" },\n { id: \"copilot\", path: join(targetDir, \".github/copilot-instructions.md\"), name: \"GitHub Copilot\" },\n { id: \"windsurf\", path: join(targetDir, \".windsurfrules\"), name: \"Windsurf\" },\n { id: \"cline\", path: join(targetDir, \".clinerules\"), name: \"Cline\" },\n ];\n\n let checked = 0;\n let stale = 0;\n\n for (const file of ruleFiles) {\n if (!existsSync(file.path)) {\n continue;\n }\n\n const existing = readFileSync(file.path, \"utf-8\");\n if (!hasDirectiveSection(existing)) {\n continue;\n }\n\n checked++;\n\n // Generate fresh content and merge, then compare\n const freshContent = getTemplate(file.id);\n const merged = mergeSection(existing, freshContent);\n\n if (merged !== existing) {\n console.log(`${pc.red(\"✗\")} ${file.name} rules are ${pc.yellow(\"stale\")}`);\n stale++;\n } else {\n console.log(`${pc.green(\"✓\")} ${file.name} rules are ${pc.green(\"current\")}`);\n }\n }\n\n if (checked === 0) {\n console.log(pc.dim(\"No rule files found to check.\"));\n\n return;\n }\n\n if (stale > 0) {\n console.log(\n `\\n${pc.yellow(`${stale} file(s) are stale.`)} Run ${pc.cyan(`${CLI_NAME} ai-rules update`)} to refresh.`,\n );\n process.exit(1);\n } else {\n console.log(pc.green(\"\\nAll rule files are current.\"));\n }\n}\n","import * as p from \"@clack/prompts\";\nimport { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\nimport { CLI_NAME } from \"../lib/constants.js\";\n\ninterface InitOptions {\n template?: string;\n dir: string;\n noInteractive: boolean;\n}\n\nfunction parseArgs(args: string[]): InitOptions {\n const opts: InitOptions = {\n dir: process.cwd(),\n noInteractive: false,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--template\": {\n const val = args[++i];\n if (val) {\n opts.template = val;\n }\n break;\n }\n case \"--dir\": {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n break;\n }\n case \"--no-interactive\":\n opts.noInteractive = true;\n break;\n }\n }\n\n return opts;\n}\n\n// ---------------------------------------------------------------------------\n// Package manager detection\n// ---------------------------------------------------------------------------\n\ntype PackageManager = \"pnpm\" | \"npm\" | \"yarn\" | \"bun\";\n\nfunction detectPackageManager(dir: string): PackageManager {\n if (existsSync(join(dir, \"pnpm-lock.yaml\"))) {\n return \"pnpm\";\n }\n if (existsSync(join(dir, \"bun.lockb\")) || existsSync(join(dir, \"bun.lock\"))) {\n return \"bun\";\n }\n if (existsSync(join(dir, \"yarn.lock\"))) {\n return \"yarn\";\n }\n\n return \"npm\";\n}\n\nfunction installCmd(pm: PackageManager, pkg: string): string {\n switch (pm) {\n case \"pnpm\":\n return `pnpm add ${pkg}`;\n case \"yarn\":\n return `yarn add ${pkg}`;\n case \"bun\":\n return `bun add ${pkg}`;\n default:\n return `npm install ${pkg}`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Templates\n// ---------------------------------------------------------------------------\n\ntype TemplateId = \"counter\" | \"auth-flow\" | \"ai-orchestrator\";\n\ninterface TemplateConfig {\n id: TemplateId;\n label: string;\n hint: string;\n files: Array<{ path: string; content: string }>;\n deps: string[];\n}\n\nfunction getTemplates(moduleName: string): Record<TemplateId, TemplateConfig> {\n return {\n counter: {\n id: \"counter\",\n label: \"Counter (minimal)\",\n hint: \"schema + init + derive + events — simplest starting point\",\n files: [\n {\n path: `src/${moduleName}.ts`,\n content: generateCounterModule(moduleName),\n },\n {\n path: \"src/main.ts\",\n content: generateCounterMain(moduleName),\n },\n ],\n deps: [\"@directive-run/core\"],\n },\n \"auth-flow\": {\n id: \"auth-flow\",\n label: \"Auth flow (constraints + resolvers)\",\n hint: \"login flow with constraints, resolvers, retry, and effects\",\n files: [\n {\n path: `src/${moduleName}.ts`,\n content: generateAuthModule(moduleName),\n },\n {\n path: \"src/main.ts\",\n content: generateAuthMain(moduleName),\n },\n ],\n deps: [\"@directive-run/core\"],\n },\n \"ai-orchestrator\": {\n id: \"ai-orchestrator\",\n label: \"AI orchestrator\",\n hint: \"agent orchestrator with guardrails and streaming\",\n files: [\n {\n path: `src/${moduleName}.ts`,\n content: generateAIModule(moduleName),\n },\n {\n path: \"src/main.ts\",\n content: generateAIMain(moduleName),\n },\n ],\n deps: [\"@directive-run/core\", \"@directive-run/ai\"],\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Template generators\n// ---------------------------------------------------------------------------\n\nfunction generateCounterModule(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, t } from \"@directive-run/core\";\n\nconst schema = {\n facts: {\n count: t.number(),\n label: t.string(),\n },\n derivations: {\n isEven: t.boolean(),\n display: t.string(),\n },\n events: {\n increment: {},\n decrement: {},\n reset: {},\n setLabel: { value: t.string() },\n },\n} satisfies ModuleSchema;\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.count = 0;\n facts.label = \"${name}\";\n },\n\n derive: {\n isEven: (facts) => facts.count % 2 === 0,\n display: (facts) => \\`\\${facts.label}: \\${facts.count}\\`,\n },\n\n events: {\n increment: (facts) => {\n facts.count++;\n },\n decrement: (facts) => {\n facts.count--;\n },\n reset: (facts) => {\n facts.count = 0;\n },\n setLabel: (facts, { value }) => {\n facts.label = value;\n },\n },\n});\n`;\n}\n\nfunction generateCounterMain(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { createSystem } from \"@directive-run/core\";\nimport { ${camelName} } from \"./${name}.js\";\n\nconst system = createSystem({\n module: ${camelName},\n});\n\nsystem.start();\n\n// Read facts and derivations\nconsole.log(\"count:\", system.facts.count);\nconsole.log(\"display:\", system.read(\"display\"));\n\n// Dispatch events\nsystem.events.increment();\nconsole.log(\"after increment:\", system.facts.count);\n\n// Subscribe to changes\nsystem.subscribe([\"count\"], () => {\n console.log(\"count changed:\", system.facts.count);\n});\n\nsystem.events.increment();\nsystem.events.increment();\n\nexport default system;\n`;\n}\n\nfunction generateAuthModule(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, t } from \"@directive-run/core\";\n\ntype AuthStatus = \"idle\" | \"authenticating\" | \"authenticated\" | \"expired\";\n\nconst schema = {\n facts: {\n email: t.string(),\n password: t.string(),\n token: t.string(),\n status: t.string<AuthStatus>(),\n error: t.string(),\n },\n derivations: {\n isAuthenticated: t.boolean(),\n canLogin: t.boolean(),\n },\n events: {\n setEmail: { value: t.string() },\n setPassword: { value: t.string() },\n requestLogin: {},\n logout: {},\n },\n requirements: {\n LOGIN: { email: t.string(), password: t.string() },\n },\n} satisfies ModuleSchema;\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.email = \"\";\n facts.password = \"\";\n facts.token = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n },\n\n derive: {\n isAuthenticated: (facts) => facts.status === \"authenticated\",\n canLogin: (facts) => {\n return (\n facts.email.trim() !== \"\" &&\n facts.password.trim() !== \"\" &&\n (facts.status === \"idle\" || facts.status === \"expired\")\n );\n },\n },\n\n events: {\n setEmail: (facts, { value }) => {\n facts.email = value;\n },\n setPassword: (facts, { value }) => {\n facts.password = value;\n },\n requestLogin: (facts) => {\n facts.status = \"authenticating\";\n facts.error = \"\";\n },\n logout: (facts) => {\n facts.token = \"\";\n facts.status = \"idle\";\n },\n },\n\n constraints: {\n needsLogin: {\n priority: 100,\n when: (facts) => facts.status === \"authenticating\",\n require: (facts) => ({\n type: \"LOGIN\",\n email: facts.email,\n password: facts.password,\n }),\n },\n },\n\n resolvers: {\n login: {\n requirement: \"LOGIN\",\n retry: { attempts: 2, backoff: \"exponential\" },\n resolve: async (req, context) => {\n // Replace with real auth API call\n await new Promise((resolve) => setTimeout(resolve, 500));\n\n const token = \\`token_\\${Date.now()}\\`;\n context.facts.token = token;\n context.facts.status = \"authenticated\";\n },\n },\n },\n\n effects: {\n logStatusChange: {\n deps: [\"status\"],\n run: (facts, prev) => {\n if (prev && prev.status !== facts.status) {\n console.log(\\`Auth status: \\${prev.status} → \\${facts.status}\\`);\n }\n },\n },\n },\n});\n`;\n}\n\nfunction generateAuthMain(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { createSystem } from \"@directive-run/core\";\nimport { ${camelName} } from \"./${name}.js\";\n\nconst system = createSystem({\n module: ${camelName},\n});\n\nsystem.start();\n\n// Set credentials and login\nsystem.events.setEmail({ value: \"user@example.com\" });\nsystem.events.setPassword({ value: \"password123\" });\nsystem.events.requestLogin();\n\n// Wait for auth to complete\nawait system.settle();\n\nconsole.log(\"authenticated:\", system.read(\"isAuthenticated\"));\nconsole.log(\"token:\", system.facts.token);\n\nexport default system;\n`;\n}\n\nfunction generateAIModule(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, t } from \"@directive-run/core\";\nimport {\n createAgentOrchestrator,\n createAgentMemory,\n createSlidingWindowStrategy,\n} from \"@directive-run/ai\";\n\n// ============================================================================\n// Module — state management\n// ============================================================================\n\ntype AgentStatus = \"idle\" | \"thinking\" | \"done\" | \"error\";\n\nconst schema = {\n facts: {\n input: t.string(),\n output: t.string(),\n status: t.string<AgentStatus>(),\n error: t.string(),\n },\n derivations: {\n isThinking: t.boolean(),\n hasOutput: t.boolean(),\n },\n events: {\n setInput: { value: t.string() },\n requestRun: {},\n reset: {},\n },\n requirements: {\n RUN_AGENT: { input: t.string() },\n },\n} satisfies ModuleSchema;\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n },\n\n derive: {\n isThinking: (facts) => facts.status === \"thinking\",\n hasOutput: (facts) => facts.output !== \"\",\n },\n\n events: {\n setInput: (facts, { value }) => {\n facts.input = value;\n },\n requestRun: (facts) => {\n facts.status = \"thinking\";\n facts.output = \"\";\n facts.error = \"\";\n },\n reset: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n },\n },\n\n constraints: {\n needsRun: {\n priority: 100,\n when: (facts) => facts.status === \"thinking\",\n require: (facts) => ({\n type: \"RUN_AGENT\",\n input: facts.input,\n }),\n },\n },\n\n resolvers: {\n runAgent: {\n requirement: \"RUN_AGENT\",\n timeout: 30000,\n resolve: async (req, context) => {\n // Replace with your agent runner (e.g., Anthropic, OpenAI)\n const result = \\`Echo: \\${req.input}\\`;\n\n context.facts.output = result;\n context.facts.status = \"done\";\n },\n },\n },\n});\n\n// ============================================================================\n// Orchestrator — optional AI features\n// ============================================================================\n\nexport const memory = createAgentMemory({\n strategy: createSlidingWindowStrategy(),\n strategyConfig: { maxMessages: 30, preserveRecentCount: 6 },\n autoManage: true,\n});\n\n// Uncomment to add orchestrator features:\n// export const orchestrator = createAgentOrchestrator({\n// runner: yourAgentRunner,\n// maxTokenBudget: 50000,\n// memory,\n// });\n`;\n}\n\nfunction generateAIMain(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { createSystem } from \"@directive-run/core\";\nimport { ${camelName} } from \"./${name}.js\";\n\nconst system = createSystem({\n module: ${camelName},\n});\n\nsystem.start();\n\n// Set input and run\nsystem.events.setInput({ value: \"Hello, world!\" });\nsystem.events.requestRun();\n\n// Wait for completion\nawait system.settle();\n\nconsole.log(\"output:\", system.facts.output);\n\nexport default system;\n`;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction toCamelCase(name: string): string {\n return name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\nfunction writeFile(filePath: string, content: string) {\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(filePath, content, \"utf-8\");\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function initCommand(args: string[]) {\n const opts = parseArgs(args);\n\n p.intro(pc.bgCyan(pc.black(\" directive init \")));\n\n // Step 1: Project name\n let moduleName: string;\n\n if (opts.noInteractive) {\n moduleName = \"my-module\";\n } else {\n const nameResult = await p.text({\n message: \"Module name:\",\n placeholder: \"my-module\",\n defaultValue: \"my-module\",\n validate: (val) => {\n if (!/^[a-z][a-z0-9-]*$/.test(val)) {\n return \"Must start with a letter, use lowercase letters, numbers, and hyphens\";\n }\n },\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n moduleName = nameResult;\n }\n\n // Step 2: Template selection\n let templateId: TemplateId;\n\n if (opts.template) {\n const templates = getTemplates(moduleName);\n if (!(opts.template in templates)) {\n p.log.error(\n `Unknown template: ${opts.template}. Available: ${Object.keys(templates).join(\", \")}`,\n );\n process.exit(1);\n }\n templateId = opts.template as TemplateId;\n } else if (opts.noInteractive) {\n templateId = \"counter\";\n } else {\n const templates = getTemplates(moduleName);\n const choice = await p.select({\n message: \"Project template:\",\n options: Object.values(templates).map((t) => ({\n value: t.id,\n label: t.label,\n hint: t.hint,\n })),\n });\n\n if (p.isCancel(choice)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n templateId = choice as TemplateId;\n }\n\n const templates = getTemplates(moduleName);\n const template = templates[templateId];\n\n // Step 3: Detect package manager\n const pm = detectPackageManager(opts.dir);\n p.log.info(`Package manager: ${pc.cyan(pm)}`);\n\n // Step 4: Write files\n const s = p.spinner();\n s.start(\"Creating project files...\");\n\n let created = 0;\n let skipped = 0;\n\n for (const file of template.files) {\n const filePath = join(opts.dir, file.path);\n\n if (existsSync(filePath)) {\n skipped++;\n continue;\n }\n\n writeFile(filePath, file.content);\n created++;\n }\n\n s.stop(\"Project files created.\");\n\n for (const file of template.files) {\n const filePath = join(opts.dir, file.path);\n const rel = relative(opts.dir, filePath);\n\n if (existsSync(filePath)) {\n p.log.success(`${pc.green(\"Created\")} ${pc.dim(rel)}`);\n }\n }\n\n if (skipped > 0) {\n p.log.warn(`Skipped ${skipped} file(s) that already exist.`);\n }\n\n // Step 5: Show next steps\n const depsCmd = installCmd(pm, template.deps.join(\" \"));\n\n p.outro(\n `Next steps:\\n` +\n ` ${pc.cyan(depsCmd)}\\n` +\n ` ${pc.cyan(`${CLI_NAME} ai-rules init`)}\\n` +\n ` ${pc.dim(\"Start building!\")}`,\n );\n}\n","import * as p from \"@clack/prompts\";\nimport { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\n\ninterface NewOptions {\n with: string[];\n minimal: boolean;\n dir: string;\n}\n\nfunction parseArgs(args: string[]): NewOptions {\n const opts: NewOptions = {\n with: [],\n minimal: false,\n dir: process.cwd(),\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--with\": {\n const val = args[++i];\n if (val) {\n opts.with = val.split(\",\").map((s) => s.trim());\n }\n break;\n }\n case \"--minimal\":\n opts.minimal = true;\n break;\n case \"--dir\": {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n break;\n }\n }\n }\n\n return opts;\n}\n\n// ---------------------------------------------------------------------------\n// Module generator\n// ---------------------------------------------------------------------------\n\ntype Section = \"derive\" | \"events\" | \"constraints\" | \"resolvers\" | \"effects\";\n\nconst ALL_SECTIONS: Section[] = [\n \"derive\",\n \"events\",\n \"constraints\",\n \"resolvers\",\n \"effects\",\n];\n\nfunction generateModule(\n name: string,\n sections: Section[],\n): string {\n const camelName = toCamelCase(name);\n const hasConstraints = sections.includes(\"constraints\");\n const hasResolvers = sections.includes(\"resolvers\");\n\n const imports = [\"type ModuleSchema\", \"createModule\", \"t\"];\n\n let code = `import { ${imports.join(\", \")} } from \"@directive-run/core\";\\n\\n`;\n\n // Schema\n code += `const schema = {\\n`;\n code += ` facts: {\\n`;\n code += ` // Add your facts here\\n`;\n code += ` status: t.string(),\\n`;\n code += ` },\\n`;\n\n if (sections.includes(\"derive\")) {\n code += ` derivations: {\\n`;\n code += ` // Add derivation types here\\n`;\n code += ` isReady: t.boolean(),\\n`;\n code += ` },\\n`;\n }\n\n if (sections.includes(\"events\")) {\n code += ` events: {\\n`;\n code += ` // Add event shapes here\\n`;\n code += ` setStatus: { value: t.string() },\\n`;\n code += ` },\\n`;\n }\n\n if (hasConstraints || hasResolvers) {\n code += ` requirements: {\\n`;\n code += ` // Add requirement shapes here\\n`;\n code += ` PROCESS: { input: t.string() },\\n`;\n code += ` },\\n`;\n }\n\n code += `} satisfies ModuleSchema;\\n\\n`;\n\n // Module\n code += `export const ${camelName} = createModule(\"${name}\", {\\n`;\n code += ` schema,\\n\\n`;\n\n code += ` init: (facts) => {\\n`;\n code += ` facts.status = \"idle\";\\n`;\n code += ` },\\n`;\n\n if (sections.includes(\"derive\")) {\n code += `\\n derive: {\\n`;\n code += ` isReady: (facts) => facts.status === \"ready\",\\n`;\n code += ` },\\n`;\n }\n\n if (sections.includes(\"events\")) {\n code += `\\n events: {\\n`;\n code += ` setStatus: (facts, { value }) => {\\n`;\n code += ` facts.status = value;\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n if (hasConstraints) {\n code += `\\n constraints: {\\n`;\n code += ` needsProcessing: {\\n`;\n code += ` priority: 100,\\n`;\n code += ` when: (facts) => facts.status === \"pending\",\\n`;\n code += ` require: (facts) => ({\\n`;\n code += ` type: \"PROCESS\",\\n`;\n code += ` input: facts.status,\\n`;\n code += ` }),\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n if (hasResolvers) {\n code += `\\n resolvers: {\\n`;\n code += ` process: {\\n`;\n code += ` requirement: \"PROCESS\",\\n`;\n code += ` resolve: async (req, context) => {\\n`;\n code += ` // Implement resolution logic here\\n`;\n code += ` context.facts.status = \"done\";\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n if (sections.includes(\"effects\")) {\n code += `\\n effects: {\\n`;\n code += ` logChange: {\\n`;\n code += ` deps: [\"status\"],\\n`;\n code += ` run: (facts, prev) => {\\n`;\n code += ` if (prev && prev.status !== facts.status) {\\n`;\n code += ` console.log(\\`Status: \\${prev.status} → \\${facts.status}\\`);\\n`;\n code += ` }\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n code += `});\\n`;\n\n return code;\n}\n\n// ---------------------------------------------------------------------------\n// Orchestrator generator\n// ---------------------------------------------------------------------------\n\nfunction generateOrchestrator(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, createSystem, t } from \"@directive-run/core\";\nimport {\n createAgentOrchestrator,\n createAgentMemory,\n createSlidingWindowStrategy,\n} from \"@directive-run/ai\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype AgentStatus = \"idle\" | \"thinking\" | \"done\" | \"error\";\n\n// ============================================================================\n// Schema\n// ============================================================================\n\nconst schema = {\n facts: {\n input: t.string(),\n output: t.string(),\n status: t.string<AgentStatus>(),\n error: t.string(),\n totalTokens: t.number(),\n },\n derivations: {\n isThinking: t.boolean(),\n hasOutput: t.boolean(),\n },\n events: {\n setInput: { value: t.string() },\n requestRun: {},\n reset: {},\n },\n requirements: {\n RUN_AGENT: { input: t.string() },\n },\n} satisfies ModuleSchema;\n\n// ============================================================================\n// Module\n// ============================================================================\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n facts.totalTokens = 0;\n },\n\n derive: {\n isThinking: (facts) => facts.status === \"thinking\",\n hasOutput: (facts) => facts.output !== \"\",\n },\n\n events: {\n setInput: (facts, { value }) => {\n facts.input = value;\n },\n requestRun: (facts) => {\n facts.status = \"thinking\";\n facts.output = \"\";\n facts.error = \"\";\n },\n reset: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n facts.totalTokens = 0;\n },\n },\n\n constraints: {\n needsRun: {\n priority: 100,\n when: (facts) => facts.status === \"thinking\",\n require: (facts) => ({\n type: \"RUN_AGENT\",\n input: facts.input,\n }),\n },\n },\n\n resolvers: {\n runAgent: {\n requirement: \"RUN_AGENT\",\n timeout: 30000,\n resolve: async (req, context) => {\n // TODO: Replace with your agent runner\n const result = \\`Echo: \\${req.input}\\`;\n\n context.facts.output = result;\n context.facts.status = \"done\";\n },\n },\n },\n});\n\n// ============================================================================\n// AI Features\n// ============================================================================\n\nexport const memory = createAgentMemory({\n strategy: createSlidingWindowStrategy(),\n strategyConfig: { maxMessages: 30, preserveRecentCount: 6 },\n autoManage: true,\n});\n\n// TODO: Add your agent runner and configure the orchestrator\n// export const orchestrator = createAgentOrchestrator({\n// runner: yourAgentRunner,\n// maxTokenBudget: 50000,\n// memory,\n// guardrails: {\n// input: [],\n// output: [],\n// },\n// });\n\n// ============================================================================\n// System\n// ============================================================================\n\nexport const system = createSystem({\n module: ${camelName},\n});\n`;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction toCamelCase(name: string): string {\n return name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\nfunction writeFile(filePath: string, content: string) {\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(filePath, content, \"utf-8\");\n}\n\nfunction findModulesDir(dir: string): string {\n // Look for existing src/ directory or modules directory\n if (existsSync(join(dir, \"src\"))) {\n return join(dir, \"src\");\n }\n\n return join(dir, \"src\");\n}\n\n// ---------------------------------------------------------------------------\n// Commands\n// ---------------------------------------------------------------------------\n\nexport async function newModuleCommand(name: string, args: string[]) {\n const opts = parseArgs(args);\n\n if (!name || !/^[a-z][a-z0-9-]*$/.test(name)) {\n console.error(\n `Invalid module name: ${name || \"(none)\"}\\n` +\n \"Must start with a letter, use lowercase letters, numbers, and hyphens.\",\n );\n process.exit(1);\n }\n\n let sections: Section[];\n\n if (opts.minimal) {\n sections = [];\n } else if (opts.with.length > 0) {\n sections = opts.with.filter((s) =>\n ALL_SECTIONS.includes(s as Section),\n ) as Section[];\n } else {\n sections = ALL_SECTIONS;\n }\n\n const targetDir = findModulesDir(opts.dir);\n const filePath = join(targetDir, `${name}.ts`);\n\n if (existsSync(filePath)) {\n console.error(`File already exists: ${relative(opts.dir, filePath)}`);\n process.exit(1);\n }\n\n const content = generateModule(name, sections);\n writeFile(filePath, content);\n\n const rel = relative(opts.dir, filePath);\n console.log(`${pc.green(\"Created\")} ${pc.dim(rel)}`);\n\n if (sections.length === 0) {\n console.log(pc.dim(\" Minimal module (schema + init only)\"));\n } else {\n console.log(pc.dim(` Sections: ${sections.join(\", \")}`));\n }\n}\n\nexport async function newOrchestratorCommand(name: string, args: string[]) {\n const opts = parseArgs(args);\n\n if (!name || !/^[a-z][a-z0-9-]*$/.test(name)) {\n console.error(\n `Invalid orchestrator name: ${name || \"(none)\"}\\n` +\n \"Must start with a letter, use lowercase letters, numbers, and hyphens.\",\n );\n process.exit(1);\n }\n\n const targetDir = findModulesDir(opts.dir);\n const filePath = join(targetDir, `${name}.ts`);\n\n if (existsSync(filePath)) {\n console.error(`File already exists: ${relative(opts.dir, filePath)}`);\n process.exit(1);\n }\n\n const content = generateOrchestrator(name);\n writeFile(filePath, content);\n\n const rel = relative(opts.dir, filePath);\n console.log(`${pc.green(\"Created\")} ${pc.dim(rel)}`);\n console.log(pc.dim(\" AI orchestrator with memory, guardrails, and streaming\"));\n}\n","import { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport pc from \"picocolors\";\n\n/**\n * Loads a Directive system from a user's TypeScript file.\n *\n * Uses tsx to handle TypeScript imports. Looks for:\n * 1. Default export of a System instance\n * 2. Named \"system\" export\n *\n * Returns the live System object for inspection/explain/graph commands.\n */\nexport async function loadSystem(filePath: string): Promise<any> {\n const resolved = resolve(filePath);\n\n if (!existsSync(resolved)) {\n throw new Error(`File not found: ${resolved}`);\n }\n\n // Use tsx register to handle TypeScript imports\n try {\n // Dynamic import with tsx — tsx must be available\n const mod = await import(resolved);\n\n // Look for default export first\n if (mod.default && isSystem(mod.default)) {\n return mod.default;\n }\n\n // Look for named \"system\" export\n if (mod.system && isSystem(mod.system)) {\n return mod.system;\n }\n\n // Look for any export that looks like a System\n for (const key of Object.keys(mod)) {\n if (isSystem(mod[key])) {\n return mod[key];\n }\n }\n\n throw new Error(\n `No Directive system found in ${pc.dim(filePath)}\\n` +\n `Export a system as default or named \"system\":\\n\\n` +\n ` ${pc.cyan(\"export default\")} createSystem({ module: myModule });\\n` +\n ` ${pc.cyan(\"export const system\")} = createSystem({ module: myModule });`,\n );\n } catch (err) {\n if (err instanceof Error && err.message.includes(\"No Directive system\")) {\n throw err;\n }\n\n throw new Error(\n `Failed to load ${pc.dim(filePath)}: ${err instanceof Error ? err.message : String(err)}\\n\\n` +\n `Make sure the file is valid TypeScript and tsx is installed:\\n` +\n ` ${pc.cyan(\"npm install -D tsx\")}`,\n );\n }\n}\n\n/**\n * Duck-type check for a Directive System object.\n */\nfunction isSystem(obj: unknown): boolean {\n if (typeof obj !== \"object\" || obj === null) {\n return false;\n }\n\n const sys = obj as Record<string, unknown>;\n\n return (\n typeof sys.inspect === \"function\" &&\n typeof sys.start === \"function\" &&\n typeof sys.stop === \"function\" &&\n \"facts\" in sys\n );\n}\n","import pc from \"picocolors\";\nimport { loadSystem } from \"../lib/loader.js\";\n\ninterface InspectOptions {\n json: boolean;\n module?: string;\n}\n\nfunction parseArgs(args: string[]): { filePath: string; opts: InspectOptions } {\n const opts: InspectOptions = { json: false };\n let filePath = \"\";\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--json\":\n opts.json = true;\n break;\n case \"--module\": {\n const val = args[++i];\n if (val) {\n opts.module = val;\n }\n break;\n }\n default:\n if (arg && !arg.startsWith(\"-\") && !filePath) {\n filePath = arg;\n }\n }\n }\n\n return { filePath, opts };\n}\n\n// ---------------------------------------------------------------------------\n// Formatters\n// ---------------------------------------------------------------------------\n\nfunction formatFacts(facts: Record<string, unknown>): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Facts:\"));\n\n const entries = Object.entries(facts);\n if (entries.length === 0) {\n lines.push(\" (none)\");\n\n return lines.join(\"\\n\");\n }\n\n for (const [key, value] of entries) {\n const formatted = formatValue(value);\n lines.push(` ${pc.cyan(key)} = ${formatted}`);\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatConstraints(\n constraints: Array<{\n id: string;\n active: boolean;\n disabled: boolean;\n priority: number;\n hitCount: number;\n lastActiveAt: number | null;\n }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Constraints:\"));\n\n if (constraints.length === 0) {\n lines.push(\" (none)\");\n\n return lines.join(\"\\n\");\n }\n\n for (const c of constraints) {\n const status = c.disabled\n ? pc.dim(\"disabled\")\n : c.active\n ? pc.green(\"active\")\n : pc.dim(\"inactive\");\n const hits = c.hitCount > 0 ? pc.yellow(` (${c.hitCount} hits)`) : \"\";\n lines.push(\n ` ${pc.cyan(c.id)} ${status} priority=${c.priority}${hits}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatResolverDefs(\n resolverDefs: Array<{ id: string; requirement: string }>,\n resolvers: Record<string, { state: string; error?: string; duration?: number }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Resolvers:\"));\n\n if (resolverDefs.length === 0) {\n lines.push(\" (none)\");\n\n return lines.join(\"\\n\");\n }\n\n for (const def of resolverDefs) {\n const status = resolvers[def.id];\n const stateStr = status\n ? formatResolverState(status.state, status.error, status.duration)\n : pc.dim(\"idle\");\n lines.push(\n ` ${pc.cyan(def.id)} → ${def.requirement} ${stateStr}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatUnmet(\n unmet: Array<{\n id: string;\n requirement: { type: string };\n fromConstraint: string;\n }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Unmet Requirements:\"));\n\n if (unmet.length === 0) {\n lines.push(` ${pc.green(\"(all requirements met)\")}`);\n\n return lines.join(\"\\n\");\n }\n\n for (const u of unmet) {\n lines.push(\n ` ${pc.yellow(u.requirement.type)} (id: ${pc.dim(u.id)}) from ${pc.dim(u.fromConstraint)}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatInflight(\n inflight: Array<{ id: string; resolverId: string; startedAt: number }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Inflight:\"));\n\n if (inflight.length === 0) {\n lines.push(` ${pc.green(\"(none)\")}`);\n\n return lines.join(\"\\n\");\n }\n\n const now = Date.now();\n for (const inf of inflight) {\n const elapsed = now - inf.startedAt;\n lines.push(\n ` ${pc.cyan(inf.resolverId)} → req ${pc.dim(inf.id)} ${pc.yellow(`${elapsed}ms`)}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatResolverState(\n state: string,\n error?: string,\n duration?: number,\n): string {\n const dur = duration !== undefined ? ` ${duration}ms` : \"\";\n\n switch (state) {\n case \"resolved\":\n return pc.green(`resolved${dur}`);\n case \"errored\":\n return pc.red(`errored${dur}${error ? ` — ${error}` : \"\"}`);\n case \"inflight\":\n return pc.yellow(\"inflight\");\n case \"cancelled\":\n return pc.dim(\"cancelled\");\n default:\n return pc.dim(state);\n }\n}\n\nfunction formatValue(value: unknown): string {\n if (value === null) {\n return pc.dim(\"null\");\n }\n if (value === undefined) {\n return pc.dim(\"undefined\");\n }\n if (typeof value === \"string\") {\n return value.length > 60 ? `\"${value.slice(0, 57)}...\"` : `\"${value}\"`;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n if (Array.isArray(value)) {\n return `[${value.length} items]`;\n }\n\n return JSON.stringify(value).slice(0, 60);\n}\n\n// ---------------------------------------------------------------------------\n// Warnings\n// ---------------------------------------------------------------------------\n\nfunction findWarnings(inspection: {\n resolverDefs: Array<{ id: string; requirement: string }>;\n constraints: Array<{ id: string; active: boolean; disabled: boolean }>;\n unmet: Array<{ requirement: { type: string } }>;\n}): string[] {\n const warnings: string[] = [];\n\n // Orphaned resolvers: resolver handles a type no constraint emits\n const constraintTypes = new Set<string>();\n // We can't know constraint requirement types from inspection alone,\n // but we can check unmet requirements\n const unmetTypes = new Set(inspection.unmet.map((u) => u.requirement.type));\n const resolverTypes = new Set(\n inspection.resolverDefs.map((r) => r.requirement),\n );\n\n // Resolver types not in unmet — might be orphaned (can't be sure without full constraint analysis)\n for (const def of inspection.resolverDefs) {\n if (def.requirement === \"(predicate)\") {\n continue;\n }\n }\n\n // Unmet requirements with no matching resolver\n for (const u of inspection.unmet) {\n const hasResolver = inspection.resolverDefs.some(\n (r) =>\n r.requirement === u.requirement.type || r.requirement === \"(predicate)\",\n );\n if (!hasResolver) {\n warnings.push(\n `No resolver for requirement type \"${u.requirement.type}\"`,\n );\n }\n }\n\n return warnings;\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function inspectCommand(args: string[]) {\n const { filePath, opts } = parseArgs(args);\n\n if (!filePath) {\n console.error(\n \"Usage: directive inspect <file> [--json] [--module <name>]\",\n );\n process.exit(1);\n }\n\n const system = await loadSystem(filePath);\n\n if (!system.isRunning) {\n system.start();\n }\n\n const inspection = system.inspect();\n\n if (opts.json) {\n // Get facts as plain object\n const factsObj: Record<string, unknown> = {};\n if (system.facts) {\n for (const key of Object.keys(system.facts)) {\n try {\n factsObj[key] = system.facts[key];\n } catch {\n factsObj[key] = \"(error reading)\";\n }\n }\n }\n\n console.log(\n JSON.stringify(\n {\n facts: factsObj,\n ...inspection,\n },\n null,\n 2,\n ),\n );\n\n system.stop();\n\n return;\n }\n\n // Pretty output\n console.log();\n console.log(pc.bold(pc.cyan(\"Directive System Inspection\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n\n // Facts\n const factsObj: Record<string, unknown> = {};\n if (system.facts) {\n for (const key of Object.keys(system.facts)) {\n try {\n factsObj[key] = system.facts[key];\n } catch {\n factsObj[key] = \"(error reading)\";\n }\n }\n }\n console.log(formatFacts(factsObj));\n console.log();\n\n // Constraints\n console.log(formatConstraints(inspection.constraints));\n console.log();\n\n // Resolvers\n console.log(formatResolverDefs(inspection.resolverDefs, inspection.resolvers));\n console.log();\n\n // Unmet requirements\n console.log(formatUnmet(inspection.unmet));\n console.log();\n\n // Inflight\n if (inspection.inflight.length > 0) {\n console.log(formatInflight(inspection.inflight));\n console.log();\n }\n\n // Warnings\n const warnings = findWarnings(inspection);\n if (warnings.length > 0) {\n console.log(pc.bold(pc.yellow(\"Warnings:\")));\n for (const w of warnings) {\n console.log(` ${pc.yellow(\"⚠\")} ${w}`);\n }\n console.log();\n }\n\n system.stop();\n}\n","import pc from \"picocolors\";\nimport { loadSystem } from \"../lib/loader.js\";\n\ninterface ExplainOptions {\n module?: string;\n}\n\nfunction parseArgs(\n args: string[],\n): { filePath: string; requirementId?: string; opts: ExplainOptions } {\n const opts: ExplainOptions = {};\n let filePath = \"\";\n let requirementId: string | undefined;\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--module\": {\n const val = args[++i];\n if (val) {\n opts.module = val;\n }\n break;\n }\n default:\n if (arg && !arg.startsWith(\"-\")) {\n if (!filePath) {\n filePath = arg;\n } else if (!requirementId) {\n requirementId = arg;\n }\n }\n }\n }\n\n return { filePath, requirementId, opts };\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function explainCommand(args: string[]) {\n const { filePath, requirementId } = parseArgs(args);\n\n if (!filePath) {\n console.error(\n \"Usage: directive explain <file> [requirement-id]\",\n );\n process.exit(1);\n }\n\n const system = await loadSystem(filePath);\n\n if (!system.isRunning) {\n system.start();\n }\n\n const inspection = system.inspect();\n\n if (requirementId) {\n // Explain a specific requirement\n const explanation = system.explain(requirementId);\n\n if (!explanation) {\n console.error(\n `Requirement \"${requirementId}\" not found.\\n\\n` +\n \"Current requirements:\",\n );\n\n if (inspection.unmet.length === 0) {\n console.log(pc.dim(\" (no unmet requirements)\"));\n } else {\n for (const u of inspection.unmet) {\n console.log(\n ` ${pc.cyan(u.id)} — ${u.requirement.type} (from ${u.fromConstraint})`,\n );\n }\n }\n\n system.stop();\n process.exit(1);\n }\n\n console.log();\n console.log(pc.bold(pc.cyan(\"Requirement Explanation\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n console.log(explanation);\n console.log();\n } else {\n // List all requirements with status\n console.log();\n console.log(pc.bold(pc.cyan(\"All Requirements\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n\n if (inspection.unmet.length === 0) {\n console.log(pc.green(\"All requirements are met.\"));\n console.log();\n\n // Show resolver history if available\n const resolverEntries = Object.entries(\n inspection.resolvers as Record<string, { state: string; duration?: number; error?: string }>,\n );\n if (resolverEntries.length > 0) {\n console.log(pc.bold(\"Recent Resolver Activity:\"));\n for (const [key, status] of resolverEntries) {\n const state = formatState(status.state);\n const dur =\n status.duration !== undefined ? ` (${status.duration}ms)` : \"\";\n console.log(` ${pc.cyan(key)} ${state}${dur}`);\n }\n console.log();\n }\n } else {\n console.log(\n `${pc.yellow(String(inspection.unmet.length))} unmet requirement(s):\\n`,\n );\n\n for (const u of inspection.unmet) {\n console.log(\n `${pc.yellow(\"●\")} ${pc.bold(u.requirement.type)} (id: ${pc.dim(u.id)})`,\n );\n console.log(` From constraint: ${pc.cyan(u.fromConstraint)}`);\n\n // Show payload\n const payload = { ...u.requirement };\n delete (payload as Record<string, unknown>).type;\n const payloadKeys = Object.keys(payload);\n if (payloadKeys.length > 0) {\n console.log(` Payload: ${JSON.stringify(payload)}`);\n }\n\n // Check resolver status\n const resolverStatus = (inspection.resolvers as Record<string, { state: string; error?: string } | undefined>)[u.id];\n if (resolverStatus) {\n console.log(\n ` Resolver: ${formatState(resolverStatus.state)}${resolverStatus.error ? ` — ${resolverStatus.error}` : \"\"}`,\n );\n } else {\n // Check if any resolver handles this type\n const hasResolver = inspection.resolverDefs.some(\n (r: { id: string; requirement: string }) =>\n r.requirement === u.requirement.type ||\n r.requirement === \"(predicate)\",\n );\n if (!hasResolver) {\n console.log(` ${pc.red(\"No resolver registered for this type\")}`);\n }\n }\n\n console.log();\n }\n\n console.log(\n pc.dim(\n `Run ${pc.cyan(`directive explain <file> <requirement-id>`)} for detailed explanation.`,\n ),\n );\n }\n }\n\n system.stop();\n}\n\nfunction formatState(state: string): string {\n switch (state) {\n case \"resolved\":\n return pc.green(\"resolved\");\n case \"errored\":\n return pc.red(\"errored\");\n case \"inflight\":\n return pc.yellow(\"inflight\");\n case \"pending\":\n return pc.yellow(\"pending\");\n case \"cancelled\":\n return pc.dim(\"cancelled\");\n default:\n return pc.dim(state);\n }\n}\n","import { existsSync, writeFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport pc from \"picocolors\";\nimport { loadSystem } from \"../lib/loader.js\";\n\ninterface GraphOptions {\n ascii: boolean;\n open: boolean;\n output?: string;\n}\n\nfunction parseArgs(args: string[]): { filePath: string; opts: GraphOptions } {\n const opts: GraphOptions = { ascii: false, open: true };\n let filePath = \"\";\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--ascii\":\n opts.ascii = true;\n break;\n case \"--no-open\":\n opts.open = false;\n break;\n case \"--output\": {\n const val = args[++i];\n if (val) {\n opts.output = val;\n }\n break;\n }\n default:\n if (arg && !arg.startsWith(\"-\") && !filePath) {\n filePath = arg;\n }\n }\n }\n\n return { filePath, opts };\n}\n\n// ---------------------------------------------------------------------------\n// ASCII graph renderer\n// ---------------------------------------------------------------------------\n\nfunction renderAsciiGraph(inspection: {\n constraints: Array<{\n id: string;\n active: boolean;\n disabled: boolean;\n priority: number;\n }>;\n resolverDefs: Array<{ id: string; requirement: string }>;\n unmet: Array<{\n id: string;\n requirement: { type: string };\n fromConstraint: string;\n }>;\n}): string {\n const lines: string[] = [];\n\n lines.push(pc.bold(\"Dependency Graph\"));\n lines.push(pc.dim(\"═\".repeat(50)));\n lines.push(\"\");\n\n // Group by flow: constraint → requirement → resolver\n const constraintMap = new Map<\n string,\n { reqTypes: Set<string>; active: boolean; priority: number }\n >();\n\n for (const c of inspection.constraints) {\n constraintMap.set(c.id, {\n reqTypes: new Set(),\n active: c.active,\n priority: c.priority,\n });\n }\n\n // Map unmet requirements to constraints\n for (const u of inspection.unmet) {\n const entry = constraintMap.get(u.fromConstraint);\n if (entry) {\n entry.reqTypes.add(u.requirement.type);\n }\n }\n\n // Map resolvers to requirement types\n const resolversByType = new Map<string, string[]>();\n for (const r of inspection.resolverDefs) {\n if (!resolversByType.has(r.requirement)) {\n resolversByType.set(r.requirement, []);\n }\n resolversByType.get(r.requirement)!.push(r.id);\n }\n\n // Render constraint flows\n lines.push(pc.bold(\"Constraints → Requirements → Resolvers\"));\n lines.push(\"\");\n\n for (const [id, info] of constraintMap) {\n const status = info.active ? pc.green(\"●\") : pc.dim(\"○\");\n lines.push(`${status} ${pc.cyan(id)} (priority: ${info.priority})`);\n\n if (info.reqTypes.size > 0) {\n for (const reqType of info.reqTypes) {\n lines.push(` └─▶ ${pc.yellow(reqType)}`);\n\n const resolvers = resolversByType.get(reqType) || [];\n if (resolvers.length > 0) {\n for (const r of resolvers) {\n lines.push(` └─▶ ${pc.magenta(r)}`);\n }\n } else {\n lines.push(` └─▶ ${pc.red(\"(no resolver)\")}`);\n }\n }\n } else {\n lines.push(` └─▶ ${pc.dim(\"(no active requirements)\")}`);\n }\n\n lines.push(\"\");\n }\n\n // Orphaned resolvers\n const usedResolvers = new Set<string>();\n for (const resolvers of resolversByType.values()) {\n for (const r of resolvers) {\n usedResolvers.add(r);\n }\n }\n\n const allResolverIds = inspection.resolverDefs.map((r) => r.id);\n const orphanedCount = allResolverIds.filter(\n (r) => !usedResolvers.has(r),\n ).length;\n\n if (orphanedCount > 0) {\n lines.push(pc.bold(\"Standalone Resolvers:\"));\n for (const r of inspection.resolverDefs) {\n if (!usedResolvers.has(r.id)) {\n lines.push(\n ` ${pc.magenta(r.id)} handles ${pc.yellow(r.requirement)}`,\n );\n }\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// HTML graph renderer\n// ---------------------------------------------------------------------------\n\nfunction renderHtmlGraph(\n inspection: {\n constraints: Array<{\n id: string;\n active: boolean;\n disabled: boolean;\n priority: number;\n hitCount: number;\n }>;\n resolverDefs: Array<{ id: string; requirement: string }>;\n resolvers: Record<string, { state: string }>;\n unmet: Array<{\n id: string;\n requirement: { type: string };\n fromConstraint: string;\n }>;\n },\n facts: Record<string, unknown>,\n): string {\n // Build nodes and edges for a simple SVG visualization\n const nodes: Array<{\n id: string;\n label: string;\n type: \"fact\" | \"constraint\" | \"requirement\" | \"resolver\";\n x: number;\n y: number;\n color: string;\n }> = [];\n const edges: Array<{ from: string; to: string }> = [];\n\n const colWidth = 220;\n const rowHeight = 50;\n const startX = 40;\n const startY = 60;\n\n // Column 1: Facts\n const factKeys = Object.keys(facts);\n for (let i = 0; i < factKeys.length; i++) {\n const key = factKeys[i]!;\n nodes.push({\n id: `fact-${key}`,\n label: key,\n type: \"fact\",\n x: startX,\n y: startY + i * rowHeight,\n color: \"#3b82f6\",\n });\n }\n\n // Column 2: Constraints\n for (let i = 0; i < inspection.constraints.length; i++) {\n const c = inspection.constraints[i]!;\n nodes.push({\n id: `constraint-${c.id}`,\n label: c.id,\n type: \"constraint\",\n x: startX + colWidth,\n y: startY + i * rowHeight,\n color: c.active ? \"#22c55e\" : \"#6b7280\",\n });\n }\n\n // Column 3: Requirements (from unmet)\n const reqTypes = new Set<string>();\n for (const u of inspection.unmet) {\n reqTypes.add(u.requirement.type);\n }\n let reqIdx = 0;\n for (const reqType of reqTypes) {\n nodes.push({\n id: `req-${reqType}`,\n label: reqType,\n type: \"requirement\",\n x: startX + colWidth * 2,\n y: startY + reqIdx * rowHeight,\n color: \"#eab308\",\n });\n reqIdx++;\n }\n\n // Column 4: Resolvers\n for (let i = 0; i < inspection.resolverDefs.length; i++) {\n const r = inspection.resolverDefs[i]!;\n nodes.push({\n id: `resolver-${r.id}`,\n label: r.id,\n type: \"resolver\",\n x: startX + colWidth * 3,\n y: startY + i * rowHeight,\n color: \"#a855f7\",\n });\n }\n\n // Edges: constraint → requirement\n for (const u of inspection.unmet) {\n edges.push({\n from: `constraint-${u.fromConstraint}`,\n to: `req-${u.requirement.type}`,\n });\n }\n\n // Edges: requirement → resolver\n for (const r of inspection.resolverDefs) {\n if (reqTypes.has(r.requirement)) {\n edges.push({\n from: `req-${r.requirement}`,\n to: `resolver-${r.id}`,\n });\n }\n }\n\n const nodeMap = new Map(nodes.map((n) => [n.id, n]));\n const svgWidth = startX + colWidth * 4 + 40;\n const maxY = Math.max(...nodes.map((n) => n.y)) + rowHeight + 20;\n\n const edgeSvg = edges\n .map((e) => {\n const from = nodeMap.get(e.from);\n const to = nodeMap.get(e.to);\n if (!from || !to) {\n return \"\";\n }\n\n return `<line x1=\"${from.x + 90}\" y1=\"${from.y + 15}\" x2=\"${to.x}\" y2=\"${to.y + 15}\" stroke=\"#94a3b8\" stroke-width=\"1.5\" marker-end=\"url(#arrow)\"/>`;\n })\n .join(\"\\n \");\n\n const nodeSvg = nodes\n .map(\n (n) =>\n `<g>\n <rect x=\"${n.x}\" y=\"${n.y}\" width=\"180\" height=\"30\" rx=\"6\" fill=\"${n.color}\" opacity=\"0.15\" stroke=\"${n.color}\" stroke-width=\"1.5\"/>\n <text x=\"${n.x + 90}\" y=\"${n.y + 19}\" text-anchor=\"middle\" font-size=\"12\" font-family=\"monospace\" fill=\"${n.color}\">${escapeHtml(n.label)}</text>\n </g>`,\n )\n .join(\"\\n \");\n\n // Column headers\n const headers = [\"Facts\", \"Constraints\", \"Requirements\", \"Resolvers\"];\n const headerSvg = headers\n .map(\n (h, i) =>\n `<text x=\"${startX + i * colWidth + 90}\" y=\"35\" text-anchor=\"middle\" font-size=\"14\" font-weight=\"bold\" font-family=\"system-ui\" fill=\"#e2e8f0\">${h}</text>`,\n )\n .join(\"\\n \");\n\n return `<!DOCTYPE html>\n<html>\n<head>\n <title>Directive System Graph</title>\n <style>\n body { margin: 0; background: #0f172a; display: flex; justify-content: center; padding: 20px; }\n svg { max-width: 100%; }\n </style>\n</head>\n<body>\n <svg width=\"${svgWidth}\" height=\"${maxY}\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto-start-reverse\">\n <path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"#94a3b8\"/>\n </marker>\n </defs>\n ${headerSvg}\n ${edgeSvg}\n ${nodeSvg}\n </svg>\n</body>\n</html>`;\n}\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\");\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function graphCommand(args: string[]) {\n const { filePath, opts } = parseArgs(args);\n\n if (!filePath) {\n console.error(\"Usage: directive graph <file> [--ascii] [--no-open] [--output <path>]\");\n process.exit(1);\n }\n\n const system = await loadSystem(filePath);\n\n if (!system.isRunning) {\n system.start();\n }\n\n const inspection = system.inspect();\n\n if (opts.ascii) {\n console.log(renderAsciiGraph(inspection));\n system.stop();\n\n return;\n }\n\n // HTML output\n const factsObj: Record<string, unknown> = {};\n if (system.facts) {\n for (const key of Object.keys(system.facts)) {\n try {\n factsObj[key] = system.facts[key];\n } catch {\n factsObj[key] = null;\n }\n }\n }\n\n const html = renderHtmlGraph(inspection, factsObj);\n const outputPath = opts.output || join(process.cwd(), \".directive-graph.html\");\n\n writeFileSync(outputPath, html, \"utf-8\");\n console.log(`${pc.green(\"Generated\")} ${pc.dim(outputPath)}`);\n\n if (opts.open) {\n try {\n const { exec } = await import(\"node:child_process\");\n const openCmd =\n process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"start\"\n : \"xdg-open\";\n exec(`${openCmd} \"${outputPath}\"`);\n console.log(pc.dim(\"Opened in browser.\"));\n } catch {\n console.log(\n pc.dim(`Open ${outputPath} in your browser to view the graph.`),\n );\n }\n }\n\n system.stop();\n}\n","import { existsSync, readFileSync, readdirSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport { hasDirectiveSection } from \"../lib/merge.js\";\n\ninterface DoctorOptions {\n dir: string;\n}\n\nfunction parseArgs(args: string[]): DoctorOptions {\n const opts: DoctorOptions = { dir: process.cwd() };\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--dir\") {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n }\n }\n\n return opts;\n}\n\n// ---------------------------------------------------------------------------\n// Checks\n// ---------------------------------------------------------------------------\n\ninterface CheckResult {\n label: string;\n passed: boolean;\n message: string;\n fix?: string;\n}\n\nfunction checkCoreInstalled(dir: string): CheckResult {\n const pkgPath = join(dir, \"package.json\");\n if (!existsSync(pkgPath)) {\n return {\n label: \"@directive-run/core installed\",\n passed: false,\n message: \"No package.json found\",\n fix: \"Run `npm init` to create a package.json\",\n };\n }\n\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n\n if (!deps[\"@directive-run/core\"]) {\n return {\n label: \"@directive-run/core installed\",\n passed: false,\n message: \"Not found in dependencies\",\n fix: \"Run `npm install @directive-run/core`\",\n };\n }\n\n return {\n label: \"@directive-run/core installed\",\n passed: true,\n message: `v${deps[\"@directive-run/core\"]}`,\n };\n}\n\nfunction checkVersionCompatibility(dir: string): CheckResult {\n const pkgPath = join(dir, \"package.json\");\n if (!existsSync(pkgPath)) {\n return {\n label: \"Package version compatibility\",\n passed: true,\n message: \"Skipped (no package.json)\",\n };\n }\n\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n\n const directivePackages = Object.keys(deps).filter((k) =>\n k.startsWith(\"@directive-run/\"),\n );\n\n if (directivePackages.length <= 1) {\n return {\n label: \"Package version compatibility\",\n passed: true,\n message: directivePackages.length === 0 ? \"No packages found\" : \"Single package\",\n };\n }\n\n return {\n label: \"Package version compatibility\",\n passed: true,\n message: `${directivePackages.length} packages: ${directivePackages.join(\", \")}`,\n };\n}\n\nfunction checkTypeScript(dir: string): CheckResult {\n const tsconfigPath = join(dir, \"tsconfig.json\");\n\n if (!existsSync(tsconfigPath)) {\n return {\n label: \"TypeScript configuration\",\n passed: false,\n message: \"No tsconfig.json found\",\n fix: \"Run `tsc --init` to create a TypeScript configuration\",\n };\n }\n\n try {\n // Simple JSON parse — doesn't handle comments or extends\n const raw = readFileSync(tsconfigPath, \"utf-8\");\n // Strip single-line comments for parsing\n const stripped = raw.replace(/\\/\\/.*$/gm, \"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n const config = JSON.parse(stripped);\n const co = config.compilerOptions || {};\n\n const issues: string[] = [];\n\n if (co.strict !== true) {\n issues.push(\"strict mode not enabled\");\n }\n\n if (\n co.moduleResolution &&\n ![\"bundler\", \"nodenext\", \"node16\"].includes(\n co.moduleResolution.toLowerCase(),\n )\n ) {\n issues.push(`moduleResolution is \"${co.moduleResolution}\"`);\n }\n\n if (issues.length > 0) {\n return {\n label: \"TypeScript configuration\",\n passed: false,\n message: issues.join(\", \"),\n fix: 'Set \"strict\": true and \"moduleResolution\": \"bundler\" in tsconfig.json',\n };\n }\n\n return {\n label: \"TypeScript configuration\",\n passed: true,\n message: \"strict mode, correct module resolution\",\n };\n } catch {\n return {\n label: \"TypeScript configuration\",\n passed: true,\n message: \"Found (could not parse for detailed checks)\",\n };\n }\n}\n\nfunction checkDuplicateInstances(dir: string): CheckResult {\n const nodeModules = join(dir, \"node_modules\");\n\n if (!existsSync(nodeModules)) {\n return {\n label: \"No duplicate Directive instances\",\n passed: true,\n message: \"No node_modules found\",\n };\n }\n\n const duplicates: string[] = [];\n\n // Check for nested @directive-run/core in node_modules\n try {\n const scopeDir = join(nodeModules, \"@directive-run\");\n if (existsSync(scopeDir)) {\n const packages = readdirSync(scopeDir);\n for (const pkg of packages) {\n const nestedCore = join(\n scopeDir,\n pkg,\n \"node_modules\",\n \"@directive-run\",\n \"core\",\n );\n if (existsSync(nestedCore)) {\n duplicates.push(`@directive-run/${pkg}/node_modules/@directive-run/core`);\n }\n }\n }\n } catch {\n // Can't read node_modules, skip\n }\n\n if (duplicates.length > 0) {\n return {\n label: \"No duplicate Directive instances\",\n passed: false,\n message: `Found ${duplicates.length} duplicate(s): ${duplicates.join(\", \")}`,\n fix: \"Run `npm dedupe` or check for version mismatches\",\n };\n }\n\n return {\n label: \"No duplicate Directive instances\",\n passed: true,\n message: \"No duplicates detected\",\n };\n}\n\nfunction checkAIRulesFreshness(dir: string): CheckResult {\n const ruleFiles = [\n \".cursorrules\",\n \".claude/CLAUDE.md\",\n \".github/copilot-instructions.md\",\n \".windsurfrules\",\n \".clinerules\",\n ];\n\n const found: string[] = [];\n\n for (const file of ruleFiles) {\n const filePath = join(dir, file);\n if (existsSync(filePath)) {\n const content = readFileSync(filePath, \"utf-8\");\n if (hasDirectiveSection(content)) {\n found.push(file);\n }\n }\n }\n\n if (found.length === 0) {\n return {\n label: \"AI coding rules\",\n passed: true,\n message: \"Not installed (optional)\",\n };\n }\n\n return {\n label: \"AI coding rules\",\n passed: true,\n message: `Installed for: ${found.join(\", \")}`,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function doctorCommand(args: string[]) {\n const opts = parseArgs(args);\n\n console.log();\n console.log(pc.bold(pc.cyan(\"Directive Doctor\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n\n const checks = [\n checkCoreInstalled(opts.dir),\n checkVersionCompatibility(opts.dir),\n checkTypeScript(opts.dir),\n checkDuplicateInstances(opts.dir),\n checkAIRulesFreshness(opts.dir),\n ];\n\n let failures = 0;\n\n for (const check of checks) {\n const icon = check.passed ? pc.green(\"✓\") : pc.red(\"✗\");\n console.log(`${icon} ${pc.bold(check.label)}`);\n console.log(` ${pc.dim(check.message)}`);\n\n if (!check.passed && check.fix) {\n console.log(` ${pc.yellow(\"Fix:\")} ${check.fix}`);\n failures++;\n }\n\n console.log();\n }\n\n if (failures > 0) {\n console.log(\n pc.yellow(`${failures} issue(s) found. See suggested fixes above.`),\n );\n process.exit(1);\n } else {\n console.log(pc.green(\"All checks passed!\"));\n }\n}\n","import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\nimport { getAllExamples, getExample, getExampleFiles } from \"../lib/knowledge.js\";\n\n// ---------------------------------------------------------------------------\n// Categories\n// ---------------------------------------------------------------------------\n\nconst CATEGORIES: Record<string, string[]> = {\n \"Getting Started\": [\"counter\", \"contact-form\", \"auth-flow\"],\n \"Core Patterns\": [\n \"async-chains\",\n \"batch-resolver\",\n \"debounce-constraints\",\n \"error-boundaries\",\n \"feature-flags\",\n \"multi-module\",\n \"optimistic-updates\",\n \"pagination\",\n \"permissions\",\n ],\n \"Real-World\": [\n \"dashboard-loader\",\n \"form-wizard\",\n \"newsletter\",\n \"notifications\",\n \"shopping-cart\",\n \"theme-locale\",\n \"url-sync\",\n \"websocket\",\n \"server\",\n ],\n Games: [\"checkers\", \"sudoku\", \"goal-heist\", \"ab-testing\"],\n AI: [\n \"ai-orchestrator\",\n \"ai-checkpoint\",\n \"ai-guardrails\",\n \"fraud-analysis\",\n \"provider-routing\",\n \"topic-guard\",\n \"dynamic-modules\",\n \"time-machine\",\n ],\n};\n\nfunction getCategory(name: string): string {\n for (const [cat, names] of Object.entries(CATEGORIES)) {\n if (names.includes(name)) {\n return cat;\n }\n }\n\n return \"Other\";\n}\n\nfunction getDescription(content: string): string {\n // Extract first line comment or jsdoc summary\n const lines = content.split(\"\\n\");\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Match: // Example: name or // Source: ...\n if (trimmed.startsWith(\"// Example:\")) {\n continue;\n }\n if (trimmed.startsWith(\"// Source:\")) {\n continue;\n }\n if (trimmed.startsWith(\"// Extracted\")) {\n continue;\n }\n\n // Match JSDoc: * Description text\n const jsdocMatch = trimmed.match(/^\\*\\s+(.+?)(?:\\s*\\*\\/)?$/);\n if (jsdocMatch?.[1] && !jsdocMatch[1].startsWith(\"@\")) {\n return jsdocMatch[1];\n }\n\n // Match: // Description text\n if (trimmed.startsWith(\"//\") && trimmed.length > 3) {\n return trimmed.slice(2).trim();\n }\n\n // Stop at first non-comment line\n if (\n trimmed !== \"\" &&\n !trimmed.startsWith(\"//\") &&\n !trimmed.startsWith(\"/*\") &&\n !trimmed.startsWith(\"*\")\n ) {\n break;\n }\n }\n\n return \"\";\n}\n\n// ---------------------------------------------------------------------------\n// List command\n// ---------------------------------------------------------------------------\n\nexport async function examplesListCommand(args: string[]) {\n let filter: string | undefined;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--filter\") {\n filter = args[++i]?.toLowerCase();\n }\n }\n\n const examples = getAllExamples();\n\n console.log();\n console.log(pc.bold(pc.cyan(\"Directive Examples\")));\n console.log(pc.dim(\"─\".repeat(50)));\n console.log();\n\n // Group by category\n const byCategory = new Map<string, Array<{ name: string; desc: string }>>();\n\n for (const [name, content] of examples) {\n const cat = getCategory(name);\n\n if (filter && !cat.toLowerCase().includes(filter) && !name.includes(filter)) {\n continue;\n }\n\n if (!byCategory.has(cat)) {\n byCategory.set(cat, []);\n }\n byCategory.get(cat)!.push({ name, desc: getDescription(content) });\n }\n\n if (byCategory.size === 0) {\n console.log(pc.dim(\"No examples match the filter.\"));\n\n return;\n }\n\n // Print in category order\n const categoryOrder = Object.keys(CATEGORIES);\n const sortedCategories = [...byCategory.keys()].sort(\n (a, b) => (categoryOrder.indexOf(a) ?? 99) - (categoryOrder.indexOf(b) ?? 99),\n );\n\n for (const cat of sortedCategories) {\n const items = byCategory.get(cat)!;\n console.log(pc.bold(cat));\n\n for (const item of items) {\n const desc = item.desc ? pc.dim(` — ${item.desc}`) : \"\";\n console.log(` ${pc.cyan(item.name)}${desc}`);\n }\n\n console.log();\n }\n\n console.log(\n pc.dim(`${examples.size} examples available. Run ${pc.cyan(\"directive examples copy <name>\")} to extract one.`),\n );\n}\n\n// ---------------------------------------------------------------------------\n// Copy command\n// ---------------------------------------------------------------------------\n\nexport async function examplesCopyCommand(\n name: string,\n args: string[],\n) {\n let dest = process.cwd();\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--dest\") {\n const val = args[++i];\n if (val) {\n dest = val;\n }\n }\n }\n\n if (!name) {\n console.error(\"Usage: directive examples copy <name> [--dest <dir>]\");\n process.exit(1);\n }\n\n const content = getExample(name);\n\n if (!content) {\n console.error(`Example \"${name}\" not found.`);\n console.error(\n `Run ${pc.cyan(\"directive examples list\")} to see available examples.`,\n );\n process.exit(1);\n }\n\n // Rewrite workspace imports to published package names\n const rewritten = content\n .replace(\n /from\\s+[\"']@directive-run\\/core\\/plugins[\"']/g,\n 'from \"@directive-run/core/plugins\"',\n )\n .replace(\n /from\\s+[\"']@directive-run\\/core[\"']/g,\n 'from \"@directive-run/core\"',\n )\n .replace(\n /from\\s+[\"']@directive-run\\/ai[\"']/g,\n 'from \"@directive-run/ai\"',\n );\n\n const filePath = join(dest, `${name}.ts`);\n\n if (existsSync(filePath)) {\n console.error(`File already exists: ${relative(process.cwd(), filePath)}`);\n process.exit(1);\n }\n\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n writeFileSync(filePath, rewritten, \"utf-8\");\n\n const rel = relative(process.cwd(), filePath);\n console.log(`${pc.green(\"Copied\")} ${pc.cyan(name)} → ${pc.dim(rel)}`);\n}\n","import { CLI_NAME } from \"./lib/constants.js\";\nimport {\n aiRulesCommand,\n aiRulesUpdateCommand,\n aiRulesCheckCommand,\n} from \"./commands/ai-rules.js\";\nimport { initCommand } from \"./commands/init.js\";\nimport { newModuleCommand, newOrchestratorCommand } from \"./commands/new.js\";\nimport { inspectCommand } from \"./commands/inspect.js\";\nimport { explainCommand } from \"./commands/explain.js\";\nimport { graphCommand } from \"./commands/graph.js\";\nimport { doctorCommand } from \"./commands/doctor.js\";\nimport { examplesListCommand, examplesCopyCommand } from \"./commands/examples.js\";\n\nconst HELP = `\n${CLI_NAME} — CLI tools for Directive\n\nUsage: ${CLI_NAME} <command> [options]\n\nCommands:\n init Project scaffolding wizard\n new module <name> Generate a module file\n new orchestrator <name> Generate an AI orchestrator\n inspect <file> Runtime system introspection\n explain <file> [req-id] Explain why a requirement exists\n graph <file> Visual dependency graph\n doctor Health check for project setup\n ai-rules init Install AI coding rules\n ai-rules update Refresh rules to latest version\n ai-rules check Validate rules are current (CI)\n examples list Browse available examples\n examples copy <name> Extract example to project\n\nOptions:\n --help, -h Show this help message\n --version, -v Show version\n\ninit options:\n --template <name> Template: counter, auth-flow, ai-orchestrator\n --dir <path> Target directory (default: cwd)\n --no-interactive Skip prompts, use defaults\n\nnew module options:\n --with <sections> Sections: derive,events,constraints,resolvers,effects\n --minimal Schema + init only\n --dir <path> Target directory (default: cwd)\n\ninspect options:\n --json Output as JSON\n --module <name> Inspect specific module\n\ngraph options:\n --ascii Terminal-only output\n --no-open Don't open in browser\n --output <path> Output file path\n\nai-rules init options:\n --force Overwrite existing files without asking\n --merge Use section markers to update only the Directive section\n --tool <name> Skip detection, install for specific tool(s)\n --dir <path> Target directory (default: cwd)\n\nexamples options:\n --filter <category> Filter by category or name\n --dest <dir> Destination directory for copy\n`.trim();\n\nasync function main() {\n const args = process.argv.slice(2);\n\n if (args.length === 0 || args.includes(\"--help\") || args.includes(\"-h\")) {\n console.log(HELP);\n process.exit(0);\n }\n\n if (args.includes(\"--version\") || args.includes(\"-v\")) {\n const { readFileSync } = await import(\"node:fs\");\n const { fileURLToPath } = await import(\"node:url\");\n const { dirname, join } = await import(\"node:path\");\n\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, \"..\", \"package.json\"), \"utf-8\"),\n );\n\n console.log(pkg.version);\n process.exit(0);\n }\n\n const command = args[0];\n\n switch (command) {\n case \"init\": {\n await initCommand(args.slice(1));\n break;\n }\n\n case \"new\": {\n const subcommand = args[1];\n const name = args[2];\n\n if (subcommand === \"module\") {\n if (!name) {\n console.error(\"Usage: directive new module <name>\");\n process.exit(1);\n }\n await newModuleCommand(name, args.slice(3));\n } else if (subcommand === \"orchestrator\") {\n if (!name) {\n console.error(\"Usage: directive new orchestrator <name>\");\n process.exit(1);\n }\n await newOrchestratorCommand(name, args.slice(3));\n } else {\n console.error(\n `Unknown subcommand: ${subcommand ?? \"(none)\"}\\n` +\n `Usage: ${CLI_NAME} new module <name>\\n` +\n ` ${CLI_NAME} new orchestrator <name>`,\n );\n process.exit(1);\n }\n break;\n }\n\n case \"inspect\": {\n await inspectCommand(args.slice(1));\n break;\n }\n\n case \"explain\": {\n await explainCommand(args.slice(1));\n break;\n }\n\n case \"graph\": {\n await graphCommand(args.slice(1));\n break;\n }\n\n case \"doctor\": {\n await doctorCommand(args.slice(1));\n break;\n }\n\n case \"ai-rules\": {\n const subcommand = args[1];\n\n if (subcommand === \"init\") {\n await aiRulesCommand(args.slice(2));\n } else if (subcommand === \"update\") {\n await aiRulesUpdateCommand(args.slice(2));\n } else if (subcommand === \"check\") {\n await aiRulesCheckCommand(args.slice(2));\n } else {\n console.error(\n `Unknown subcommand: ${subcommand ?? \"(none)\"}\\n` +\n `Usage: ${CLI_NAME} ai-rules init\\n` +\n ` ${CLI_NAME} ai-rules update\\n` +\n ` ${CLI_NAME} ai-rules check`,\n );\n process.exit(1);\n }\n break;\n }\n\n case \"examples\": {\n const subcommand = args[1];\n\n if (subcommand === \"list\") {\n await examplesListCommand(args.slice(2));\n } else if (subcommand === \"copy\") {\n const name = args[2];\n if (!name) {\n console.error(\"Usage: directive examples copy <name>\");\n process.exit(1);\n }\n await examplesCopyCommand(name, args.slice(3));\n } else {\n console.error(\n `Unknown subcommand: ${subcommand ?? \"(none)\"}\\n` +\n `Usage: ${CLI_NAME} examples list [--filter <category>]\\n` +\n ` ${CLI_NAME} examples copy <name> [--dest <dir>]`,\n );\n process.exit(1);\n }\n break;\n }\n\n default:\n console.error(\n `Unknown command: ${command}\\nRun '${CLI_NAME} --help' for usage.`,\n );\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error(err.message || err);\n process.exit(1);\n});\n"]}
1
+ {"version":3,"sources":["../src/lib/constants.ts","../src/lib/detect.ts","../src/lib/merge.ts","../src/lib/monorepo.ts","../src/templates/claude.ts","../src/templates/cursor.ts","../src/templates/copilot.ts","../src/templates/cline.ts","../src/templates/windsurf.ts","../src/templates/index.ts","../src/commands/ai-rules.ts","../src/commands/init.ts","../src/commands/new.ts","../src/lib/loader.ts","../src/commands/inspect.ts","../src/commands/explain.ts","../src/commands/graph.ts","../src/commands/doctor.ts","../src/commands/examples.ts","../src/cli.ts"],"names":["CLI_NAME","SECTION_START","SECTION_END","TOOL_SIGNALS","detectTools","rootDir","detected","tool","signal","existsSync","join","getToolConfig","id","t","getAllToolIds","mergeSection","existingContent","newSection","startIdx","endIdx","wrapped","separator","hasDirectiveSection","content","MONOREPO_SIGNALS","detectMonorepo","startDir","dir","resolve","dirname","pkgPath","readFileSync","generateClaudeRules","corePatterns","getKnowledge","antiPatterns","naming","schemaTypes","generateCursorRules","generateCopilotRules","generateClineRules","generateWindsurfRules","generators","getTemplate","toolId","generator","parseArgs","args","opts","i","val","aiRulesCommand","pc","mono","targetDir","placement","relative","selectedTools","config","choices","s","filePath","fileExists","writeFile","action","mkdirSync","writeFileSync","aiRulesUpdateCommand","ruleFiles","updated","file","existing","newContent","merged","aiRulesCheckCommand","checked","stale","freshContent","detectPackageManager","installCmd","pm","pkg","getTemplates","moduleName","generateCounterModule","generateCounterMain","generateAuthModule","generateAuthMain","generateAIModule","generateAIMain","name","toCamelCase","camelName","_","c","initCommand","h","nameResult","templateId","templates","choice","template","skipped","rel","depsCmd","ALL_SECTIONS","generateModule","sections","hasConstraints","hasResolvers","code","generateOrchestrator","findModulesDir","newModuleCommand","newOrchestratorCommand","loadSystem","resolved","mod","isSystem","key","err","obj","sys","arg","formatFacts","facts","lines","entries","value","formatted","formatValue","formatConstraints","constraints","status","hits","formatResolverDefs","resolverDefs","resolvers","def","stateStr","formatResolverState","formatUnmet","unmet","u","formatInflight","inflight","now","inf","elapsed","state","error","duration","dur","findWarnings","inspection","warnings","r","inspectCommand","system","factsObj","w","requirementId","explainCommand","explanation","resolverEntries","formatState","payload","resolverStatus","renderAsciiGraph","constraintMap","entry","resolversByType","info","reqType","usedResolvers","renderHtmlGraph","nodes","edges","factKeys","reqTypes","reqIdx","nodeMap","n","svgWidth","maxY","edgeSvg","e","from","to","nodeSvg","escapeHtml","headerSvg","text","graphCommand","html","outputPath","execFile","openCmd","checkCoreInstalled","deps","checkVersionCompatibility","directivePackages","k","checkTypeScript","tsconfigPath","stripped","co","issues","checkDuplicateInstances","nodeModules","duplicates","scopeDir","packages","readdirSync","nestedCore","checkAIRulesFreshness","found","doctorCommand","checks","failures","check","icon","CATEGORIES","getCategory","cat","names","getDescription","line","trimmed","jsdocMatch","examplesListCommand","filter","examples","getAllExamples","byCategory","categoryOrder","sortedCategories","a","b","items","item","desc","examplesCopyCommand","dest","getExample","rewritten","HELP","main","fileURLToPath","__dirname","command","subcommand"],"mappings":"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","file":"cli.js","sourcesContent":["export const CLI_NAME = \"directive\";\nexport const CLI_ALIAS = \"dr\";\nexport const PACKAGE_NAME = \"@directive-run/cli\";\nexport const SECTION_START = \"<!-- directive:start -->\";\nexport const SECTION_END = \"<!-- directive:end -->\";\n","import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport interface DetectedTool {\n name: string;\n id: \"cursor\" | \"claude\" | \"copilot\" | \"windsurf\" | \"cline\";\n outputPath: string;\n}\n\nconst TOOL_SIGNALS: Array<{\n id: DetectedTool[\"id\"];\n name: string;\n signals: string[];\n outputPath: string;\n}> = [\n {\n id: \"cursor\",\n name: \"Cursor\",\n signals: [\".cursor\", \".cursorrules\"],\n outputPath: \".cursorrules\",\n },\n {\n id: \"claude\",\n name: \"Claude Code\",\n signals: [\".claude\"],\n outputPath: \".claude/CLAUDE.md\",\n },\n {\n id: \"copilot\",\n name: \"GitHub Copilot\",\n signals: [\".github\"],\n outputPath: \".github/copilot-instructions.md\",\n },\n {\n id: \"windsurf\",\n name: \"Windsurf\",\n signals: [\".windsurfrules\"],\n outputPath: \".windsurfrules\",\n },\n {\n id: \"cline\",\n name: \"Cline\",\n signals: [\".clinerules\"],\n outputPath: \".clinerules\",\n },\n];\n\nexport function detectTools(rootDir: string): DetectedTool[] {\n const detected: DetectedTool[] = [];\n\n for (const tool of TOOL_SIGNALS) {\n const hasSignal = tool.signals.some((signal) =>\n existsSync(join(rootDir, signal)),\n );\n\n if (hasSignal) {\n detected.push({\n name: tool.name,\n id: tool.id,\n outputPath: join(rootDir, tool.outputPath),\n });\n }\n }\n\n return detected;\n}\n\nexport function getToolConfig(id: DetectedTool[\"id\"]) {\n const tool = TOOL_SIGNALS.find((t) => t.id === id);\n if (!tool) {\n throw new Error(`Unknown tool: ${id}`);\n }\n\n return tool;\n}\n\nexport function getAllToolIds(): DetectedTool[\"id\"][] {\n return TOOL_SIGNALS.map((t) => t.id);\n}\n","import { SECTION_END, SECTION_START } from \"./constants.js\";\n\n/**\n * Replace the Directive section within existing content, or append it.\n * Section markers: <!-- directive:start --> ... <!-- directive:end -->\n */\nexport function mergeSection(\n existingContent: string,\n newSection: string,\n): string {\n const startIdx = existingContent.indexOf(SECTION_START);\n const endIdx = existingContent.indexOf(SECTION_END);\n\n const wrapped = `${SECTION_START}\\n${newSection}\\n${SECTION_END}`;\n\n if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {\n return (\n existingContent.slice(0, startIdx) +\n wrapped +\n existingContent.slice(endIdx + SECTION_END.length)\n );\n }\n\n const separator = existingContent.endsWith(\"\\n\") ? \"\\n\" : \"\\n\\n\";\n\n return existingContent + separator + wrapped + \"\\n\";\n}\n\n/**\n * Check if content already has a Directive section.\n */\nexport function hasDirectiveSection(content: string): boolean {\n return (\n content.includes(SECTION_START) && content.includes(SECTION_END)\n );\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport interface MonorepoInfo {\n isMonorepo: boolean;\n rootDir: string;\n tool?: \"pnpm\" | \"turbo\" | \"npm\" | \"yarn\";\n}\n\nconst MONOREPO_SIGNALS = [\n { file: \"pnpm-workspace.yaml\", tool: \"pnpm\" as const },\n { file: \"turbo.json\", tool: \"turbo\" as const },\n];\n\nexport function detectMonorepo(startDir: string): MonorepoInfo {\n let dir = resolve(startDir);\n\n while (dir !== dirname(dir)) {\n for (const signal of MONOREPO_SIGNALS) {\n if (existsSync(join(dir, signal.file))) {\n return { isMonorepo: true, rootDir: dir, tool: signal.tool };\n }\n }\n\n const pkgPath = join(dir, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n if (pkg.workspaces) {\n const tool = existsSync(join(dir, \"yarn.lock\"))\n ? (\"yarn\" as const)\n : (\"npm\" as const);\n\n return { isMonorepo: true, rootDir: dir, tool };\n }\n } catch {\n // ignore parse errors\n }\n }\n\n dir = dirname(dir);\n }\n\n return { isMonorepo: false, rootDir: startDir };\n}\n","import { getKnowledge } from \"../lib/knowledge.js\";\n\n/**\n * Generate Claude Code rules (~30KB).\n * Strategy: Full anti-patterns + core-patterns + naming + schema-types (most critical),\n * condensed summaries for everything else.\n */\nexport function generateClaudeRules(): string {\n // These 4 files are included in full (~25KB)\n const corePatterns = getKnowledge(\"core-patterns\");\n const antiPatterns = getKnowledge(\"anti-patterns\");\n const naming = getKnowledge(\"naming\");\n const schemaTypes = getKnowledge(\"schema-types\");\n\n return `# Directive — Complete AI Coding Rules\n\n> Constraint-driven runtime for TypeScript. Declare requirements, let the runtime resolve them.\n> https://directive.run | \\`npm install @directive-run/core\\`\n> Full reference with examples: https://directive.run/llms.txt\n\n## Core Patterns\n\n${corePatterns}\n\n---\n\n## Anti-Patterns (All 36)\n\n${antiPatterns}\n\n### AI Package Anti-Patterns (21-36)\n\n| # | WRONG | CORRECT |\n|---|-------|---------|\n| 21 | TS types for factsSchema: \\`{ confidence: number }\\` | Use \\`{ confidence: t.number() }\\` |\n| 22 | \\`facts.cache.push(item)\\` in orchestrator | \\`facts.cache = [...facts.cache, item]\\` |\n| 23 | Returning data from orchestrator \\`resolve\\` | Resolvers return \\`void\\` — mutate \\`context.facts\\` |\n| 24 | Forgetting \\`orchestrator.start()\\` multi-agent | Single: implicit. Multi: must call \\`start()\\` |\n| 25 | Catching \\`Error\\` not \\`GuardrailError\\` | \\`GuardrailError\\` has \\`.guardrailName\\`, \\`.errorCode\\` |\n| 26 | \\`from '@directive-run/ai'\\` for adapters | Subpath: \\`from '@directive-run/ai/openai'\\` |\n| 27 | Assuming \\`{ input_tokens }\\` structure | Normalized: \\`{ inputTokens, outputTokens }\\` |\n| 28 | Same CircuitBreaker across agents | Create separate instances per dependency |\n| 29 | \\`budgetWarningThreshold: 1.5\\` | Must be 0-1 (percentage) |\n| 30 | \\`race\\` minSuccess > agents.length | Must be \\`1 ≤ minSuccess ≤ agents.length\\` |\n| 31 | Async summarizer with autoManage: true | Use \\`autoManage: false\\` for sync control |\n| 32 | Side effects in reflect \\`evaluator\\` | Evaluator must be pure |\n| 33 | Task calling \\`runSingleAgent\\` | Tasks can't call agents — separate node |\n| 34 | Task expecting object input | Input is always \\`string\\` — \\`JSON.parse(input)\\` |\n| 35 | Task ID same as agent ID | IDs share namespace — distinct names |\n| 36 | \\`from '@directive-run/ai/mcp'\\` | \\`from '@directive-run/ai'\\` (main export) |\n\n---\n\n## Naming Conventions\n\n${naming}\n\n---\n\n## Schema Type Builders\n\n${schemaTypes}\n\n---\n\n## Multi-Module Quick Reference\n\n\\`\\`\\`typescript\n// Two modules with cross-module dependency\nconst authSchema = { facts: { token: t.string(), isAuth: t.boolean() } };\nconst authModule = createModule(\"auth\", { schema: authSchema, /* ... */ });\n\nconst cartModule = createModule(\"cart\", {\n schema: { facts: { items: t.array<CartItem>() } },\n crossModuleDeps: { auth: authSchema }, // Declare dependency\n constraints: {\n checkout: {\n when: (facts) => facts.self.items.length > 0 && facts.auth.isAuth, // facts.self.* for own, facts.auth.* for cross\n require: () => ({ type: \"CHECKOUT\" }),\n },\n },\n // ...\n});\n\nconst system = createSystem({ modules: { auth: authModule, cart: cartModule } });\n// Access: system.facts.auth.token, system.events.cart.addItem({...})\n\\`\\`\\`\n\nKey rules:\n- \\`facts.self.*\\` for own module facts in constraints/resolvers\n- \\`facts.otherModule.*\\` for cross-module reads\n- \\`crossModuleDeps\\` must declare consumed schemas\n- \\`system.events.moduleName.eventName(payload)\\` for namespaced events\n- The \\`::\\` separator is internal — always use dot notation\n\n---\n\n## Constraints\n\n- \\`when(facts)\\` → boolean. When true, requirement is emitted.\n- \\`require(facts)\\` → \\`{ type: \"TYPE\", ...data }\\` object (never string literal)\n- \\`priority: number\\` — higher evaluated first\n- \\`after: [\"constraintName\"]\\` — ordering within same priority\n- Async: \\`async: true\\` + \\`deps: ['factName']\\` (deps REQUIRED for async)\n- Constraints DECLARE needs, resolvers FULFILL them — decoupled.\n\n---\n\n## Resolvers\n\n- \\`resolve(req, context)\\` — async, returns \\`void\\`. Mutate \\`context.facts.*\\`.\n- \\`requirement: \"TYPE\"\\` — which type this handles\n- \\`key: (req) => string\\` — deduplication key\n- \\`retry: { attempts: 3, backoff: \"exponential\", initialDelay: 100 }\\`\n- \\`batch: { maxSize: 10, windowMs: 50 }\\` for N+1 prevention\n- Always \\`await system.settle()\\` after start to wait for resolution\n\n---\n\n## System API\n\n- \\`system.facts.fieldName\\` — read/write facts\n- \\`system.derive.derivationName\\` — read derived values\n- \\`system.events.eventName(payload)\\` — dispatch events\n- \\`system.subscribe(listener)\\` — subscribe to all changes\n- \\`system.read(key)\\` — read fact or derivation by string key\n- \\`system.inspect()\\` — full state snapshot\n- \\`system.settle()\\` — wait for async operations\n- \\`system.start()\\` / \\`system.stop()\\` / \\`system.destroy()\\`\n\n---\n\n## React (\\`@directive-run/react\\`)\n\n\\`\\`\\`typescript\nimport { useSelector, useEvent } from \"@directive-run/react\";\n\nconst count = useSelector(system, (s) => s.facts.count);\nconst events = useEvent(system);\n// onClick={() => events.increment()}\n\\`\\`\\`\n\n**NO** \\`useDirective()\\` hook. Use \\`useSelector\\` + \\`useEvent\\`.\n\n---\n\n## Plugins (\\`@directive-run/core/plugins\\`)\n\n\\`devtoolsPlugin()\\`, \\`loggingPlugin()\\`, \\`persistencePlugin(config)\\`,\n\\`createCircuitBreaker(config)\\`, \\`createObservability(config)\\`\n\n---\n\n## AI Package (\\`@directive-run/ai\\`)\n\n### Single-Agent Orchestrator\n\n\\`\\`\\`typescript\nimport { createAgentOrchestrator, t } from '@directive-run/ai';\nimport { createAnthropicRunner } from '@directive-run/ai/anthropic';\n\nconst orchestrator = createAgentOrchestrator({\n runner: createAnthropicRunner({ apiKey }),\n factsSchema: { result: t.string(), confidence: t.number() },\n init: (facts) => { facts.result = \"\"; facts.confidence = 0; },\n maxTokenBudget: 100000,\n budgetWarningThreshold: 0.8,\n guardrails: { input: [...], output: [...] },\n memory: createAgentMemory({ strategy: createSlidingWindowStrategy({ maxMessages: 30 }) }),\n debug: true,\n});\n\nconst result = await orchestrator.run(agent, \"analyze this\");\n\\`\\`\\`\n\n### Multi-Agent\n\n\\`\\`\\`typescript\nimport { createMultiAgentOrchestrator, parallel, sequential, dag } from '@directive-run/ai';\n\nconst orch = createMultiAgentOrchestrator({\n agents: { researcher: agentA, writer: agentB },\n patterns: {\n pipeline: sequential([\"researcher\", \"writer\"]),\n brainstorm: parallel([\"researcher\", \"writer\"], mergeResults),\n workflow: dag([\n { id: \"research\", handler: \"researcher\" },\n { id: \"write\", handler: \"writer\", dependencies: [\"research\"] },\n ]),\n },\n runner,\n});\norch.start(); // Required for multi-agent!\n\\`\\`\\`\n\n8 patterns: \\`parallel\\`, \\`sequential\\`, \\`supervisor\\`, \\`dag\\`, \\`reflect\\`, \\`race\\`, \\`debate\\`, \\`goal\\`\n\n### Adapter Imports (Subpath!)\n\n\\`\\`\\`typescript\nimport { createAnthropicRunner } from '@directive-run/ai/anthropic';\nimport { createOpenAIRunner } from '@directive-run/ai/openai';\nimport { createOllamaRunner } from '@directive-run/ai/ollama';\nimport { createGeminiRunner } from '@directive-run/ai/gemini';\n\\`\\`\\`\n\n### Guardrails\n\n\\`createPIIGuardrail\\`, \\`createModerationGuardrail\\`, \\`createRateLimitGuardrail\\`,\n\\`createToolGuardrail\\`, \\`createOutputSchemaGuardrail\\`, \\`createLengthGuardrail\\`,\n\\`createContentFilterGuardrail\\`\n\n\\`GuardrailResult: { passed: boolean, reason?: string, transformed?: unknown }\\`\n\n### Memory\n\n\\`createAgentMemory({ strategy, summarizer?, autoManage? })\\`\nStrategies: \\`createSlidingWindowStrategy\\`, \\`createTokenBasedStrategy\\`, \\`createHybridStrategy\\`\nSummarizers: \\`createTruncationSummarizer\\`, \\`createKeyPointsSummarizer\\`, \\`createLLMSummarizer(runner)\\`\n\n### Streaming\n\n\\`\\`\\`typescript\nconst streamResult = orchestrator.runStream(agent, \"analyze\");\nfor await (const chunk of streamResult.stream) {\n switch (chunk.type) {\n case \"token\": process.stdout.write(chunk.data); break;\n case \"done\": console.log(\"Tokens:\", chunk.totalTokens); break;\n case \"error\": console.error(chunk.error); break;\n }\n}\n\\`\\`\\`\n\nBackpressure: \\`\"buffer\"\\` (default), \\`\"block\"\\`, \\`\"drop\"\\`\n`;\n}\n","/**\n * Generate Cursor rules (<10KB).\n * Handcrafted condensed content — core patterns, top 10 anti-patterns, naming, 1 mini example.\n */\nexport function generateCursorRules(): string {\n return `# Directive — AI Coding Rules\n\n> Constraint-driven runtime for TypeScript. \\`npm install @directive-run/core\\`\n> Full reference: https://directive.run/llms.txt\n\n## Schema Shape (CRITICAL)\n\n\\`\\`\\`typescript\nimport { createModule, createSystem, t } from \"@directive-run/core\";\n\nconst myModule = createModule(\"name\", {\n schema: {\n facts: { count: t.number(), items: t.array<string>() },\n derivations: { total: \"number\" },\n events: { increment: \"void\", addItem: \"string\" },\n requirements: { FETCH_DATA: { url: \"string\" } },\n },\n init: (facts) => { facts.count = 0; facts.items = []; },\n derive: {\n total: (facts) => facts.items.length + facts.count,\n },\n events: {\n increment: (facts) => { facts.count += 1; },\n addItem: (facts, item) => { facts.items = [...facts.items, item]; },\n },\n constraints: {\n fetchWhenReady: {\n when: (facts) => facts.count > 0 && facts.items.length === 0,\n require: (facts) => ({ type: \"FETCH_DATA\", url: \"/api/items\" }),\n },\n },\n resolvers: {\n fetchData: {\n requirement: \"FETCH_DATA\",\n resolve: async (req, context) => {\n const data = await fetch(req.url).then(r => r.json());\n context.facts.items = data;\n },\n },\n },\n});\n\nconst system = createSystem({ module: myModule });\nawait system.settle();\n\\`\\`\\`\n\n## Top 10 Anti-Patterns\n\n| # | WRONG | CORRECT |\n|---|-------|---------|\n| 1 | \\`facts.profile as ResourceState<Profile>\\` | Remove cast — schema provides types |\n| 2 | \\`{ phase: t.string() }\\` flat schema | \\`schema: { facts: { phase: t.string() } }\\` |\n| 3 | \\`facts.items\\` in multi-module | \\`facts.self.items\\` |\n| 4 | \\`t.map()\\`, \\`t.set()\\`, \\`t.promise()\\` | Don't exist. Use \\`t.object<Map<K,V>>()\\` |\n| 5 | \\`(req, ctx)\\` in resolver | \\`(req, context)\\` — never abbreviate |\n| 6 | \\`createModule(\"n\", { phase: t.string() })\\` | Must wrap: \\`schema: { facts: { ... } }\\` |\n| 7 | \\`system.dispatch('login', {...})\\` | \\`system.events.login({...})\\` |\n| 8 | \\`facts.items.push(item)\\` | \\`facts.items = [...facts.items, item]\\` |\n| 9 | \\`useDirective(system)\\` | \\`useSelector(system, s => s.facts.count)\\` |\n| 10 | \\`facts['auth::status']\\` | \\`facts.auth.status\\` dot notation |\n\n## Naming\n\n- \\`req\\` = requirement (not request). Parameter: \\`(req, context)\\`\n- \\`derive\\` / derivations — never \"computed\" or \"selectors\"\n- Resolvers return \\`void\\` — mutate \\`context.facts\\` instead\n- Always use braces for returns: \\`if (x) { return y; }\\`\n- Multi-module: \\`facts.self.fieldName\\` for own module facts\n- Events: \\`system.events.eventName(payload)\\` — not \\`system.dispatch()\\`\n- Import from main: \\`import { createModule } from '@directive-run/core'\\`\n\n## Schema Types That Exist\n\n\\`t.string<T>()\\`, \\`t.number()\\`, \\`t.boolean()\\`, \\`t.array<T>()\\`, \\`t.object<T>()\\`,\n\\`t.enum(\"a\",\"b\")\\`, \\`t.literal(value)\\`, \\`t.nullable(inner)\\`, \\`t.optional(inner)\\`, \\`t.union(...)\\`\n\nChainable: \\`.default()\\`, \\`.validate()\\`, \\`.transform()\\`, \\`.brand<>()\\`, \\`.refine()\\`\n\n**DO NOT USE** (hallucinations): \\`t.map()\\`, \\`t.set()\\`, \\`t.date()\\`, \\`t.tuple()\\`, \\`t.record()\\`, \\`t.promise()\\`, \\`t.any()\\`\n\n## Key Pattern: Constraint → Requirement → Resolver\n\nWhen the user wants \"do X when Y\": create THREE things:\n1. **Constraint**: \\`when: (facts) => Y_condition\\` → \\`require: { type: \"DO_X\" }\\`\n2. **Resolver**: handles \"DO_X\", calls API, sets \\`context.facts\\`\n3. They are **decoupled**. Constraint declares need, resolver fulfills it.\n`;\n}\n","import { generateCursorRules } from \"./cursor.js\";\n\n/**\n * Generate GitHub Copilot instructions (~12KB).\n * Cursor content + all 20 anti-patterns + schema types detail + AI basics.\n */\nexport function generateCopilotRules(): string {\n const base = generateCursorRules();\n\n // Add anti-patterns 11-19 that cursor doesn't include\n const extraAntiPatterns = `\n## Anti-Patterns 11-19\n\n| # | WRONG | CORRECT |\n|---|-------|---------|\n| 11 | Returning data from \\`resolve\\` | Resolvers return \\`void\\` — mutate \\`context.facts\\` |\n| 12 | Async logic in \\`init\\` | \\`init\\` is synchronous, facts assignment only |\n| 13 | \\`await system.start()\\` without settle | Add \\`await system.settle()\\` after start |\n| 14 | Missing \\`crossModuleDeps\\` | Declare \\`crossModuleDeps: { auth: authSchema }\\` |\n| 15 | \\`require: \"TYPE\"\\` string literal | \\`require: { type: \"TYPE\" }\\` object form |\n| 16 | Passthrough derivation \\`(f) => f.count\\` | Remove — read fact directly |\n| 17 | \\`from '@directive-run/core/module'\\` | \\`from '@directive-run/core'\\` (main export) |\n| 18 | \\`async when()\\` without \\`deps\\` | Add \\`deps: ['factName']\\` for async constraints |\n| 19 | No error boundary on resolver | Use try-catch or module error boundary config |\n`;\n\n // Add multi-module basics\n const multiModule = `\n## Multi-Module\n\n\\`\\`\\`typescript\nconst system = createSystem({\n modules: { auth: authModule, cart: cartModule },\n});\n\n// Access: system.facts.auth.token, system.events.cart.addItem({...})\n// In constraints/resolvers: use facts.self.* for own module\n// Declare deps: crossModuleDeps: { auth: authSchema }\n\\`\\`\\`\n`;\n\n // Add AI basics\n const aiBasics = `\n## AI Package Basics (\\`@directive-run/ai\\`)\n\n\\`\\`\\`typescript\nimport { createAgentOrchestrator, t } from '@directive-run/ai';\nimport { createAnthropicRunner } from '@directive-run/ai/anthropic'; // Subpath import!\n\nconst orchestrator = createAgentOrchestrator({\n runner: createAnthropicRunner({ apiKey: process.env.ANTHROPIC_API_KEY }),\n factsSchema: { result: t.string(), confidence: t.number() }, // Use t.*() !\n init: (facts) => { facts.result = \"\"; facts.confidence = 0; },\n});\n\nconst result = await orchestrator.run(agent, \"analyze this\");\n\\`\\`\\`\n\n**AI Anti-Patterns:**\n- Use \\`t.number()\\` not \\`number\\` for factsSchema\n- Subpath imports: \\`from '@directive-run/ai/anthropic'\\` not \\`from '@directive-run/ai'\\`\n- Token usage normalized: \\`{ inputTokens, outputTokens }\\` (not provider-specific)\n- \\`facts.cache = [...facts.cache, item]\\` not \\`facts.cache.push(item)\\`\n`;\n\n return base + extraAntiPatterns + multiModule + aiBasics;\n}\n","import { generateCopilotRules } from \"./copilot.js\";\n\n/**\n * Generate Cline rules (~12KB).\n * Same content as Copilot.\n */\nexport function generateClineRules(): string {\n return generateCopilotRules();\n}\n","import { generateCopilotRules } from \"./copilot.js\";\n\n/**\n * Generate Windsurf rules (~12KB).\n * Same content as Copilot.\n */\nexport function generateWindsurfRules(): string {\n return generateCopilotRules();\n}\n","import type { DetectedTool } from \"../lib/detect.js\";\nimport { generateClaudeRules } from \"./claude.js\";\nimport { generateClineRules } from \"./cline.js\";\nimport { generateCopilotRules } from \"./copilot.js\";\nimport { generateCursorRules } from \"./cursor.js\";\nimport { generateLlmsTxt } from \"./llms-txt.js\";\nimport { generateWindsurfRules } from \"./windsurf.js\";\n\nconst generators: Record<DetectedTool[\"id\"], () => string> = {\n cursor: generateCursorRules,\n claude: generateClaudeRules,\n copilot: generateCopilotRules,\n windsurf: generateWindsurfRules,\n cline: generateClineRules,\n};\n\nexport function getTemplate(toolId: DetectedTool[\"id\"]): string {\n const generator = generators[toolId];\n if (!generator) {\n throw new Error(`No template for tool: ${toolId}`);\n }\n\n return generator();\n}\n\nexport { generateLlmsTxt };\n","import * as p from \"@clack/prompts\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\nimport { CLI_NAME } from \"../lib/constants.js\";\nimport {\n type DetectedTool,\n detectTools,\n getAllToolIds,\n getToolConfig,\n} from \"../lib/detect.js\";\nimport { hasDirectiveSection, mergeSection } from \"../lib/merge.js\";\nimport { detectMonorepo } from \"../lib/monorepo.js\";\nimport { getTemplate } from \"../templates/index.js\";\n\ninterface Options {\n force: boolean;\n merge: boolean;\n tools: string[];\n dir: string;\n}\n\nfunction parseArgs(args: string[]): Options {\n const opts: Options = {\n force: false,\n merge: false,\n tools: [],\n dir: process.cwd(),\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--force\":\n opts.force = true;\n break;\n case \"--merge\":\n opts.merge = true;\n break;\n case \"--tool\": {\n const val = args[++i];\n if (val) {\n opts.tools.push(val);\n }\n break;\n }\n case \"--dir\": {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n break;\n }\n }\n }\n\n return opts;\n}\n\nexport async function aiRulesCommand(args: string[]) {\n const opts = parseArgs(args);\n\n p.intro(pc.bgCyan(pc.black(\" directive ai-rules \")));\n\n // Step 1: Detect monorepo\n const mono = detectMonorepo(opts.dir);\n let targetDir = opts.dir;\n\n if (mono.isMonorepo && mono.rootDir !== opts.dir) {\n const placement = await p.select({\n message: \"Monorepo detected. Where should AI rules be installed?\",\n options: [\n {\n value: \"root\",\n label: `Monorepo root (${relative(opts.dir, mono.rootDir) || \".\"})`,\n hint: \"recommended\",\n },\n {\n value: \"workspace\",\n label: `Current workspace (${relative(mono.rootDir, opts.dir)})`,\n },\n ],\n });\n\n if (p.isCancel(placement)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n if (placement === \"root\") {\n targetDir = mono.rootDir;\n }\n }\n\n // Step 2: Detect or select tools\n let selectedTools: DetectedTool[];\n\n if (opts.tools.length > 0) {\n selectedTools = opts.tools.map((id) => {\n const config = getToolConfig(id as DetectedTool[\"id\"]);\n\n return {\n name: config.name,\n id: config.id,\n outputPath: join(targetDir, config.outputPath),\n };\n });\n } else {\n const detected = detectTools(targetDir);\n\n if (detected.length > 0) {\n const choices = await p.multiselect({\n message: `Detected ${detected.length} AI tool(s). Which should get Directive rules?`,\n options: detected.map((t) => ({\n value: t.id,\n label: t.name,\n hint: relative(targetDir, t.outputPath),\n })),\n initialValues: detected.map((t) => t.id),\n required: true,\n });\n\n if (p.isCancel(choices)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n selectedTools = (choices as DetectedTool[\"id\"][]).map((id) => {\n const config = getToolConfig(id);\n\n return {\n name: config.name,\n id: config.id,\n outputPath: join(targetDir, config.outputPath),\n };\n });\n } else {\n const choices = await p.multiselect({\n message:\n \"No AI tools detected. Which tools do you use?\",\n options: getAllToolIds().map((id) => {\n const config = getToolConfig(id);\n\n return { value: id, label: config.name };\n }),\n required: true,\n });\n\n if (p.isCancel(choices)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n selectedTools = (choices as DetectedTool[\"id\"][]).map((id) => {\n const config = getToolConfig(id);\n\n return {\n name: config.name,\n id: config.id,\n outputPath: join(targetDir, config.outputPath),\n };\n });\n }\n }\n\n if (selectedTools.length === 0) {\n p.cancel(\"No tools selected.\");\n process.exit(0);\n }\n\n // Step 3: Write files\n const s = p.spinner();\n\n for (const tool of selectedTools) {\n s.start(`Generating ${tool.name} rules...`);\n\n const content = getTemplate(tool.id);\n const filePath = tool.outputPath;\n const fileExists = existsSync(filePath);\n\n s.stop(`Generated ${tool.name} rules.`);\n\n if (fileExists && !opts.force) {\n const existingContent = readFileSync(filePath, \"utf-8\");\n\n if (opts.merge) {\n writeFile(filePath, mergeSection(existingContent, content));\n p.log.success(\n `${pc.green(\"Merged\")} Directive section into ${pc.dim(relative(targetDir, filePath))}`,\n );\n continue;\n }\n\n if (hasDirectiveSection(existingContent)) {\n const action = await p.select({\n message: `${relative(targetDir, filePath)} already has a Directive section. What should we do?`,\n options: [\n {\n value: \"merge\",\n label: \"Update Directive section only\",\n hint: \"recommended\",\n },\n { value: \"overwrite\", label: \"Overwrite entire file\" },\n { value: \"skip\", label: \"Skip this file\" },\n ],\n });\n\n if (p.isCancel(action)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n if (action === \"merge\") {\n writeFile(filePath, mergeSection(existingContent, content));\n p.log.success(\n `${pc.green(\"Updated\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else if (action === \"overwrite\") {\n writeFile(filePath, content);\n p.log.success(\n `${pc.green(\"Wrote\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else {\n p.log.info(`Skipped ${pc.dim(relative(targetDir, filePath))}`);\n }\n } else {\n const action = await p.select({\n message: `${relative(targetDir, filePath)} already exists. What should we do?`,\n options: [\n {\n value: \"append\",\n label: \"Append Directive section\",\n hint: \"preserves existing content\",\n },\n { value: \"overwrite\", label: \"Overwrite entire file\" },\n { value: \"skip\", label: \"Skip this file\" },\n ],\n });\n\n if (p.isCancel(action)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n if (action === \"append\") {\n writeFile(filePath, mergeSection(existingContent, content));\n p.log.success(\n `${pc.green(\"Appended\")} to ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else if (action === \"overwrite\") {\n writeFile(filePath, content);\n p.log.success(\n `${pc.green(\"Wrote\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n } else {\n p.log.info(`Skipped ${pc.dim(relative(targetDir, filePath))}`);\n }\n }\n } else {\n writeFile(filePath, content);\n p.log.success(\n `${pc.green(\"Created\")} ${pc.dim(relative(targetDir, filePath))}`,\n );\n }\n }\n\n p.outro(\n `Done! Run ${pc.cyan(`${CLI_NAME} ai-rules init --merge`)} anytime to update.`,\n );\n}\n\nfunction writeFile(filePath: string, content: string) {\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n writeFileSync(filePath, content, \"utf-8\");\n}\n\n// ---------------------------------------------------------------------------\n// ai-rules update — regenerate all existing rule files\n// ---------------------------------------------------------------------------\n\nexport async function aiRulesUpdateCommand(args: string[]) {\n const opts = parseArgs(args);\n const targetDir = opts.dir;\n\n const ruleFiles: Array<{ id: DetectedTool[\"id\"]; path: string }> = [\n { id: \"cursor\", path: join(targetDir, \".cursorrules\") },\n { id: \"claude\", path: join(targetDir, \".claude/CLAUDE.md\") },\n { id: \"copilot\", path: join(targetDir, \".github/copilot-instructions.md\") },\n { id: \"windsurf\", path: join(targetDir, \".windsurfrules\") },\n { id: \"cline\", path: join(targetDir, \".clinerules\") },\n ];\n\n let updated = 0;\n\n for (const file of ruleFiles) {\n if (!existsSync(file.path)) {\n continue;\n }\n\n const existing = readFileSync(file.path, \"utf-8\");\n if (!hasDirectiveSection(existing)) {\n continue;\n }\n\n const newContent = getTemplate(file.id);\n const merged = mergeSection(existing, newContent);\n\n writeFile(file.path, merged);\n console.log(\n `${pc.green(\"Updated\")} ${pc.dim(relative(targetDir, file.path))}`,\n );\n updated++;\n }\n\n if (updated === 0) {\n console.log(\n pc.dim(\n `No existing rule files found. Run ${pc.cyan(`${CLI_NAME} ai-rules init`)} first.`,\n ),\n );\n } else {\n console.log(\n pc.green(`\\nUpdated ${updated} file(s) to latest knowledge version.`),\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// ai-rules check — exit non-zero if rules are stale (CI-friendly)\n// ---------------------------------------------------------------------------\n\nexport async function aiRulesCheckCommand(args: string[]) {\n const opts = parseArgs(args);\n const targetDir = opts.dir;\n\n const ruleFiles: Array<{ id: DetectedTool[\"id\"]; path: string; name: string }> = [\n { id: \"cursor\", path: join(targetDir, \".cursorrules\"), name: \"Cursor\" },\n { id: \"claude\", path: join(targetDir, \".claude/CLAUDE.md\"), name: \"Claude Code\" },\n { id: \"copilot\", path: join(targetDir, \".github/copilot-instructions.md\"), name: \"GitHub Copilot\" },\n { id: \"windsurf\", path: join(targetDir, \".windsurfrules\"), name: \"Windsurf\" },\n { id: \"cline\", path: join(targetDir, \".clinerules\"), name: \"Cline\" },\n ];\n\n let checked = 0;\n let stale = 0;\n\n for (const file of ruleFiles) {\n if (!existsSync(file.path)) {\n continue;\n }\n\n const existing = readFileSync(file.path, \"utf-8\");\n if (!hasDirectiveSection(existing)) {\n continue;\n }\n\n checked++;\n\n // Generate fresh content and merge, then compare\n const freshContent = getTemplate(file.id);\n const merged = mergeSection(existing, freshContent);\n\n if (merged !== existing) {\n console.log(`${pc.red(\"✗\")} ${file.name} rules are ${pc.yellow(\"stale\")}`);\n stale++;\n } else {\n console.log(`${pc.green(\"✓\")} ${file.name} rules are ${pc.green(\"current\")}`);\n }\n }\n\n if (checked === 0) {\n console.log(pc.dim(\"No rule files found to check.\"));\n\n return;\n }\n\n if (stale > 0) {\n console.log(\n `\\n${pc.yellow(`${stale} file(s) are stale.`)} Run ${pc.cyan(`${CLI_NAME} ai-rules update`)} to refresh.`,\n );\n process.exit(1);\n } else {\n console.log(pc.green(\"\\nAll rule files are current.\"));\n }\n}\n","import * as p from \"@clack/prompts\";\nimport { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\nimport { CLI_NAME } from \"../lib/constants.js\";\n\ninterface InitOptions {\n template?: string;\n dir: string;\n noInteractive: boolean;\n}\n\nfunction parseArgs(args: string[]): InitOptions {\n const opts: InitOptions = {\n dir: process.cwd(),\n noInteractive: false,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--template\": {\n const val = args[++i];\n if (val) {\n opts.template = val;\n }\n break;\n }\n case \"--dir\": {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n break;\n }\n case \"--no-interactive\":\n opts.noInteractive = true;\n break;\n }\n }\n\n return opts;\n}\n\n// ---------------------------------------------------------------------------\n// Package manager detection\n// ---------------------------------------------------------------------------\n\ntype PackageManager = \"pnpm\" | \"npm\" | \"yarn\" | \"bun\";\n\nfunction detectPackageManager(dir: string): PackageManager {\n if (existsSync(join(dir, \"pnpm-lock.yaml\"))) {\n return \"pnpm\";\n }\n if (existsSync(join(dir, \"bun.lockb\")) || existsSync(join(dir, \"bun.lock\"))) {\n return \"bun\";\n }\n if (existsSync(join(dir, \"yarn.lock\"))) {\n return \"yarn\";\n }\n\n return \"npm\";\n}\n\nfunction installCmd(pm: PackageManager, pkg: string): string {\n switch (pm) {\n case \"pnpm\":\n return `pnpm add ${pkg}`;\n case \"yarn\":\n return `yarn add ${pkg}`;\n case \"bun\":\n return `bun add ${pkg}`;\n default:\n return `npm install ${pkg}`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Templates\n// ---------------------------------------------------------------------------\n\ntype TemplateId = \"counter\" | \"auth-flow\" | \"ai-orchestrator\";\n\ninterface TemplateConfig {\n id: TemplateId;\n label: string;\n hint: string;\n files: Array<{ path: string; content: string }>;\n deps: string[];\n}\n\nfunction getTemplates(moduleName: string): Record<TemplateId, TemplateConfig> {\n return {\n counter: {\n id: \"counter\",\n label: \"Counter (minimal)\",\n hint: \"schema + init + derive + events — simplest starting point\",\n files: [\n {\n path: `src/${moduleName}.ts`,\n content: generateCounterModule(moduleName),\n },\n {\n path: \"src/main.ts\",\n content: generateCounterMain(moduleName),\n },\n ],\n deps: [\"@directive-run/core\"],\n },\n \"auth-flow\": {\n id: \"auth-flow\",\n label: \"Auth flow (constraints + resolvers)\",\n hint: \"login flow with constraints, resolvers, retry, and effects\",\n files: [\n {\n path: `src/${moduleName}.ts`,\n content: generateAuthModule(moduleName),\n },\n {\n path: \"src/main.ts\",\n content: generateAuthMain(moduleName),\n },\n ],\n deps: [\"@directive-run/core\"],\n },\n \"ai-orchestrator\": {\n id: \"ai-orchestrator\",\n label: \"AI orchestrator\",\n hint: \"agent orchestrator with guardrails and streaming\",\n files: [\n {\n path: `src/${moduleName}.ts`,\n content: generateAIModule(moduleName),\n },\n {\n path: \"src/main.ts\",\n content: generateAIMain(moduleName),\n },\n ],\n deps: [\"@directive-run/core\", \"@directive-run/ai\"],\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Template generators\n// ---------------------------------------------------------------------------\n\nfunction generateCounterModule(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, t } from \"@directive-run/core\";\n\nconst schema = {\n facts: {\n count: t.number(),\n label: t.string(),\n },\n derivations: {\n isEven: t.boolean(),\n display: t.string(),\n },\n events: {\n increment: {},\n decrement: {},\n reset: {},\n setLabel: { value: t.string() },\n },\n} satisfies ModuleSchema;\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.count = 0;\n facts.label = \"${name}\";\n },\n\n derive: {\n isEven: (facts) => facts.count % 2 === 0,\n display: (facts) => \\`\\${facts.label}: \\${facts.count}\\`,\n },\n\n events: {\n increment: (facts) => {\n facts.count++;\n },\n decrement: (facts) => {\n facts.count--;\n },\n reset: (facts) => {\n facts.count = 0;\n },\n setLabel: (facts, { value }) => {\n facts.label = value;\n },\n },\n});\n`;\n}\n\nfunction generateCounterMain(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { createSystem } from \"@directive-run/core\";\nimport { ${camelName} } from \"./${name}.js\";\n\nconst system = createSystem({\n module: ${camelName},\n});\n\nsystem.start();\n\n// Read facts and derivations\nconsole.log(\"count:\", system.facts.count);\nconsole.log(\"display:\", system.read(\"display\"));\n\n// Dispatch events\nsystem.events.increment();\nconsole.log(\"after increment:\", system.facts.count);\n\n// Subscribe to changes\nsystem.subscribe([\"count\"], () => {\n console.log(\"count changed:\", system.facts.count);\n});\n\nsystem.events.increment();\nsystem.events.increment();\n\nexport default system;\n`;\n}\n\nfunction generateAuthModule(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, t } from \"@directive-run/core\";\n\ntype AuthStatus = \"idle\" | \"authenticating\" | \"authenticated\" | \"expired\";\n\nconst schema = {\n facts: {\n email: t.string(),\n password: t.string(),\n token: t.string(),\n status: t.string<AuthStatus>(),\n error: t.string(),\n },\n derivations: {\n isAuthenticated: t.boolean(),\n canLogin: t.boolean(),\n },\n events: {\n setEmail: { value: t.string() },\n setPassword: { value: t.string() },\n requestLogin: {},\n logout: {},\n },\n requirements: {\n LOGIN: { email: t.string(), password: t.string() },\n },\n} satisfies ModuleSchema;\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.email = \"\";\n facts.password = \"\";\n facts.token = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n },\n\n derive: {\n isAuthenticated: (facts) => facts.status === \"authenticated\",\n canLogin: (facts) => {\n return (\n facts.email.trim() !== \"\" &&\n facts.password.trim() !== \"\" &&\n (facts.status === \"idle\" || facts.status === \"expired\")\n );\n },\n },\n\n events: {\n setEmail: (facts, { value }) => {\n facts.email = value;\n },\n setPassword: (facts, { value }) => {\n facts.password = value;\n },\n requestLogin: (facts) => {\n facts.status = \"authenticating\";\n facts.error = \"\";\n },\n logout: (facts) => {\n facts.token = \"\";\n facts.status = \"idle\";\n },\n },\n\n constraints: {\n needsLogin: {\n priority: 100,\n when: (facts) => facts.status === \"authenticating\",\n require: (facts) => ({\n type: \"LOGIN\",\n email: facts.email,\n password: facts.password,\n }),\n },\n },\n\n resolvers: {\n login: {\n requirement: \"LOGIN\",\n retry: { attempts: 2, backoff: \"exponential\" },\n resolve: async (req, context) => {\n // Replace with real auth API call\n await new Promise((resolve) => setTimeout(resolve, 500));\n\n const token = \\`token_\\${Date.now()}\\`;\n context.facts.token = token;\n context.facts.status = \"authenticated\";\n },\n },\n },\n\n effects: {\n logStatusChange: {\n deps: [\"status\"],\n run: (facts, prev) => {\n if (prev && prev.status !== facts.status) {\n console.log(\\`Auth status: \\${prev.status} → \\${facts.status}\\`);\n }\n },\n },\n },\n});\n`;\n}\n\nfunction generateAuthMain(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { createSystem } from \"@directive-run/core\";\nimport { ${camelName} } from \"./${name}.js\";\n\nconst system = createSystem({\n module: ${camelName},\n});\n\nsystem.start();\n\n// Set credentials and login\nsystem.events.setEmail({ value: \"user@example.com\" });\nsystem.events.setPassword({ value: \"password123\" });\nsystem.events.requestLogin();\n\n// Wait for auth to complete\nawait system.settle();\n\nconsole.log(\"authenticated:\", system.read(\"isAuthenticated\"));\nconsole.log(\"token:\", system.facts.token);\n\nexport default system;\n`;\n}\n\nfunction generateAIModule(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, t } from \"@directive-run/core\";\nimport {\n createAgentOrchestrator,\n createAgentMemory,\n createSlidingWindowStrategy,\n} from \"@directive-run/ai\";\n\n// ============================================================================\n// Module — state management\n// ============================================================================\n\ntype AgentStatus = \"idle\" | \"thinking\" | \"done\" | \"error\";\n\nconst schema = {\n facts: {\n input: t.string(),\n output: t.string(),\n status: t.string<AgentStatus>(),\n error: t.string(),\n },\n derivations: {\n isThinking: t.boolean(),\n hasOutput: t.boolean(),\n },\n events: {\n setInput: { value: t.string() },\n requestRun: {},\n reset: {},\n },\n requirements: {\n RUN_AGENT: { input: t.string() },\n },\n} satisfies ModuleSchema;\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n },\n\n derive: {\n isThinking: (facts) => facts.status === \"thinking\",\n hasOutput: (facts) => facts.output !== \"\",\n },\n\n events: {\n setInput: (facts, { value }) => {\n facts.input = value;\n },\n requestRun: (facts) => {\n facts.status = \"thinking\";\n facts.output = \"\";\n facts.error = \"\";\n },\n reset: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n },\n },\n\n constraints: {\n needsRun: {\n priority: 100,\n when: (facts) => facts.status === \"thinking\",\n require: (facts) => ({\n type: \"RUN_AGENT\",\n input: facts.input,\n }),\n },\n },\n\n resolvers: {\n runAgent: {\n requirement: \"RUN_AGENT\",\n timeout: 30000,\n resolve: async (req, context) => {\n // Replace with your agent runner (e.g., Anthropic, OpenAI)\n const result = \\`Echo: \\${req.input}\\`;\n\n context.facts.output = result;\n context.facts.status = \"done\";\n },\n },\n },\n});\n\n// ============================================================================\n// Orchestrator — optional AI features\n// ============================================================================\n\nexport const memory = createAgentMemory({\n strategy: createSlidingWindowStrategy(),\n strategyConfig: { maxMessages: 30, preserveRecentCount: 6 },\n autoManage: true,\n});\n\n// Uncomment to add orchestrator features:\n// export const orchestrator = createAgentOrchestrator({\n// runner: yourAgentRunner,\n// maxTokenBudget: 50000,\n// memory,\n// });\n`;\n}\n\nfunction generateAIMain(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { createSystem } from \"@directive-run/core\";\nimport { ${camelName} } from \"./${name}.js\";\n\nconst system = createSystem({\n module: ${camelName},\n});\n\nsystem.start();\n\n// Set input and run\nsystem.events.setInput({ value: \"Hello, world!\" });\nsystem.events.requestRun();\n\n// Wait for completion\nawait system.settle();\n\nconsole.log(\"output:\", system.facts.output);\n\nexport default system;\n`;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction toCamelCase(name: string): string {\n return name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\nfunction writeFile(filePath: string, content: string) {\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(filePath, content, \"utf-8\");\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function initCommand(args: string[]) {\n const opts = parseArgs(args);\n\n p.intro(pc.bgCyan(pc.black(\" directive init \")));\n\n // Step 1: Project name\n let moduleName: string;\n\n if (opts.noInteractive) {\n moduleName = \"my-module\";\n } else {\n const nameResult = await p.text({\n message: \"Module name:\",\n placeholder: \"my-module\",\n defaultValue: \"my-module\",\n validate: (val) => {\n if (!/^[a-z][a-z0-9-]*$/.test(val)) {\n return \"Must start with a letter, use lowercase letters, numbers, and hyphens\";\n }\n },\n });\n\n if (p.isCancel(nameResult)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n moduleName = nameResult;\n }\n\n // Step 2: Template selection\n let templateId: TemplateId;\n\n if (opts.template) {\n const templates = getTemplates(moduleName);\n if (!(opts.template in templates)) {\n p.log.error(\n `Unknown template: ${opts.template}. Available: ${Object.keys(templates).join(\", \")}`,\n );\n process.exit(1);\n }\n templateId = opts.template as TemplateId;\n } else if (opts.noInteractive) {\n templateId = \"counter\";\n } else {\n const templates = getTemplates(moduleName);\n const choice = await p.select({\n message: \"Project template:\",\n options: Object.values(templates).map((t) => ({\n value: t.id,\n label: t.label,\n hint: t.hint,\n })),\n });\n\n if (p.isCancel(choice)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n templateId = choice as TemplateId;\n }\n\n const templates = getTemplates(moduleName);\n const template = templates[templateId];\n\n // Step 3: Detect package manager\n const pm = detectPackageManager(opts.dir);\n p.log.info(`Package manager: ${pc.cyan(pm)}`);\n\n // Step 4: Write files\n const s = p.spinner();\n s.start(\"Creating project files...\");\n\n let created = 0;\n let skipped = 0;\n\n for (const file of template.files) {\n const filePath = join(opts.dir, file.path);\n\n if (existsSync(filePath)) {\n skipped++;\n continue;\n }\n\n writeFile(filePath, file.content);\n created++;\n }\n\n s.stop(\"Project files created.\");\n\n for (const file of template.files) {\n const filePath = join(opts.dir, file.path);\n const rel = relative(opts.dir, filePath);\n\n if (existsSync(filePath)) {\n p.log.success(`${pc.green(\"Created\")} ${pc.dim(rel)}`);\n }\n }\n\n if (skipped > 0) {\n p.log.warn(`Skipped ${skipped} file(s) that already exist.`);\n }\n\n // Step 5: Show next steps\n const depsCmd = installCmd(pm, template.deps.join(\" \"));\n\n p.outro(\n `Next steps:\\n` +\n ` ${pc.cyan(depsCmd)}\\n` +\n ` ${pc.cyan(`${CLI_NAME} ai-rules init`)}\\n` +\n ` ${pc.dim(\"Start building!\")}`,\n );\n}\n","import * as p from \"@clack/prompts\";\nimport { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\n\ninterface NewOptions {\n with: string[];\n minimal: boolean;\n dir: string;\n}\n\nfunction parseArgs(args: string[]): NewOptions {\n const opts: NewOptions = {\n with: [],\n minimal: false,\n dir: process.cwd(),\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--with\": {\n const val = args[++i];\n if (val) {\n opts.with = val.split(\",\").map((s) => s.trim());\n }\n break;\n }\n case \"--minimal\":\n opts.minimal = true;\n break;\n case \"--dir\": {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n break;\n }\n }\n }\n\n return opts;\n}\n\n// ---------------------------------------------------------------------------\n// Module generator\n// ---------------------------------------------------------------------------\n\ntype Section = \"derive\" | \"events\" | \"constraints\" | \"resolvers\" | \"effects\";\n\nconst ALL_SECTIONS: Section[] = [\n \"derive\",\n \"events\",\n \"constraints\",\n \"resolvers\",\n \"effects\",\n];\n\nfunction generateModule(\n name: string,\n sections: Section[],\n): string {\n const camelName = toCamelCase(name);\n const hasConstraints = sections.includes(\"constraints\");\n const hasResolvers = sections.includes(\"resolvers\");\n\n const imports = [\"type ModuleSchema\", \"createModule\", \"t\"];\n\n let code = `import { ${imports.join(\", \")} } from \"@directive-run/core\";\\n\\n`;\n\n // Schema\n code += `const schema = {\\n`;\n code += ` facts: {\\n`;\n code += ` // Add your facts here\\n`;\n code += ` status: t.string(),\\n`;\n code += ` },\\n`;\n\n if (sections.includes(\"derive\")) {\n code += ` derivations: {\\n`;\n code += ` // Add derivation types here\\n`;\n code += ` isReady: t.boolean(),\\n`;\n code += ` },\\n`;\n }\n\n if (sections.includes(\"events\")) {\n code += ` events: {\\n`;\n code += ` // Add event shapes here\\n`;\n code += ` setStatus: { value: t.string() },\\n`;\n code += ` },\\n`;\n }\n\n if (hasConstraints || hasResolvers) {\n code += ` requirements: {\\n`;\n code += ` // Add requirement shapes here\\n`;\n code += ` PROCESS: { input: t.string() },\\n`;\n code += ` },\\n`;\n }\n\n code += `} satisfies ModuleSchema;\\n\\n`;\n\n // Module\n code += `export const ${camelName} = createModule(\"${name}\", {\\n`;\n code += ` schema,\\n\\n`;\n\n code += ` init: (facts) => {\\n`;\n code += ` facts.status = \"idle\";\\n`;\n code += ` },\\n`;\n\n if (sections.includes(\"derive\")) {\n code += `\\n derive: {\\n`;\n code += ` isReady: (facts) => facts.status === \"ready\",\\n`;\n code += ` },\\n`;\n }\n\n if (sections.includes(\"events\")) {\n code += `\\n events: {\\n`;\n code += ` setStatus: (facts, { value }) => {\\n`;\n code += ` facts.status = value;\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n if (hasConstraints) {\n code += `\\n constraints: {\\n`;\n code += ` needsProcessing: {\\n`;\n code += ` priority: 100,\\n`;\n code += ` when: (facts) => facts.status === \"pending\",\\n`;\n code += ` require: (facts) => ({\\n`;\n code += ` type: \"PROCESS\",\\n`;\n code += ` input: facts.status,\\n`;\n code += ` }),\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n if (hasResolvers) {\n code += `\\n resolvers: {\\n`;\n code += ` process: {\\n`;\n code += ` requirement: \"PROCESS\",\\n`;\n code += ` resolve: async (req, context) => {\\n`;\n code += ` // Implement resolution logic here\\n`;\n code += ` context.facts.status = \"done\";\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n if (sections.includes(\"effects\")) {\n code += `\\n effects: {\\n`;\n code += ` logChange: {\\n`;\n code += ` deps: [\"status\"],\\n`;\n code += ` run: (facts, prev) => {\\n`;\n code += ` if (prev && prev.status !== facts.status) {\\n`;\n code += ` console.log(\\`Status: \\${prev.status} → \\${facts.status}\\`);\\n`;\n code += ` }\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n code += ` },\\n`;\n }\n\n code += `});\\n`;\n\n return code;\n}\n\n// ---------------------------------------------------------------------------\n// Orchestrator generator\n// ---------------------------------------------------------------------------\n\nfunction generateOrchestrator(name: string): string {\n const camelName = toCamelCase(name);\n\n return `import { type ModuleSchema, createModule, createSystem, t } from \"@directive-run/core\";\nimport {\n createAgentOrchestrator,\n createAgentMemory,\n createSlidingWindowStrategy,\n} from \"@directive-run/ai\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype AgentStatus = \"idle\" | \"thinking\" | \"done\" | \"error\";\n\n// ============================================================================\n// Schema\n// ============================================================================\n\nconst schema = {\n facts: {\n input: t.string(),\n output: t.string(),\n status: t.string<AgentStatus>(),\n error: t.string(),\n totalTokens: t.number(),\n },\n derivations: {\n isThinking: t.boolean(),\n hasOutput: t.boolean(),\n },\n events: {\n setInput: { value: t.string() },\n requestRun: {},\n reset: {},\n },\n requirements: {\n RUN_AGENT: { input: t.string() },\n },\n} satisfies ModuleSchema;\n\n// ============================================================================\n// Module\n// ============================================================================\n\nexport const ${camelName} = createModule(\"${name}\", {\n schema,\n\n init: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n facts.totalTokens = 0;\n },\n\n derive: {\n isThinking: (facts) => facts.status === \"thinking\",\n hasOutput: (facts) => facts.output !== \"\",\n },\n\n events: {\n setInput: (facts, { value }) => {\n facts.input = value;\n },\n requestRun: (facts) => {\n facts.status = \"thinking\";\n facts.output = \"\";\n facts.error = \"\";\n },\n reset: (facts) => {\n facts.input = \"\";\n facts.output = \"\";\n facts.status = \"idle\";\n facts.error = \"\";\n facts.totalTokens = 0;\n },\n },\n\n constraints: {\n needsRun: {\n priority: 100,\n when: (facts) => facts.status === \"thinking\",\n require: (facts) => ({\n type: \"RUN_AGENT\",\n input: facts.input,\n }),\n },\n },\n\n resolvers: {\n runAgent: {\n requirement: \"RUN_AGENT\",\n timeout: 30000,\n resolve: async (req, context) => {\n // TODO: Replace with your agent runner\n const result = \\`Echo: \\${req.input}\\`;\n\n context.facts.output = result;\n context.facts.status = \"done\";\n },\n },\n },\n});\n\n// ============================================================================\n// AI Features\n// ============================================================================\n\nexport const memory = createAgentMemory({\n strategy: createSlidingWindowStrategy(),\n strategyConfig: { maxMessages: 30, preserveRecentCount: 6 },\n autoManage: true,\n});\n\n// TODO: Add your agent runner and configure the orchestrator\n// export const orchestrator = createAgentOrchestrator({\n// runner: yourAgentRunner,\n// maxTokenBudget: 50000,\n// memory,\n// guardrails: {\n// input: [],\n// output: [],\n// },\n// });\n\n// ============================================================================\n// System\n// ============================================================================\n\nexport const system = createSystem({\n module: ${camelName},\n});\n`;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction toCamelCase(name: string): string {\n return name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\nfunction writeFile(filePath: string, content: string) {\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(filePath, content, \"utf-8\");\n}\n\nfunction findModulesDir(dir: string): string {\n return join(dir, \"src\");\n}\n\n// ---------------------------------------------------------------------------\n// Commands\n// ---------------------------------------------------------------------------\n\nexport async function newModuleCommand(name: string, args: string[]) {\n const opts = parseArgs(args);\n\n if (!name || !/^[a-z][a-z0-9-]*$/.test(name)) {\n console.error(\n `Invalid module name: ${name || \"(none)\"}\\n` +\n \"Must start with a letter, use lowercase letters, numbers, and hyphens.\",\n );\n process.exit(1);\n }\n\n let sections: Section[];\n\n if (opts.minimal) {\n sections = [];\n } else if (opts.with.length > 0) {\n sections = opts.with.filter((s) =>\n ALL_SECTIONS.includes(s as Section),\n ) as Section[];\n } else {\n sections = ALL_SECTIONS;\n }\n\n const targetDir = findModulesDir(opts.dir);\n const filePath = join(targetDir, `${name}.ts`);\n\n if (existsSync(filePath)) {\n console.error(`File already exists: ${relative(opts.dir, filePath)}`);\n process.exit(1);\n }\n\n const content = generateModule(name, sections);\n writeFile(filePath, content);\n\n const rel = relative(opts.dir, filePath);\n console.log(`${pc.green(\"Created\")} ${pc.dim(rel)}`);\n\n if (sections.length === 0) {\n console.log(pc.dim(\" Minimal module (schema + init only)\"));\n } else {\n console.log(pc.dim(` Sections: ${sections.join(\", \")}`));\n }\n}\n\nexport async function newOrchestratorCommand(name: string, args: string[]) {\n const opts = parseArgs(args);\n\n if (!name || !/^[a-z][a-z0-9-]*$/.test(name)) {\n console.error(\n `Invalid orchestrator name: ${name || \"(none)\"}\\n` +\n \"Must start with a letter, use lowercase letters, numbers, and hyphens.\",\n );\n process.exit(1);\n }\n\n const targetDir = findModulesDir(opts.dir);\n const filePath = join(targetDir, `${name}.ts`);\n\n if (existsSync(filePath)) {\n console.error(`File already exists: ${relative(opts.dir, filePath)}`);\n process.exit(1);\n }\n\n const content = generateOrchestrator(name);\n writeFile(filePath, content);\n\n const rel = relative(opts.dir, filePath);\n console.log(`${pc.green(\"Created\")} ${pc.dim(rel)}`);\n console.log(pc.dim(\" AI orchestrator with memory, guardrails, and streaming\"));\n}\n","import { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport pc from \"picocolors\";\n\n/**\n * Loads a Directive system from a user's TypeScript file.\n *\n * Uses tsx to handle TypeScript imports. Looks for:\n * 1. Default export of a System instance\n * 2. Named \"system\" export\n *\n * Returns the live System object for inspection/explain/graph commands.\n *\n * Note: Returns `any` intentionally — the loaded module is user code with\n * unknown types. Duck-type validation via `isSystem()` ensures the returned\n * object has the required shape (start, stop, inspect, facts).\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function loadSystem(filePath: string): Promise<any> {\n const resolved = resolve(filePath);\n\n if (!existsSync(resolved)) {\n throw new Error(`File not found: ${resolved}`);\n }\n\n // Use tsx register to handle TypeScript imports\n try {\n // Dynamic import with tsx — tsx must be available\n const mod = await import(resolved);\n\n // Look for default export first\n if (mod.default && isSystem(mod.default)) {\n return mod.default;\n }\n\n // Look for named \"system\" export\n if (mod.system && isSystem(mod.system)) {\n return mod.system;\n }\n\n // Look for any export that looks like a System\n for (const key of Object.keys(mod)) {\n if (isSystem(mod[key])) {\n return mod[key];\n }\n }\n\n throw new Error(\n `No Directive system found in ${pc.dim(filePath)}\\n` +\n `Export a system as default or named \"system\":\\n\\n` +\n ` ${pc.cyan(\"export default\")} createSystem({ module: myModule });\\n` +\n ` ${pc.cyan(\"export const system\")} = createSystem({ module: myModule });`,\n );\n } catch (err) {\n if (err instanceof Error && err.message.includes(\"No Directive system\")) {\n throw err;\n }\n\n throw new Error(\n `Failed to load ${pc.dim(filePath)}: ${err instanceof Error ? err.message : String(err)}\\n\\n` +\n `Make sure the file is valid TypeScript and tsx is installed:\\n` +\n ` ${pc.cyan(\"npm install -D tsx\")}`,\n );\n }\n}\n\n/**\n * Duck-type check for a Directive System object.\n */\nfunction isSystem(obj: unknown): boolean {\n if (typeof obj !== \"object\" || obj === null) {\n return false;\n }\n\n const sys = obj as Record<string, unknown>;\n\n return (\n typeof sys.inspect === \"function\" &&\n typeof sys.start === \"function\" &&\n typeof sys.stop === \"function\" &&\n \"facts\" in sys\n );\n}\n","import pc from \"picocolors\";\nimport { loadSystem } from \"../lib/loader.js\";\n\ninterface InspectOptions {\n json: boolean;\n module?: string;\n}\n\nfunction parseArgs(args: string[]): { filePath: string; opts: InspectOptions } {\n const opts: InspectOptions = { json: false };\n let filePath = \"\";\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--json\":\n opts.json = true;\n break;\n case \"--module\": {\n const val = args[++i];\n if (val) {\n opts.module = val;\n }\n break;\n }\n default:\n if (arg && !arg.startsWith(\"-\") && !filePath) {\n filePath = arg;\n }\n }\n }\n\n return { filePath, opts };\n}\n\n// ---------------------------------------------------------------------------\n// Formatters\n// ---------------------------------------------------------------------------\n\nfunction formatFacts(facts: Record<string, unknown>): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Facts:\"));\n\n const entries = Object.entries(facts);\n if (entries.length === 0) {\n lines.push(\" (none)\");\n\n return lines.join(\"\\n\");\n }\n\n for (const [key, value] of entries) {\n const formatted = formatValue(value);\n lines.push(` ${pc.cyan(key)} = ${formatted}`);\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatConstraints(\n constraints: Array<{\n id: string;\n active: boolean;\n disabled: boolean;\n priority: number;\n hitCount: number;\n lastActiveAt: number | null;\n }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Constraints:\"));\n\n if (constraints.length === 0) {\n lines.push(\" (none)\");\n\n return lines.join(\"\\n\");\n }\n\n for (const c of constraints) {\n const status = c.disabled\n ? pc.dim(\"disabled\")\n : c.active\n ? pc.green(\"active\")\n : pc.dim(\"inactive\");\n const hits = c.hitCount > 0 ? pc.yellow(` (${c.hitCount} hits)`) : \"\";\n lines.push(\n ` ${pc.cyan(c.id)} ${status} priority=${c.priority}${hits}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatResolverDefs(\n resolverDefs: Array<{ id: string; requirement: string }>,\n resolvers: Record<string, { state: string; error?: string; duration?: number }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Resolvers:\"));\n\n if (resolverDefs.length === 0) {\n lines.push(\" (none)\");\n\n return lines.join(\"\\n\");\n }\n\n for (const def of resolverDefs) {\n const status = resolvers[def.id];\n const stateStr = status\n ? formatResolverState(status.state, status.error, status.duration)\n : pc.dim(\"idle\");\n lines.push(\n ` ${pc.cyan(def.id)} → ${def.requirement} ${stateStr}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatUnmet(\n unmet: Array<{\n id: string;\n requirement: { type: string };\n fromConstraint: string;\n }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Unmet Requirements:\"));\n\n if (unmet.length === 0) {\n lines.push(` ${pc.green(\"(all requirements met)\")}`);\n\n return lines.join(\"\\n\");\n }\n\n for (const u of unmet) {\n lines.push(\n ` ${pc.yellow(u.requirement.type)} (id: ${pc.dim(u.id)}) from ${pc.dim(u.fromConstraint)}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatInflight(\n inflight: Array<{ id: string; resolverId: string; startedAt: number }>,\n): string {\n const lines: string[] = [];\n lines.push(pc.bold(\"Inflight:\"));\n\n if (inflight.length === 0) {\n lines.push(` ${pc.green(\"(none)\")}`);\n\n return lines.join(\"\\n\");\n }\n\n const now = Date.now();\n for (const inf of inflight) {\n const elapsed = now - inf.startedAt;\n lines.push(\n ` ${pc.cyan(inf.resolverId)} → req ${pc.dim(inf.id)} ${pc.yellow(`${elapsed}ms`)}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatResolverState(\n state: string,\n error?: string,\n duration?: number,\n): string {\n const dur = duration !== undefined ? ` ${duration}ms` : \"\";\n\n switch (state) {\n case \"resolved\":\n return pc.green(`resolved${dur}`);\n case \"errored\":\n return pc.red(`errored${dur}${error ? ` — ${error}` : \"\"}`);\n case \"inflight\":\n return pc.yellow(\"inflight\");\n case \"cancelled\":\n return pc.dim(\"cancelled\");\n default:\n return pc.dim(state);\n }\n}\n\nfunction formatValue(value: unknown): string {\n if (value === null) {\n return pc.dim(\"null\");\n }\n if (value === undefined) {\n return pc.dim(\"undefined\");\n }\n if (typeof value === \"string\") {\n return value.length > 60 ? `\"${value.slice(0, 57)}...\"` : `\"${value}\"`;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n if (Array.isArray(value)) {\n return `[${value.length} items]`;\n }\n\n return JSON.stringify(value).slice(0, 60);\n}\n\n// ---------------------------------------------------------------------------\n// Warnings\n// ---------------------------------------------------------------------------\n\nfunction findWarnings(inspection: {\n resolverDefs: Array<{ id: string; requirement: string }>;\n constraints: Array<{ id: string; active: boolean; disabled: boolean }>;\n unmet: Array<{ requirement: { type: string } }>;\n}): string[] {\n const warnings: string[] = [];\n\n // Orphaned resolvers: resolver handles a type no constraint emits\n const constraintTypes = new Set<string>();\n // We can't know constraint requirement types from inspection alone,\n // but we can check unmet requirements\n const unmetTypes = new Set(inspection.unmet.map((u) => u.requirement.type));\n const resolverTypes = new Set(\n inspection.resolverDefs.map((r) => r.requirement),\n );\n\n // Resolver types not in unmet — might be orphaned (can't be sure without full constraint analysis)\n for (const def of inspection.resolverDefs) {\n if (def.requirement === \"(predicate)\") {\n continue;\n }\n }\n\n // Unmet requirements with no matching resolver\n for (const u of inspection.unmet) {\n const hasResolver = inspection.resolverDefs.some(\n (r) =>\n r.requirement === u.requirement.type || r.requirement === \"(predicate)\",\n );\n if (!hasResolver) {\n warnings.push(\n `No resolver for requirement type \"${u.requirement.type}\"`,\n );\n }\n }\n\n return warnings;\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function inspectCommand(args: string[]) {\n const { filePath, opts } = parseArgs(args);\n\n if (!filePath) {\n console.error(\n \"Usage: directive inspect <file> [--json] [--module <name>]\",\n );\n process.exit(1);\n }\n\n const system = await loadSystem(filePath);\n\n if (!system.isRunning) {\n system.start();\n }\n\n const inspection = system.inspect();\n\n if (opts.json) {\n // Get facts as plain object\n const factsObj: Record<string, unknown> = {};\n if (system.facts) {\n for (const key of Object.keys(system.facts)) {\n try {\n factsObj[key] = system.facts[key];\n } catch {\n factsObj[key] = \"(error reading)\";\n }\n }\n }\n\n console.log(\n JSON.stringify(\n {\n facts: factsObj,\n ...inspection,\n },\n null,\n 2,\n ),\n );\n\n system.stop();\n\n return;\n }\n\n // Pretty output\n console.log();\n console.log(pc.bold(pc.cyan(\"Directive System Inspection\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n\n // Facts\n const factsObj: Record<string, unknown> = {};\n if (system.facts) {\n for (const key of Object.keys(system.facts)) {\n try {\n factsObj[key] = system.facts[key];\n } catch {\n factsObj[key] = \"(error reading)\";\n }\n }\n }\n console.log(formatFacts(factsObj));\n console.log();\n\n // Constraints\n console.log(formatConstraints(inspection.constraints));\n console.log();\n\n // Resolvers\n console.log(formatResolverDefs(inspection.resolverDefs, inspection.resolvers));\n console.log();\n\n // Unmet requirements\n console.log(formatUnmet(inspection.unmet));\n console.log();\n\n // Inflight\n if (inspection.inflight.length > 0) {\n console.log(formatInflight(inspection.inflight));\n console.log();\n }\n\n // Warnings\n const warnings = findWarnings(inspection);\n if (warnings.length > 0) {\n console.log(pc.bold(pc.yellow(\"Warnings:\")));\n for (const w of warnings) {\n console.log(` ${pc.yellow(\"⚠\")} ${w}`);\n }\n console.log();\n }\n\n system.stop();\n}\n","import pc from \"picocolors\";\nimport { loadSystem } from \"../lib/loader.js\";\n\ninterface ExplainOptions {\n module?: string;\n}\n\nfunction parseArgs(\n args: string[],\n): { filePath: string; requirementId?: string; opts: ExplainOptions } {\n const opts: ExplainOptions = {};\n let filePath = \"\";\n let requirementId: string | undefined;\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--module\": {\n const val = args[++i];\n if (val) {\n opts.module = val;\n }\n break;\n }\n default:\n if (arg && !arg.startsWith(\"-\")) {\n if (!filePath) {\n filePath = arg;\n } else if (!requirementId) {\n requirementId = arg;\n }\n }\n }\n }\n\n return { filePath, requirementId, opts };\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function explainCommand(args: string[]) {\n const { filePath, requirementId } = parseArgs(args);\n\n if (!filePath) {\n console.error(\n \"Usage: directive explain <file> [requirement-id]\",\n );\n process.exit(1);\n }\n\n const system = await loadSystem(filePath);\n\n if (!system.isRunning) {\n system.start();\n }\n\n const inspection = system.inspect();\n\n if (requirementId) {\n // Explain a specific requirement\n const explanation = system.explain(requirementId);\n\n if (!explanation) {\n console.error(\n `Requirement \"${requirementId}\" not found.\\n\\n` +\n \"Current requirements:\",\n );\n\n if (inspection.unmet.length === 0) {\n console.log(pc.dim(\" (no unmet requirements)\"));\n } else {\n for (const u of inspection.unmet) {\n console.log(\n ` ${pc.cyan(u.id)} — ${u.requirement.type} (from ${u.fromConstraint})`,\n );\n }\n }\n\n system.stop();\n process.exit(1);\n }\n\n console.log();\n console.log(pc.bold(pc.cyan(\"Requirement Explanation\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n console.log(explanation);\n console.log();\n } else {\n // List all requirements with status\n console.log();\n console.log(pc.bold(pc.cyan(\"All Requirements\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n\n if (inspection.unmet.length === 0) {\n console.log(pc.green(\"All requirements are met.\"));\n console.log();\n\n // Show resolver history if available\n const resolverEntries = Object.entries(\n inspection.resolvers as Record<string, { state: string; duration?: number; error?: string }>,\n );\n if (resolverEntries.length > 0) {\n console.log(pc.bold(\"Recent Resolver Activity:\"));\n for (const [key, status] of resolverEntries) {\n const state = formatState(status.state);\n const dur =\n status.duration !== undefined ? ` (${status.duration}ms)` : \"\";\n console.log(` ${pc.cyan(key)} ${state}${dur}`);\n }\n console.log();\n }\n } else {\n console.log(\n `${pc.yellow(String(inspection.unmet.length))} unmet requirement(s):\\n`,\n );\n\n for (const u of inspection.unmet) {\n console.log(\n `${pc.yellow(\"●\")} ${pc.bold(u.requirement.type)} (id: ${pc.dim(u.id)})`,\n );\n console.log(` From constraint: ${pc.cyan(u.fromConstraint)}`);\n\n // Show payload\n const payload = { ...u.requirement };\n delete (payload as Record<string, unknown>).type;\n const payloadKeys = Object.keys(payload);\n if (payloadKeys.length > 0) {\n console.log(` Payload: ${JSON.stringify(payload)}`);\n }\n\n // Check resolver status\n const resolverStatus = (inspection.resolvers as Record<string, { state: string; error?: string } | undefined>)[u.id];\n if (resolverStatus) {\n console.log(\n ` Resolver: ${formatState(resolverStatus.state)}${resolverStatus.error ? ` — ${resolverStatus.error}` : \"\"}`,\n );\n } else {\n // Check if any resolver handles this type\n const hasResolver = inspection.resolverDefs.some(\n (r: { id: string; requirement: string }) =>\n r.requirement === u.requirement.type ||\n r.requirement === \"(predicate)\",\n );\n if (!hasResolver) {\n console.log(` ${pc.red(\"No resolver registered for this type\")}`);\n }\n }\n\n console.log();\n }\n\n console.log(\n pc.dim(\n `Run ${pc.cyan(`directive explain <file> <requirement-id>`)} for detailed explanation.`,\n ),\n );\n }\n }\n\n system.stop();\n}\n\nfunction formatState(state: string): string {\n switch (state) {\n case \"resolved\":\n return pc.green(\"resolved\");\n case \"errored\":\n return pc.red(\"errored\");\n case \"inflight\":\n return pc.yellow(\"inflight\");\n case \"pending\":\n return pc.yellow(\"pending\");\n case \"cancelled\":\n return pc.dim(\"cancelled\");\n default:\n return pc.dim(state);\n }\n}\n","import { existsSync, writeFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport pc from \"picocolors\";\nimport { loadSystem } from \"../lib/loader.js\";\n\ninterface GraphOptions {\n ascii: boolean;\n open: boolean;\n output?: string;\n}\n\nfunction parseArgs(args: string[]): { filePath: string; opts: GraphOptions } {\n const opts: GraphOptions = { ascii: false, open: true };\n let filePath = \"\";\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case \"--ascii\":\n opts.ascii = true;\n break;\n case \"--no-open\":\n opts.open = false;\n break;\n case \"--output\": {\n const val = args[++i];\n if (val) {\n opts.output = val;\n }\n break;\n }\n default:\n if (arg && !arg.startsWith(\"-\") && !filePath) {\n filePath = arg;\n }\n }\n }\n\n return { filePath, opts };\n}\n\n// ---------------------------------------------------------------------------\n// ASCII graph renderer\n// ---------------------------------------------------------------------------\n\nfunction renderAsciiGraph(inspection: {\n constraints: Array<{\n id: string;\n active: boolean;\n disabled: boolean;\n priority: number;\n }>;\n resolverDefs: Array<{ id: string; requirement: string }>;\n unmet: Array<{\n id: string;\n requirement: { type: string };\n fromConstraint: string;\n }>;\n}): string {\n const lines: string[] = [];\n\n lines.push(pc.bold(\"Dependency Graph\"));\n lines.push(pc.dim(\"═\".repeat(50)));\n lines.push(\"\");\n\n // Group by flow: constraint → requirement → resolver\n const constraintMap = new Map<\n string,\n { reqTypes: Set<string>; active: boolean; priority: number }\n >();\n\n for (const c of inspection.constraints) {\n constraintMap.set(c.id, {\n reqTypes: new Set(),\n active: c.active,\n priority: c.priority,\n });\n }\n\n // Map unmet requirements to constraints\n for (const u of inspection.unmet) {\n const entry = constraintMap.get(u.fromConstraint);\n if (entry) {\n entry.reqTypes.add(u.requirement.type);\n }\n }\n\n // Map resolvers to requirement types\n const resolversByType = new Map<string, string[]>();\n for (const r of inspection.resolverDefs) {\n if (!resolversByType.has(r.requirement)) {\n resolversByType.set(r.requirement, []);\n }\n resolversByType.get(r.requirement)!.push(r.id);\n }\n\n // Render constraint flows\n lines.push(pc.bold(\"Constraints → Requirements → Resolvers\"));\n lines.push(\"\");\n\n for (const [id, info] of constraintMap) {\n const status = info.active ? pc.green(\"●\") : pc.dim(\"○\");\n lines.push(`${status} ${pc.cyan(id)} (priority: ${info.priority})`);\n\n if (info.reqTypes.size > 0) {\n for (const reqType of info.reqTypes) {\n lines.push(` └─▶ ${pc.yellow(reqType)}`);\n\n const resolvers = resolversByType.get(reqType) || [];\n if (resolvers.length > 0) {\n for (const r of resolvers) {\n lines.push(` └─▶ ${pc.magenta(r)}`);\n }\n } else {\n lines.push(` └─▶ ${pc.red(\"(no resolver)\")}`);\n }\n }\n } else {\n lines.push(` └─▶ ${pc.dim(\"(no active requirements)\")}`);\n }\n\n lines.push(\"\");\n }\n\n // Orphaned resolvers\n const usedResolvers = new Set<string>();\n for (const resolvers of resolversByType.values()) {\n for (const r of resolvers) {\n usedResolvers.add(r);\n }\n }\n\n const allResolverIds = inspection.resolverDefs.map((r) => r.id);\n const orphanedCount = allResolverIds.filter(\n (r) => !usedResolvers.has(r),\n ).length;\n\n if (orphanedCount > 0) {\n lines.push(pc.bold(\"Standalone Resolvers:\"));\n for (const r of inspection.resolverDefs) {\n if (!usedResolvers.has(r.id)) {\n lines.push(\n ` ${pc.magenta(r.id)} handles ${pc.yellow(r.requirement)}`,\n );\n }\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// HTML graph renderer\n// ---------------------------------------------------------------------------\n\nfunction renderHtmlGraph(\n inspection: {\n constraints: Array<{\n id: string;\n active: boolean;\n disabled: boolean;\n priority: number;\n hitCount: number;\n }>;\n resolverDefs: Array<{ id: string; requirement: string }>;\n resolvers: Record<string, { state: string }>;\n unmet: Array<{\n id: string;\n requirement: { type: string };\n fromConstraint: string;\n }>;\n },\n facts: Record<string, unknown>,\n): string {\n // Build nodes and edges for a simple SVG visualization\n const nodes: Array<{\n id: string;\n label: string;\n type: \"fact\" | \"constraint\" | \"requirement\" | \"resolver\";\n x: number;\n y: number;\n color: string;\n }> = [];\n const edges: Array<{ from: string; to: string }> = [];\n\n const colWidth = 220;\n const rowHeight = 50;\n const startX = 40;\n const startY = 60;\n\n // Column 1: Facts\n const factKeys = Object.keys(facts);\n for (let i = 0; i < factKeys.length; i++) {\n const key = factKeys[i]!;\n nodes.push({\n id: `fact-${key}`,\n label: key,\n type: \"fact\",\n x: startX,\n y: startY + i * rowHeight,\n color: \"#3b82f6\",\n });\n }\n\n // Column 2: Constraints\n for (let i = 0; i < inspection.constraints.length; i++) {\n const c = inspection.constraints[i]!;\n nodes.push({\n id: `constraint-${c.id}`,\n label: c.id,\n type: \"constraint\",\n x: startX + colWidth,\n y: startY + i * rowHeight,\n color: c.active ? \"#22c55e\" : \"#6b7280\",\n });\n }\n\n // Column 3: Requirements (from unmet)\n const reqTypes = new Set<string>();\n for (const u of inspection.unmet) {\n reqTypes.add(u.requirement.type);\n }\n let reqIdx = 0;\n for (const reqType of reqTypes) {\n nodes.push({\n id: `req-${reqType}`,\n label: reqType,\n type: \"requirement\",\n x: startX + colWidth * 2,\n y: startY + reqIdx * rowHeight,\n color: \"#eab308\",\n });\n reqIdx++;\n }\n\n // Column 4: Resolvers\n for (let i = 0; i < inspection.resolverDefs.length; i++) {\n const r = inspection.resolverDefs[i]!;\n nodes.push({\n id: `resolver-${r.id}`,\n label: r.id,\n type: \"resolver\",\n x: startX + colWidth * 3,\n y: startY + i * rowHeight,\n color: \"#a855f7\",\n });\n }\n\n // Edges: constraint → requirement\n for (const u of inspection.unmet) {\n edges.push({\n from: `constraint-${u.fromConstraint}`,\n to: `req-${u.requirement.type}`,\n });\n }\n\n // Edges: requirement → resolver\n for (const r of inspection.resolverDefs) {\n if (reqTypes.has(r.requirement)) {\n edges.push({\n from: `req-${r.requirement}`,\n to: `resolver-${r.id}`,\n });\n }\n }\n\n const nodeMap = new Map(nodes.map((n) => [n.id, n]));\n const svgWidth = startX + colWidth * 4 + 40;\n const maxY = Math.max(...nodes.map((n) => n.y)) + rowHeight + 20;\n\n const edgeSvg = edges\n .map((e) => {\n const from = nodeMap.get(e.from);\n const to = nodeMap.get(e.to);\n if (!from || !to) {\n return \"\";\n }\n\n return `<line x1=\"${from.x + 90}\" y1=\"${from.y + 15}\" x2=\"${to.x}\" y2=\"${to.y + 15}\" stroke=\"#94a3b8\" stroke-width=\"1.5\" marker-end=\"url(#arrow)\"/>`;\n })\n .join(\"\\n \");\n\n const nodeSvg = nodes\n .map(\n (n) =>\n `<g>\n <rect x=\"${n.x}\" y=\"${n.y}\" width=\"180\" height=\"30\" rx=\"6\" fill=\"${n.color}\" opacity=\"0.15\" stroke=\"${n.color}\" stroke-width=\"1.5\"/>\n <text x=\"${n.x + 90}\" y=\"${n.y + 19}\" text-anchor=\"middle\" font-size=\"12\" font-family=\"monospace\" fill=\"${n.color}\">${escapeHtml(n.label)}</text>\n </g>`,\n )\n .join(\"\\n \");\n\n // Column headers\n const headers = [\"Facts\", \"Constraints\", \"Requirements\", \"Resolvers\"];\n const headerSvg = headers\n .map(\n (h, i) =>\n `<text x=\"${startX + i * colWidth + 90}\" y=\"35\" text-anchor=\"middle\" font-size=\"14\" font-weight=\"bold\" font-family=\"system-ui\" fill=\"#e2e8f0\">${h}</text>`,\n )\n .join(\"\\n \");\n\n return `<!DOCTYPE html>\n<html>\n<head>\n <title>Directive System Graph</title>\n <style>\n body { margin: 0; background: #0f172a; display: flex; justify-content: center; padding: 20px; }\n svg { max-width: 100%; }\n </style>\n</head>\n<body>\n <svg width=\"${svgWidth}\" height=\"${maxY}\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto-start-reverse\">\n <path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"#94a3b8\"/>\n </marker>\n </defs>\n ${headerSvg}\n ${edgeSvg}\n ${nodeSvg}\n </svg>\n</body>\n</html>`;\n}\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\");\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function graphCommand(args: string[]) {\n const { filePath, opts } = parseArgs(args);\n\n if (!filePath) {\n console.error(\"Usage: directive graph <file> [--ascii] [--no-open] [--output <path>]\");\n process.exit(1);\n }\n\n const system = await loadSystem(filePath);\n\n if (!system.isRunning) {\n system.start();\n }\n\n const inspection = system.inspect();\n\n if (opts.ascii) {\n console.log(renderAsciiGraph(inspection));\n system.stop();\n\n return;\n }\n\n // HTML output\n const factsObj: Record<string, unknown> = {};\n if (system.facts) {\n for (const key of Object.keys(system.facts)) {\n try {\n factsObj[key] = system.facts[key];\n } catch {\n factsObj[key] = null;\n }\n }\n }\n\n const html = renderHtmlGraph(inspection, factsObj);\n const outputPath = opts.output || join(process.cwd(), \".directive-graph.html\");\n\n writeFileSync(outputPath, html, \"utf-8\");\n console.log(`${pc.green(\"Generated\")} ${pc.dim(outputPath)}`);\n\n if (opts.open) {\n try {\n const { execFile } = await import(\"node:child_process\");\n const openCmd =\n process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"start\"\n : \"xdg-open\";\n execFile(openCmd, [outputPath]);\n console.log(pc.dim(\"Opened in browser.\"));\n } catch {\n console.log(\n pc.dim(`Open ${outputPath} in your browser to view the graph.`),\n );\n }\n }\n\n system.stop();\n}\n","import { existsSync, readFileSync, readdirSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport { hasDirectiveSection } from \"../lib/merge.js\";\n\ninterface DoctorOptions {\n dir: string;\n}\n\nfunction parseArgs(args: string[]): DoctorOptions {\n const opts: DoctorOptions = { dir: process.cwd() };\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--dir\") {\n const val = args[++i];\n if (val) {\n opts.dir = val;\n }\n }\n }\n\n return opts;\n}\n\n// ---------------------------------------------------------------------------\n// Checks\n// ---------------------------------------------------------------------------\n\ninterface CheckResult {\n label: string;\n passed: boolean;\n message: string;\n fix?: string;\n}\n\nfunction checkCoreInstalled(dir: string): CheckResult {\n const pkgPath = join(dir, \"package.json\");\n if (!existsSync(pkgPath)) {\n return {\n label: \"@directive-run/core installed\",\n passed: false,\n message: \"No package.json found\",\n fix: \"Run `npm init` to create a package.json\",\n };\n }\n\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n\n if (!deps[\"@directive-run/core\"]) {\n return {\n label: \"@directive-run/core installed\",\n passed: false,\n message: \"Not found in dependencies\",\n fix: \"Run `npm install @directive-run/core`\",\n };\n }\n\n return {\n label: \"@directive-run/core installed\",\n passed: true,\n message: `v${deps[\"@directive-run/core\"]}`,\n };\n}\n\nfunction checkVersionCompatibility(dir: string): CheckResult {\n const pkgPath = join(dir, \"package.json\");\n if (!existsSync(pkgPath)) {\n return {\n label: \"Package version compatibility\",\n passed: true,\n message: \"Skipped (no package.json)\",\n };\n }\n\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n\n const directivePackages = Object.keys(deps).filter((k) =>\n k.startsWith(\"@directive-run/\"),\n );\n\n if (directivePackages.length <= 1) {\n return {\n label: \"Package version compatibility\",\n passed: true,\n message: directivePackages.length === 0 ? \"No packages found\" : \"Single package\",\n };\n }\n\n return {\n label: \"Package version compatibility\",\n passed: true,\n message: `${directivePackages.length} packages: ${directivePackages.join(\", \")}`,\n };\n}\n\nfunction checkTypeScript(dir: string): CheckResult {\n const tsconfigPath = join(dir, \"tsconfig.json\");\n\n if (!existsSync(tsconfigPath)) {\n return {\n label: \"TypeScript configuration\",\n passed: false,\n message: \"No tsconfig.json found\",\n fix: \"Run `tsc --init` to create a TypeScript configuration\",\n };\n }\n\n try {\n // Simple JSON parse — doesn't handle comments or extends\n const raw = readFileSync(tsconfigPath, \"utf-8\");\n // Strip single-line comments for parsing\n const stripped = raw.replace(/\\/\\/.*$/gm, \"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n const config = JSON.parse(stripped);\n const co = config.compilerOptions || {};\n\n const issues: string[] = [];\n\n if (co.strict !== true) {\n issues.push(\"strict mode not enabled\");\n }\n\n if (\n co.moduleResolution &&\n ![\"bundler\", \"nodenext\", \"node16\"].includes(\n co.moduleResolution.toLowerCase(),\n )\n ) {\n issues.push(`moduleResolution is \"${co.moduleResolution}\"`);\n }\n\n if (issues.length > 0) {\n return {\n label: \"TypeScript configuration\",\n passed: false,\n message: issues.join(\", \"),\n fix: 'Set \"strict\": true and \"moduleResolution\": \"bundler\" in tsconfig.json',\n };\n }\n\n return {\n label: \"TypeScript configuration\",\n passed: true,\n message: \"strict mode, correct module resolution\",\n };\n } catch {\n return {\n label: \"TypeScript configuration\",\n passed: true,\n message: \"Found (could not parse for detailed checks)\",\n };\n }\n}\n\nfunction checkDuplicateInstances(dir: string): CheckResult {\n const nodeModules = join(dir, \"node_modules\");\n\n if (!existsSync(nodeModules)) {\n return {\n label: \"No duplicate Directive instances\",\n passed: true,\n message: \"No node_modules found\",\n };\n }\n\n const duplicates: string[] = [];\n\n // Check for nested @directive-run/core in node_modules\n try {\n const scopeDir = join(nodeModules, \"@directive-run\");\n if (existsSync(scopeDir)) {\n const packages = readdirSync(scopeDir);\n for (const pkg of packages) {\n const nestedCore = join(\n scopeDir,\n pkg,\n \"node_modules\",\n \"@directive-run\",\n \"core\",\n );\n if (existsSync(nestedCore)) {\n duplicates.push(`@directive-run/${pkg}/node_modules/@directive-run/core`);\n }\n }\n }\n } catch {\n // Can't read node_modules, skip\n }\n\n if (duplicates.length > 0) {\n return {\n label: \"No duplicate Directive instances\",\n passed: false,\n message: `Found ${duplicates.length} duplicate(s): ${duplicates.join(\", \")}`,\n fix: \"Run `npm dedupe` or check for version mismatches\",\n };\n }\n\n return {\n label: \"No duplicate Directive instances\",\n passed: true,\n message: \"No duplicates detected\",\n };\n}\n\nfunction checkAIRulesFreshness(dir: string): CheckResult {\n const ruleFiles = [\n \".cursorrules\",\n \".claude/CLAUDE.md\",\n \".github/copilot-instructions.md\",\n \".windsurfrules\",\n \".clinerules\",\n ];\n\n const found: string[] = [];\n\n for (const file of ruleFiles) {\n const filePath = join(dir, file);\n if (existsSync(filePath)) {\n const content = readFileSync(filePath, \"utf-8\");\n if (hasDirectiveSection(content)) {\n found.push(file);\n }\n }\n }\n\n if (found.length === 0) {\n return {\n label: \"AI coding rules\",\n passed: true,\n message: \"Not installed (optional)\",\n };\n }\n\n return {\n label: \"AI coding rules\",\n passed: true,\n message: `Installed for: ${found.join(\", \")}`,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function doctorCommand(args: string[]) {\n const opts = parseArgs(args);\n\n console.log();\n console.log(pc.bold(pc.cyan(\"Directive Doctor\")));\n console.log(pc.dim(\"─\".repeat(40)));\n console.log();\n\n const checks = [\n checkCoreInstalled(opts.dir),\n checkVersionCompatibility(opts.dir),\n checkTypeScript(opts.dir),\n checkDuplicateInstances(opts.dir),\n checkAIRulesFreshness(opts.dir),\n ];\n\n let failures = 0;\n\n for (const check of checks) {\n const icon = check.passed ? pc.green(\"✓\") : pc.red(\"✗\");\n console.log(`${icon} ${pc.bold(check.label)}`);\n console.log(` ${pc.dim(check.message)}`);\n\n if (!check.passed && check.fix) {\n console.log(` ${pc.yellow(\"Fix:\")} ${check.fix}`);\n failures++;\n }\n\n console.log();\n }\n\n if (failures > 0) {\n console.log(\n pc.yellow(`${failures} issue(s) found. See suggested fixes above.`),\n );\n process.exit(1);\n } else {\n console.log(pc.green(\"All checks passed!\"));\n }\n}\n","import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport pc from \"picocolors\";\nimport { getAllExamples, getExample, getExampleFiles } from \"../lib/knowledge.js\";\n\n// ---------------------------------------------------------------------------\n// Categories\n// ---------------------------------------------------------------------------\n\nconst CATEGORIES: Record<string, string[]> = {\n \"Getting Started\": [\"counter\", \"contact-form\", \"auth-flow\"],\n \"Core Patterns\": [\n \"async-chains\",\n \"batch-resolver\",\n \"debounce-constraints\",\n \"error-boundaries\",\n \"feature-flags\",\n \"multi-module\",\n \"optimistic-updates\",\n \"pagination\",\n \"permissions\",\n ],\n \"Real-World\": [\n \"dashboard-loader\",\n \"form-wizard\",\n \"newsletter\",\n \"notifications\",\n \"shopping-cart\",\n \"theme-locale\",\n \"url-sync\",\n \"websocket\",\n \"server\",\n ],\n Games: [\"checkers\", \"sudoku\", \"goal-heist\", \"ab-testing\"],\n AI: [\n \"ai-orchestrator\",\n \"ai-checkpoint\",\n \"ai-guardrails\",\n \"fraud-analysis\",\n \"provider-routing\",\n \"topic-guard\",\n \"dynamic-modules\",\n \"time-machine\",\n ],\n};\n\nfunction getCategory(name: string): string {\n for (const [cat, names] of Object.entries(CATEGORIES)) {\n if (names.includes(name)) {\n return cat;\n }\n }\n\n return \"Other\";\n}\n\nfunction getDescription(content: string): string {\n // Extract first line comment or jsdoc summary\n const lines = content.split(\"\\n\");\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Match: // Example: name or // Source: ...\n if (trimmed.startsWith(\"// Example:\")) {\n continue;\n }\n if (trimmed.startsWith(\"// Source:\")) {\n continue;\n }\n if (trimmed.startsWith(\"// Extracted\")) {\n continue;\n }\n\n // Match JSDoc: * Description text\n const jsdocMatch = trimmed.match(/^\\*\\s+(.+?)(?:\\s*\\*\\/)?$/);\n if (jsdocMatch?.[1] && !jsdocMatch[1].startsWith(\"@\")) {\n return jsdocMatch[1];\n }\n\n // Match: // Description text\n if (trimmed.startsWith(\"//\") && trimmed.length > 3) {\n return trimmed.slice(2).trim();\n }\n\n // Stop at first non-comment line\n if (\n trimmed !== \"\" &&\n !trimmed.startsWith(\"//\") &&\n !trimmed.startsWith(\"/*\") &&\n !trimmed.startsWith(\"*\")\n ) {\n break;\n }\n }\n\n return \"\";\n}\n\n// ---------------------------------------------------------------------------\n// List command\n// ---------------------------------------------------------------------------\n\nexport async function examplesListCommand(args: string[]) {\n let filter: string | undefined;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--filter\") {\n filter = args[++i]?.toLowerCase();\n }\n }\n\n const examples = getAllExamples();\n\n console.log();\n console.log(pc.bold(pc.cyan(\"Directive Examples\")));\n console.log(pc.dim(\"─\".repeat(50)));\n console.log();\n\n // Group by category\n const byCategory = new Map<string, Array<{ name: string; desc: string }>>();\n\n for (const [name, content] of examples) {\n const cat = getCategory(name);\n\n if (filter && !cat.toLowerCase().includes(filter) && !name.includes(filter)) {\n continue;\n }\n\n if (!byCategory.has(cat)) {\n byCategory.set(cat, []);\n }\n byCategory.get(cat)!.push({ name, desc: getDescription(content) });\n }\n\n if (byCategory.size === 0) {\n console.log(pc.dim(\"No examples match the filter.\"));\n\n return;\n }\n\n // Print in category order\n const categoryOrder = Object.keys(CATEGORIES);\n const sortedCategories = [...byCategory.keys()].sort(\n (a, b) => (categoryOrder.indexOf(a) ?? 99) - (categoryOrder.indexOf(b) ?? 99),\n );\n\n for (const cat of sortedCategories) {\n const items = byCategory.get(cat)!;\n console.log(pc.bold(cat));\n\n for (const item of items) {\n const desc = item.desc ? pc.dim(` — ${item.desc}`) : \"\";\n console.log(` ${pc.cyan(item.name)}${desc}`);\n }\n\n console.log();\n }\n\n console.log(\n pc.dim(`${examples.size} examples available. Run ${pc.cyan(\"directive examples copy <name>\")} to extract one.`),\n );\n}\n\n// ---------------------------------------------------------------------------\n// Copy command\n// ---------------------------------------------------------------------------\n\nexport async function examplesCopyCommand(\n name: string,\n args: string[],\n) {\n let dest = process.cwd();\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--dest\") {\n const val = args[++i];\n if (val) {\n dest = val;\n }\n }\n }\n\n if (!name) {\n console.error(\"Usage: directive examples copy <name> [--dest <dir>]\");\n process.exit(1);\n }\n\n const content = getExample(name);\n\n if (!content) {\n console.error(`Example \"${name}\" not found.`);\n console.error(\n `Run ${pc.cyan(\"directive examples list\")} to see available examples.`,\n );\n process.exit(1);\n }\n\n // Rewrite workspace imports to published package names\n const rewritten = content\n .replace(\n /from\\s+[\"']@directive-run\\/core\\/plugins[\"']/g,\n 'from \"@directive-run/core/plugins\"',\n )\n .replace(\n /from\\s+[\"']@directive-run\\/core[\"']/g,\n 'from \"@directive-run/core\"',\n )\n .replace(\n /from\\s+[\"']@directive-run\\/ai[\"']/g,\n 'from \"@directive-run/ai\"',\n );\n\n const filePath = join(dest, `${name}.ts`);\n\n if (existsSync(filePath)) {\n console.error(`File already exists: ${relative(process.cwd(), filePath)}`);\n process.exit(1);\n }\n\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n writeFileSync(filePath, rewritten, \"utf-8\");\n\n const rel = relative(process.cwd(), filePath);\n console.log(`${pc.green(\"Copied\")} ${pc.cyan(name)} → ${pc.dim(rel)}`);\n}\n","import { CLI_NAME } from \"./lib/constants.js\";\nimport {\n aiRulesCommand,\n aiRulesUpdateCommand,\n aiRulesCheckCommand,\n} from \"./commands/ai-rules.js\";\nimport { initCommand } from \"./commands/init.js\";\nimport { newModuleCommand, newOrchestratorCommand } from \"./commands/new.js\";\nimport { inspectCommand } from \"./commands/inspect.js\";\nimport { explainCommand } from \"./commands/explain.js\";\nimport { graphCommand } from \"./commands/graph.js\";\nimport { doctorCommand } from \"./commands/doctor.js\";\nimport { examplesListCommand, examplesCopyCommand } from \"./commands/examples.js\";\n\nconst HELP = `\n${CLI_NAME} — CLI tools for Directive\n\nUsage: ${CLI_NAME} <command> [options]\n\nCommands:\n init Project scaffolding wizard\n new module <name> Generate a module file\n new orchestrator <name> Generate an AI orchestrator\n inspect <file> Runtime system introspection\n explain <file> [req-id] Explain why a requirement exists\n graph <file> Visual dependency graph\n doctor Health check for project setup\n ai-rules init Install AI coding rules\n ai-rules update Refresh rules to latest version\n ai-rules check Validate rules are current (CI)\n examples list Browse available examples\n examples copy <name> Extract example to project\n\nOptions:\n --help, -h Show this help message\n --version, -v Show version\n\ninit options:\n --template <name> Template: counter, auth-flow, ai-orchestrator\n --dir <path> Target directory (default: cwd)\n --no-interactive Skip prompts, use defaults\n\nnew module options:\n --with <sections> Sections: derive,events,constraints,resolvers,effects\n --minimal Schema + init only\n --dir <path> Target directory (default: cwd)\n\ninspect options:\n --json Output as JSON\n --module <name> Inspect specific module\n\ngraph options:\n --ascii Terminal-only output\n --no-open Don't open in browser\n --output <path> Output file path\n\nai-rules init options:\n --force Overwrite existing files without asking\n --merge Use section markers to update only the Directive section\n --tool <name> Skip detection, install for specific tool(s)\n --dir <path> Target directory (default: cwd)\n\nexamples options:\n --filter <category> Filter by category or name\n --dest <dir> Destination directory for copy\n`.trim();\n\nasync function main() {\n const args = process.argv.slice(2);\n\n if (args.length === 0 || args.includes(\"--help\") || args.includes(\"-h\")) {\n console.log(HELP);\n process.exit(0);\n }\n\n if (args.includes(\"--version\") || args.includes(\"-v\")) {\n const { readFileSync } = await import(\"node:fs\");\n const { fileURLToPath } = await import(\"node:url\");\n const { dirname, join } = await import(\"node:path\");\n\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, \"..\", \"package.json\"), \"utf-8\"),\n );\n\n console.log(pkg.version);\n process.exit(0);\n }\n\n const command = args[0];\n\n switch (command) {\n case \"init\": {\n await initCommand(args.slice(1));\n break;\n }\n\n case \"new\": {\n const subcommand = args[1];\n const name = args[2];\n\n if (subcommand === \"module\") {\n if (!name) {\n console.error(\"Usage: directive new module <name>\");\n process.exit(1);\n }\n await newModuleCommand(name, args.slice(3));\n } else if (subcommand === \"orchestrator\") {\n if (!name) {\n console.error(\"Usage: directive new orchestrator <name>\");\n process.exit(1);\n }\n await newOrchestratorCommand(name, args.slice(3));\n } else {\n console.error(\n `Unknown subcommand: ${subcommand ?? \"(none)\"}\\n` +\n `Usage: ${CLI_NAME} new module <name>\\n` +\n ` ${CLI_NAME} new orchestrator <name>`,\n );\n process.exit(1);\n }\n break;\n }\n\n case \"inspect\": {\n await inspectCommand(args.slice(1));\n break;\n }\n\n case \"explain\": {\n await explainCommand(args.slice(1));\n break;\n }\n\n case \"graph\": {\n await graphCommand(args.slice(1));\n break;\n }\n\n case \"doctor\": {\n await doctorCommand(args.slice(1));\n break;\n }\n\n case \"ai-rules\": {\n const subcommand = args[1];\n\n if (subcommand === \"init\") {\n await aiRulesCommand(args.slice(2));\n } else if (subcommand === \"update\") {\n await aiRulesUpdateCommand(args.slice(2));\n } else if (subcommand === \"check\") {\n await aiRulesCheckCommand(args.slice(2));\n } else {\n console.error(\n `Unknown subcommand: ${subcommand ?? \"(none)\"}\\n` +\n `Usage: ${CLI_NAME} ai-rules init\\n` +\n ` ${CLI_NAME} ai-rules update\\n` +\n ` ${CLI_NAME} ai-rules check`,\n );\n process.exit(1);\n }\n break;\n }\n\n case \"examples\": {\n const subcommand = args[1];\n\n if (subcommand === \"list\") {\n await examplesListCommand(args.slice(2));\n } else if (subcommand === \"copy\") {\n const name = args[2];\n if (!name) {\n console.error(\"Usage: directive examples copy <name>\");\n process.exit(1);\n }\n await examplesCopyCommand(name, args.slice(3));\n } else {\n console.error(\n `Unknown subcommand: ${subcommand ?? \"(none)\"}\\n` +\n `Usage: ${CLI_NAME} examples list [--filter <category>]\\n` +\n ` ${CLI_NAME} examples copy <name> [--dest <dir>]`,\n );\n process.exit(1);\n }\n break;\n }\n\n default:\n console.error(\n `Unknown command: ${command}\\nRun '${CLI_NAME} --help' for usage.`,\n );\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error(err.message || err);\n process.exit(1);\n});\n"]}