baselineos 0.2.0-beta.1

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.
Files changed (64) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +198 -0
  3. package/dist/__evals__/runner.d.ts +2 -0
  4. package/dist/__evals__/runner.js +14687 -0
  5. package/dist/__evals__/runner.js.map +1 -0
  6. package/dist/api/server.d.ts +21 -0
  7. package/dist/api/server.js +1007 -0
  8. package/dist/api/server.js.map +1 -0
  9. package/dist/cli/bin.d.ts +1 -0
  10. package/dist/cli/bin.js +8427 -0
  11. package/dist/cli/bin.js.map +1 -0
  12. package/dist/core/agent-bus.d.ts +110 -0
  13. package/dist/core/agent-bus.js +242 -0
  14. package/dist/core/agent-bus.js.map +1 -0
  15. package/dist/core/cache.d.ts +66 -0
  16. package/dist/core/cache.js +160 -0
  17. package/dist/core/cache.js.map +1 -0
  18. package/dist/core/config.d.ts +1002 -0
  19. package/dist/core/config.js +429 -0
  20. package/dist/core/config.js.map +1 -0
  21. package/dist/core/indexer.d.ts +152 -0
  22. package/dist/core/indexer.js +481 -0
  23. package/dist/core/indexer.js.map +1 -0
  24. package/dist/core/llm-tracer.d.ts +2 -0
  25. package/dist/core/llm-tracer.js +241 -0
  26. package/dist/core/llm-tracer.js.map +1 -0
  27. package/dist/core/memory.d.ts +86 -0
  28. package/dist/core/memory.js +346 -0
  29. package/dist/core/memory.js.map +1 -0
  30. package/dist/core/opa-client.d.ts +51 -0
  31. package/dist/core/opa-client.js +157 -0
  32. package/dist/core/opa-client.js.map +1 -0
  33. package/dist/core/opa-policy-gate.d.ts +133 -0
  34. package/dist/core/opa-policy-gate.js +454 -0
  35. package/dist/core/opa-policy-gate.js.map +1 -0
  36. package/dist/core/orchestrator.d.ts +14 -0
  37. package/dist/core/orchestrator.js +1297 -0
  38. package/dist/core/orchestrator.js.map +1 -0
  39. package/dist/core/pii-detector.d.ts +82 -0
  40. package/dist/core/pii-detector.js +126 -0
  41. package/dist/core/pii-detector.js.map +1 -0
  42. package/dist/core/rag-engine.d.ts +121 -0
  43. package/dist/core/rag-engine.js +504 -0
  44. package/dist/core/rag-engine.js.map +1 -0
  45. package/dist/core/task-queue.d.ts +69 -0
  46. package/dist/core/task-queue.js +124 -0
  47. package/dist/core/task-queue.js.map +1 -0
  48. package/dist/core/telemetry.d.ts +56 -0
  49. package/dist/core/telemetry.js +94 -0
  50. package/dist/core/telemetry.js.map +1 -0
  51. package/dist/core/types.d.ts +328 -0
  52. package/dist/core/types.js +24 -0
  53. package/dist/core/types.js.map +1 -0
  54. package/dist/index.d.ts +21 -0
  55. package/dist/index.js +12444 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/llm-tracer-CIIujuO-.d.ts +493 -0
  58. package/dist/mcp/server.d.ts +2651 -0
  59. package/dist/mcp/server.js +676 -0
  60. package/dist/mcp/server.js.map +1 -0
  61. package/dist/orchestrator-DF89k_AK.d.ts +506 -0
  62. package/package.json +157 -0
  63. package/templates/README.md +7 -0
  64. package/templates/baseline.config.ts +207 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/commands/init.ts","../../src/core/telemetry.ts","../../src/core/types.ts","../../src/core/pii-detector.ts","../../src/core/task-queue.ts","../../src/core/orchestrator.ts","../../src/core/memory.ts","../../src/core/indexer.ts","../../src/core/cache.ts","../../src/core/prompt-loader.ts","../../src/core/execution-engine.ts","../../src/core/rag-engine.ts","../../src/core/agent-bus.ts","../../src/core/config.ts","../../src/mcp/server.ts","../../src/api/server.ts","../../src/integrations/evidence-export.ts","../../src/core/task-handoff.ts","../../src/temporal/workflows.ts","../../src/index.ts","../../src/cli/commands/indexer.ts","../../src/cli/commands/serve.ts","../../src/cli/commands/run.ts","../../src/cli/commands/status.ts","../../src/cli/commands/agents.ts","../../src/cli/commands/config.ts","../../src/cli/commands/warm.ts","../../src/cli/commands/ingest.ts","../../src/cli/commands/evidence-export.ts","../../src/cli/bin.ts"],"names":["chalk","ora","resolve","existsSync","mkdirSync","join","writeFileSync","readFileSync","createHash","__filename","__dirname","dirname","ext","extname","chunkContent","basename","readdirSync","statSync","EventEmitter","randomUUID","z","TASK_STATUSES","CONTEXT_LEVELS","MEMORY_SCOPES","parseTaskStatus","parsePolicy","parseBudget","context","BaselineGovernSystem","formatStatus"],"mappings":"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","file":"bin.js","sourcesContent":["/**\n * baseline init\n * \n * Initialize BaselineOS in a project.\n * \n * @license Apache-2.0\n */\n\nimport { writeFileSync, mkdirSync, existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport inquirer from 'inquirer';\n\ninterface InitOptions {\n template?: string;\n force?: boolean;\n}\n\nexport async function initCommand(options: InitOptions): Promise<void> {\n const cwd = process.cwd();\n const configPath = join(cwd, 'baseline.config.ts');\n const baselinePath = join(cwd, '.baseline');\n\n console.log();\n console.log(chalk.cyan(' BaselineOS') + ' — Agentic Governance Engine');\n console.log();\n\n // Check if already initialized\n if (existsSync(configPath) && !options.force) {\n console.log(chalk.yellow(' BaselineOS is already initialized in this project.'));\n console.log(chalk.dim(' Use --force to reinitialize.'));\n console.log();\n return;\n }\n\n // Interactive setup\n const answers = await inquirer.prompt([\n {\n type: 'input',\n name: 'name',\n message: 'Project name:',\n default: cwd.split('/').pop(),\n },\n {\n type: 'checkbox',\n name: 'knowledge',\n message: 'Knowledge paths to index:',\n choices: [\n { name: './docs', checked: existsSync(join(cwd, 'docs')) },\n { name: './specs', checked: existsSync(join(cwd, 'specs')) },\n { name: './knowledge', checked: existsSync(join(cwd, 'knowledge')) },\n { name: './README.md', checked: existsSync(join(cwd, 'README.md')) },\n { name: './src (code)', checked: false },\n ],\n },\n {\n type: 'list',\n name: 'autonomy',\n message: 'Maximum autonomous task complexity:',\n choices: [\n { name: 'Complex (recommended) — Full autonomy up to complex tasks', value: 'complex' },\n { name: 'Moderate — More human oversight', value: 'moderate' },\n { name: 'Simple — High human oversight', value: 'simple' },\n { name: 'Epic — Maximum autonomy (experimental)', value: 'epic' },\n ],\n default: 'complex',\n },\n {\n type: 'list',\n name: 'llm',\n message: 'LLM provider:',\n choices: [\n { name: 'Anthropic (Claude)', value: 'anthropic' },\n { name: 'OpenAI', value: 'openai' },\n { name: 'Local (Ollama, etc.)', value: 'local' },\n ],\n default: 'anthropic',\n },\n ]);\n\n const spinner = ora('Initializing BaselineOS...').start();\n\n try {\n // Create .baseline directory\n if (!existsSync(baselinePath)) {\n mkdirSync(baselinePath, { recursive: true });\n }\n\n // Create subdirectories\n mkdirSync(join(baselinePath, 'index'), { recursive: true });\n mkdirSync(join(baselinePath, 'checkpoints'), { recursive: true });\n mkdirSync(join(baselinePath, 'memory'), { recursive: true });\n\n // Generate config\n const modelMap: Record<string, string> = {\n anthropic: 'claude-sonnet-4-20250514',\n openai: 'gpt-4-turbo',\n local: 'llama3',\n };\n\n const config = `import type { BaselineConfig } from 'baselineos';\n\nconst config: BaselineConfig = {\n name: '${answers.name}',\n \n knowledge: ${JSON.stringify(answers.knowledge, null, 4).replace(/\\n/g, '\\n ')},\n\n orchestrator: {\n maxAutonomousComplexity: '${answers.autonomy}',\n selfVerificationRequired: true,\n supervisorReviewThreshold: 0.7,\n qualityReviewSampleRate: 0.1,\n },\n\n llm: {\n provider: '${answers.llm}',\n model: '${modelMap[answers.llm]}',\n },\n};\n\nexport default config;\n`;\n\n writeFileSync(configPath, config);\n\n // Add to .gitignore\n const gitignorePath = join(cwd, '.gitignore');\n if (existsSync(gitignorePath)) {\n const gitignore = readFileSync(gitignorePath, 'utf-8');\n if (!gitignore.includes('.baseline')) {\n writeFileSync(gitignorePath, gitignore + '\\n# BaselineOS\\n.baseline/\\n');\n }\n }\n\n spinner.succeed('BaselineOS initialized');\n\n console.log();\n console.log(chalk.green(' ✓') + ' Created baseline.config.ts');\n console.log(chalk.green(' ✓') + ' Created .baseline/ directory');\n console.log();\n console.log(chalk.dim(' Next steps:'));\n console.log();\n console.log(' 1. Index your knowledge base:');\n console.log(chalk.cyan(' baseline index'));\n console.log();\n console.log(' 2. Start the MCP server (for Claude integration):');\n console.log(chalk.cyan(' baseline serve'));\n console.log();\n console.log(' 3. Or run a task directly:');\n console.log(chalk.cyan(' baseline run \"Implement feature X\"'));\n console.log();\n\n } catch (error) {\n spinner.fail('Failed to initialize');\n throw error;\n }\n}\n","/**\n * BaselineOS OpenTelemetry — SIGNAL-012\n *\n * Distributed tracing for the multi-agent orchestration layer.\n * Initializes the OTel Node SDK and exports a shared tracer.\n *\n * Spans emitted:\n * task.execute root span per executeTask() call\n * task.policy.pre OPA pre-execution gate\n * task.policy.post OPA post-execution gate\n * task.perform performExecution() step loop\n * task.self_verify selfVerify() LLM call\n * task.review conductReview() LLM call\n *\n * Trace context is propagated through AgentBus messages via the\n * optional `traceContext` field (W3C traceparent format).\n *\n * Configuration:\n * OTEL_EXPORTER_OTLP_ENDPOINT OTLP HTTP collector (default: http://localhost:4318)\n * OTEL_SERVICE_NAME service name override (default: baselineos)\n * BASELINE_OTEL_DISABLED set to '1' to disable entirely (e.g. in tests)\n *\n * @license Apache-2.0\n */\n\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { trace, context, propagation, SpanStatusCode, SpanKind } from '@opentelemetry/api';\nimport type { Span, Tracer, Context } from '@opentelemetry/api';\n\nexport { SpanStatusCode, SpanKind };\nexport type { Span, Tracer, Context };\n\n// ─── SDK init ────────────────────────────────────────────────────────────────\n\nlet _sdk: NodeSDK | null = null;\n\n/**\n * Initialize the OTel SDK. Safe to call multiple times — subsequent calls\n * are no-ops. Should be called once at process startup before any spans.\n *\n * Silently disabled when BASELINE_OTEL_DISABLED=1.\n */\nexport function initTelemetry(): void {\n if (_sdk || process.env['BASELINE_OTEL_DISABLED'] === '1') return;\n\n const endpoint =\n process.env['OTEL_EXPORTER_OTLP_ENDPOINT'] ?? 'http://localhost:4318';\n\n const exporter = new OTLPTraceExporter({\n url: `${endpoint}/v1/traces`,\n });\n\n _sdk = new NodeSDK({\n resource: resourceFromAttributes({\n [ATTR_SERVICE_NAME]: process.env['OTEL_SERVICE_NAME'] ?? 'baselineos',\n [ATTR_SERVICE_VERSION]: '0.2.0-beta.1',\n }),\n traceExporter: exporter,\n // W3C traceparent propagation is the default — no explicit config needed\n });\n\n _sdk.start();\n\n process.on('SIGTERM', () => { _sdk?.shutdown().catch(() => {}); });\n process.on('SIGINT', () => { _sdk?.shutdown().catch(() => {}); });\n}\n\n/** Gracefully shut down the SDK and flush pending spans. */\nexport async function shutdownTelemetry(): Promise<void> {\n await _sdk?.shutdown();\n _sdk = null;\n}\n\n// ─── Tracer ───────────────────────────────────────────────────────────────────\n\nexport const tracer: Tracer = new Proxy({} as Tracer, {\n get(_target, prop) {\n return trace.getTracer('baselineos', '0.2.0-beta.1')[prop as keyof Tracer];\n },\n});\n\n// ─── Trace context helpers ───────────────────────────────────────────────────\n\n/**\n * Serialize the active W3C trace context to a string for propagation\n * through AgentBus messages.\n * Returns undefined when there is no active span.\n */\nexport function extractTraceContext(): string | undefined {\n const carrier: Record<string, string> = {};\n propagation.inject(context.active(), carrier);\n return carrier['traceparent'];\n}\n\n/**\n * Restore a serialized trace context as the active context.\n * Use as the second argument to `context.with()` before creating child spans.\n */\nexport function injectTraceContext(traceparent: string): Context {\n const carrier: Record<string, string> = { traceparent };\n return propagation.extract(context.active(), carrier);\n}\n\n// ─── Span wrapper ─────────────────────────────────────────────────────────────\n\n/**\n * Run an async function inside a named span.\n * Sets ERROR status and records exception on throw.\n */\nexport async function withSpan<T>(\n name: string,\n attributes: Record<string, string | number | boolean>,\n fn: (span: Span) => Promise<T>,\n): Promise<T> {\n return tracer.startActiveSpan(name, { kind: SpanKind.INTERNAL, attributes }, async (span) => {\n try {\n const result = await fn(span);\n span.setStatus({ code: SpanStatusCode.OK });\n return result;\n } catch (err) {\n span.recordException(err as Error);\n span.setStatus({ code: SpanStatusCode.ERROR, message: (err as Error).message });\n throw err;\n } finally {\n span.end();\n }\n });\n}\n","/**\n * BaselineOS Core Types\n * \n * @license Apache-2.0\n */\n\nimport { z } from 'zod';\n\n// ─── Task Types ──────────────────────────────────────────────────────────────\n\nexport type TaskStatus = \n | 'pending'\n | 'planning'\n | 'executing'\n | 'verifying'\n | 'reviewing'\n | 'correcting'\n | 'completed'\n | 'failed'\n | 'blocked';\n\nexport type TaskPriority = 'critical' | 'high' | 'medium' | 'low';\nexport type TaskComplexity = 'trivial' | 'simple' | 'moderate' | 'complex' | 'epic';\n\nexport interface Task {\n id: string;\n parentId?: string;\n title: string;\n description: string;\n status: TaskStatus;\n priority: TaskPriority;\n complexity: TaskComplexity;\n workflowId?: string;\n workflowPlanId?: string;\n subtasks: Task[];\n dependencies: string[];\n assignedAgent?: string;\n requiredCapabilities: string[];\n attempts: number;\n maxAttempts: number;\n currentCheckpoint?: string;\n acceptanceCriteria: AcceptanceCriterion[];\n verificationResults: VerificationResult[];\n createdAt: number;\n updatedAt: number;\n completedAt?: number;\n estimatedTokens?: number;\n actualTokens?: number;\n context: Record<string, unknown>;\n artifacts: Artifact[];\n needsHumanReview?: boolean;\n}\n\nexport interface AcceptanceCriterion {\n id: string;\n description: string;\n type: 'automated' | 'agent-review' | 'human-review';\n checkFunction?: string;\n weight: number;\n}\n\nexport interface VerificationResult {\n criterionId: string;\n passed: boolean;\n confidence: number;\n details: string;\n verifiedBy: string;\n verifiedAt: number;\n}\n\nexport interface Artifact {\n id: string;\n type: 'code' | 'document' | 'config' | 'test' | 'analysis' | 'decision';\n path?: string;\n content?: string;\n checksum?: string;\n createdBy: string;\n createdAt: number;\n}\n\n// ─── Task Input ──────────────────────────────────────────────────────────────\n\nexport const TaskInputSchema = z.object({\n title: z.string().min(1),\n description: z.string().min(1),\n priority: z.enum(['critical', 'high', 'medium', 'low']).default('medium'),\n requiredCapabilities: z.array(z.string()).default([]),\n acceptanceCriteria: z.array(z.object({\n description: z.string(),\n type: z.enum(['automated', 'agent-review', 'human-review']).default('automated'),\n weight: z.number().min(0).max(1).default(1),\n })).default([]),\n context: z.record(z.unknown()).default({}),\n});\n\nexport type TaskInput = z.infer<typeof TaskInputSchema>;\n\n// ─── Agent Types ─────────────────────────────────────────────────────────────\n\nexport type AgentRole = 'planner' | 'executor' | 'verifier' | 'supervisor' | 'quality' | 'specialist';\nexport type AgentStatus = 'idle' | 'busy' | 'blocked' | 'error' | 'offline' | 'suspended';\n\nexport interface Agent {\n id: string;\n name: string;\n role: AgentRole;\n status: AgentStatus;\n capabilities: string[];\n domains: string[];\n /**\n * Semantic version of this agent's prompt/behavior specification.\n * Format: MAJOR.MINOR.PATCH — bump MAJOR on breaking behavior change,\n * MINOR on new capability, PATCH on prompt refinement.\n * Included in eval output and audit trail for regression tracking.\n */\n promptVersion?: string;\n trustScore: number;\n successRate: number;\n averageQuality: number;\n tasksCompleted: number;\n tasksFailed: number;\n currentTask?: string;\n taskQueue: string[];\n supervisorId?: string;\n supervisees: string[];\n maxConcurrentTasks: number;\n autoVerify: boolean;\n escalationThreshold: number;\n createdAt: number;\n lastActiveAt: number;\n}\n\n// ─── Checkpoint Types ────────────────────────────────────────────────────────\n\nexport interface Checkpoint {\n id: string;\n taskId: string;\n stepId?: string;\n state: Record<string, unknown>;\n artifacts: Artifact[];\n decisions: Decision[];\n createdBy: string;\n createdAt: number;\n description: string;\n recoverable: boolean;\n expiresAt?: number;\n}\n\nexport interface Decision {\n id: string;\n description: string;\n options: DecisionOption[];\n selectedOption: string;\n rationale: string;\n madeBy: string;\n madeAt: number;\n reversible: boolean;\n confidence: number;\n}\n\nexport interface DecisionOption {\n id: string;\n description: string;\n pros: string[];\n cons: string[];\n risk: 'low' | 'medium' | 'high';\n}\n\n// ─── Review Types ────────────────────────────────────────────────────────────\n\nexport interface Review {\n id: string;\n taskId: string;\n reviewerId: string;\n revieweeId: string;\n type: 'self' | 'peer' | 'supervisor' | 'quality';\n scope: 'full' | 'partial' | 'spot-check';\n findings: ReviewFinding[];\n overallAssessment: 'approved' | 'needs-work' | 'rejected';\n confidence: number;\n feedback: string;\n suggestions: string[];\n requiredChanges: string[];\n createdAt: number;\n completedAt?: number;\n timeSpent: number;\n}\n\nexport interface ReviewFinding {\n id: string;\n severity: 'critical' | 'major' | 'minor' | 'suggestion';\n category: 'correctness' | 'completeness' | 'quality' | 'consistency' | 'security';\n description: string;\n location?: string;\n suggestion?: string;\n}\n\n// ─── Execution Types ─────────────────────────────────────────────────────────\n\nexport interface ExecutionPlan {\n id: string;\n taskId: string;\n steps: ExecutionStep[];\n estimatedTokens: number;\n estimatedDuration: number;\n riskAssessment: string[];\n createdAt: number;\n}\n\nexport interface ExecutionStep {\n id: string;\n title: string;\n description: string;\n action: StepAction;\n dependencies: string[];\n assignedAgent?: string;\n status: 'pending' | 'executing' | 'completed' | 'failed' | 'skipped';\n result?: StepResult;\n verificationCriteria: string[];\n}\n\nexport interface StepAction {\n type: 'llm' | 'tool' | 'human' | 'composite';\n operation: string;\n parameters: Record<string, unknown>;\n timeout?: number;\n}\n\nexport interface StepResult {\n success: boolean;\n output: unknown;\n artifacts: Artifact[];\n tokensUsed: number;\n duration: number;\n error?: string;\n}\n\n// ─── Workflow Types ──────────────────────────────────────────────────────────\n\nexport interface WorkflowBudget {\n maxTokens?: number;\n maxCostUsd?: number;\n costPer1kTokensUsd?: number;\n maxSteps?: number;\n maxDurationMs?: number;\n maxAttempts?: number;\n /** Optional tenant identifier for per-tenant cost allocation (SIGNAL-052) */\n tenantId?: string;\n}\n\nexport interface WorkflowStepTemplate {\n id: string;\n title: string;\n description: string;\n action: StepAction;\n verificationCriteria?: string[];\n}\n\nexport interface WorkflowDefinition {\n id: string;\n name: string;\n description?: string;\n steps: WorkflowStepTemplate[];\n requiredCapabilities?: string[];\n budget?: WorkflowBudget;\n}\n\n// ─── Event Types ─────────────────────────────────────────────────────────────\n\nexport type OrchestratorEvent =\n | { type: 'task:created'; task: Task }\n | { type: 'task:decomposed'; task: Task; subtasks: Task[] }\n | { type: 'task:assigned'; task: Task; agent: Agent }\n | { type: 'task:started'; task: Task }\n | { type: 'task:checkpoint'; task: Task; checkpoint: Checkpoint }\n | { type: 'task:verified'; task: Task; result: VerificationResult }\n | { type: 'task:review-requested'; task: Task; reviewer: Agent }\n | { type: 'task:reviewed'; task: Task; review: Review }\n | { type: 'task:correction-needed'; task: Task; feedback: string }\n | { type: 'task:corrected'; task: Task }\n | { type: 'task:completed'; task: Task }\n | { type: 'task:failed'; task: Task; error: unknown }\n | { type: 'task:blocked'; task: Task; reason: string; policy: string }\n | { type: 'task:approved'; task: Task; approvedBy: string }\n | { type: 'agent:status-changed'; agent: Agent; previousStatus: AgentStatus }\n | { type: 'agent:trust-updated'; agent: Agent; previousTrust: number }\n | { type: 'agent:suspended'; agent: Agent; reason: string }\n | { type: 'agent:reinstated'; agent: Agent }\n | { type: 'escalation'; task: Task; reason: string; escalatedTo: string };\n","/**\n * PII Detector — SIGNAL-015\n *\n * Scans prompt text for personally identifiable information before it\n * reaches the LLM router. Supports two enforcement modes:\n *\n * redact — replaces detected values with [REDACTED:TYPE] (default)\n * block — throws PiiBlockedError, halting task execution\n *\n * Detected types:\n * email — RFC 5321 address pattern\n * phone — US/international format (10-digit minimum)\n * ssn — US Social Security Number (NNN-NN-NNNN)\n * credit-card — Visa, Mastercard, Amex, Discover\n * api-key — OpenAI sk-, Anthropic sk-ant-, GitHub ghp_, AWS AKIA\n * ip-address — IPv4 addresses\n *\n * Integration:\n * Called by Orchestrator._performExecution() before engine.execute().\n * Publishes 'governance:pii-detected' on the AgentBus when PII is found.\n * Sets pii.detected and pii.types on the active OTel span.\n *\n * @license Apache-2.0\n */\n\nimport { trace } from '@opentelemetry/api';\nimport type { AgentBus } from './agent-bus.js';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type PiiType =\n | 'email'\n | 'phone'\n | 'ssn'\n | 'credit-card'\n | 'api-key'\n | 'ip-address';\n\nexport type PiiMode = 'redact' | 'block';\n\nexport interface PiiMatch {\n type: PiiType;\n start: number;\n end: number;\n}\n\nexport interface PiiScanResult {\n /** true when no PII was detected */\n clean: boolean;\n /** all matches found, sorted by start position */\n matches: PiiMatch[];\n /** unique PII types present */\n types: PiiType[];\n /** input text with all PII replaced by [REDACTED:TYPE]; equals input when clean=true */\n redacted: string;\n}\n\nexport interface PiiDetectorConfig {\n /** Enforcement mode. Default: 'redact' */\n mode?: PiiMode;\n /** PII types to skip. Useful for staged rollouts. */\n disabledTypes?: PiiType[];\n /** AgentBus for publishing governance:pii-detected events. */\n bus?: AgentBus;\n}\n\n// ─── Error ────────────────────────────────────────────────────────────────────\n\nexport class PiiBlockedError extends Error {\n constructor(public readonly types: PiiType[]) {\n super(`PII detected in prompt — blocked: ${types.join(', ')}`);\n this.name = 'PiiBlockedError';\n }\n}\n\n// ─── Patterns ────────────────────────────────────────────────────────────────\n\nconst PATTERNS: Record<PiiType, RegExp> = {\n // API keys before email to avoid partial overlap on sk- prefixes\n 'api-key': /\\b(sk-ant-[A-Za-z0-9-_]{20,}|sk-[A-Za-z0-9]{32,}|(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36}|AKIA[0-9A-Z]{16})\\b/g,\n 'email': /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b/g,\n 'phone': /\\b(?:\\+?1[\\s.-]?)?\\(?[0-9]{3}\\)?[\\s.-][0-9]{3}[\\s.-][0-9]{4}\\b/g,\n 'ssn': /\\b(?!000|666|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0000)\\d{4}\\b/g,\n 'credit-card': /\\b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|6(?:011|5[0-9]{2})[0-9]{12})\\b/g,\n 'ip-address': /\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b/g,\n};\n\n// ─── PiiDetector ─────────────────────────────────────────────────────────────\n\nexport class PiiDetector {\n readonly mode: PiiMode;\n private readonly disabled: Set<PiiType>;\n private readonly bus?: AgentBus;\n\n constructor(config: PiiDetectorConfig = {}) {\n this.mode = config.mode ?? 'redact';\n this.disabled = new Set(config.disabledTypes ?? []);\n this.bus = config.bus;\n }\n\n /**\n * Scan text for PII without side effects.\n * Safe to call in any context — no bus events, no span mutations.\n */\n scan(text: string): PiiScanResult {\n const matches: PiiMatch[] = [];\n\n for (const [type, pattern] of Object.entries(PATTERNS) as Array<[PiiType, RegExp]>) {\n if (this.disabled.has(type)) continue;\n\n // Reset lastIndex — patterns are defined with /g flag\n pattern.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = pattern.exec(text)) !== null) {\n matches.push({ type, start: m.index, end: m.index + m[0].length });\n }\n }\n\n // Sort by start position, resolve overlaps (keep longest match)\n matches.sort((a, b) => a.start - b.start || b.end - a.end);\n const deduped: PiiMatch[] = [];\n let cursor = 0;\n for (const match of matches) {\n if (match.start >= cursor) {\n deduped.push(match);\n cursor = match.end;\n }\n }\n\n const types = [...new Set(deduped.map((m) => m.type))];\n const clean = deduped.length === 0;\n\n // Build redacted string\n let redacted = '';\n let pos = 0;\n for (const match of deduped) {\n redacted += text.slice(pos, match.start);\n redacted += `[REDACTED:${match.type.toUpperCase()}]`;\n pos = match.end;\n }\n redacted += text.slice(pos);\n\n return { clean, matches: deduped, types, redacted };\n }\n\n /**\n * Process text before LLM routing.\n *\n * - Publishes 'governance:pii-detected' on the bus when PII is found.\n * - Sets pii.detected and pii.types on the active OTel span.\n * - redact mode: returns redacted text.\n * - block mode: throws PiiBlockedError if PII found.\n *\n * @param text Text to scan (typically task.description).\n * @param taskId Used for bus event correlation.\n * @returns Safe text (redacted or original when clean).\n */\n processText(text: string, taskId?: string): string {\n const result = this.scan(text);\n\n if (!result.clean) {\n // Set OTel span attributes on the active span (task.perform)\n const span = trace.getActiveSpan();\n if (span) {\n span.setAttribute('pii.detected', true);\n span.setAttribute('pii.types', result.types.join(','));\n span.setAttribute('pii.count', result.matches.length);\n }\n\n // Publish governance event\n this.bus?.broadcast('system', 'governance:pii-detected', {\n taskId,\n types: result.types,\n count: result.matches.length,\n blocked: this.mode === 'block',\n mode: this.mode,\n }, 'high');\n\n if (this.mode === 'block') {\n throw new PiiBlockedError(result.types);\n }\n }\n\n return result.redacted;\n }\n}\n","/**\n * Task Queue — SIGNAL-018\n *\n * BullMQ-backed durable task queue. Provides:\n * - Priority-ordered execution (critical → high → medium → low)\n * - Automatic retry with exponential backoff on failure\n * - Concurrency limiting (configurable, default 5)\n * - Job deduplication by task ID\n * - Queue observability via Bull Dashboard / BullMQ Board\n *\n * The queue is optional. When not configured, Orchestrator falls back\n * to direct in-process execution (existing behaviour).\n *\n * Configuration:\n * BASELINE_REDIS_URL Redis connection URL (default: redis://localhost:6379)\n *\n * Self-hosted Redis:\n * docker compose -f docker/docker-compose.monitoring.yml up -d\n * → redis://localhost:6379\n *\n * @license Apache-2.0\n */\n\nimport { Queue, Worker, type ConnectionOptions } from 'bullmq';\nimport type { TaskPriority } from './types.js';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface TaskQueueConfig {\n /** Redis URL. Default: BASELINE_REDIS_URL env or redis://localhost:6379 */\n redisUrl?: string;\n /** Queue name (default: 'baseline-tasks') */\n queueName?: string;\n /** Max concurrent jobs processed in parallel (default: 5) */\n concurrency?: number;\n /** Max retry attempts on failure (default: 3) */\n attempts?: number;\n /** Initial backoff delay in ms for exponential retry (default: 2000) */\n backoffDelay?: number;\n}\n\ninterface TaskJobData {\n taskId: string;\n}\n\n/** Maps task priority to BullMQ integer priority (lower = higher priority) */\nconst PRIORITY_MAP: Record<TaskPriority, number> = {\n critical: 1,\n high: 2,\n medium: 5,\n low: 10,\n};\n\n// ─── TaskQueue ────────────────────────────────────────────────────────────────\n\nexport class TaskQueue {\n private readonly queue: Queue<TaskJobData>;\n private readonly worker: Worker<TaskJobData>;\n private readonly queueName: string;\n\n /**\n * @param executor Called by the worker when a job is dequeued.\n * Receives the taskId. Should call Orchestrator.dispatchExecution().\n * @param config Queue configuration.\n */\n constructor(\n executor: (taskId: string) => Promise<void>,\n config: TaskQueueConfig = {},\n ) {\n this.queueName = config.queueName ?? 'baseline-tasks';\n\n const redisUrl = config.redisUrl ?? process.env['BASELINE_REDIS_URL'] ?? 'redis://localhost:6379';\n const connection: ConnectionOptions = this.parseRedisUrl(redisUrl);\n\n const attempts = config.attempts ?? 3;\n const backoffDelay = config.backoffDelay ?? 2_000;\n\n this.queue = new Queue<TaskJobData>(this.queueName, {\n connection,\n defaultJobOptions: {\n attempts,\n backoff: { type: 'exponential', delay: backoffDelay },\n removeOnComplete: { count: 500 },\n removeOnFail: { count: 200 },\n },\n });\n\n this.worker = new Worker<TaskJobData>(\n this.queueName,\n async (job) => { await executor(job.data.taskId); },\n {\n connection,\n concurrency: config.concurrency ?? 5,\n },\n );\n\n this.worker.on('failed', (job, err) => {\n console.warn(`[TaskQueue] Job ${job?.id ?? '?'} (task ${job?.data.taskId ?? '?'}) failed: ${err.message}`);\n });\n }\n\n /**\n * Enqueue a task for execution.\n * Uses taskId as jobId — duplicate enqueues are silently ignored.\n */\n async enqueue(taskId: string, priority: TaskPriority): Promise<void> {\n await this.queue.add(\n 'execute',\n { taskId },\n {\n jobId: taskId,\n priority: PRIORITY_MAP[priority],\n },\n );\n }\n\n /**\n * Queue statistics — useful for health checks and dashboards.\n */\n async getStats(): Promise<{\n waiting: number;\n active: number;\n completed: number;\n failed: number;\n delayed: number;\n }> {\n const [waiting, active, completed, failed, delayed] = await Promise.all([\n this.queue.getWaitingCount(),\n this.queue.getActiveCount(),\n this.queue.getCompletedCount(),\n this.queue.getFailedCount(),\n this.queue.getDelayedCount(),\n ]);\n return { waiting, active, completed, failed, delayed };\n }\n\n /** Gracefully close queue and worker connections. */\n async close(): Promise<void> {\n await this.worker.close();\n await this.queue.close();\n }\n\n // ─── Internal ──────────────────────────────────────────────────────────────\n\n private parseRedisUrl(url: string): ConnectionOptions {\n try {\n const u = new URL(url);\n const config: ConnectionOptions = {\n host: u.hostname || 'localhost',\n port: u.port ? parseInt(u.port, 10) : 6379,\n username: u.username || undefined,\n password: u.password || undefined,\n };\n if (u.pathname && u.pathname !== '/') {\n (config as Record<string, unknown>)['db'] = parseInt(u.pathname.slice(1), 10);\n }\n return config;\n } catch {\n return { host: 'localhost', port: 6379 };\n }\n }\n}\n","/**\n * BaselineOS Orchestrator\n * \n * Autonomous multi-agent task execution with self-supervision.\n * Implements AMP/Ralph patterns for agent-to-agent oversight.\n * \n * Key Innovation: Tasks are decomposed, verified, reviewed, and corrected\n * by agents — not humans. Human intervention only when all autonomous\n * options are exhausted (<5% of tasks).\n * \n * @license Apache-2.0\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport { randomUUID } from 'crypto';\nimport { mkdirSync, existsSync, readFileSync, writeFileSync } from 'fs';\nimport { join } from 'path';\nimport { metrics } from '@opentelemetry/api';\nimport { withSpan } from './telemetry.js';\nimport { TaskInputSchema } from './types.js';\nimport type {\n Task,\n TaskInput,\n Agent,\n Checkpoint,\n Review,\n VerificationResult,\n OrchestratorEvent,\n ExecutionPlan,\n ExecutionStep,\n WorkflowDefinition,\n WorkflowBudget,\n} from './types.js';\nimport type { MemorySystem } from './memory.js';\nimport type { KnowledgeIndexer } from './indexer.js';\nimport type { SemanticCache } from './cache.js';\nimport type { ExecutionEngine } from './execution-engine.js';\nimport type { AgentBus } from './agent-bus.js';\nimport type { OPAPolicyGate } from './opa-policy-gate.js';\nimport { PiiBlockedError } from './pii-detector.js';\nimport type { PiiDetector } from './pii-detector.js';\nimport { TaskQueue } from './task-queue.js';\nimport type { TaskQueueConfig } from './task-queue.js';\nimport type { AuditLog } from './audit-log.js';\nimport type { LayerSweep, LayerSweepResult } from './layer-sweep.js';\nimport type { BaselinePersonaEngine } from '@baselineos/persona';\n\n// ─── Configuration ───────────────────────────────────────────────────────────\n\nexport interface OrchestratorConfig {\n maxAutonomousComplexity: Task['complexity'];\n selfVerificationRequired: boolean;\n supervisorReviewThreshold: number;\n qualityReviewSampleRate: number;\n defaultTrustScore: number;\n defaultMaxAttempts: number;\n maxTokensPerTask: number;\n maxConcurrentAgents: number;\n trustGrowthRate: number;\n trustDecayRate: number;\n /** Minimum trust score before an agent is auto-suspended */\n trustMinimum: number;\n checkpointsPath?: string;\n workflows?: WorkflowDefinition[];\n memory?: MemorySystem;\n indexer?: KnowledgeIndexer;\n cache?: SemanticCache;\n /** Execution engine for real LLM calls. Falls back to mock if not provided. */\n engine?: ExecutionEngine;\n /** Trust update listener for cross-system synchronization */\n onTrustUpdate?: (agentId: string, trustScore: number, success: boolean) => void;\n /** Agent bus for inter-agent messaging. When provided, key orchestrator events are published. */\n bus?: AgentBus;\n /**\n * Workflow IDs that are disabled (kill switch).\n * Tasks created from disabled workflows are rejected immediately.\n * Update at runtime via disableWorkflow() / enableWorkflow().\n */\n disabledWorkflows?: string[];\n /**\n * OPA policy gate. When provided, pre-execution evaluation runs before\n * every task. Blocked tasks emit 'task:blocked' and fire the escalation\n * webhook if configured (SIGNAL-009).\n */\n policyGate?: OPAPolicyGate;\n /**\n * PII detector. When provided, task.description is scanned before every\n * LLM call. In redact mode the description is sanitised in-place (original\n * preserved in task.context). In block mode a PiiBlockedError fails the\n * task immediately (SIGNAL-015).\n */\n piiDetector?: PiiDetector;\n /**\n * BullMQ task queue configuration (SIGNAL-018).\n * When provided, task execution is routed through a Redis-backed queue\n * with priority ordering, retry+backoff, and concurrency control.\n * Omit to use direct in-process execution (default).\n */\n taskQueueConfig?: TaskQueueConfig;\n /**\n * Immutable append-only audit log (SIGNAL-031).\n * When provided, every orchestrator event is persisted to a SQLite-backed\n * append-only store in addition to the in-memory trail. Entries cannot be\n * updated or deleted — enforced at the database trigger level.\n */\n auditLog?: AuditLog;\n /**\n * Layer sweep (GA-04). When provided, all 7 governance layers are\n * evaluated during task execution. Results are stored in task.context\n * and published on the AgentBus.\n */\n layerSweep?: LayerSweep;\n /**\n * Persona engine. When provided, the active persona is loaded before\n * task execution, shaping agent behavior and workspace configuration.\n */\n personaEngine?: BaselinePersonaEngine;\n}\n\nconst DEFAULT_CONFIG: OrchestratorConfig = {\n maxAutonomousComplexity: 'complex',\n selfVerificationRequired: true,\n supervisorReviewThreshold: 0.7,\n qualityReviewSampleRate: 0.1,\n defaultTrustScore: 70,\n defaultMaxAttempts: 3,\n maxTokensPerTask: 100000,\n maxConcurrentAgents: 10,\n trustGrowthRate: 0.02,\n trustDecayRate: 0.05,\n trustMinimum: 30,\n};\n\n// ─── Complexity Ordering ─────────────────────────────────────────────────────\n\nconst COMPLEXITY_ORDER: Task['complexity'][] = ['trivial', 'simple', 'moderate', 'complex', 'epic'];\ntype FinalApprovalGate = 'pending' | 'approved' | 'blocked';\n\nfunction complexityToNumber(c: Task['complexity']): number {\n return COMPLEXITY_ORDER.indexOf(c);\n}\n\n// ─── Orchestrator ────────────────────────────────────────────────────────────\n\nexport class Orchestrator extends EventEmitter<{\n [K in OrchestratorEvent['type']]: (event: Extract<OrchestratorEvent, { type: K }>) => void;\n}> {\n private config: OrchestratorConfig;\n private tasks: Map<string, Task>;\n private agents: Map<string, Agent>;\n private disabledWorkflows: Set<string>;\n private checkpoints: Map<string, Checkpoint>;\n private reviews: Map<string, Review>;\n private plans: Map<string, ExecutionPlan>;\n private workflows: Map<string, WorkflowDefinition>;\n private auditByTask: Map<string, Array<{ timestamp: number; event: OrchestratorEvent }>>;\n private auditGlobal: Array<{ timestamp: number; event: OrchestratorEvent }>;\n private taskQueue?: TaskQueue;\n private auditLog?: AuditLog;\n\n constructor(config: Partial<OrchestratorConfig> = {}) {\n super();\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.tasks = new Map();\n this.agents = new Map();\n this.checkpoints = new Map();\n this.reviews = new Map();\n this.plans = new Map();\n this.workflows = new Map();\n this.auditByTask = new Map();\n this.auditGlobal = [];\n this.disabledWorkflows = new Set(this.config.disabledWorkflows ?? []);\n\n // BullMQ durable queue (SIGNAL-018) — optional, only when configured\n if (this.config.taskQueueConfig) {\n this.taskQueue = new TaskQueue(\n async (taskId: string) => { await this.dispatchExecution(taskId); },\n this.config.taskQueueConfig,\n );\n }\n\n // Immutable audit log (SIGNAL-031) — optional, persists events to SQLite\n if (this.config.auditLog) {\n this.auditLog = this.config.auditLog;\n }\n\n if (Array.isArray(this.config.workflows)) {\n for (const workflow of this.config.workflows) {\n this.registerWorkflow(workflow);\n }\n }\n\n this.attachAuditListeners();\n }\n\n // ─── Task Management ─────────────────────────────────────────────────────────\n\n async createTask(input: TaskInput): Promise<Task> {\n const validated = TaskInputSchema.parse(input);\n \n const task: Task = {\n id: randomUUID(),\n title: validated.title,\n description: validated.description,\n status: 'pending',\n priority: validated.priority,\n complexity: this.assessComplexity(validated),\n subtasks: [],\n dependencies: [],\n requiredCapabilities: validated.requiredCapabilities,\n attempts: 0,\n maxAttempts: this.config.defaultMaxAttempts,\n acceptanceCriteria: validated.acceptanceCriteria.map((ac, i) => ({\n id: `ac-${i}`,\n description: ac.description,\n type: ac.type,\n weight: ac.weight,\n })),\n verificationResults: [],\n createdAt: Date.now(),\n updatedAt: Date.now(),\n context: validated.context,\n artifacts: [],\n };\n\n this.tasks.set(task.id, task);\n this.emit('task:created', { type: 'task:created', task });\n\n // Check if requires human approval (epic tasks)\n if (this.requiresHumanApproval(task)) {\n task.status = 'blocked';\n task.needsHumanReview = true;\n return task;\n }\n\n // Auto-decompose if complex\n if (this.shouldDecompose(task)) {\n await this.decomposeTask(task);\n }\n\n return task;\n }\n\n async executeTask(taskId: string): Promise<Task> {\n const task = this.tasks.get(taskId);\n if (!task) {\n throw new Error(`Task not found: ${taskId}`);\n }\n\n if (task.status === 'blocked' && task.needsHumanReview) {\n throw new Error(`Task ${taskId} requires human approval before execution`);\n }\n\n // Policy gate pre-execution check (SIGNAL-009)\n if (this.config.policyGate) {\n const bestAgent = this.selectBestAgent(task);\n const agentId = bestAgent?.id ?? 'system';\n const trustScore = bestAgent?.trustScore ?? this.config.defaultTrustScore;\n const gateResult = await this.config.policyGate.preExecution(task, agentId, trustScore);\n if (gateResult.blocked) {\n task.status = 'blocked';\n task.needsHumanReview = true;\n task.updatedAt = Date.now();\n const violation = gateResult.evaluations.find(e => !e.allowed);\n const reason = violation?.reason ?? 'Policy gate denied execution';\n const policy = violation?.policy ?? 'unknown';\n if (gateResult.approvalToken) {\n task.context = {\n ...task.context,\n approvalToken: gateResult.approvalToken,\n approvalTokenExpires: gateResult.approvalTokenExpires,\n };\n }\n this.emit('task:blocked', { type: 'task:blocked', task, reason, policy });\n this.emit('escalation', { type: 'escalation', task, reason, escalatedTo: 'human' });\n metrics.getMeter('baselineos').createCounter('baseline_escalation_total').add(1, {\n reason: reason ?? 'unknown',\n agent_id: task.assignedAgent ?? 'unknown',\n });\n return task;\n }\n }\n\n // Route through BullMQ queue if configured (SIGNAL-018), otherwise execute directly\n if (this.taskQueue) {\n await this.taskQueue.enqueue(taskId, task.priority);\n return task;\n }\n return this.dispatchExecution(taskId);\n }\n\n /**\n * Core execution body — called by the BullMQ worker (or directly when no queue).\n * Runs the full supervision loop: execute → self-verify → review → correct.\n * Not intended to be called externally; exposed for the queue worker closure.\n */\n async dispatchExecution(taskId: string): Promise<Task> {\n const task = this.tasks.get(taskId);\n if (!task) throw new Error(`Task not found: ${taskId}`);\n\n task.status = 'executing';\n task.attempts++;\n this.setFinalApprovalGate(task, 'pending');\n this.emit('task:started', { type: 'task:started', task });\n\n // Persona loading — shape agent behavior based on active persona\n if (this.config.personaEngine) {\n const userId = (task.context?.userId as string) ?? 'system';\n const activePersona = this.config.personaEngine.getActivePersona(userId);\n if (activePersona) {\n task.context = { ...task.context, persona: { id: activePersona.id, name: activePersona.name } };\n }\n // Record behavior for learning\n this.config.personaEngine.learnFromBehavior(userId, {\n type: 'task_execution',\n context: { taskId: task.id, complexity: task.complexity, priority: task.priority },\n timestamp: new Date(),\n });\n }\n\n // Layer sweep — run all 7 governance layers (GA-04)\n if (this.config.layerSweep) {\n const bestAgent = this.selectBestAgent(task);\n const sweepResult: LayerSweepResult = this.config.layerSweep.sweep({\n taskId: task.id,\n title: task.title,\n description: task.description,\n complexity: task.complexity,\n priority: task.priority,\n agent: bestAgent ? { id: bestAgent.id, role: bestAgent.role, trustScore: bestAgent.trustScore } : undefined,\n });\n task.context = { ...task.context, layerSweep: sweepResult };\n\n // Block execution if any layer fails — real enforcement\n if (!sweepResult.overallPassed) {\n const failedLayers = sweepResult.layerResults\n .filter(r => !r.passed)\n .map(r => `${r.layerId}: ${r.checks.filter(c => !c.passed).map(c => c.detail).join('; ')}`)\n .join(' | ');\n task.status = 'blocked';\n task.needsHumanReview = true;\n task.updatedAt = Date.now();\n this.emit('task:blocked', { type: 'task:blocked', task, reason: `Layer sweep failed: ${failedLayers}`, policy: 'layer-sweep' });\n this.emit('escalation', { type: 'escalation', task, reason: `Governance layers failed: ${failedLayers}`, escalatedTo: 'human' });\n return task;\n }\n }\n\n await withSpan('task.execute', {\n 'task.id': task.id,\n 'task.priority': task.priority,\n 'task.complexity': task.complexity,\n 'task.attempt': task.attempts,\n }, async (span) => {\n try {\n await this.executeWithSupervision(task);\n\n const finalApprovalGate = this.getFinalApprovalGate(task);\n if (task.needsHumanReview || finalApprovalGate !== 'approved') {\n const reason = (task.context.finalGateReason as string | undefined) ?? 'Final approval gate unresolved';\n task.status = 'blocked';\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', reason);\n span.setAttribute('task.outcome', 'blocked');\n this.emit('escalation', { type: 'escalation', task, reason, escalatedTo: 'human' });\n metrics.getMeter('baselineos').createCounter('baseline_escalation_total').add(1, {\n reason: reason ?? 'unknown',\n agent_id: task.assignedAgent ?? 'unknown',\n });\n } else {\n task.status = 'completed';\n task.completedAt = Date.now();\n span.setAttribute('task.outcome', 'completed');\n this.emit('task:completed', { type: 'task:completed', task });\n }\n\n if (task.assignedAgent) {\n this.updateAgentTrust(task.assignedAgent, true);\n }\n } catch (error) {\n task.status = 'failed';\n this.setFinalApprovalGate(task, 'blocked', 'Execution failed');\n span.setAttribute('task.outcome', 'failed');\n this.emit('task:failed', { type: 'task:failed', task, error });\n\n if (task.assignedAgent) {\n this.updateAgentTrust(task.assignedAgent, false);\n }\n }\n });\n\n task.updatedAt = Date.now();\n return task;\n }\n\n /**\n * Execute task with autonomous supervision loop.\n * This is where the AMP/Ralph magic happens.\n */\n private async executeWithSupervision(task: Task, startTime: number = Date.now()): Promise<void> {\n const budget = this.getWorkflowBudget(task);\n\n // Step 1: Execute the task\n await this.performExecution(task, budget);\n\n // Step 2: Self-verify if required\n if (this.config.selfVerificationRequired) {\n const selfVerifyResult = await this.selfVerify(task);\n \n if (!selfVerifyResult.passed) {\n // Retry with feedback\n if (task.attempts < task.maxAttempts) {\n task.status = 'correcting';\n this.emit('task:correction-needed', { \n type: 'task:correction-needed', \n task, \n feedback: selfVerifyResult.details \n });\n \n // Re-execute with correction context\n task.context = { \n ...task.context, \n correctionFeedback: selfVerifyResult.details,\n previousAttempt: task.attempts,\n };\n \n task.attempts += 1;\n if (budget?.maxAttempts && task.attempts > budget.maxAttempts) {\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Workflow budget max attempts exceeded');\n return;\n }\n if (budget?.maxDurationMs && Date.now() - startTime > budget.maxDurationMs) {\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Workflow budget max duration exceeded');\n return;\n }\n\n return this.executeWithSupervision(task, startTime);\n }\n\n // Attempts exhausted: force escalation instead of silently continuing.\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Self-verification failed and max attempts exhausted');\n task.context = {\n ...task.context,\n escalationReason: 'Self-verification failed and max attempts exhausted',\n lastVerificationFailure: selfVerifyResult.details,\n };\n return;\n }\n }\n\n // Step 3: Supervisor review if confidence is low or randomly sampled\n const shouldReview = this.shouldTriggerSupervisorReview(task);\n \n if (shouldReview) {\n task.status = 'reviewing';\n const supervisor = this.findSupervisor(task);\n \n if (supervisor) {\n this.emit('task:review-requested', { \n type: 'task:review-requested', \n task, \n reviewer: supervisor \n });\n \n const review = await this.conductReview(task, supervisor);\n this.reviews.set(review.id, review);\n \n this.emit('task:reviewed', { type: 'task:reviewed', task, review });\n \n if (review.overallAssessment === 'needs-work') {\n // Correction loop\n if (task.attempts < task.maxAttempts) {\n task.status = 'correcting';\n task.context = {\n ...task.context,\n reviewFeedback: review.feedback,\n requiredChanges: review.requiredChanges,\n };\n \n this.emit('task:correction-needed', { \n type: 'task:correction-needed', \n task, \n feedback: review.feedback \n });\n \n task.attempts += 1;\n if (budget?.maxAttempts && task.attempts > budget.maxAttempts) {\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Workflow budget max attempts exceeded');\n return;\n }\n if (budget?.maxDurationMs && Date.now() - startTime > budget.maxDurationMs) {\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Workflow budget max duration exceeded');\n return;\n }\n\n return this.executeWithSupervision(task, startTime);\n }\n\n // Attempts exhausted: force escalation instead of silently continuing.\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Supervisor requested changes and max attempts exhausted');\n task.context = {\n ...task.context,\n escalationReason: 'Supervisor requested changes and max attempts exhausted',\n lastReviewFeedback: review.feedback,\n };\n return;\n } else if (review.overallAssessment === 'rejected') {\n // Escalate to quality agent\n const qualityAgent = this.findQualityAgent(task);\n if (qualityAgent) {\n const qualityReview = await this.conductReview(task, qualityAgent);\n \n if (qualityReview.overallAssessment !== 'approved') {\n // Mark for human review\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Quality review failed after supervisor rejection');\n this.emit('escalation', { \n type: 'escalation', \n task, \n reason: 'Quality review failed after supervisor rejection',\n escalatedTo: 'human',\n });\n }\n } else {\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Quality agent unavailable after supervisor rejection');\n }\n }\n }\n }\n\n // Step 4: Quality sampling\n if (Math.random() < this.config.qualityReviewSampleRate) {\n const qualityAgent = this.findQualityAgent(task);\n if (qualityAgent) {\n const qualityReview = await this.conductReview(task, qualityAgent);\n this.reviews.set(qualityReview.id, qualityReview);\n this.emit('task:reviewed', { type: 'task:reviewed', task, review: qualityReview });\n\n if (qualityReview.overallAssessment !== 'approved') {\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Quality sampling review failed');\n task.context = {\n ...task.context,\n escalationReason: 'Quality sampling review failed',\n qualityReviewFeedback: qualityReview.feedback,\n };\n this.emit('escalation', {\n type: 'escalation',\n task,\n reason: 'Quality sampling review failed',\n escalatedTo: 'human',\n });\n return;\n }\n }\n }\n\n this.setFinalApprovalGate(task, 'approved');\n }\n\n private async performExecution(task: Task, budget?: WorkflowBudget): Promise<void> {\n return withSpan('task.perform', {\n 'task.id': task.id,\n 'task.workflow_id': task.workflowId ?? '',\n }, async () => { return this._performExecution(task, budget); });\n }\n\n private async _performExecution(task: Task, budget?: WorkflowBudget): Promise<void> {\n // PII scan before any LLM call (SIGNAL-015)\n if (this.config.piiDetector) {\n try {\n const safeDescription = this.config.piiDetector.processText(task.description, task.id);\n const safeTitle = this.config.piiDetector.processText(task.title, task.id);\n if (safeDescription !== task.description || safeTitle !== task.title) {\n task.context = {\n ...task.context,\n originalDescription: task.description,\n originalTitle: task.title,\n piiRedacted: true,\n };\n task.description = safeDescription;\n task.title = safeTitle;\n }\n } catch (err) {\n if (err instanceof PiiBlockedError) {\n task.status = 'failed';\n task.context = { ...task.context, piiBlocked: true, piiTypes: err.types };\n task.updatedAt = Date.now();\n throw err;\n }\n throw err;\n }\n }\n\n // Create checkpoint before execution\n const checkpoint: Checkpoint = {\n id: randomUUID(),\n taskId: task.id,\n state: { ...task.context },\n artifacts: [...task.artifacts],\n decisions: [],\n createdBy: task.assignedAgent || 'orchestrator',\n createdAt: Date.now(),\n description: `Before attempt ${task.attempts}`,\n recoverable: true,\n };\n\n this.checkpoints.set(checkpoint.id, checkpoint);\n task.currentCheckpoint = checkpoint.id;\n\n this.emit('task:checkpoint', { type: 'task:checkpoint', task, checkpoint });\n this.persistCheckpoint(checkpoint);\n\n const engine = this.config.engine;\n const plan = task.workflowPlanId ? this.plans.get(task.workflowPlanId) : undefined;\n const steps = plan?.steps ?? [];\n const maxSteps = budget?.maxSteps;\n\n if (steps.length > 0) {\n let stepCount = 0;\n for (const step of steps) {\n if (maxSteps && stepCount >= maxSteps) {\n task.needsHumanReview = true;\n this.setFinalApprovalGate(task, 'blocked', 'Workflow budget max steps exceeded');\n break;\n }\n step.status = 'executing';\n\n if (engine) {\n const result = await engine.execute(task, step);\n step.status = 'completed';\n step.result = {\n success: result.compliance.passed,\n output: result.output,\n artifacts: result.artifacts,\n tokensUsed: result.tokensUsed,\n duration: result.duration,\n };\n task.artifacts.push(...result.artifacts);\n task.actualTokens = (task.actualTokens ?? 0) + result.tokensUsed;\n\n // Store output in context for downstream steps and verification\n task.context = {\n ...task.context,\n lastOutput: result.output,\n lastModel: result.model,\n compliancePassed: result.compliance.passed,\n complianceScore: result.compliance.score,\n };\n\n if (!result.compliance.passed) {\n task.context = {\n ...task.context,\n complianceViolations: result.compliance.violations,\n };\n }\n } else {\n // Fallback: mock execution for testing\n await new Promise(resolve => setTimeout(resolve, 150));\n step.status = 'completed';\n step.result = {\n success: true,\n output: { message: `Executed step: ${step.title}` },\n artifacts: [],\n tokensUsed: 0,\n duration: 150,\n };\n }\n stepCount += 1;\n }\n } else {\n // Single-shot execution (no workflow steps)\n if (engine) {\n const result = await engine.execute(task);\n task.artifacts.push(...result.artifacts);\n task.actualTokens = (task.actualTokens ?? 0) + result.tokensUsed;\n task.context = {\n ...task.context,\n lastOutput: result.output,\n lastModel: result.model,\n compliancePassed: result.compliance.passed,\n complianceScore: result.compliance.score,\n };\n\n if (!result.compliance.passed) {\n task.context = {\n ...task.context,\n complianceViolations: result.compliance.violations,\n };\n }\n } else {\n // Fallback: mock execution for testing\n await new Promise(resolve => setTimeout(resolve, 100));\n }\n }\n }\n\n // ─── Workflow Registry ─────────────────────────────────────────────────────\n\n registerWorkflow(definition: WorkflowDefinition): void {\n if (!definition.id) throw new Error('Workflow must have an id');\n this.workflows.set(definition.id, definition);\n }\n\n listWorkflows(): WorkflowDefinition[] {\n return Array.from(this.workflows.values());\n }\n\n getWorkflow(id: string): WorkflowDefinition | undefined {\n return this.workflows.get(id);\n }\n\n /** Disable a workflow type (kill switch). Persists for the lifetime of this Orchestrator instance. */\n disableWorkflow(workflowId: string): void {\n this.disabledWorkflows.add(workflowId);\n this.config.bus?.broadcast('system', 'system:workflow-disabled', { workflowId }, 'high');\n }\n\n /** Re-enable a previously disabled workflow. */\n enableWorkflow(workflowId: string): void {\n this.disabledWorkflows.delete(workflowId);\n this.config.bus?.broadcast('system', 'system:workflow-enabled', { workflowId }, 'normal');\n }\n\n /** Returns the set of currently disabled workflow IDs. */\n getDisabledWorkflows(): string[] {\n return Array.from(this.disabledWorkflows);\n }\n\n async createTaskFromWorkflow(workflowId: string, input: Partial<TaskInput> = {}): Promise<Task> {\n if (this.disabledWorkflows.has(workflowId)) {\n throw new Error(`Workflow '${workflowId}' is disabled (kill switch active). Enable it via orchestrator.enableWorkflow('${workflowId}') before creating tasks.`);\n }\n\n const workflow = this.getWorkflow(workflowId);\n if (!workflow) {\n throw new Error(`Workflow not found: ${workflowId}`);\n }\n\n const task = await this.createTask({\n title: input.title ?? workflow.name,\n description: input.description ?? workflow.description ?? workflow.name,\n priority: input.priority ?? 'medium',\n requiredCapabilities: input.requiredCapabilities ?? workflow.requiredCapabilities ?? [],\n acceptanceCriteria: input.acceptanceCriteria ?? [],\n context: {\n ...(input.context ?? {}),\n workflowId: workflow.id,\n },\n });\n\n task.workflowId = workflow.id;\n const plan = this.createExecutionPlanForWorkflow(task, workflow);\n task.workflowPlanId = plan.id;\n this.plans.set(plan.id, plan);\n\n if (workflow.budget?.maxAttempts) {\n task.maxAttempts = workflow.budget.maxAttempts;\n }\n\n return task;\n }\n\n async executeWorkflow(workflowId: string, input: Partial<TaskInput> = {}): Promise<Task> {\n const task = await this.createTaskFromWorkflow(workflowId, input);\n return this.executeTask(task.id);\n }\n\n private createExecutionPlanForWorkflow(task: Task, workflow: WorkflowDefinition): ExecutionPlan {\n const steps: ExecutionStep[] = workflow.steps.map((step) => ({\n id: step.id,\n title: step.title,\n description: step.description,\n action: step.action,\n dependencies: [],\n status: 'pending',\n verificationCriteria: step.verificationCriteria ?? [],\n }));\n\n return {\n id: `plan-${task.id}`,\n taskId: task.id,\n steps,\n estimatedTokens: 0,\n estimatedDuration: 0,\n riskAssessment: [],\n createdAt: Date.now(),\n };\n }\n\n private getWorkflowBudget(task: Task): WorkflowBudget | undefined {\n if (task.workflowId) {\n return this.workflows.get(task.workflowId)?.budget;\n }\n return undefined;\n }\n\n // ─── Checkpoint Persistence + Recovery ─────────────────────────────────────\n\n private persistCheckpoint(checkpoint: Checkpoint): void {\n const base = this.config.checkpointsPath ?? '.baseline/checkpoints';\n try {\n if (!existsSync(base)) {\n mkdirSync(base, { recursive: true });\n }\n const file = join(base, `${checkpoint.id}.json`);\n writeFileSync(file, JSON.stringify(checkpoint, null, 2));\n } catch (err) {\n process.stderr.write(`[baseline:orchestrator] Checkpoint persist failed: ${(err as Error).message}\\n`);\n }\n }\n\n loadCheckpoint(checkpointId: string): Checkpoint | null {\n const base = this.config.checkpointsPath ?? '.baseline/checkpoints';\n const file = join(base, `${checkpointId}.json`);\n if (!existsSync(file)) return null;\n try {\n const raw = JSON.parse(readFileSync(file, 'utf-8'));\n return raw as Checkpoint;\n } catch (err) {\n process.stderr.write(`[baseline:orchestrator] Checkpoint load failed for ${checkpointId}: ${(err as Error).message}\\n`);\n return null;\n }\n }\n\n recoverTaskFromCheckpoint(checkpointId: string): Task | null {\n const checkpoint = this.loadCheckpoint(checkpointId);\n if (!checkpoint) return null;\n\n const existing = this.tasks.get(checkpoint.taskId);\n if (existing) {\n existing.context = { ...checkpoint.state };\n existing.status = 'pending';\n existing.currentCheckpoint = checkpoint.id;\n this.tasks.set(existing.id, existing);\n return existing;\n }\n\n const recovered: Task = {\n id: checkpoint.taskId,\n title: 'Recovered Task',\n description: checkpoint.description,\n status: 'pending',\n priority: 'medium',\n complexity: 'moderate',\n subtasks: [],\n dependencies: [],\n requiredCapabilities: [],\n attempts: 0,\n maxAttempts: this.config.defaultMaxAttempts,\n acceptanceCriteria: [],\n verificationResults: [],\n createdAt: Date.now(),\n updatedAt: Date.now(),\n context: { ...checkpoint.state },\n artifacts: checkpoint.artifacts ?? [],\n currentCheckpoint: checkpoint.id,\n };\n\n this.tasks.set(recovered.id, recovered);\n return recovered;\n }\n\n private async selfVerify(task: Task): Promise<VerificationResult> {\n return withSpan('task.self_verify', { 'task.id': task.id }, async () => {\n return this._selfVerify(task);\n });\n }\n\n private async _selfVerify(task: Task): Promise<VerificationResult> {\n const engine = this.config.engine;\n const output = (task.context.lastOutput as string) ?? '';\n\n let result: VerificationResult;\n\n if (engine && output) {\n result = await engine.selfVerify(task, output);\n } else {\n // Fallback: mock verification for testing\n result = {\n criterionId: 'self-verify',\n passed: true,\n confidence: 0.85,\n details: 'Self-verification passed (mock)',\n verifiedBy: task.assignedAgent || 'orchestrator',\n verifiedAt: Date.now(),\n };\n }\n\n task.verificationResults.push(result);\n this.emit('task:verified', { type: 'task:verified', task, result });\n\n return result;\n }\n\n private shouldTriggerSupervisorReview(task: Task): boolean {\n // Get average confidence from verification results\n const avgConfidence = task.verificationResults.length > 0\n ? task.verificationResults.reduce((sum, r) => sum + r.confidence, 0) / task.verificationResults.length\n : 0.5;\n\n // Review if confidence below threshold\n if (avgConfidence < this.config.supervisorReviewThreshold) {\n return true;\n }\n\n // Review if critical priority\n if (task.priority === 'critical') {\n return true;\n }\n\n // Random sampling\n return Math.random() < this.config.qualityReviewSampleRate;\n }\n\n private async conductReview(task: Task, reviewer: Agent): Promise<Review> {\n return withSpan('task.review', {\n 'task.id': task.id,\n 'reviewer.id': reviewer.id,\n 'reviewer.role': reviewer.role,\n }, async () => { return this._conductReview(task, reviewer); });\n }\n\n private async _conductReview(task: Task, reviewer: Agent): Promise<Review> {\n const engine = this.config.engine;\n const output = (task.context.lastOutput as string) ?? '';\n const reviewType = reviewer.role === 'supervisor' ? 'supervisor' as const : 'quality' as const;\n\n if (engine && output) {\n const review = await engine.conductReview(task, output, reviewType);\n // Override reviewer/reviewee with actual agent IDs\n review.reviewerId = reviewer.id;\n review.revieweeId = task.assignedAgent || 'unknown';\n return review;\n }\n\n // Fallback: mock review for testing\n return {\n id: randomUUID(),\n taskId: task.id,\n reviewerId: reviewer.id,\n revieweeId: task.assignedAgent || 'unknown',\n type: reviewType,\n scope: 'full',\n findings: [],\n overallAssessment: 'approved',\n confidence: 0.9,\n feedback: 'Review completed successfully (mock)',\n suggestions: [],\n requiredChanges: [],\n createdAt: Date.now(),\n completedAt: Date.now(),\n timeSpent: 100,\n };\n }\n\n private findSupervisor(_task: Task): Agent | undefined {\n return Array.from(this.agents.values()).find(\n a => a.role === 'supervisor' && a.status === 'idle'\n );\n }\n\n private findQualityAgent(_task: Task): Agent | undefined {\n return Array.from(this.agents.values()).find(\n a => a.role === 'quality' && a.status === 'idle'\n );\n }\n\n getTask(taskId: string): Task | undefined {\n return this.tasks.get(taskId);\n }\n\n /**\n * Approve a blocked task, optionally recording who approved it.\n * When BASELINE_APPROVAL_SECRET is set, approvalToken must match the\n * HMAC token issued when the task was blocked (SIGNAL-017).\n */\n async approveTask(taskId: string, approvedBy: string = 'human', approvalToken?: string): Promise<Task> {\n const task = this.tasks.get(taskId);\n if (!task) {\n throw new Error(`Task not found: ${taskId}`);\n }\n if (task.status !== 'blocked') {\n throw new Error(`Task ${taskId} is not blocked (status: ${task.status})`);\n }\n\n // Token validation (SIGNAL-017)\n const approvalSecret = process.env['BASELINE_APPROVAL_SECRET'];\n if (approvalSecret) {\n const storedToken = task.context.approvalToken as string | undefined;\n const tokenExpires = task.context.approvalTokenExpires as number | undefined;\n\n if (!approvalToken) {\n throw new Error(`Approval token required — set BASELINE_APPROVAL_SECRET is active`);\n }\n if (!storedToken) {\n throw new Error(`No approval token on file for task ${taskId}`);\n }\n if (tokenExpires && Date.now() > tokenExpires) {\n throw new Error(`Approval token expired for task ${taskId}`);\n }\n\n // Constant-time comparison to prevent timing attacks\n const { timingSafeEqual } = await import('crypto');\n const expected = Buffer.from(storedToken);\n const received = Buffer.from(approvalToken);\n if (expected.length !== received.length || !timingSafeEqual(expected, received)) {\n throw new Error(`Invalid approval token for task ${taskId}`);\n }\n }\n\n task.needsHumanReview = false;\n task.status = 'pending';\n task.updatedAt = Date.now();\n task.context = {\n ...task.context,\n approvedBy,\n approvedAt: Date.now(),\n finalApprovalGate: undefined,\n approvalToken: undefined, // one-time use — invalidate after approval\n approvalTokenExpires: undefined,\n };\n\n this.emit('task:approved', { type: 'task:approved', task, approvedBy });\n\n // Re-execute immediately after approval\n return this.executeTask(taskId);\n }\n\n cancelTask(taskId: string, reason: string = 'Cancelled by user'): boolean {\n const task = this.tasks.get(taskId);\n if (!task) return false;\n\n if (task.status === 'completed' || task.status === 'failed') {\n return false;\n }\n\n task.status = 'failed';\n task.updatedAt = Date.now();\n task.context = {\n ...task.context,\n cancelled: true,\n cancelReason: reason,\n };\n\n this.emit('task:failed', { type: 'task:failed', task, error: reason });\n return true;\n }\n\n getAllTasks(): Task[] {\n return Array.from(this.tasks.values());\n }\n\n // ─── Agent Management ──────────────────────────────────────────────────────\n\n registerAgent(agent: Omit<Agent, 'createdAt' | 'lastActiveAt'>): Agent {\n const fullAgent: Agent = {\n ...agent,\n createdAt: Date.now(),\n lastActiveAt: Date.now(),\n };\n this.agents.set(fullAgent.id, fullAgent);\n return fullAgent;\n }\n\n getAllAgents(): Agent[] {\n return Array.from(this.agents.values());\n }\n\n /**\n * Select the best available agent for a task based on trust score and capability match.\n * Agents are ranked by: (capability overlap × trust score). Suspended agents are excluded.\n */\n selectBestAgent(task: Task): Agent | undefined {\n const candidates = Array.from(this.agents.values())\n .filter(a => a.status !== 'suspended' && a.status !== 'offline')\n .filter(a => {\n if (task.requiredCapabilities.length === 0) return true;\n return task.requiredCapabilities.some(cap => a.capabilities.includes(cap));\n });\n\n if (candidates.length === 0) return undefined;\n\n // Score: capability overlap ratio × trust score\n const scored = candidates.map(agent => {\n const capOverlap = task.requiredCapabilities.length > 0\n ? task.requiredCapabilities.filter(cap => agent.capabilities.includes(cap)).length / task.requiredCapabilities.length\n : 1;\n return { agent, score: capOverlap * agent.trustScore };\n });\n\n scored.sort((a, b) => b.score - a.score);\n return scored[0]?.agent;\n }\n\n /**\n * Suspend an agent. Suspended agents are excluded from task selection.\n */\n suspendAgent(agentId: string, reason: string = 'Trust score below minimum'): boolean {\n const agent = this.agents.get(agentId);\n if (!agent || agent.status === 'suspended') return false;\n\n agent.status = 'suspended';\n agent.lastActiveAt = Date.now();\n this.emit('agent:suspended', {\n type: 'agent:suspended',\n agent,\n reason,\n });\n return true;\n }\n\n /**\n * Reinstate a suspended agent.\n */\n reinstateAgent(agentId: string): boolean {\n const agent = this.agents.get(agentId);\n if (!agent || agent.status !== 'suspended') return false;\n\n agent.status = 'idle';\n agent.lastActiveAt = Date.now();\n this.emit('agent:reinstated', {\n type: 'agent:reinstated',\n agent,\n });\n return true;\n }\n\n private updateAgentTrust(agentId: string, success: boolean): void {\n const agent = this.agents.get(agentId);\n if (!agent) return;\n\n const previousTrust = agent.trustScore;\n\n if (success) {\n // Asymptotic growth: trust += growthRate * (100 - trust)\n agent.trustScore += this.config.trustGrowthRate * (100 - agent.trustScore);\n agent.tasksCompleted++;\n } else {\n // Proportional decay: trust -= decayRate * trust\n agent.trustScore -= this.config.trustDecayRate * agent.trustScore;\n agent.tasksFailed++;\n }\n\n agent.lastActiveAt = Date.now();\n\n this.emit('agent:trust-updated', {\n type: 'agent:trust-updated',\n agent,\n previousTrust\n });\n\n // Auto-suspend if trust drops below minimum\n if (agent.trustScore < this.config.trustMinimum && agent.status !== 'suspended') {\n this.suspendAgent(agentId, `Trust score ${agent.trustScore.toFixed(1)} below minimum ${this.config.trustMinimum}`);\n }\n\n // Cross-system trust sync callback\n if (this.config.onTrustUpdate) {\n this.config.onTrustUpdate(agentId, agent.trustScore, success);\n }\n }\n\n // ─── Task Decomposition ────────────────────────────────────────────────────\n\n private async decomposeTask(task: Task): Promise<void> {\n task.status = 'planning';\n\n const engine = this.config.engine;\n let phases: Array<{ title: string; description: string; capabilities: string[] }>;\n\n if (engine) {\n const decomposition = await engine.decompose(task);\n phases = decomposition.phases.length > 0\n ? decomposition.phases\n : [\n { title: 'research', description: `Research: ${task.title}`, capabilities: task.requiredCapabilities },\n { title: 'implement', description: `Implement: ${task.title}`, capabilities: task.requiredCapabilities },\n { title: 'verify', description: `Verify: ${task.title}`, capabilities: task.requiredCapabilities },\n ];\n } else {\n // Fallback: standard phases\n phases = ['research', 'design', 'implement', 'verify', 'document'].map((p) => ({\n title: p,\n description: `${p} phase for: ${task.description}`,\n capabilities: task.requiredCapabilities,\n }));\n }\n\n for (let i = 0; i < phases.length; i++) {\n const phase = phases[i]!;\n const subtask: Task = {\n id: randomUUID(),\n parentId: task.id,\n title: `${phase.title}: ${task.title}`,\n description: phase.description,\n status: 'pending',\n priority: task.priority,\n complexity: 'simple',\n subtasks: [],\n dependencies: i > 0 ? [task.subtasks[i - 1].id] : [],\n requiredCapabilities: phase.capabilities.length > 0 ? phase.capabilities : task.requiredCapabilities,\n attempts: 0,\n maxAttempts: this.config.defaultMaxAttempts,\n acceptanceCriteria: [],\n verificationResults: [],\n createdAt: Date.now(),\n updatedAt: Date.now(),\n context: { ...task.context, phase: phase.title },\n artifacts: [],\n };\n\n task.subtasks.push(subtask);\n this.tasks.set(subtask.id, subtask);\n }\n\n task.status = 'pending';\n this.emit('task:decomposed', { type: 'task:decomposed', task, subtasks: task.subtasks });\n }\n\n // ─── Helper Methods ────────────────────────────────────────────────────────\n\n private assessComplexity(input: TaskInput): Task['complexity'] {\n const descLength = input.description.length;\n const capCount = input.requiredCapabilities.length;\n const criteriaCount = input.acceptanceCriteria.length;\n \n const score = descLength / 100 + capCount * 2 + criteriaCount * 1.5;\n \n if (score < 5) return 'trivial';\n if (score < 15) return 'simple';\n if (score < 30) return 'moderate';\n if (score < 50) return 'complex';\n return 'epic';\n }\n\n private shouldDecompose(task: Task): boolean {\n return task.complexity === 'complex' || task.complexity === 'epic';\n }\n\n private requiresHumanApproval(task: Task): boolean {\n const maxIndex = complexityToNumber(this.config.maxAutonomousComplexity);\n const taskIndex = complexityToNumber(task.complexity);\n return taskIndex > maxIndex;\n }\n\n // ─── Audit + Evidence ──────────────────────────────────────────────────────\n\n private attachAuditListeners(): void {\n const events: OrchestratorEvent['type'][] = [\n 'task:created',\n 'task:decomposed',\n 'task:assigned',\n 'task:started',\n 'task:checkpoint',\n 'task:verified',\n 'task:review-requested',\n 'task:reviewed',\n 'task:correction-needed',\n 'task:corrected',\n 'task:completed',\n 'task:failed',\n 'task:blocked',\n 'task:approved',\n 'agent:status-changed',\n 'agent:trust-updated',\n 'escalation',\n ];\n\n for (const type of events) {\n this.on(type, (event) => {\n this.recordAudit(event);\n this.publishToBus(event);\n });\n }\n }\n\n private publishToBus(event: OrchestratorEvent): void {\n const bus = this.config.bus;\n if (!bus) return;\n\n const category =\n event.type.startsWith('task:') ? 'task' :\n event.type.startsWith('agent:') ? 'agent' :\n 'system';\n\n const agentId =\n 'agent' in event ? event.agent.id :\n 'task' in event && event.task.assignedAgent ? event.task.assignedAgent :\n undefined;\n\n bus.publish({\n from: agentId ?? 'system',\n topic: event.type,\n category,\n payload: event,\n priority: event.type === 'escalation' || event.type === 'task:failed' ? 'high' : 'normal',\n });\n }\n\n private recordAudit(event: OrchestratorEvent): void {\n const timestamp = Date.now();\n this.auditGlobal.push({ timestamp, event });\n\n const taskId = this.getEventTaskId(event);\n if (taskId) {\n const list = this.auditByTask.get(taskId) ?? [];\n list.push({ timestamp, event });\n this.auditByTask.set(taskId, list);\n }\n\n // Persist to immutable append-only store (SIGNAL-031)\n this.auditLog?.append(event);\n }\n\n private getEventTaskId(event: OrchestratorEvent): string | undefined {\n if ('task' in event) {\n return event.task.id;\n }\n return undefined;\n }\n\n getAuditTrail(taskId?: string): Array<{ timestamp: number; event: OrchestratorEvent }> {\n if (taskId) {\n return this.auditByTask.get(taskId) ?? [];\n }\n return this.auditGlobal;\n }\n\n getEvidenceBundle(taskId: string): {\n task?: Task;\n workflow?: WorkflowDefinition;\n plan?: ExecutionPlan;\n checkpoints: Checkpoint[];\n reviews: Review[];\n verificationResults: VerificationResult[];\n artifacts: Task['artifacts'];\n audit: Array<{ timestamp: number; event: OrchestratorEvent }>;\n } {\n const task = this.tasks.get(taskId);\n const workflow = task?.workflowId ? this.workflows.get(task.workflowId) : undefined;\n const plan = task?.workflowPlanId ? this.plans.get(task.workflowPlanId) : undefined;\n const checkpoints = Array.from(this.checkpoints.values()).filter(c => c.taskId === taskId);\n const reviews = this.getReviews(taskId);\n const verificationResults = task?.verificationResults ?? [];\n const artifacts = task?.artifacts ?? [];\n const audit = this.getAuditTrail(taskId);\n\n return {\n task,\n workflow,\n plan,\n checkpoints,\n reviews,\n verificationResults,\n artifacts,\n audit,\n };\n }\n\n // ─── Statistics ────────────────────────────────────────────────────────────\n\n getStats() {\n const tasksByStatus: Record<string, number> = {};\n for (const task of this.tasks.values()) {\n tasksByStatus[task.status] = (tasksByStatus[task.status] || 0) + 1;\n }\n\n const agentsByRole: Record<string, number> = {};\n for (const agent of this.agents.values()) {\n agentsByRole[agent.role] = (agentsByRole[agent.role] || 0) + 1;\n }\n\n return {\n tasks: { total: this.tasks.size, byStatus: tasksByStatus },\n agents: { total: this.agents.size, byRole: agentsByRole },\n };\n }\n\n // ─── Review Access ─────────────────────────────────────────────────────────\n\n getReviews(taskId?: string): Review[] {\n const reviews = Array.from(this.reviews.values());\n if (taskId) {\n return reviews.filter(r => r.taskId === taskId);\n }\n return reviews;\n }\n\n private setFinalApprovalGate(task: Task, gate: FinalApprovalGate, reason?: string): void {\n task.context = {\n ...task.context,\n finalApprovalGate: gate,\n ...(reason ? { finalGateReason: reason } : {}),\n };\n }\n\n private getFinalApprovalGate(task: Task): FinalApprovalGate | undefined {\n const gate = task.context.finalApprovalGate;\n if (gate === 'pending' || gate === 'approved' || gate === 'blocked') {\n return gate;\n }\n return undefined;\n }\n}\n","/**\n * BaselineOS Memory System\n * \n * Multi-scope persistent memory for AI agents.\n * \n * Scopes:\n * - Working: Per-request, cleared after each call (fastest)\n * - Session: Per-conversation, cleared on disconnect\n * - Long-term: Persists across sessions (SQLite)\n * - Shared: Visible across all agents and sessions\n * \n * @license Apache-2.0\n */\n\nimport { mkdirSync, existsSync } from 'fs';\nimport { join } from 'path';\nimport Database from 'better-sqlite3';\n\nexport type MemoryScope = 'working' | 'session' | 'long-term' | 'shared';\n\nexport interface MemoryConfig {\n persistPath: string;\n}\n\nexport interface StoreOptions {\n scope?: MemoryScope;\n sessionId?: string;\n ttl?: number;\n tags?: string[];\n taskId?: string;\n repo?: string;\n persona?: string;\n}\n\nexport interface RetrieveOptions {\n scope?: MemoryScope | 'all';\n sessionId?: string;\n taskId?: string;\n repo?: string;\n persona?: string;\n}\n\nexport interface MemoryEntry {\n key: string;\n value: unknown;\n scope: MemoryScope;\n sessionId?: string;\n taskId?: string;\n repo?: string;\n persona?: string;\n tags: string[];\n createdAt: number;\n updatedAt: number;\n expiresAt?: number;\n accessCount: number;\n}\n\nexport class MemorySystem {\n private config: MemoryConfig;\n private workingMemory: Map<string, MemoryEntry>;\n private sessionMemory: Map<string, Map<string, MemoryEntry>>;\n private longTermMemory: Map<string, MemoryEntry>;\n private sharedMemory: Map<string, MemoryEntry>;\n private db: InstanceType<typeof Database> | null = null;\n private initialized: boolean = false;\n\n constructor(config: Partial<MemoryConfig> = {}) {\n this.config = {\n persistPath: config.persistPath ?? '.baseline/memory',\n };\n this.workingMemory = new Map();\n this.sessionMemory = new Map();\n this.longTermMemory = new Map();\n this.sharedMemory = new Map();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n // Ensure persistence directory exists\n if (!existsSync(this.config.persistPath)) {\n mkdirSync(this.config.persistPath, { recursive: true });\n }\n\n // Initialize SQLite for long-term and shared memory\n const dbPath = join(this.config.persistPath, 'memory.db');\n this.db = new Database(dbPath);\n this.db.pragma('journal_mode = WAL');\n this.db.pragma('synchronous = NORMAL');\n\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS memory (\n storage_key TEXT PRIMARY KEY,\n key TEXT NOT NULL,\n value TEXT NOT NULL,\n scope TEXT NOT NULL,\n session_id TEXT,\n task_id TEXT,\n repo TEXT,\n persona TEXT,\n tags TEXT DEFAULT '[]',\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n expires_at INTEGER,\n access_count INTEGER DEFAULT 0\n );\n CREATE INDEX IF NOT EXISTS idx_memory_scope ON memory(scope);\n CREATE INDEX IF NOT EXISTS idx_memory_repo ON memory(repo);\n CREATE INDEX IF NOT EXISTS idx_memory_tags ON memory(tags);\n `);\n\n // Load persisted entries into memory maps\n const rows = this.db.prepare('SELECT * FROM memory').all() as Array<{\n storage_key: string;\n key: string;\n value: string;\n scope: string;\n session_id: string | null;\n task_id: string | null;\n repo: string | null;\n persona: string | null;\n tags: string;\n created_at: number;\n updated_at: number;\n expires_at: number | null;\n access_count: number;\n }>;\n\n for (const row of rows) {\n // Skip expired entries\n if (row.expires_at && row.expires_at < Date.now()) {\n this.db.prepare('DELETE FROM memory WHERE storage_key = ?').run(row.storage_key);\n continue;\n }\n\n const entry: MemoryEntry = {\n key: row.key,\n value: JSON.parse(row.value),\n scope: row.scope as MemoryScope,\n sessionId: row.session_id ?? undefined,\n taskId: row.task_id ?? undefined,\n repo: row.repo ?? undefined,\n persona: row.persona ?? undefined,\n tags: JSON.parse(row.tags),\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n expiresAt: row.expires_at ?? undefined,\n accessCount: row.access_count,\n };\n\n if (row.scope === 'long-term') {\n this.longTermMemory.set(row.storage_key, entry);\n } else if (row.scope === 'shared') {\n this.sharedMemory.set(row.storage_key, entry);\n }\n }\n\n this.initialized = true;\n }\n\n async store(key: string, value: unknown, options: StoreOptions = {}): Promise<void> {\n const scope = options.scope ?? 'session';\n const now = Date.now();\n const storageKey = this.buildStorageKey(key, options);\n \n const entry: MemoryEntry = {\n key,\n value,\n scope,\n sessionId: options.sessionId,\n taskId: options.taskId,\n repo: options.repo,\n persona: options.persona,\n tags: options.tags ?? [],\n createdAt: now,\n updatedAt: now,\n expiresAt: options.ttl ? now + options.ttl : undefined,\n accessCount: 0,\n };\n \n switch (scope) {\n case 'working':\n this.workingMemory.set(storageKey, entry);\n break;\n \n case 'session': {\n const sessionId = options.sessionId ?? 'default';\n if (!this.sessionMemory.has(sessionId)) {\n this.sessionMemory.set(sessionId, new Map());\n }\n this.sessionMemory.get(sessionId)!.set(storageKey, entry);\n break;\n }\n \n case 'long-term':\n this.longTermMemory.set(storageKey, entry);\n this.persistEntry(storageKey, entry);\n break;\n\n case 'shared':\n this.sharedMemory.set(storageKey, entry);\n this.persistEntry(storageKey, entry);\n break;\n }\n }\n\n async retrieve(key: string, options: RetrieveOptions = {}): Promise<unknown> {\n const scope = options.scope ?? 'all';\n const sessionId = options.sessionId ?? 'default';\n const storageKey = this.buildStorageKey(key, options);\n \n // Check each scope in order of priority\n const scopes = scope === 'all' \n ? ['working', 'session', 'long-term', 'shared'] as MemoryScope[]\n : [scope] as MemoryScope[];\n \n for (const s of scopes) {\n const entry = this.getFromScope(storageKey, s, sessionId);\n if (entry) {\n if (!this.matchesContext(entry, options)) {\n continue;\n }\n // Check expiration\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n await this.delete(key, { scope: s, sessionId, taskId: options.taskId, repo: options.repo, persona: options.persona });\n continue;\n }\n \n // Update access count\n entry.accessCount++;\n \n return entry.value;\n }\n }\n \n return undefined;\n }\n\n async delete(key: string, options: RetrieveOptions = {}): Promise<boolean> {\n const scope = options.scope ?? 'all';\n const sessionId = options.sessionId ?? 'default';\n const storageKey = this.buildStorageKey(key, options);\n \n let deleted = false;\n \n if (scope === 'all' || scope === 'working') {\n deleted = this.workingMemory.delete(storageKey) || deleted;\n }\n \n if (scope === 'all' || scope === 'session') {\n const session = this.sessionMemory.get(sessionId);\n if (session) {\n deleted = session.delete(storageKey) || deleted;\n }\n }\n \n if (scope === 'all' || scope === 'long-term') {\n deleted = this.longTermMemory.delete(storageKey) || deleted;\n }\n \n if (scope === 'all' || scope === 'shared') {\n deleted = this.sharedMemory.delete(storageKey) || deleted;\n }\n \n return deleted;\n }\n\n async search(query: { \n tags?: string[]; \n prefix?: string; \n scope?: MemoryScope;\n sessionId?: string;\n taskId?: string;\n repo?: string;\n persona?: string;\n }): Promise<MemoryEntry[]> {\n const results: MemoryEntry[] = [];\n const sessionId = query.sessionId ?? 'default';\n \n const checkEntry = (entry: MemoryEntry) => {\n if (query.prefix && !entry.key.startsWith(query.prefix)) {\n return false;\n }\n if (query.tags && !query.tags.every(t => entry.tags.includes(t))) {\n return false;\n }\n if (query.taskId && entry.taskId !== query.taskId) {\n return false;\n }\n if (query.repo && entry.repo !== query.repo) {\n return false;\n }\n if (query.persona && entry.persona !== query.persona) {\n return false;\n }\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n return false;\n }\n return true;\n };\n \n const scope = query.scope;\n \n if (!scope || scope === 'working') {\n for (const entry of this.workingMemory.values()) {\n if (checkEntry(entry)) results.push(entry);\n }\n }\n \n if (!scope || scope === 'session') {\n const session = this.sessionMemory.get(sessionId);\n if (session) {\n for (const entry of session.values()) {\n if (checkEntry(entry)) results.push(entry);\n }\n }\n }\n \n if (!scope || scope === 'long-term') {\n for (const entry of this.longTermMemory.values()) {\n if (checkEntry(entry)) results.push(entry);\n }\n }\n \n if (!scope || scope === 'shared') {\n for (const entry of this.sharedMemory.values()) {\n if (checkEntry(entry)) results.push(entry);\n }\n }\n \n return results;\n }\n\n clearWorking(): void {\n this.workingMemory.clear();\n }\n\n clearSession(sessionId: string = 'default'): void {\n this.sessionMemory.delete(sessionId);\n }\n\n async flush(): Promise<void> {\n if (!this.db) return;\n\n const upsert = this.db.prepare(`\n INSERT OR REPLACE INTO memory\n (storage_key, key, value, scope, session_id, task_id, repo, persona, tags, created_at, updated_at, expires_at, access_count)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const transaction = this.db.transaction(() => {\n for (const [storageKey, entry] of this.longTermMemory) {\n upsert.run(\n storageKey, entry.key, JSON.stringify(entry.value), entry.scope,\n entry.sessionId ?? null, entry.taskId ?? null, entry.repo ?? null, entry.persona ?? null,\n JSON.stringify(entry.tags), entry.createdAt, entry.updatedAt, entry.expiresAt ?? null, entry.accessCount\n );\n }\n for (const [storageKey, entry] of this.sharedMemory) {\n upsert.run(\n storageKey, entry.key, JSON.stringify(entry.value), entry.scope,\n entry.sessionId ?? null, entry.taskId ?? null, entry.repo ?? null, entry.persona ?? null,\n JSON.stringify(entry.tags), entry.createdAt, entry.updatedAt, entry.expiresAt ?? null, entry.accessCount\n );\n }\n });\n\n transaction();\n }\n\n close(): void {\n if (this.db) {\n this.db.close();\n this.db = null;\n }\n }\n\n private persistEntry(storageKey: string, entry: MemoryEntry): void {\n if (!this.db) return;\n\n this.db.prepare(`\n INSERT OR REPLACE INTO memory\n (storage_key, key, value, scope, session_id, task_id, repo, persona, tags, created_at, updated_at, expires_at, access_count)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `).run(\n storageKey, entry.key, JSON.stringify(entry.value), entry.scope,\n entry.sessionId ?? null, entry.taskId ?? null, entry.repo ?? null, entry.persona ?? null,\n JSON.stringify(entry.tags), entry.createdAt, entry.updatedAt, entry.expiresAt ?? null, entry.accessCount\n );\n }\n\n private getFromScope(key: string, scope: MemoryScope, sessionId: string): MemoryEntry | undefined {\n switch (scope) {\n case 'working':\n return this.workingMemory.get(key);\n case 'session':\n return this.sessionMemory.get(sessionId)?.get(key);\n case 'long-term':\n return this.longTermMemory.get(key);\n case 'shared':\n return this.sharedMemory.get(key);\n }\n }\n\n private buildStorageKey(\n key: string,\n options: { taskId?: string; repo?: string; persona?: string }\n ): string {\n const parts = [key];\n if (options.taskId) parts.push(`task:${options.taskId}`);\n if (options.repo) parts.push(`repo:${options.repo}`);\n if (options.persona) parts.push(`persona:${options.persona}`);\n return parts.join('|');\n }\n\n private matchesContext(entry: MemoryEntry, options: RetrieveOptions): boolean {\n if (options.taskId && entry.taskId !== options.taskId) return false;\n if (options.repo && entry.repo !== options.repo) return false;\n if (options.persona && entry.persona !== options.persona) return false;\n return true;\n }\n\n getStats() {\n let sessionCount = 0;\n for (const session of this.sessionMemory.values()) {\n sessionCount += session.size;\n }\n \n return {\n working: this.workingMemory.size,\n session: sessionCount,\n longTerm: this.longTermMemory.size,\n shared: this.sharedMemory.size,\n };\n }\n}\n","/**\n * BaselineOS Knowledge Indexer\n * \n * Indexes project knowledge for RAG retrieval with hierarchical compression.\n * \n * Key Innovation: Pre-computed compressions at 5 levels allow token-optimized\n * context loading. Request `summary` (100 tokens) instead of `full` (10K).\n * \n * @license Apache-2.0\n */\n\nimport { glob } from 'glob';\nimport { readFileSync, existsSync, statSync, writeFileSync } from 'fs';\nimport { join, extname, basename, dirname } from 'path';\nimport matter from 'gray-matter';\nimport { createHash } from 'crypto';\n\nexport type ContextLevel = 'oneliner' | 'summary' | 'working' | 'full' | 'expanded';\nexport type Overlay = 'org' | 'repo' | 'public';\nexport type Sensitivity = 'public' | 'internal' | 'restricted';\n\nexport interface RetrievalBudget {\n /** Max tokens allowed for retrieval context */\n maxTokens?: number;\n /** Max cost in USD (requires costPer1kTokensUsd) */\n maxCostUsd?: number;\n /** Cost per 1k tokens in USD */\n costPer1kTokensUsd?: number;\n}\n\nexport interface IndexerConfig {\n projectRoot: string;\n knowledgePaths: string[];\n indexPath: string;\n includePatterns?: string[];\n excludePatterns?: string[];\n repo?: string;\n defaultOverlay?: Overlay;\n defaultSensitivity?: Sensitivity;\n}\n\nexport interface SearchResult {\n id: string;\n title: string;\n content: string;\n score: number;\n source: string;\n tokenCount: number;\n type: DocumentType;\n repo?: string;\n overlay?: Overlay;\n sensitivity?: Sensitivity;\n}\n\nexport interface Context {\n content: string;\n tokenCount: number;\n source: string;\n level: ContextLevel;\n documents: string[];\n budget?: {\n maxTokens?: number;\n maxCostUsd?: number;\n costPer1kTokensUsd?: number;\n consumedTokens: number;\n consumedCostUsd?: number;\n };\n contract?: RetrievalContract;\n provenance?: Array<{\n id: string;\n source: string;\n repo?: string;\n overlay?: Overlay;\n sensitivity?: Sensitivity;\n hash?: string;\n }>;\n}\n\nexport interface RetrievalContract {\n claims: Array<{\n text: string;\n sourceId: string;\n confidence: number;\n }>;\n sources: Context['provenance'];\n confidence: number;\n}\n\ntype DocumentType = 'doc' | 'code' | 'config' | 'spec' | 'api';\n\ninterface IndexedDocument {\n id: string;\n title: string;\n content: string;\n tokenCount: number;\n source: string;\n type: DocumentType;\n hash: string;\n indexedAt: number;\n metadata: Record<string, unknown>;\n repo?: string;\n overlay?: Overlay;\n sensitivity?: Sensitivity;\n scopes?: string[];\n roles?: string[];\n \n // Pre-computed compressions\n compressions: {\n oneliner: string;\n summary: string;\n working: string;\n };\n}\n\n// Token estimation (rough approximation: 1 token ≈ 4 chars)\nfunction estimateTokens(text: string): number {\n return Math.ceil(text.length / 4);\n}\n\n// Content hashing for change detection\nfunction hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex').slice(0, 16);\n}\n\n// Determine document type from extension and path\nfunction determineType(filePath: string): DocumentType {\n const ext = extname(filePath).toLowerCase();\n const name = basename(filePath).toLowerCase();\n \n if (name.includes('spec') || name.includes('requirement')) return 'spec';\n if (name.includes('api') || name.includes('swagger') || name.includes('openapi')) return 'api';\n if (['.json', '.yaml', '.yml', '.toml'].includes(ext)) return 'config';\n if (['.md', '.mdx', '.txt', '.rst'].includes(ext)) return 'doc';\n return 'code';\n}\n\nfunction normalizeOverlay(value: unknown, fallback: Overlay): Overlay {\n if (value === 'org' || value === 'repo' || value === 'public') return value;\n return fallback;\n}\n\nfunction normalizeSensitivity(value: unknown, fallback: Sensitivity): Sensitivity {\n if (value === 'public' || value === 'internal' || value === 'restricted') return value;\n return fallback;\n}\n\nfunction toStringArray(value: unknown): string[] | undefined {\n if (Array.isArray(value)) {\n return value.map(v => String(v)).filter(Boolean);\n }\n if (typeof value === 'string') {\n return [value];\n }\n return undefined;\n}\n\nexport interface PolicyFilter {\n repo?: string[];\n overlays?: Overlay[];\n sensitivity?: Sensitivity;\n scopes?: string[];\n roles?: string[];\n}\n\nfunction sensitivityRank(level?: Sensitivity): number {\n switch (level) {\n case 'public': return 1;\n case 'internal': return 2;\n case 'restricted': return 3;\n default: return 3;\n }\n}\n\nfunction isDocAllowed(doc: IndexedDocument, policy?: PolicyFilter): boolean {\n if (!policy) return true;\n\n if (policy.repo && doc.repo && !policy.repo.includes(doc.repo)) return false;\n if (policy.overlays && doc.overlay && !policy.overlays.includes(doc.overlay)) return false;\n if (policy.sensitivity && doc.sensitivity) {\n if (sensitivityRank(doc.sensitivity) > sensitivityRank(policy.sensitivity)) return false;\n }\n if (policy.scopes && doc.scopes && doc.scopes.length > 0) {\n const ok = policy.scopes.some(s => doc.scopes!.includes(s));\n if (!ok) return false;\n }\n if (policy.roles && doc.roles && doc.roles.length > 0) {\n const ok = policy.roles.some(r => doc.roles!.includes(r));\n if (!ok) return false;\n }\n return true;\n}\n\n// Generate compressions at different levels\nfunction generateCompressions(content: string, title: string): {\n oneliner: string;\n summary: string;\n working: string;\n} {\n const lines = content.split('\\n').filter(l => l.trim());\n \n // Oneliner: First meaningful line or title (~20 tokens ≈ 80 chars)\n const firstLine = lines[0] || title;\n const oneliner = firstLine.slice(0, 80);\n\n // Summary: First paragraph or first 3 sentences (~100 tokens ≈ 400 chars)\n const firstParagraph = content.split(/\\n\\n/)[0] || '';\n const summary = firstParagraph.slice(0, 400);\n\n // Working: First section (~500 tokens ≈ 2000 chars)\n const sections = content.split(/^##?\\s+/m);\n const firstSection = sections.length > 1 ? sections[0] + sections[1] : content;\n const working = firstSection.slice(0, 2000);\n \n return { oneliner, summary, working };\n}\n\nexport class KnowledgeIndexer {\n private config: IndexerConfig;\n private documents: Map<string, IndexedDocument>;\n private initialized: boolean = false;\n private indexVersion: number = 1;\n\n constructor(config: Partial<IndexerConfig> = {}) {\n this.config = {\n projectRoot: config.projectRoot ?? process.cwd(),\n knowledgePaths: config.knowledgePaths ?? ['./docs', './knowledge'],\n indexPath: config.indexPath ?? '.baseline/index',\n includePatterns: config.includePatterns ?? [\n '**/*.md',\n '**/*.mdx',\n '**/*.ts',\n '**/*.tsx',\n '**/*.js',\n '**/*.py',\n '**/*.json',\n '**/*.yaml',\n '**/*.yml',\n ],\n excludePatterns: config.excludePatterns ?? [\n '**/node_modules/**',\n '**/dist/**',\n '**/.git/**',\n '**/coverage/**',\n '**/*.min.js',\n '**/*.map',\n ],\n repo: config.repo,\n defaultOverlay: config.defaultOverlay ?? 'repo',\n defaultSensitivity: config.defaultSensitivity ?? 'internal',\n };\n this.documents = new Map();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) return;\n \n // Try to load existing index\n const indexFile = join(this.config.indexPath, 'index.json');\n if (existsSync(indexFile)) {\n try {\n const data = JSON.parse(readFileSync(indexFile, 'utf-8'));\n if (data.version === this.indexVersion) {\n for (const doc of data.documents) {\n this.documents.set(doc.id, doc);\n }\n }\n } catch (err) {\n process.stderr.write(`[baseline:indexer] Index corrupted, rebuilding: ${(err as Error).message}\\n`);\n }\n }\n \n this.initialized = true;\n }\n\n async indexAll(): Promise<{ indexed: number; errors: number; skipped: number; changed: string[]; removed: string[] }> {\n let indexed = 0;\n let errors = 0;\n let skipped = 0;\n const changed: string[] = [];\n const removed: string[] = [];\n const seen = new Set<string>();\n\n for (const knowledgePath of this.config.knowledgePaths) {\n const fullPath = join(this.config.projectRoot, knowledgePath);\n \n if (!existsSync(fullPath)) {\n continue;\n }\n\n // Handle single file paths (like README.md)\n const stat = statSync(fullPath);\n if (stat.isFile()) {\n try {\n const result = await this.indexFile(fullPath, knowledgePath);\n seen.add(knowledgePath);\n if (result === 'indexed') indexed++;\n else if (result === 'skipped') skipped++;\n if (result === 'indexed') changed.push(knowledgePath);\n } catch (err) {\n process.stderr.write(`[baseline:indexer] Failed to index ${knowledgePath}: ${(err as Error).message}\\n`);\n errors++;\n }\n continue;\n }\n\n // Handle directories\n const files = await glob(this.config.includePatterns!, {\n cwd: fullPath,\n ignore: this.config.excludePatterns,\n nodir: true,\n });\n\n for (const file of files) {\n try {\n const filePath = join(fullPath, file);\n const result = await this.indexFile(filePath, `${knowledgePath}/${file}`);\n seen.add(`${knowledgePath}/${file}`);\n if (result === 'indexed') indexed++;\n else if (result === 'skipped') skipped++;\n if (result === 'indexed') changed.push(`${knowledgePath}/${file}`);\n } catch (err) {\n process.stderr.write(`[baseline:indexer] Failed to index ${knowledgePath}/${file}: ${(err as Error).message}\\n`);\n errors++;\n }\n }\n }\n\n // Remove documents that no longer exist\n for (const id of this.documents.keys()) {\n if (!seen.has(id)) {\n this.documents.delete(id);\n removed.push(id);\n }\n }\n\n // Persist index\n await this.persist({ changed, removed });\n\n return { indexed, errors, skipped, changed, removed };\n }\n\n private async indexFile(filePath: string, id: string): Promise<'indexed' | 'skipped' | 'error'> {\n const content = readFileSync(filePath, 'utf-8');\n const hash = hashContent(content);\n \n // Check if already indexed with same hash\n const existing = this.documents.get(id);\n if (existing && existing.hash === hash) {\n return 'skipped';\n }\n\n const ext = extname(filePath);\n let title = basename(filePath, ext);\n let processedContent = content;\n let metadata: Record<string, unknown> = {};\n \n // Extract frontmatter from markdown\n if (['.md', '.mdx'].includes(ext)) {\n try {\n const parsed = matter(content);\n title = (parsed.data.title as string) || title;\n processedContent = parsed.content;\n metadata = parsed.data;\n } catch {\n // Not valid frontmatter, use raw content\n }\n }\n\n const compressions = generateCompressions(processedContent, title);\n const repo = (metadata.repo as string) || this.config.repo || basename(this.config.projectRoot);\n const overlay = normalizeOverlay(metadata.overlay, this.config.defaultOverlay ?? 'repo');\n const sensitivity = normalizeSensitivity(\n metadata.sensitivity,\n this.config.defaultSensitivity ?? 'internal'\n );\n const scopes = toStringArray(metadata.scopes ?? metadata.scope);\n const roles = toStringArray(metadata.roles ?? metadata.role);\n\n const doc: IndexedDocument = {\n id,\n title,\n content: processedContent,\n tokenCount: estimateTokens(processedContent),\n source: filePath,\n type: determineType(filePath),\n hash,\n indexedAt: Date.now(),\n metadata,\n repo,\n overlay,\n sensitivity,\n scopes,\n roles,\n compressions,\n };\n\n this.documents.set(id, doc);\n return 'indexed';\n }\n\n async clear(): Promise<void> {\n this.documents.clear();\n }\n\n async search(query: string, options?: { \n limit?: number;\n types?: DocumentType[];\n policy?: PolicyFilter;\n }): Promise<SearchResult[]> {\n const limit = options?.limit ?? 5;\n const types = options?.types;\n const policy = options?.policy;\n \n const words = query.toLowerCase().split(/\\s+/).filter(w => w.length > 2);\n \n if (words.length === 0) {\n return [];\n }\n\n const results: SearchResult[] = [];\n\n for (const doc of this.documents.values()) {\n // Filter by type if specified\n if (types && !types.includes(doc.type)) {\n continue;\n }\n if (!isDocAllowed(doc, policy)) {\n continue;\n }\n\n const contentLower = doc.content.toLowerCase();\n const titleLower = doc.title.toLowerCase();\n \n let score = 0;\n for (const word of words) {\n // Title matches are worth more\n if (titleLower.includes(word)) score += 3;\n \n // Count occurrences in content\n const regex = new RegExp(word, 'gi');\n const matches = contentLower.match(regex);\n if (matches) score += Math.min(matches.length, 5);\n }\n\n if (score > 0) {\n results.push({\n id: doc.id,\n title: doc.title,\n content: doc.compressions.summary,\n score: score / words.length,\n source: doc.source,\n tokenCount: doc.tokenCount,\n type: doc.type,\n repo: doc.repo,\n overlay: doc.overlay,\n sensitivity: doc.sensitivity,\n });\n }\n }\n\n return results\n .sort((a, b) => b.score - a.score)\n .slice(0, limit);\n }\n\n async getContext(\n subject: string,\n level: ContextLevel = 'working',\n options?: {\n policy?: PolicyFilter;\n overlayOrder?: Overlay[];\n budget?: RetrievalBudget;\n }\n ): Promise<Context | null> {\n // Search for matching documents\n const results = await this.search(subject, { limit: 10, policy: options?.policy });\n \n if (results.length === 0) {\n return null;\n }\n\n return this.buildContextFromResults(results, level, options?.overlayOrder, options?.budget);\n }\n\n async getContextDelta(\n subject: string,\n level: ContextLevel = 'working',\n options?: {\n policy?: PolicyFilter;\n overlayOrder?: Overlay[];\n known?: Array<{ id: string; hash?: string }>;\n budget?: RetrievalBudget;\n }\n ): Promise<Context | null> {\n const results = await this.search(subject, { limit: 10, policy: options?.policy });\n if (results.length === 0) {\n return null;\n }\n\n const known = new Map<string, string | undefined>();\n for (const item of options?.known ?? []) {\n if (item?.id) known.set(item.id, item.hash);\n }\n\n const filtered = results.filter(result => {\n const doc = this.documents.get(result.id);\n if (!doc) return false;\n const knownHash = known.get(doc.id);\n return !knownHash || knownHash !== doc.hash;\n });\n\n if (filtered.length === 0) {\n return null;\n }\n\n return this.buildContextFromResults(filtered, level, options?.overlayOrder, options?.budget);\n }\n\n private buildContextFromResults(\n results: SearchResult[],\n level: ContextLevel,\n overlayOrder?: Overlay[],\n budget?: RetrievalBudget\n ): Context | null {\n // Build context based on level\n const contextParts: string[] = [];\n const documentIds: string[] = [];\n const provenance: Context['provenance'] = [];\n const claims: RetrievalContract['claims'] = [];\n let confidenceTotal = 0;\n let confidenceCount = 0;\n let totalTokens = 0;\n const levelMaxTokens = this.getMaxTokensForLevel(level);\n const maxTokens = typeof budget?.maxTokens === 'number'\n ? Math.min(levelMaxTokens, budget.maxTokens)\n : levelMaxTokens;\n const costPer1k = typeof budget?.costPer1kTokensUsd === 'number' ? budget.costPer1kTokensUsd : undefined;\n const maxCostUsd = typeof budget?.maxCostUsd === 'number' ? budget.maxCostUsd : undefined;\n const order = overlayOrder ?? ['org', 'repo', 'public'];\n\n const grouped = new Map<Overlay, SearchResult[]>();\n for (const result of results) {\n const overlay = result.overlay ?? 'repo';\n const list = grouped.get(overlay) ?? [];\n list.push(result);\n grouped.set(overlay, list);\n }\n\n for (const overlay of order) {\n const overlayResults = grouped.get(overlay) ?? [];\n for (const result of overlayResults) {\n const doc = this.documents.get(result.id);\n if (!doc) continue;\n\n let content: string;\n \n switch (level) {\n case 'oneliner':\n content = doc.compressions.oneliner;\n break;\n case 'summary':\n content = doc.compressions.summary;\n break;\n case 'working':\n content = doc.compressions.working;\n break;\n case 'full':\n content = doc.content;\n break;\n case 'expanded':\n // Include related documents\n content = doc.content;\n // TODO: Find and include related documents\n break;\n }\n\n const tokens = estimateTokens(content);\n if (totalTokens + tokens > maxTokens) {\n break;\n }\n if (maxCostUsd !== undefined && costPer1k !== undefined && costPer1k > 0) {\n const nextCost = ((totalTokens + tokens) / 1000) * costPer1k;\n if (nextCost > maxCostUsd) {\n break;\n }\n }\n\n\n contextParts.push(`## ${doc.title}\\n\\n${content}`);\n documentIds.push(doc.id);\n const claimConfidence = Math.max(0.1, Math.min(1, result.score ?? 0));\n claims.push({\n text: doc.compressions.oneliner || doc.title,\n sourceId: doc.id,\n confidence: claimConfidence,\n });\n confidenceTotal += claimConfidence;\n confidenceCount += 1;\n\n provenance.push({\n id: doc.id,\n source: doc.source,\n repo: doc.repo,\n overlay: doc.overlay,\n sensitivity: doc.sensitivity,\n hash: doc.hash,\n });\n totalTokens += tokens;\n }\n }\n\n if (contextParts.length === 0) {\n return null;\n }\n\n const consumedCostUsd =\n costPer1k !== undefined && costPer1k > 0\n ? (totalTokens / 1000) * costPer1k\n : undefined;\n\n const contract: RetrievalContract = {\n claims,\n sources: provenance,\n confidence: confidenceCount > 0 ? confidenceTotal / confidenceCount : 0.5,\n };\n\n return {\n content: contextParts.join('\\n\\n---\\n\\n'),\n tokenCount: totalTokens,\n source: results[0].source,\n level,\n documents: documentIds,\n budget: budget\n ? {\n maxTokens: budget.maxTokens ?? levelMaxTokens,\n maxCostUsd,\n costPer1kTokensUsd: costPer1k,\n consumedTokens: totalTokens,\n consumedCostUsd,\n }\n : undefined,\n contract,\n provenance,\n };\n }\n\n getDocument(id: string): IndexedDocument | undefined {\n return this.documents.get(id);\n }\n\n private getMaxTokensForLevel(level: ContextLevel): number {\n switch (level) {\n case 'oneliner': return 20;\n case 'summary': return 100;\n case 'working': return 500;\n case 'full': return 10000;\n case 'expanded': return 50000;\n }\n }\n\n private async persist(changes?: { changed: string[]; removed: string[] }): Promise<void> {\n const indexFile = join(this.config.indexPath, 'index.json');\n const changesFile = join(this.config.indexPath, 'changes.json');\n const data = {\n version: this.indexVersion,\n createdAt: Date.now(),\n documents: Array.from(this.documents.values()),\n };\n \n try {\n const { mkdirSync } = await import('fs');\n mkdirSync(dirname(indexFile), { recursive: true });\n writeFileSync(indexFile, JSON.stringify(data));\n if (changes) {\n writeFileSync(changesFile, JSON.stringify({\n updatedAt: Date.now(),\n changed: changes.changed,\n removed: changes.removed,\n }));\n }\n } catch (err) {\n process.stderr.write(`[baseline:indexer] Index persistence failed: ${(err as Error).message}\\n`);\n }\n }\n\n getStats() {\n const typeCount: Record<string, number> = {};\n let totalCompressions = 0;\n \n for (const doc of this.documents.values()) {\n typeCount[doc.type] = (typeCount[doc.type] || 0) + 1;\n if (doc.compressions) totalCompressions += 3;\n }\n\n return {\n documents: this.documents.size,\n types: Object.keys(typeCount).length,\n compressions: totalCompressions,\n byType: typeCount,\n };\n }\n}\n","/**\n * BaselineOS Semantic Cache\n * \n * Token-optimized caching with semantic similarity matching.\n * \n * Key Innovation: Similar queries hit cache even if not identical.\n * \"How do I authenticate?\" matches \"authentication process\" at 92% similarity.\n * \n * @license Apache-2.0\n */\n\nimport { LRUCache } from 'lru-cache';\nimport { createHash } from 'crypto';\n\nexport interface CacheConfig {\n ttl: number;\n maxSize: number;\n similarityThreshold: number;\n}\n\ninterface CacheEntry<T = unknown> {\n key: string;\n value: T;\n embedding?: number[];\n createdAt: number;\n hits: number;\n tokensSaved: number;\n}\n\n// Simple hash for exact matching\nfunction hashKey(key: string): string {\n return createHash('sha256').update(key.toLowerCase().trim()).digest('hex').slice(0, 32);\n}\n\n// Simple word-based similarity (placeholder for embedding-based)\nfunction calculateSimilarity(a: string, b: string): number {\n const wordsA = new Set(a.toLowerCase().split(/\\s+/).filter(w => w.length > 2));\n const wordsB = new Set(b.toLowerCase().split(/\\s+/).filter(w => w.length > 2));\n \n if (wordsA.size === 0 || wordsB.size === 0) return 0;\n \n let intersection = 0;\n for (const word of wordsA) {\n if (wordsB.has(word)) intersection++;\n }\n \n const union = wordsA.size + wordsB.size - intersection;\n return intersection / union;\n}\n\nexport class SemanticCache {\n private exactCache: LRUCache<string, CacheEntry>;\n private semanticIndex: Map<string, CacheEntry>;\n private config: CacheConfig;\n private stats: {\n hits: number;\n misses: number;\n semanticHits: number;\n tokensSaved: number;\n };\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.config = {\n ttl: config.ttl ?? 86400000, // 24 hours\n maxSize: config.maxSize ?? 10000,\n similarityThreshold: config.similarityThreshold ?? 0.92,\n };\n\n this.exactCache = new LRUCache<string, CacheEntry>({\n max: this.config.maxSize,\n ttl: this.config.ttl,\n });\n\n this.semanticIndex = new Map();\n\n this.stats = { \n hits: 0, \n misses: 0, \n semanticHits: 0,\n tokensSaved: 0,\n };\n }\n\n /**\n * Get value from cache.\n * Tries exact match first, then semantic similarity.\n */\n async get<T>(key: string): Promise<T | null> {\n const hash = hashKey(key);\n \n // Try exact match first\n const exactEntry = this.exactCache.get(hash);\n if (exactEntry) {\n exactEntry.hits++;\n this.stats.hits++;\n this.stats.tokensSaved += exactEntry.tokensSaved;\n return exactEntry.value as T;\n }\n\n // Try semantic match\n const semanticMatch = this.findSemanticMatch(key);\n if (semanticMatch) {\n semanticMatch.hits++;\n this.stats.hits++;\n this.stats.semanticHits++;\n this.stats.tokensSaved += semanticMatch.tokensSaved;\n return semanticMatch.value as T;\n }\n\n this.stats.misses++;\n return null;\n }\n\n /**\n * Store value in cache.\n */\n async set<T>(key: string, value: T, options?: { tokensSaved?: number }): Promise<void> {\n const hash = hashKey(key);\n \n const entry: CacheEntry<T> = {\n key,\n value,\n createdAt: Date.now(),\n hits: 0,\n tokensSaved: options?.tokensSaved ?? 0,\n };\n\n this.exactCache.set(hash, entry as CacheEntry);\n this.semanticIndex.set(hash, entry as CacheEntry);\n }\n\n /**\n * Find semantically similar cached entry.\n */\n private findSemanticMatch(query: string): CacheEntry | null {\n let bestMatch: CacheEntry | null = null;\n let bestScore = 0;\n\n for (const entry of this.semanticIndex.values()) {\n const similarity = calculateSimilarity(query, entry.key);\n \n if (similarity >= this.config.similarityThreshold && similarity > bestScore) {\n bestScore = similarity;\n bestMatch = entry;\n }\n }\n\n return bestMatch;\n }\n\n /**\n * Check if key exists (exact match only).\n */\n has(key: string): boolean {\n return this.exactCache.has(hashKey(key));\n }\n\n /**\n * Delete entry.\n */\n delete(key: string): boolean {\n const hash = hashKey(key);\n this.semanticIndex.delete(hash);\n return this.exactCache.delete(hash);\n }\n\n /**\n * Clear all entries.\n */\n clear(): void {\n this.exactCache.clear();\n this.semanticIndex.clear();\n this.stats = { hits: 0, misses: 0, semanticHits: 0, tokensSaved: 0 };\n }\n\n /**\n * Get cache statistics.\n */\n getStats() {\n const total = this.stats.hits + this.stats.misses;\n return {\n size: this.exactCache.size,\n hits: this.stats.hits,\n misses: this.stats.misses,\n semanticHits: this.stats.semanticHits,\n hitRate: total > 0 ? this.stats.hits / total : 0,\n tokensSaved: this.stats.tokensSaved,\n };\n }\n\n /**\n * Prune old entries.\n */\n prune(): number {\n // LRU cache handles TTL eviction automatically, but the semantic index\n // can drift out of sync. Prune stale entries from the semantic index.\n let pruned = 0;\n for (const [hash] of this.semanticIndex) {\n if (!this.exactCache.has(hash)) {\n this.semanticIndex.delete(hash);\n pruned++;\n }\n }\n return pruned;\n }\n}\n","/**\n * Prompt Loader — SIGNAL-035\n *\n * Loads versioned agent system prompts from\n * `packages/baselineos/prompts/{role}/system.md` (and\n * `prompts/personas/{name}.md` for executor personas).\n *\n * Each prompt file carries YAML front matter:\n * version, agent, updated, changelog[]\n *\n * Falls back to the provided inline string when the file is absent,\n * enabling safe staged migration without breaking existing deployments.\n *\n * @license Apache-2.0\n */\n\nimport { readFileSync, existsSync, readdirSync } from 'fs';\nimport { resolve, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface PromptMeta {\n version: string;\n agent: string;\n persona?: string;\n updated: string;\n changelog: string[];\n}\n\nexport interface LoadedPrompt {\n meta: PromptMeta;\n text: string;\n /** Absolute path the prompt was loaded from */\n source: string;\n}\n\n// ─── Paths ────────────────────────────────────────────────────────────────────\n\n// Resolve the prompts root relative to this source file:\n// src/core/prompt-loader.ts → ../../prompts\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst PROMPTS_ROOT = resolve(__dirname, '../../prompts');\n\n// ─── Parser ───────────────────────────────────────────────────────────────────\n\n/**\n * Minimal YAML front-matter parser.\n * Handles string scalars and inline arrays (`- item`) only —\n * sufficient for our front matter schema.\n */\nfunction parseFrontMatter(raw: string): { meta: PromptMeta; body: string } {\n const fence = '---';\n const firstFence = raw.indexOf(fence);\n const secondFence = raw.indexOf(fence, firstFence + fence.length);\n\n if (firstFence === -1 || secondFence === -1) {\n return {\n meta: { version: '0.0.0', agent: 'unknown', updated: '', changelog: [] },\n body: raw.trim(),\n };\n }\n\n const yamlBlock = raw.slice(firstFence + fence.length, secondFence).trim();\n const body = raw.slice(secondFence + fence.length).trim();\n\n const meta: Record<string, unknown> & { changelog: string[] } = { changelog: [] };\n let inChangelog = false;\n\n for (const line of yamlBlock.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n\n if (trimmed.startsWith('- ') && inChangelog) {\n meta.changelog.push(trimmed.slice(2).replace(/^\"(.*)\"$/, '$1'));\n continue;\n }\n\n inChangelog = false;\n const colonIdx = trimmed.indexOf(':');\n if (colonIdx === -1) continue;\n\n const key = trimmed.slice(0, colonIdx).trim();\n const value = trimmed.slice(colonIdx + 1).trim().replace(/^\"(.*)\"$/, '$1');\n\n if (key === 'changelog') { inChangelog = true; continue; }\n meta[key] = value;\n }\n\n return {\n meta: {\n version: (meta['version'] as string) ?? '0.0.0',\n agent: (meta['agent'] as string) ?? 'unknown',\n ...(meta['persona'] !== undefined ? { persona: meta['persona'] as string } : {}),\n updated: (meta['updated'] as string) ?? '',\n changelog: meta.changelog,\n },\n body,\n };\n}\n\n// ─── Loader ───────────────────────────────────────────────────────────────────\n\n/**\n * Load a role-level system prompt (verifier, supervisor, quality, planner).\n *\n * Returns `null` when the file is absent — callers should fall back to their\n * embedded inline strings.\n */\nexport function loadRolePrompt(role: string): LoadedPrompt | null {\n const path = resolve(PROMPTS_ROOT, role, 'system.md');\n if (!existsSync(path)) return null;\n\n const raw = readFileSync(path, 'utf8');\n const { meta, body } = parseFrontMatter(raw);\n return { meta, text: body, source: path };\n}\n\n/**\n * Load a named executor persona prompt from `prompts/personas/{name}.md`.\n *\n * Returns `null` when the file is absent.\n */\nexport function loadPersonaPrompt(name: string): LoadedPrompt | null {\n const path = resolve(PROMPTS_ROOT, 'personas', `${name}.md`);\n if (!existsSync(path)) return null;\n\n const raw = readFileSync(path, 'utf8');\n const { meta, body } = parseFrontMatter(raw);\n return { meta, text: body, source: path };\n}\n\n/**\n * Load all persona prompts from `prompts/personas/`.\n * Returns a map of `{ name → LoadedPrompt }` for every `.md` file found.\n */\nexport function loadAllPersonas(): Map<string, LoadedPrompt> {\n const personasDir = resolve(PROMPTS_ROOT, 'personas');\n const result = new Map<string, LoadedPrompt>();\n\n if (!existsSync(personasDir)) return result;\n\n const files = readdirSync(personasDir).filter((f) => f.endsWith('.md'));\n for (const file of files) {\n const name = file.replace(/\\.md$/, '');\n const loaded = loadPersonaPrompt(name);\n if (loaded) result.set(name, loaded);\n }\n\n return result;\n}\n","/**\n * Execution Engine — Real LLM integration for BaselineOS Orchestrator\n *\n * Replaces mock functions with real Anthropic SDK calls.\n * Provides: task execution, self-verification, supervisor review,\n * task decomposition, and compliance gating.\n *\n * @license Apache-2.0\n */\n\nimport Anthropic from '@anthropic-ai/sdk';\nimport type { MessageParam, ContentBlock, ToolUseBlock, ToolResultBlockParam, Tool } from '@anthropic-ai/sdk/resources/messages.js';\nimport type { LlmTracer } from './llm-tracer.js';\nimport type { AgentBus } from './agent-bus.js';\nimport type { ModelVersionRegistry } from './model-version-registry.js';\nimport { loadRolePrompt, loadAllPersonas } from './prompt-loader.js';\nimport { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { execSync } from 'child_process';\nimport { globSync } from 'glob';\nimport type {\n Task,\n ExecutionStep,\n VerificationResult,\n Review,\n ReviewFinding,\n Artifact,\n} from './types.js';\n\n// ─── Interface ──────────────────────────────────────────────────────────────\n\nexport interface ExecutionEngine {\n /** Execute a task or step — the core LLM call */\n execute(task: Task, step?: ExecutionStep): Promise<ExecutionResult>;\n\n /** Agent verifies its own output against acceptance criteria */\n selfVerify(task: Task, output: string): Promise<VerificationResult>;\n\n /** Supervisor or quality agent reviews task output */\n conductReview(\n task: Task,\n output: string,\n reviewType: 'supervisor' | 'quality'\n ): Promise<Review>;\n\n /** Decompose a complex task into subtask descriptions */\n decompose(task: Task): Promise<DecompositionResult>;\n}\n\nexport interface ExecutionResult {\n output: string;\n tokensUsed: number;\n duration: number;\n artifacts: Artifact[];\n model: string;\n compliance: ComplianceResult;\n}\n\nexport interface DecompositionResult {\n phases: Array<{\n title: string;\n description: string;\n capabilities: string[];\n }>;\n estimatedComplexity: Task['complexity'];\n rationale: string;\n}\n\nexport interface ComplianceResult {\n passed: boolean;\n violations: ComplianceViolation[];\n warnings: ComplianceViolation[];\n score: number;\n}\n\nexport interface ComplianceViolation {\n principleId: string;\n name: string;\n severity: 'blocking' | 'warning';\n evidence: string;\n line?: number;\n}\n\n// ─── Agent Loop Tools ────────────────────────────────────────────────────────\n\n/** Tool executor — injectable for sandboxed or remote execution environments */\nexport interface ToolExecutor {\n readFile(path: string): string;\n writeFile(path: string, content: string): void;\n listFiles(pattern: string, cwd?: string): string[];\n searchCode(query: string, cwd?: string, glob?: string): string;\n runCommand(command: string, cwd?: string, timeout?: number): { stdout: string; stderr: string; exitCode: number };\n}\n\n/** Default filesystem-based tool executor */\nclass LocalToolExecutor implements ToolExecutor {\n private projectRoot: string;\n\n constructor(projectRoot: string) {\n this.projectRoot = projectRoot;\n }\n\n readFile(filePath: string): string {\n const resolved = this.resolve(filePath);\n return readFileSync(resolved, 'utf-8');\n }\n\n writeFile(filePath: string, content: string): void {\n const resolved = this.resolve(filePath);\n const dir = dirname(resolved);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(resolved, content, 'utf-8');\n }\n\n listFiles(pattern: string, cwd?: string): string[] {\n return globSync(pattern, { cwd: cwd ?? this.projectRoot, nodir: true }).slice(0, 100);\n }\n\n searchCode(query: string, cwd?: string, fileGlob?: string): string {\n const args = ['--no-heading', '--line-number', '--max-count=50'];\n if (fileGlob) args.push('--glob', fileGlob);\n args.push('--', query, cwd ?? this.projectRoot);\n try {\n return execSync(`rg ${args.map(a => JSON.stringify(a)).join(' ')}`, {\n encoding: 'utf-8',\n timeout: 10000,\n maxBuffer: 512 * 1024,\n }).slice(0, 8000);\n } catch {\n return 'No matches found.';\n }\n }\n\n runCommand(command: string, cwd?: string, timeout = 30000): { stdout: string; stderr: string; exitCode: number } {\n // Security: allowlist of safe command prefixes\n const allowed = ['pnpm', 'npm', 'npx', 'node', 'tsc', 'vitest', 'git', 'rg', 'grep', 'cat', 'head', 'tail', 'ls', 'find', 'wc', 'echo', 'diff', 'test'];\n const firstToken = command.trim().split(/\\s+/)[0];\n if (!firstToken || !allowed.includes(firstToken)) {\n return { stdout: '', stderr: `Blocked: command '${firstToken}' not in allowlist`, exitCode: 1 };\n }\n\n // Secondary blocklist for dangerous patterns regardless of prefix\n const blocked = ['rm -rf', 'rm -r /', '--no-preserve-root', '> /dev', 'dd if=', 'mkfs', ':(){', '| sh', '| bash', '$(', '`'];\n if (blocked.some(b => command.includes(b))) {\n return { stdout: '', stderr: 'Blocked: dangerous command pattern', exitCode: 1 };\n }\n\n try {\n const stdout = execSync(command, {\n cwd: cwd ?? this.projectRoot,\n encoding: 'utf-8',\n timeout,\n maxBuffer: 1024 * 1024,\n env: { ...process.env, NODE_ENV: 'production' },\n });\n return { stdout: stdout.slice(0, 10000), stderr: '', exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? '').slice(0, 5000),\n stderr: (e.stderr ?? '').slice(0, 5000),\n exitCode: e.status ?? 1,\n };\n }\n }\n\n private resolve(filePath: string): string {\n if (filePath.startsWith('/')) return filePath;\n return join(this.projectRoot, filePath);\n }\n}\n\nconst AGENT_TOOLS: Tool[] = [\n {\n name: 'read_file',\n description: 'Read the contents of a file. Use this to understand existing code before making changes.',\n input_schema: {\n type: 'object' as const,\n properties: {\n path: { type: 'string', description: 'File path (relative to project root or absolute)' },\n },\n required: ['path'],\n },\n },\n {\n name: 'write_file',\n description: 'Write content to a file. Creates parent directories if needed. Use this to create or overwrite files.',\n input_schema: {\n type: 'object' as const,\n properties: {\n path: { type: 'string', description: 'File path (relative to project root or absolute)' },\n content: { type: 'string', description: 'Full file content to write' },\n },\n required: ['path', 'content'],\n },\n },\n {\n name: 'list_files',\n description: 'List files matching a glob pattern. Returns up to 100 file paths.',\n input_schema: {\n type: 'object' as const,\n properties: {\n pattern: { type: 'string', description: 'Glob pattern (e.g., \"src/**/*.ts\", \"*.json\")' },\n cwd: { type: 'string', description: 'Working directory for the pattern (defaults to project root)' },\n },\n required: ['pattern'],\n },\n },\n {\n name: 'search_code',\n description: 'Search for text/regex patterns in code files using ripgrep. Returns matching lines with file paths and line numbers.',\n input_schema: {\n type: 'object' as const,\n properties: {\n query: { type: 'string', description: 'Search query (regex supported)' },\n glob: { type: 'string', description: 'File glob filter (e.g., \"*.ts\")' },\n cwd: { type: 'string', description: 'Search directory (defaults to project root)' },\n },\n required: ['query'],\n },\n },\n {\n name: 'run_command',\n description: 'Run a shell command. Use for: running tests, building, linting, git operations. Timeout: 30s.',\n input_schema: {\n type: 'object' as const,\n properties: {\n command: { type: 'string', description: 'Shell command to execute' },\n cwd: { type: 'string', description: 'Working directory (defaults to project root)' },\n },\n required: ['command'],\n },\n },\n {\n name: 'task_complete',\n description: 'Signal that the task is complete. Provide a summary of what was done.',\n input_schema: {\n type: 'object' as const,\n properties: {\n summary: { type: 'string', description: 'Summary of what was accomplished' },\n files_changed: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of files created or modified',\n },\n },\n required: ['summary'],\n },\n },\n];\n\n// ─── Compliance Gate (12 Architectural Principles) ──────────────────────────\n\nconst PRINCIPLE_CHECKS: Array<{\n id: string;\n name: string;\n severity: 'blocking' | 'warning';\n patterns: RegExp[];\n}> = [\n {\n id: 'P1',\n name: 'Package Structure',\n severity: 'blocking',\n patterns: [/import\\s+.*from\\s+['\"]\\.\\.\\/.*\\/src\\//, /require\\(['\"]\\.\\.\\/.*\\/src\\//],\n },\n {\n id: 'P2',\n name: 'Type Safety',\n severity: 'blocking',\n patterns: [/:\\s*any\\b(?!\\s*\\/\\/\\s*eslint)/, /as\\s+any\\b/, /JSON\\.parse\\([^)]+\\)(?!\\s*as\\b)/],\n },\n {\n id: 'P3',\n name: 'Testing/Quality',\n severity: 'warning',\n patterns: [/(?:export\\s+(?:class|function)\\s+\\w+)(?!.*\\.test\\.|.*\\.spec\\.|.*__tests__)/, /TODO:\\s*add\\s+tests?/i],\n },\n {\n id: 'P4',\n name: 'Composability',\n severity: 'blocking',\n patterns: [/\\bgetInstance\\(\\)/, /\\bglobal\\.\\w+\\s*=/],\n },\n {\n id: 'P5',\n name: 'AI-Native',\n severity: 'blocking',\n patterns: [/console\\.log\\(/, /console\\.info\\(/, /console\\.debug\\(/],\n },\n {\n id: 'P6',\n name: 'Asset Abstraction',\n severity: 'blocking',\n patterns: [\n /===?\\s*['\"]gold['\"]/i,\n /===?\\s*['\"]silver['\"]/i,\n /===?\\s*['\"]tantalite['\"]/i,\n /===?\\s*['\"]lithium['\"]/i,\n /===?\\s*['\"]cobalt['\"]/i,\n /===?\\s*['\"]zimbabwe['\"]/i,\n /===?\\s*['\"]zw['\"]/i,\n ],\n },\n {\n id: 'P7',\n name: 'Documentation',\n severity: 'warning',\n patterns: [\n /export\\s+(?:function|class|const|interface)\\s+\\w+[^}]*(?<!\\*\\/\\s*\\n)\\s*(?:function|class|const|interface)/,\n ],\n },\n {\n id: 'P8',\n name: 'Offline-First',\n severity: 'blocking',\n patterns: [/await\\s+fetch\\(/, /\\.then\\(\\s*(?:response|res)\\s*=>/],\n },\n {\n id: 'P9',\n name: 'Security',\n severity: 'blocking',\n patterns: [\n /innerHTML\\s*=/,\n /dangerouslySetInnerHTML/,\n /eval\\(/,\n /new\\s+Function\\(/,\n /\\$\\{.*\\}\\s*(?:INSERT|UPDATE|DELETE|SELECT)/i,\n ],\n },\n {\n id: 'P10',\n name: 'API Stability',\n severity: 'blocking',\n patterns: [/app\\.(?:get|post|put|delete|patch)\\(['\"]\\/(?!v\\d)/],\n },\n {\n id: 'P11',\n name: 'Data Migration Safety',\n severity: 'blocking',\n patterns: [\n /DROP\\s+TABLE/i,\n /TRUNCATE\\s+TABLE/i,\n /ALTER\\s+TABLE\\s+\\w+\\s+DROP\\s+COLUMN/i,\n /DELETE\\s+FROM\\s+\\w+\\s*(?:;|$)/i,\n /\\.destroy\\(\\s*\\{\\s*where\\s*:\\s*\\{\\s*\\}\\s*\\}\\s*\\)/,\n ],\n },\n {\n id: 'P12',\n name: 'Governance Compliance',\n severity: 'blocking',\n patterns: [\n /skipGovernance|bypassAudit|noAudit/i,\n /audit\\s*=\\s*false/i,\n /governance.*disable/i,\n ],\n },\n];\n\nconst MOBILE_INDICATORS = ['watermelondb', 'react-native', '7-mobile', 'offline', 'sync queue'];\n\nexport function runComplianceGate(output: string, isMobile = false): ComplianceResult {\n const violations: ComplianceViolation[] = [];\n const warnings: ComplianceViolation[] = [];\n\n const actuallyMobile =\n isMobile || MOBILE_INDICATORS.some((i) => output.toLowerCase().includes(i));\n\n const lines = output.split('\\n');\n\n for (const check of PRINCIPLE_CHECKS) {\n if (check.id === 'P8' && !actuallyMobile) continue;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? '';\n for (const pattern of check.patterns) {\n if (pattern.test(line)) {\n const violation: ComplianceViolation = {\n principleId: check.id,\n name: check.name,\n severity: check.severity,\n evidence: `Line ${i + 1}: ${line.trim().slice(0, 120)}`,\n line: i + 1,\n };\n\n if (check.severity === 'blocking') {\n violations.push(violation);\n } else {\n warnings.push(violation);\n }\n break;\n }\n }\n }\n }\n\n const totalChecks = PRINCIPLE_CHECKS.length;\n const failedChecks = new Set(violations.map((v) => v.principleId)).size;\n const score = (totalChecks - failedChecks) / totalChecks;\n\n return { passed: violations.length === 0, violations, warnings, score };\n}\n\n// ─── Anthropic Engine ───────────────────────────────────────────────────────\n\nexport interface AnthropicEngineConfig {\n apiKey?: string;\n model?: string;\n maxTokens?: number;\n temperature?: number;\n /** System prompt prefix injected before task-specific context */\n systemPrefix?: string;\n /** Agent persona definitions keyed by capability/domain */\n personas?: Record<string, string>;\n /** Enable agentic tool-use loop (Ralph/AMP pattern) */\n agentLoop?: boolean;\n /** Max tool-use iterations before forcing completion */\n maxIterations?: number;\n /** Max total tokens across all iterations */\n maxTotalTokens?: number;\n /** Project root for file operations in agent loop */\n projectRoot?: string;\n /** Custom tool executor (defaults to local filesystem) */\n toolExecutor?: ToolExecutor;\n /**\n * LLM tracer for Langfuse prompt observability (SIGNAL-014).\n * When provided, every messages.create call is logged with token usage,\n * latency, and input/output under the task's trace ID.\n */\n llmTracer?: LlmTracer;\n /**\n * Fallback model routing config (SIGNAL-022).\n * When configured, LLM calls that exceed timeoutMs or fail with an API\n * error automatically retry against fallbackModel.\n * A governance:model-fallback event is published to the bus on activation.\n */\n routing?: {\n /** Fallback model ID, e.g. 'claude-haiku-4-5-20251001' */\n fallbackModel: string;\n /** Timeout in ms before fallback activates (default: 30_000) */\n timeoutMs?: number;\n /** Max fallback retries (default: 1) */\n maxRetries?: number;\n };\n /**\n * AgentBus for publishing governance events (model fallback, etc).\n * Required to emit governance:model-fallback events.\n */\n bus?: AgentBus;\n /**\n * ModelVersionRegistry for task-level model attribution (SIGNAL-049).\n * When provided, each execute() call records which model handled the task.\n */\n modelRegistry?: ModelVersionRegistry;\n}\n\nexport class AnthropicEngine implements ExecutionEngine {\n private client: Anthropic;\n private model: string;\n private maxTokens: number;\n private temperature: number;\n private systemPrefix: string;\n private personas: Record<string, string>;\n private agentLoop: boolean;\n private maxIterations: number;\n private maxTotalTokens: number;\n private toolExecutor: ToolExecutor | null;\n private llmTracer: LlmTracer | null;\n private routing: Required<NonNullable<AnthropicEngineConfig['routing']>> | null;\n private bus: AgentBus | null;\n private modelRegistry: ModelVersionRegistry | null;\n // Track current task ID for fallback event metadata\n private _currentTaskId: string | undefined;\n // Versioned prompts loaded from prompts/ at construction time (SIGNAL-035)\n private _verifierPrompt: string;\n private _supervisorPrompt: string;\n private _qualityPrompt: string;\n private _plannerPrompt: string;\n\n constructor(config: AnthropicEngineConfig = {}) {\n this.client = new Anthropic({\n apiKey: config.apiKey ?? process.env.ANTHROPIC_API_KEY,\n });\n this.model = config.model ?? 'claude-sonnet-4-6';\n this.maxTokens = config.maxTokens ?? 8000;\n this.temperature = config.temperature ?? 0.3;\n this.systemPrefix = config.systemPrefix ?? '';\n\n // Load versioned role prompts; fall back to inline defaults when absent (SIGNAL-035)\n this._verifierPrompt = loadRolePrompt('verifier')?.text ??\n `You are a verification agent. Evaluate whether the output meets the acceptance criteria.\\nRespond with a JSON object: { \"passed\": boolean, \"confidence\": number (0-1), \"details\": string, \"findings\": [{ \"criterion\": string, \"met\": boolean, \"evidence\": string }] }\\nBe strict. Only pass if all criteria are genuinely met.`;\n this._supervisorPrompt = loadRolePrompt('supervisor')?.text ??\n `You are a supervisor agent reviewing work for correctness, completeness, and adherence to requirements. Be thorough but fair.`;\n this._qualityPrompt = loadRolePrompt('quality')?.text ??\n `You are a quality agent performing a spot-check for code quality, security, and architectural compliance. Flag any GTCX principle violations.`;\n this._plannerPrompt = loadRolePrompt('planner')?.text ??\n `You are a task decomposition agent. Break complex tasks into sequential phases.\\nRespond with a JSON object: { \"phases\": [{ \"title\": string, \"description\": string, \"capabilities\": [string] }], \"estimatedComplexity\": \"trivial\" | \"simple\" | \"moderate\" | \"complex\" | \"epic\", \"rationale\": string }\\nEach phase should be independently verifiable. Order matters — later phases depend on earlier ones.`;\n\n // Build personas: file-based personas override the defaults (SIGNAL-035)\n const filePersonas: Record<string, string> = {};\n for (const [name, loaded] of loadAllPersonas()) {\n filePersonas[name] = loaded.text;\n }\n this.personas = config.personas ?? { ...DEFAULT_PERSONAS, ...filePersonas };\n\n this.agentLoop = config.agentLoop ?? false;\n this.maxIterations = config.maxIterations ?? 50;\n this.maxTotalTokens = config.maxTotalTokens ?? 500000;\n this.toolExecutor = config.toolExecutor ??\n (config.projectRoot ? new LocalToolExecutor(config.projectRoot) : null);\n this.llmTracer = config.llmTracer ?? null;\n this.routing = config.routing\n ? { fallbackModel: config.routing.fallbackModel, timeoutMs: config.routing.timeoutMs ?? 30_000, maxRetries: config.routing.maxRetries ?? 1 }\n : null;\n this.bus = config.bus ?? null;\n this.modelRegistry = config.modelRegistry ?? null;\n }\n\n /**\n * Wraps an Anthropic messages.create call with timeout + fallback model.\n * When routing is not configured, calls the primary directly.\n * On timeout or API error, retries up to maxRetries times using fallbackModel.\n * Publishes governance:model-fallback to the bus on activation.\n */\n private async callWithFallback(\n params: Parameters<Anthropic['messages']['create']>[0],\n ): Promise<Anthropic.Message> {\n if (!this.routing) {\n return this.client.messages.create(params) as Promise<Anthropic.Message>;\n }\n\n const { fallbackModel, timeoutMs, maxRetries } = this.routing;\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const model = attempt === 0 ? params.model : fallbackModel;\n const isFallback = attempt > 0;\n\n try {\n const callPromise = (this.client.messages.create({ ...params, model }) as Promise<Anthropic.Message>);\n\n const timeoutPromise = new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error(`LLM call timed out after ${timeoutMs}ms`)), timeoutMs)\n );\n\n const result = await Promise.race([callPromise, timeoutPromise]);\n\n if (isFallback) {\n this.bus?.publish({\n from: 'system',\n topic: 'governance:model-fallback',\n category: 'governance',\n priority: 'normal',\n payload: {\n originalModel: params.model,\n fallbackModel,\n reason: lastError instanceof Error ? lastError.message : String(lastError),\n taskId: this._currentTaskId,\n attempt,\n },\n });\n }\n\n return result;\n } catch (err) {\n lastError = err;\n if (attempt < maxRetries) {\n // Will retry with fallback model\n continue;\n }\n }\n }\n\n // All attempts exhausted — publish exhaustion event and rethrow\n this.bus?.publish({\n from: 'system',\n topic: 'governance:model-fallback',\n category: 'governance',\n priority: 'high',\n payload: {\n originalModel: params.model,\n fallbackModel,\n reason: 'fallback-exhausted',\n error: lastError instanceof Error ? lastError.message : String(lastError),\n taskId: this._currentTaskId,\n },\n });\n\n throw lastError;\n }\n\n async execute(task: Task, step?: ExecutionStep): Promise<ExecutionResult> {\n this._currentTaskId = task.id;\n // Route to agent loop or single-turn based on config\n const result = this.agentLoop && this.toolExecutor\n ? await this.executeAgentLoop(task, step)\n : await this.executeSingleTurn(task, step);\n // Record which model handled this task (SIGNAL-049)\n this.modelRegistry?.recordTaskModel(task.id, result.model);\n return result;\n }\n\n /** Single-turn execution — one LLM call, no tool use */\n private async executeSingleTurn(task: Task, step?: ExecutionStep): Promise<ExecutionResult> {\n const start = Date.now();\n\n const persona = this.resolvePersona(task);\n const systemPrompt = this.buildSystemPrompt(persona, task);\n\n const userMessage = step\n ? `## Step: ${step.title}\\n\\n${step.description}\\n\\n## Task Context\\n${task.description}`\n : task.description;\n\n const correctionContext = task.context.correctionFeedback\n ? `\\n\\n## Previous Attempt Feedback\\n${task.context.correctionFeedback}`\n : '';\n const reviewContext = task.context.reviewFeedback\n ? `\\n\\n## Reviewer Feedback\\n${task.context.reviewFeedback}`\n : '';\n\n const userContent = `${userMessage}${correctionContext}${reviewContext}`;\n\n const response = await this.callWithFallback({\n model: this.model,\n max_tokens: this.maxTokens,\n temperature: this.temperature,\n system: systemPrompt,\n messages: [{ role: 'user', content: userContent }],\n });\n\n const output =\n response.content[0]?.type === 'text' ? response.content[0].text : '';\n const inputTokens = response.usage?.input_tokens ?? 0;\n const outputTokens = response.usage?.output_tokens ?? 0;\n const tokensUsed = inputTokens + outputTokens;\n\n this.llmTracer?.logGeneration(task.id, task.title, {\n name: 'execute',\n model: this.model,\n systemPrompt,\n inputMessages: [{ role: 'user', content: userContent }],\n output,\n inputTokens,\n outputTokens,\n startTime: new Date(start),\n endTime: new Date(),\n metadata: {\n taskId: task.id,\n agentId: task.assignedAgent,\n priority: task.priority,\n complexity: task.complexity,\n attempt: task.attempts,\n },\n });\n\n const compliance = runComplianceGate(\n output,\n task.requiredCapabilities.includes('mobile')\n );\n\n const artifacts: Artifact[] = [];\n if (output.includes('```')) {\n artifacts.push({\n id: `artifact-${Date.now()}`,\n type: 'code',\n content: output,\n createdBy: task.assignedAgent || 'engine',\n createdAt: Date.now(),\n });\n }\n\n return {\n output,\n tokensUsed,\n duration: Date.now() - start,\n artifacts,\n model: this.model,\n compliance,\n };\n }\n\n /**\n * Agentic tool-use loop — Ralph/AMP pattern.\n *\n * The LLM can read files, write files, search code, and run commands\n * in a loop until it signals completion via task_complete or exhausts\n * the iteration/token budget.\n */\n private async executeAgentLoop(task: Task, step?: ExecutionStep): Promise<ExecutionResult> {\n const start = Date.now();\n const executor = this.toolExecutor!;\n\n const persona = this.resolvePersona(task);\n const systemPrompt = this.buildAgentSystemPrompt(persona, task);\n\n const userMessage = step\n ? `## Step: ${step.title}\\n\\n${step.description}\\n\\n## Task Context\\n${task.description}`\n : task.description;\n\n const correctionContext = task.context.correctionFeedback\n ? `\\n\\n## Previous Attempt Feedback\\n${task.context.correctionFeedback}`\n : '';\n const reviewContext = task.context.reviewFeedback\n ? `\\n\\n## Reviewer Feedback\\n${task.context.reviewFeedback}`\n : '';\n\n const messages: MessageParam[] = [\n {\n role: 'user',\n content: `${userMessage}${correctionContext}${reviewContext}`,\n },\n ];\n\n const outputParts: string[] = [];\n const artifacts: Artifact[] = [];\n const filesChanged: string[] = [];\n let totalTokens = 0;\n let iterations = 0;\n let completed = false;\n\n while (iterations < this.maxIterations && totalTokens < this.maxTotalTokens && !completed) {\n iterations++;\n const iterStart = Date.now();\n\n const response = await this.callWithFallback({\n model: this.model,\n max_tokens: this.maxTokens,\n temperature: this.temperature,\n system: systemPrompt,\n messages,\n tools: AGENT_TOOLS,\n });\n\n const iterInputTokens = response.usage?.input_tokens ?? 0;\n const iterOutputTokens = response.usage?.output_tokens ?? 0;\n totalTokens += iterInputTokens + iterOutputTokens;\n\n // Log each agent loop iteration as a separate generation (SIGNAL-014)\n const iterText = response.content.find(b => b.type === 'text')?.type === 'text'\n ? (response.content.find(b => b.type === 'text') as { type: 'text'; text: string }).text\n : '';\n this.llmTracer?.logGeneration(task.id, task.title, {\n name: `agent-loop:${iterations}`,\n model: this.model,\n systemPrompt,\n inputMessages: messages.map(m => ({ role: m.role, content: m.content })),\n output: iterText,\n inputTokens: iterInputTokens,\n outputTokens: iterOutputTokens,\n startTime: new Date(iterStart),\n endTime: new Date(),\n metadata: {\n taskId: task.id,\n agentId: task.assignedAgent,\n iteration: iterations,\n stopReason: response.stop_reason,\n },\n });\n\n // Collect text blocks\n for (const block of response.content) {\n if (block.type === 'text') {\n outputParts.push(block.text);\n }\n }\n\n // Check for tool use\n const toolUseBlocks = response.content.filter(\n (b): b is ToolUseBlock => b.type === 'tool_use'\n );\n\n if (toolUseBlocks.length === 0 || response.stop_reason === 'end_turn') {\n // No tools called — natural completion\n completed = true;\n break;\n }\n\n // Process tool calls\n const toolResults: ToolResultBlockParam[] = [];\n\n for (const toolBlock of toolUseBlocks) {\n const input = toolBlock.input as Record<string, unknown>;\n let result: string;\n\n try {\n switch (toolBlock.name) {\n case 'read_file':\n result = executor.readFile(input.path as string);\n if (result.length > 15000) {\n result = result.slice(0, 15000) + '\\n\\n[truncated — file exceeds 15000 chars]';\n }\n break;\n\n case 'write_file': {\n const filePath = input.path as string;\n executor.writeFile(filePath, input.content as string);\n filesChanged.push(filePath);\n artifacts.push({\n id: `file-${Date.now()}-${artifacts.length}`,\n type: 'code',\n path: filePath,\n content: input.content as string,\n createdBy: task.assignedAgent || 'agent-loop',\n createdAt: Date.now(),\n });\n result = `Written: ${filePath} (${(input.content as string).length} chars)`;\n break;\n }\n\n case 'list_files':\n result = executor.listFiles(\n input.pattern as string,\n input.cwd as string | undefined\n ).join('\\n');\n break;\n\n case 'search_code':\n result = executor.searchCode(\n input.query as string,\n input.cwd as string | undefined,\n input.glob as string | undefined\n );\n break;\n\n case 'run_command': {\n const cmdResult = executor.runCommand(\n input.command as string,\n input.cwd as string | undefined\n );\n result = cmdResult.exitCode === 0\n ? cmdResult.stdout || '(no output)'\n : `Exit code: ${cmdResult.exitCode}\\nstdout: ${cmdResult.stdout}\\nstderr: ${cmdResult.stderr}`;\n break;\n }\n\n case 'task_complete':\n completed = true;\n outputParts.push(`\\n## Task Complete\\n${input.summary as string}`);\n if (Array.isArray(input.files_changed)) {\n filesChanged.push(...(input.files_changed as string[]));\n }\n result = 'Task marked as complete.';\n break;\n\n default:\n result = `Unknown tool: ${toolBlock.name}`;\n }\n } catch (err: unknown) {\n result = `Error: ${err instanceof Error ? err.message : String(err)}`;\n }\n\n toolResults.push({\n type: 'tool_result',\n tool_use_id: toolBlock.id,\n content: result,\n });\n }\n\n // Feed tool results back into conversation\n messages.push({ role: 'assistant', content: response.content as ContentBlock[] });\n messages.push({ role: 'user', content: toolResults });\n }\n\n // Budget exhaustion warning\n if (!completed) {\n outputParts.push(\n `\\n\\n[Agent loop ended: ${iterations >= this.maxIterations ? 'max iterations' : 'token budget'} reached]`\n );\n }\n\n const output = outputParts.join('\\n');\n const compliance = runComplianceGate(output, task.requiredCapabilities.includes('mobile'));\n\n return {\n output,\n tokensUsed: totalTokens,\n duration: Date.now() - start,\n artifacts,\n model: this.model,\n compliance,\n };\n }\n\n async selfVerify(task: Task, output: string): Promise<VerificationResult> {\n const verifyStart = Date.now();\n const criteria = task.acceptanceCriteria\n .map((c, i) => `${i + 1}. ${c.description} (weight: ${c.weight})`)\n .join('\\n');\n\n const verifySystem = this._verifierPrompt;\n const verifyUser = `## Task\\n${task.title}: ${task.description}\\n\\n## Acceptance Criteria\\n${criteria || 'No specific criteria — verify output quality and completeness.'}\\n\\n## Output to Verify\\n${output.slice(0, 6000)}`;\n\n const response = await this.callWithFallback({\n model: this.model,\n max_tokens: 2000,\n temperature: 0.1,\n system: verifySystem,\n messages: [{ role: 'user', content: verifyUser }],\n });\n\n const responseText =\n response.content[0]?.type === 'text' ? response.content[0].text : '';\n\n this.llmTracer?.logGeneration(task.id, task.title, {\n name: 'self-verify',\n model: this.model,\n systemPrompt: verifySystem,\n inputMessages: [{ role: 'user', content: verifyUser }],\n output: responseText,\n inputTokens: response.usage?.input_tokens ?? 0,\n outputTokens: response.usage?.output_tokens ?? 0,\n startTime: new Date(verifyStart),\n endTime: new Date(),\n metadata: { taskId: task.id, agentId: task.assignedAgent },\n });\n\n // Parse the verification response\n let passed = false;\n let confidence = 0.5;\n let details = 'Verification completed';\n\n try {\n const jsonMatch = responseText.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n const parsed = JSON.parse(jsonMatch[0]) as {\n passed?: boolean;\n confidence?: number;\n details?: string;\n };\n passed = parsed.passed ?? false;\n confidence = parsed.confidence ?? 0.5;\n details = parsed.details ?? 'Verification completed';\n }\n } catch {\n // If JSON parsing fails, use heuristics\n passed = responseText.toLowerCase().includes('\"passed\": true')\n || responseText.toLowerCase().includes('\"passed\":true');\n confidence = passed ? 0.7 : 0.3;\n details = responseText.slice(0, 500);\n }\n\n return {\n criterionId: 'self-verify',\n passed,\n confidence,\n details,\n verifiedBy: task.assignedAgent || 'verification-engine',\n verifiedAt: Date.now(),\n };\n }\n\n async conductReview(\n task: Task,\n output: string,\n reviewType: 'supervisor' | 'quality'\n ): Promise<Review> {\n const reviewStart = Date.now();\n const reviewPrompt =\n reviewType === 'supervisor' ? this._supervisorPrompt : this._qualityPrompt;\n\n const reviewSystem = `${reviewPrompt}\nRespond with a JSON object: { \"assessment\": \"approved\" | \"needs-work\" | \"rejected\", \"confidence\": number (0-1), \"feedback\": string, \"findings\": [{ \"severity\": \"critical\" | \"major\" | \"minor\" | \"suggestion\", \"category\": \"correctness\" | \"completeness\" | \"quality\" | \"consistency\" | \"security\", \"description\": string, \"suggestion\": string }], \"requiredChanges\": [string] }`;\n const reviewUser = `## Task\\n${task.title}: ${task.description}\\n\\n## Output to Review\\n${output.slice(0, 8000)}`;\n\n const response = await this.callWithFallback({\n model: this.model,\n max_tokens: 3000,\n temperature: 0.1,\n system: reviewSystem,\n messages: [{ role: 'user', content: reviewUser }],\n });\n\n const responseText =\n response.content[0]?.type === 'text' ? response.content[0].text : '';\n\n this.llmTracer?.logGeneration(task.id, task.title, {\n name: `review:${reviewType}`,\n model: this.model,\n systemPrompt: reviewSystem,\n inputMessages: [{ role: 'user', content: reviewUser }],\n output: responseText,\n inputTokens: response.usage?.input_tokens ?? 0,\n outputTokens: response.usage?.output_tokens ?? 0,\n startTime: new Date(reviewStart),\n endTime: new Date(),\n metadata: { taskId: task.id, agentId: task.assignedAgent, reviewType },\n });\n\n let assessment: Review['overallAssessment'] = 'approved';\n let confidence = 0.7;\n let feedback = 'Review completed';\n let findings: ReviewFinding[] = [];\n let requiredChanges: string[] = [];\n\n try {\n const jsonMatch = responseText.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n const parsed = JSON.parse(jsonMatch[0]) as {\n assessment?: string;\n confidence?: number;\n feedback?: string;\n findings?: Array<{\n severity?: string;\n category?: string;\n description?: string;\n suggestion?: string;\n }>;\n requiredChanges?: string[];\n };\n assessment = (parsed.assessment as Review['overallAssessment']) ?? 'approved';\n confidence = parsed.confidence ?? 0.7;\n feedback = parsed.feedback ?? 'Review completed';\n requiredChanges = parsed.requiredChanges ?? [];\n\n if (Array.isArray(parsed.findings)) {\n findings = parsed.findings.map((f, i) => ({\n id: `finding-${i}`,\n severity: (f.severity as ReviewFinding['severity']) ?? 'minor',\n category: (f.category as ReviewFinding['category']) ?? 'quality',\n description: f.description ?? '',\n suggestion: f.suggestion,\n }));\n }\n }\n } catch {\n // Fallback: treat unparseable as approved with low confidence\n confidence = 0.5;\n feedback = responseText.slice(0, 500);\n }\n\n return {\n id: `review-${Date.now()}`,\n taskId: task.id,\n reviewerId: `${reviewType}-engine`,\n revieweeId: task.assignedAgent || 'unknown',\n type: reviewType,\n scope: reviewType === 'quality' ? 'spot-check' : 'full',\n findings,\n overallAssessment: assessment,\n confidence,\n feedback,\n suggestions: findings.filter((f) => f.suggestion).map((f) => f.suggestion!),\n requiredChanges,\n createdAt: Date.now(),\n completedAt: Date.now(),\n timeSpent: 0,\n };\n }\n\n async decompose(task: Task): Promise<DecompositionResult> {\n this._currentTaskId = task.id;\n const response = await this.callWithFallback({\n model: this.model,\n max_tokens: 3000,\n temperature: 0.2,\n system: this._plannerPrompt,\n messages: [\n {\n role: 'user',\n content: `## Task to Decompose\\n**${task.title}**\\n\\n${task.description}\\n\\n## Required Capabilities\\n${task.requiredCapabilities.join(', ') || 'general'}\\n\\n## Acceptance Criteria\\n${task.acceptanceCriteria.map((c) => `- ${c.description}`).join('\\n') || 'None specified'}`,\n },\n ],\n });\n\n const responseText =\n response.content[0]?.type === 'text' ? response.content[0].text : '';\n\n try {\n const jsonMatch = responseText.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n const parsed = JSON.parse(jsonMatch[0]) as DecompositionResult;\n return {\n phases: Array.isArray(parsed.phases) ? parsed.phases : [],\n estimatedComplexity: parsed.estimatedComplexity ?? 'moderate',\n rationale: parsed.rationale ?? '',\n };\n }\n } catch {\n // Fallback to standard phases\n }\n\n // Default decomposition if LLM fails\n return {\n phases: [\n { title: 'Research', description: `Research phase for: ${task.title}`, capabilities: task.requiredCapabilities },\n { title: 'Design', description: `Design phase for: ${task.title}`, capabilities: task.requiredCapabilities },\n { title: 'Implement', description: `Implementation for: ${task.title}`, capabilities: task.requiredCapabilities },\n { title: 'Verify', description: `Verification for: ${task.title}`, capabilities: task.requiredCapabilities },\n { title: 'Document', description: `Documentation for: ${task.title}`, capabilities: task.requiredCapabilities },\n ],\n estimatedComplexity: 'moderate',\n rationale: 'Default decomposition — LLM response could not be parsed',\n };\n }\n\n // ─── Private ────────────────────────────────────────────────────────────────\n\n private resolvePersona(task: Task): string {\n // Check for persona loaded by orchestrator's PersonaEngine\n const loadedPersona = task.context.persona as { id: string; name: string } | undefined;\n if (loadedPersona?.id && this.personas[loadedPersona.id]) {\n return this.personas[loadedPersona.id];\n }\n\n // Match by first capability or domain\n for (const cap of task.requiredCapabilities) {\n if (this.personas[cap]) return this.personas[cap];\n }\n\n // Check context for agent type\n const agentType = task.context.agentType as string | undefined;\n if (agentType && this.personas[agentType]) return this.personas[agentType];\n\n return this.personas['default'] ?? DEFAULT_PERSONAS['default'];\n }\n\n private buildSystemPrompt(persona: string, task: Task): string {\n const parts = [persona];\n\n if (this.systemPrefix) {\n parts.unshift(this.systemPrefix);\n }\n\n parts.push('');\n parts.push('## Rules');\n parts.push('- Use @gtcx/* packages when they exist');\n parts.push('- Zod validation at all system boundaries');\n parts.push('- No hardcoded commodity types or jurisdictions');\n parts.push('- Structured logging, not console.log');\n parts.push('- Offline-first for mobile (7-mobile)');\n parts.push('- Every decision must be traceable to a source');\n\n if (task.context.correctionFeedback) {\n parts.push('');\n parts.push('## IMPORTANT: This is a retry. Address the feedback from the previous attempt.');\n }\n\n return parts.join('\\n');\n }\n\n private buildAgentSystemPrompt(persona: string, task: Task): string {\n const base = this.buildSystemPrompt(persona, task);\n\n return `${base}\n\n## Agent Execution Mode\n\nYou are operating in autonomous execution mode. You have tools to read files, write files, search code, and run commands. Use them to complete the task.\n\n### Workflow\n1. Read existing code to understand the current state\n2. Plan your changes\n3. Write the code using write_file\n4. Run tests and build commands to verify\n5. Fix any issues\n6. Call task_complete when done\n\n### Constraints\n- Read files before modifying them\n- Run tests after making changes\n- Do not modify files outside the project scope\n- Do not run destructive commands (rm -rf, git push --force, etc.)\n- Keep individual files under 500 lines\n- Commit-ready code only — no TODOs, no placeholders`;\n }\n}\n\n// ─── Default GTCX Personas ──────────────────────────────────────────────────\n\nconst DEFAULT_PERSONAS: Record<string, string> = {\n default: `You are a GTCX agent — a senior engineer working on the Global Trade & Compliance Exchange ecosystem.\nYou write production-quality TypeScript. You enforce architectural principles.\nYou think in audit trails, compliance gates, and verifiable evidence.`,\n\n builder: `You are a GTCX Builder Agent — a senior full-stack engineer.\nYou write production-quality TypeScript for the GTCX ecosystem.\nYou enforce: Zod at all boundaries (P2), no hardcoded commodities (P6),\ndependency injection (P4), structured logging (P5).\nYou use @gtcx/* packages. You never skip tests.`,\n\n reviewer: `You are a GTCX Reviewer Agent — a senior code reviewer.\nYou review code for adherence to GTCX's 12 architectural principles.\nYou flag: missing Zod validation (P2), hardcoded commodities (P6),\ncircular dependencies (P1), undocumented APIs (P7).\nYou produce structured review reports with severity and evidence.`,\n\n protocol: `You are a GTCX Protocol Agent — a distributed systems engineer.\nYou work on TradePass, GeoTag, GCI, VaultMark, PvP, and PANX protocols.\nEvery claim must be cryptographically provable. You think in consensus,\nchain of custody, and offline queues. You never skip verification.`,\n\n platform: `You are a GTCX Platform Agent — a backend systems engineer.\nYou build AGX, CRX, SGX, Veritas, and Pathways backends.\nNestJS, TypeORM, PostgreSQL. API contracts before implementation.\nYou think in trade execution flows, settlement guarantees, audit trails.`,\n\n mobile: `You are a GTCX Mobile Agent — a mobile field engineer.\nYou build for 2G Android with WatermelonDB offline-first.\nEvery feature must survive a connectivity drop. You think in\nsync queues, retry logic, minimal payload. P8 Offline-First is sacred.`,\n\n compliance: `You are a GTCX Compliance Agent — a regulatory engineer.\nFATF, IFC ESG, ZWCMP Charter commitments. You produce audit-ready\nevidence, regulatory mappings, and compliance gap analyses.\nYou never produce output that lacks traceable regulatory citations.`,\n\n agile: `You are a GTCX Agile Agent — an agile systems architect.\nCross-repo dependency mapping, Charter-anchored sprint planning,\nvelocity against real milestones. You think in blockers, critical path,\nand done criteria — not story points.`,\n\n security: `You are a GTCX Security Agent — a security engineer.\nYou validate input sanitization (P9), API versioning (P10),\ndata migration safety (P11). You detect OWASP top 10 patterns\nand ensure cryptographic audit trails, not console.log.`,\n};\n\n// ─── Mock Engine (for testing) ──────────────────────────────────────────────\n\nexport class MockExecutionEngine implements ExecutionEngine {\n async execute(task: Task, _step?: ExecutionStep): Promise<ExecutionResult> {\n return {\n output: `Mock execution of: ${task.title}`,\n tokensUsed: 0,\n duration: 100,\n artifacts: [],\n model: 'mock',\n compliance: { passed: true, violations: [], warnings: [], score: 1 },\n };\n }\n\n async selfVerify(_task: Task, _output: string): Promise<VerificationResult> {\n return {\n criterionId: 'self-verify',\n passed: true,\n confidence: 0.85,\n details: 'Mock self-verification passed',\n verifiedBy: 'mock-engine',\n verifiedAt: Date.now(),\n };\n }\n\n async conductReview(\n task: Task,\n _output: string,\n reviewType: 'supervisor' | 'quality'\n ): Promise<Review> {\n return {\n id: `review-${Date.now()}`,\n taskId: task.id,\n reviewerId: `mock-${reviewType}`,\n revieweeId: task.assignedAgent || 'unknown',\n type: reviewType,\n scope: 'full',\n findings: [],\n overallAssessment: 'approved',\n confidence: 0.9,\n feedback: 'Mock review passed',\n suggestions: [],\n requiredChanges: [],\n createdAt: Date.now(),\n completedAt: Date.now(),\n timeSpent: 0,\n };\n }\n\n async decompose(task: Task): Promise<DecompositionResult> {\n return {\n phases: [\n { title: 'Research', description: `Research: ${task.title}`, capabilities: [] },\n { title: 'Implement', description: `Implement: ${task.title}`, capabilities: [] },\n { title: 'Verify', description: `Verify: ${task.title}`, capabilities: [] },\n ],\n estimatedComplexity: 'moderate',\n rationale: 'Mock decomposition',\n };\n }\n}\n","/**\n * BaselineOS RAG Engine — Hybrid Retrieval (BM25 + Vector)\n *\n * Combines keyword search (MiniSearch/BM25) with optional vector search\n * (ChromaDB + OpenAI embeddings) for high-quality context retrieval.\n *\n * 6 Collections:\n * codebase — TypeScript/Python source files\n * protocols — Protocol specs, READMEs, architecture docs\n * decisions — ADRs, design decisions\n * errors — Error patterns, debugging context\n * compliance — Regulatory frameworks, audit evidence\n * domain — GTCX domain knowledge, CLAUDE.md files\n *\n * @license Apache-2.0\n */\n\nimport { readFileSync, existsSync, readdirSync, statSync } from 'fs';\nimport { join, relative, extname, basename } from 'path';\nimport { createHash } from 'crypto';\nimport MiniSearch from 'minisearch';\nimport type { KnowledgeIndexer } from './indexer.js';\n\n// ─── ChromaDB types (optional peer dependency) ──────────────────────────────\n\ninterface ChromaCollection {\n add(params: {\n ids: string[];\n documents: string[];\n metadatas?: Record<string, string>[];\n }): Promise<void>;\n query(params: {\n queryTexts: string[];\n nResults?: number;\n where?: Record<string, unknown>;\n include?: string[];\n }): Promise<{\n ids: string[][];\n documents: (string | null)[][];\n metadatas: (Record<string, string> | null)[][];\n distances: number[][];\n }>;\n count(): Promise<number>;\n}\n\ninterface ChromaClient {\n getOrCreateCollection(params: {\n name: string;\n metadata?: Record<string, string>;\n embeddingFunction?: unknown;\n }): Promise<ChromaCollection>;\n}\n\n// ─── Types ──────────────────────────────────────────────────────────────────\n\nexport type CollectionName =\n | 'codebase'\n | 'protocols'\n | 'decisions'\n | 'errors'\n | 'compliance'\n | 'domain';\n\nexport interface RAGConfig {\n projectRoot: string;\n /** OpenAI API key for embeddings (optional — BM25 works without it) */\n openaiApiKey?: string;\n /** ChromaDB host (optional — BM25 works without it) */\n chromaHost?: string;\n chromaPort?: number;\n /** Max chunks per collection */\n maxChunksPerCollection?: number;\n /** Chunk size in characters */\n chunkSize?: number;\n /** Chunk overlap in characters */\n chunkOverlap?: number;\n /** BM25 result limit */\n bm25Limit?: number;\n /** Vector result limit */\n vectorLimit?: number;\n /** Minimum relevance score (0-1) */\n minRelevance?: number;\n}\n\nexport interface RAGChunk {\n id: string;\n content: string;\n collection: CollectionName;\n source: string;\n repo: string;\n /** Section within the file */\n section?: string;\n /** Content hash for dedup */\n hash: string;\n /** Token estimate (content.length / 4) */\n tokenEstimate: number;\n metadata: Record<string, string>;\n}\n\nexport interface RAGResult {\n chunks: Array<{\n chunk: RAGChunk;\n score: number;\n matchType: 'bm25' | 'vector' | 'hybrid';\n }>;\n query: string;\n totalChunks: number;\n bm25Hits: number;\n vectorHits: number;\n duration: number;\n}\n\nexport interface IngestionResult {\n totalFiles: number;\n totalChunks: number;\n collections: Record<CollectionName, number>;\n duration: number;\n errors: string[];\n}\n\n// ─── Collection Classification ──────────────────────────────────────────────\n\nconst COLLECTION_RULES: Array<{\n collection: CollectionName;\n pathPatterns: RegExp[];\n extensions: string[];\n}> = [\n {\n collection: 'decisions',\n pathPatterns: [/decisions\\//, /ADR-/, /adr-/],\n extensions: ['.md'],\n },\n {\n collection: 'protocols',\n pathPatterns: [/3-protocols\\//, /SPEC\\.md$/, /protocol/i],\n extensions: ['.md'],\n },\n {\n collection: 'compliance',\n pathPatterns: [/compliance/, /regulatory/, /fatf/i, /esg/i, /10-compliance/],\n extensions: ['.md', '.json'],\n },\n {\n collection: 'errors',\n pathPatterns: [/error/, /debug/, /troubleshoot/],\n extensions: ['.md', '.ts', '.json'],\n },\n {\n collection: 'codebase',\n pathPatterns: [/src\\//, /lib\\//, /packages\\//],\n extensions: ['.ts', '.tsx', '.js', '.py'],\n },\n {\n collection: 'domain',\n pathPatterns: [/CLAUDE\\.md$/, /_cannon\\//, /_sop\\//, /README\\.md$/],\n extensions: ['.md'],\n },\n];\n\nfunction classifyFile(filePath: string): CollectionName {\n for (const rule of COLLECTION_RULES) {\n const ext = extname(filePath);\n if (!rule.extensions.includes(ext)) continue;\n for (const pattern of rule.pathPatterns) {\n if (pattern.test(filePath)) return rule.collection;\n }\n }\n // Default: domain for .md, codebase for code\n const ext = extname(filePath);\n if (['.ts', '.tsx', '.js', '.py'].includes(ext)) return 'codebase';\n return 'domain';\n}\n\n// ─── Chunking ───────────────────────────────────────────────────────────────\n\nfunction chunkContent(\n content: string,\n chunkSize: number,\n overlap: number\n): string[] {\n const chunks: string[] = [];\n\n // Try to split on section boundaries first (## headings for markdown)\n const sections = content.split(/(?=^##\\s)/m);\n\n if (sections.length > 1) {\n // Markdown with sections — chunk by section\n let current = '';\n for (const section of sections) {\n if (current.length + section.length > chunkSize && current.length > 0) {\n chunks.push(current.trim());\n // Keep overlap from end of previous chunk\n current = current.slice(-overlap) + section;\n } else {\n current += section;\n }\n }\n if (current.trim()) chunks.push(current.trim());\n } else {\n // No sections — chunk by character window\n for (let i = 0; i < content.length; i += chunkSize - overlap) {\n const chunk = content.slice(i, i + chunkSize);\n if (chunk.trim()) chunks.push(chunk.trim());\n }\n }\n\n return chunks.length > 0 ? chunks : [content.trim()];\n}\n\n// ─── RAG Engine ─────────────────────────────────────────────────────────────\n\nexport class RAGEngine {\n private config: Required<RAGConfig>;\n private chunks: Map<string, RAGChunk> = new Map();\n private searchIndex: MiniSearch;\n private initialized = false;\n private chromaCollections: Map<CollectionName, ChromaCollection> = new Map();\n private chromaAvailable = false;\n\n constructor(config: RAGConfig) {\n this.config = {\n projectRoot: config.projectRoot,\n openaiApiKey: config.openaiApiKey ?? process.env.OPENAI_API_KEY ?? '',\n chromaHost: config.chromaHost ?? 'localhost',\n chromaPort: config.chromaPort ?? 8000,\n maxChunksPerCollection: config.maxChunksPerCollection ?? 1000,\n chunkSize: config.chunkSize ?? 1500,\n chunkOverlap: config.chunkOverlap ?? 200,\n bm25Limit: config.bm25Limit ?? 10,\n vectorLimit: config.vectorLimit ?? 5,\n minRelevance: config.minRelevance ?? 0.3,\n };\n\n this.searchIndex = new MiniSearch({\n fields: ['content', 'source', 'section', 'repo'],\n storeFields: ['id', 'collection', 'source', 'repo', 'section'],\n searchOptions: {\n boost: { content: 2, section: 1.5, source: 1 },\n fuzzy: 0.2,\n prefix: true,\n },\n });\n }\n\n // ─── Ingestion ────────────────────────────────────────────────────────────\n\n async ingest(knowledgePaths?: string[]): Promise<IngestionResult> {\n const start = Date.now();\n const errors: string[] = [];\n const collectionCounts: Record<CollectionName, number> = {\n codebase: 0,\n protocols: 0,\n decisions: 0,\n errors: 0,\n compliance: 0,\n domain: 0,\n };\n\n // Default paths covering the GTCX ecosystem\n const paths = knowledgePaths ?? [\n '**/_sop/.gtcx/decisions/*.md',\n '**/CLAUDE.md',\n '**/_cannon/*.md',\n '3-protocols/**/SPEC.md',\n '3-protocols/**/README.md',\n '6-platforms/**/SPEC.md',\n '6-platforms/**/README.md',\n '5-intelligence/**/README.md',\n '2-core/packages/*/src/**/*.ts',\n 'compliance-os/**/*.md',\n 'ai-1-agile/_sop/**/*.md',\n ];\n\n const files = this.resolveFiles(paths);\n let totalChunks = 0;\n\n for (const filePath of files) {\n try {\n const content = readFileSync(filePath, 'utf-8');\n if (!content.trim()) continue;\n\n const relPath = relative(this.config.projectRoot, filePath);\n const collection = classifyFile(relPath);\n const repo = this.extractRepo(relPath);\n\n // Skip if collection is full\n if (collectionCounts[collection] >= this.config.maxChunksPerCollection) continue;\n\n const fileChunks = chunkContent(\n content,\n this.config.chunkSize,\n this.config.chunkOverlap\n );\n\n for (let i = 0; i < fileChunks.length; i++) {\n const chunkContent = fileChunks[i]!;\n const hash = createHash('sha256').update(chunkContent).digest('hex').slice(0, 16);\n const id = `${collection}:${hash}`;\n\n // Dedup\n if (this.chunks.has(id)) continue;\n\n const chunk: RAGChunk = {\n id,\n content: chunkContent,\n collection,\n source: relPath,\n repo,\n section: this.extractSection(chunkContent),\n hash,\n tokenEstimate: Math.ceil(chunkContent.length / 4),\n metadata: {\n file: basename(filePath),\n ext: extname(filePath),\n chunkIndex: String(i),\n totalChunks: String(fileChunks.length),\n },\n };\n\n this.chunks.set(id, chunk);\n collectionCounts[collection]++;\n totalChunks++;\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n errors.push(`${filePath}: ${msg}`);\n }\n }\n\n // Build BM25 index\n this.rebuildSearchIndex();\n\n // Initialize ChromaDB vector store (optional — graceful fallback to BM25-only)\n await this.initChroma(errors);\n\n this.initialized = true;\n\n return {\n totalFiles: files.length,\n totalChunks,\n collections: collectionCounts,\n duration: Date.now() - start,\n errors,\n };\n }\n\n // ─── Hybrid Search ────────────────────────────────────────────────────────\n\n async search(\n query: string,\n options?: {\n collections?: CollectionName[];\n repo?: string;\n limit?: number;\n minScore?: number;\n }\n ): Promise<RAGResult> {\n const start = Date.now();\n const limit = options?.limit ?? this.config.bm25Limit;\n const minScore = options?.minScore ?? this.config.minRelevance;\n\n // BM25 search\n const bm25Results = this.bm25Search(query, {\n collections: options?.collections,\n repo: options?.repo,\n limit,\n });\n\n // Vector search via ChromaDB (graceful fallback — returns [] if unavailable)\n const vectorResults = await this.vectorSearch(query, {\n collections: options?.collections,\n repo: options?.repo,\n limit: this.config.vectorLimit,\n });\n\n // Merge with reciprocal rank fusion\n const merged = new Map<string, { chunk: RAGChunk; score: number; matchType: 'bm25' | 'vector' | 'hybrid' }>();\n\n // Add BM25 results with rank-based scoring\n for (let i = 0; i < bm25Results.length; i++) {\n const r = bm25Results[i]!;\n if (r.score < minScore) continue;\n const rrfScore = 1 / (60 + i); // k=60 for RRF\n merged.set(r.chunk.id, { chunk: r.chunk, score: rrfScore, matchType: 'bm25' });\n }\n\n // Merge vector results — boost if also found in BM25\n for (let i = 0; i < vectorResults.length; i++) {\n const r = vectorResults[i]!;\n const rrfScore = 1 / (60 + i);\n const existing = merged.get(r.chunk.id);\n if (existing) {\n // Found in both — hybrid result with combined score\n existing.score += rrfScore;\n existing.matchType = 'hybrid';\n } else {\n merged.set(r.chunk.id, { chunk: r.chunk, score: rrfScore, matchType: 'vector' });\n }\n }\n\n // Sort by fused score descending\n const sorted = Array.from(merged.values()).sort((a, b) => b.score - a.score);\n\n return {\n chunks: sorted.slice(0, limit),\n query,\n totalChunks: this.chunks.size,\n bm25Hits: bm25Results.length,\n vectorHits: vectorResults.length,\n duration: Date.now() - start,\n };\n }\n\n /**\n * Get context for a subject using RAG + knowledge indexer.\n * This is the primary retrieval method — combines structured\n * context from the indexer with chunk-level RAG results.\n */\n async getContext(\n query: string,\n indexer?: KnowledgeIndexer,\n options?: {\n collections?: CollectionName[];\n repo?: string;\n maxTokens?: number;\n }\n ): Promise<{ content: string; sources: string[]; tokenEstimate: number }> {\n const maxTokens = options?.maxTokens ?? 4000;\n\n // RAG search for chunk-level results\n const ragResult = await this.search(query, {\n collections: options?.collections,\n repo: options?.repo,\n limit: 15,\n });\n\n // Build context from top chunks within token budget\n const parts: string[] = [];\n const sources: string[] = [];\n let tokenCount = 0;\n\n for (const { chunk, score } of ragResult.chunks) {\n if (tokenCount + chunk.tokenEstimate > maxTokens) break;\n\n parts.push(`<!-- source: ${chunk.source} (${chunk.collection}, score: ${score.toFixed(2)}) -->`);\n parts.push(chunk.content);\n parts.push('');\n\n if (!sources.includes(chunk.source)) {\n sources.push(chunk.source);\n }\n tokenCount += chunk.tokenEstimate;\n }\n\n return {\n content: parts.join('\\n'),\n sources,\n tokenEstimate: tokenCount,\n };\n }\n\n // ─── ChromaDB Initialization ─────────────────────────────────────────────\n\n private async initChroma(errors: string[]): Promise<void> {\n if (!this.config.openaiApiKey) return;\n\n let chromadb: Record<string, unknown>;\n try {\n chromadb = (await import('chromadb' as string)) as Record<string, unknown>;\n } catch {\n // chromadb not installed — BM25-only mode\n return;\n }\n\n try {\n const ChromaClientCtor = chromadb.ChromaClient as new (config: { path: string }) => ChromaClient;\n const client = new ChromaClientCtor({\n path: `http://${this.config.chromaHost}:${this.config.chromaPort}`,\n });\n\n // Create one collection per RAG collection type\n const collectionNames: CollectionName[] = [\n 'codebase', 'protocols', 'decisions', 'errors', 'compliance', 'domain',\n ];\n\n for (const name of collectionNames) {\n const collection = await client.getOrCreateCollection({\n name: `baseline-${name}`,\n metadata: { source: 'baselineos-rag', collection: name },\n });\n this.chromaCollections.set(name, collection);\n }\n\n // Batch-add chunks to their respective collections\n for (const name of collectionNames) {\n const collection = this.chromaCollections.get(name);\n if (!collection) continue;\n\n const collectionChunks = Array.from(this.chunks.values()).filter(\n (c) => c.collection === name\n );\n\n if (collectionChunks.length === 0) continue;\n\n // Check if collection already has data (skip re-ingestion)\n const existingCount = await collection.count();\n if (existingCount >= collectionChunks.length) continue;\n\n // Batch in groups of 100 to avoid oversized requests\n const batchSize = 100;\n for (let i = 0; i < collectionChunks.length; i += batchSize) {\n const batch = collectionChunks.slice(i, i + batchSize);\n await collection.add({\n ids: batch.map((c) => c.id),\n documents: batch.map((c) => c.content),\n metadatas: batch.map((c) => ({\n source: c.source,\n repo: c.repo,\n section: c.section ?? '',\n hash: c.hash,\n collection: c.collection,\n })),\n });\n }\n }\n\n this.chromaAvailable = true;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n errors.push(`ChromaDB init failed (BM25-only mode): ${msg}`);\n }\n }\n\n // ─── Vector Search ──────────────────────────────────────────────────────\n\n private async vectorSearch(\n query: string,\n options?: {\n collections?: CollectionName[];\n repo?: string;\n limit?: number;\n }\n ): Promise<Array<{ chunk: RAGChunk; score: number; matchType: 'vector' }>> {\n if (!this.chromaAvailable || !this.config.openaiApiKey) return [];\n\n const limit = options?.limit ?? this.config.vectorLimit;\n const targetCollections = options?.collections ?? [\n 'codebase', 'protocols', 'decisions', 'errors', 'compliance', 'domain',\n ] as CollectionName[];\n\n const results: Array<{ chunk: RAGChunk; score: number; matchType: 'vector' }> = [];\n\n for (const collName of targetCollections) {\n const collection = this.chromaCollections.get(collName);\n if (!collection) continue;\n\n try {\n const where = options?.repo ? { repo: options.repo } : undefined;\n\n const queryResult = await collection.query({\n queryTexts: [query],\n nResults: limit,\n where: where as Record<string, unknown> | undefined,\n include: ['documents', 'metadatas', 'distances'],\n });\n\n const ids = queryResult.ids[0] ?? [];\n const distances = queryResult.distances[0] ?? [];\n\n for (let i = 0; i < ids.length; i++) {\n const chunkId = ids[i];\n const chunk = this.chunks.get(chunkId);\n if (!chunk) continue;\n\n // ChromaDB distances are L2 — convert to 0-1 similarity\n // Lower distance = more similar. score = 1 / (1 + distance)\n const distance = distances[i] ?? 1;\n const score = 1 / (1 + distance);\n\n results.push({ chunk, score, matchType: 'vector' });\n }\n } catch (err) {\n process.stderr.write(`[baseline:rag] Vector query failed: ${(err as Error).message}\\n`);\n }\n }\n\n // Sort by score descending, limit\n return results.sort((a, b) => b.score - a.score).slice(0, limit);\n }\n\n // ─── BM25 Search ─────────────────────────────────────────────────────────\n\n private bm25Search(\n query: string,\n options?: {\n collections?: CollectionName[];\n repo?: string;\n limit?: number;\n }\n ): Array<{ chunk: RAGChunk; score: number; matchType: 'bm25' }> {\n if (!this.initialized || this.chunks.size === 0) return [];\n\n const limit = options?.limit ?? this.config.bm25Limit;\n\n let results = this.searchIndex.search(query).slice(0, limit * 3);\n\n // Filter by collection\n if (options?.collections?.length) {\n results = results.filter((r) =>\n options.collections!.includes(r.collection as CollectionName)\n );\n }\n\n // Filter by repo\n if (options?.repo) {\n results = results.filter((r) => r.repo === options.repo);\n }\n\n return results\n .slice(0, limit)\n .map((r) => ({\n chunk: this.chunks.get(r.id as string)!,\n score: r.score / (results[0]?.score ?? 1), // Normalize to 0-1\n matchType: 'bm25' as const,\n }))\n .filter((r) => r.chunk != null);\n }\n\n // ─── Index Management ─────────────────────────────────────────────────────\n\n private rebuildSearchIndex(): void {\n // MiniSearch doesn't support clearing, so create a new instance\n this.searchIndex = new MiniSearch({\n fields: ['content', 'source', 'section', 'repo'],\n storeFields: ['id', 'collection', 'source', 'repo', 'section'],\n searchOptions: {\n boost: { content: 2, section: 1.5, source: 1 },\n fuzzy: 0.2,\n prefix: true,\n },\n });\n\n const docs = Array.from(this.chunks.values()).map((chunk) => ({\n id: chunk.id,\n content: chunk.content,\n source: chunk.source,\n section: chunk.section ?? '',\n repo: chunk.repo,\n collection: chunk.collection,\n }));\n\n this.searchIndex.addAll(docs);\n }\n\n // ─── File Resolution ──────────────────────────────────────────────────────\n\n private resolveFiles(patterns: string[]): string[] {\n const files: Set<string> = new Set();\n\n for (const pattern of patterns) {\n // Simple glob resolution (no external dep needed for basic patterns)\n if (pattern.includes('**')) {\n this.walkGlob(this.config.projectRoot, pattern, files);\n } else {\n const fullPath = join(this.config.projectRoot, pattern);\n if (existsSync(fullPath)) {\n files.add(fullPath);\n }\n }\n }\n\n return Array.from(files);\n }\n\n private walkGlob(root: string, pattern: string, results: Set<string>): void {\n // Split pattern into directory prefix and file pattern\n const parts = pattern.split('**/');\n const prefix = parts[0] ?? '';\n const suffix = parts.slice(1).join('**/');\n const startDir = prefix ? join(root, prefix) : root;\n\n if (!existsSync(startDir)) return;\n\n this.walkDir(startDir, suffix, results);\n }\n\n private walkDir(dir: string, filePattern: string, results: Set<string>): void {\n try {\n const entries = readdirSync(dir);\n for (const entry of entries) {\n // Skip hidden dirs and node_modules\n if (entry.startsWith('.') || entry === 'node_modules' || entry === 'dist' || entry === 'coverage') {\n continue;\n }\n\n const fullPath = join(dir, entry);\n try {\n const stat = statSync(fullPath);\n if (stat.isDirectory()) {\n this.walkDir(fullPath, filePattern, results);\n } else if (stat.isFile() && this.matchesFilePattern(entry, fullPath, filePattern)) {\n results.add(fullPath);\n }\n } catch {\n // Skip unreadable files\n }\n }\n } catch {\n // Skip unreadable directories\n }\n }\n\n private matchesFilePattern(filename: string, fullPath: string, pattern: string): boolean {\n if (!pattern) return true;\n\n // Handle patterns like \"*.md\", \"SPEC.md\", \"*.ts\"\n if (pattern.startsWith('*')) {\n const ext = pattern.slice(1);\n return filename.endsWith(ext);\n }\n\n // Exact filename match\n if (!pattern.includes('/') && !pattern.includes('*')) {\n return filename === pattern;\n }\n\n // Path suffix match\n return fullPath.endsWith(pattern.replace(/\\*/g, ''));\n }\n\n // ─── Helpers ──────────────────────────────────────────────────────────────\n\n private extractRepo(relPath: string): string {\n const parts = relPath.split('/');\n return parts[0] ?? 'unknown';\n }\n\n private extractSection(content: string): string | undefined {\n // Extract first heading from content\n const match = content.match(/^#+\\s+(.+)/m);\n return match?.[1]?.trim();\n }\n\n // ─── Stats ────────────────────────────────────────────────────────────────\n\n getStats(): {\n totalChunks: number;\n collections: Record<CollectionName, number>;\n initialized: boolean;\n vectorStoreAvailable: boolean;\n } {\n const collections: Record<CollectionName, number> = {\n codebase: 0,\n protocols: 0,\n decisions: 0,\n errors: 0,\n compliance: 0,\n domain: 0,\n };\n\n for (const chunk of this.chunks.values()) {\n collections[chunk.collection]++;\n }\n\n return {\n totalChunks: this.chunks.size,\n collections,\n initialized: this.initialized,\n vectorStoreAvailable: this.chromaAvailable,\n };\n }\n}\n","/**\n * BaselineOS Agent Bus — SIGNAL-008\n *\n * Pub/sub messaging backbone for agent-to-agent communication.\n * Eliminates orchestrator as a bottleneck for inter-agent coordination.\n *\n * Features:\n * - Typed topic namespacing (task:*, agent:*, trust:*, governance:*, system:*, direct:*)\n * - Wildcard subscriptions (e.g. 'task:*')\n * - Point-to-point direct messages\n * - Request/reply with timeout\n * - TTL-enforced message expiry\n * - Bounded audit history (ring buffer)\n * - Dead letter queue for undeliverable messages\n *\n * @license Apache-2.0\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport { randomUUID } from 'crypto';\nimport { extractTraceContext } from './telemetry.js';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type BusTopicCategory =\n | 'task' // task lifecycle: task:created, task:completed, task:failed …\n | 'agent' // agent status: agent:status, agent:health, agent:capacity …\n | 'trust' // trust signals: trust:updated, trust:breach, trust:restored …\n | 'governance' // policy events: governance:policy, governance:violation …\n | 'system' // system-wide: system:shutdown, system:degraded …\n | 'direct'; // point-to-point: direct:<agentId>\n\nexport type MessagePriority = 'low' | 'normal' | 'high' | 'critical';\n\nexport interface BusMessage<T = unknown> {\n /** Unique message ID */\n id: string;\n /**\n * Correlation ID for request/reply pattern.\n * Reply messages set this to the original request's ID.\n */\n correlationId?: string;\n /** Sender agent ID, or 'system' for bus-originated messages */\n from: string;\n /**\n * Target agent ID for direct messages.\n * Undefined means broadcast to all subscribers of the topic.\n */\n to?: string;\n /** Namespaced topic, e.g. 'task:completed', 'trust:updated' */\n topic: string;\n category: BusTopicCategory;\n payload: T;\n timestamp: number;\n /** Absolute expiry timestamp (ms). Bus drops messages past this. */\n ttl?: number;\n /** Topic to send reply to (request/reply pattern) */\n replyTo?: string;\n priority: MessagePriority;\n /**\n * W3C traceparent header value for distributed trace propagation (SIGNAL-012).\n * Set automatically by publish() when an active OTel span exists.\n * Consumers can restore the trace context via injectTraceContext().\n */\n traceContext?: string;\n}\n\nexport type MessageHandler<T = unknown> = (\n message: BusMessage<T>,\n) => void | Promise<void>;\n\nexport interface BusSubscription {\n id: string;\n topic: string;\n agentId?: string;\n}\n\nexport interface BusStats {\n messagesPublished: number;\n messagesDelivered: number;\n messagesDropped: number;\n deadLetters: number;\n activeSubscriptions: number;\n}\n\n// ─── AgentBus ─────────────────────────────────────────────────────────────────\n\nconst HISTORY_LIMIT = 500;\nconst DEAD_LETTER_LIMIT = 100;\n\nexport class AgentBus {\n private readonly emitter = new EventEmitter();\n private readonly history: BusMessage[] = [];\n private readonly deadLetters: BusMessage[] = [];\n\n private stats: BusStats = {\n messagesPublished: 0,\n messagesDelivered: 0,\n messagesDropped: 0,\n deadLetters: 0,\n activeSubscriptions: 0,\n };\n\n // Maps subscription ID → { topic, handler } for clean teardown\n private readonly subscriptions = new Map<\n string,\n { topic: string; handler: MessageHandler }\n >();\n\n // ─── Subscribe ───────────────────────────────────────────────────────────\n\n /**\n * Subscribe to a topic or wildcard pattern.\n *\n * @param topic Exact topic ('task:completed') or prefix wildcard ('task:*')\n * @param handler Called for each matching message\n * @param agentId Optional: filter to messages addressed to this agent only\n * @returns subscription handle (pass to unsubscribe)\n */\n subscribe<T = unknown>(\n topic: string,\n handler: MessageHandler<T>,\n agentId?: string,\n ): BusSubscription {\n const id = randomUUID();\n const internalTopic = this.normalise(topic);\n\n const wrapper: MessageHandler = (msg) => {\n if (agentId && msg.to && msg.to !== agentId) return;\n handler(msg as BusMessage<T>);\n };\n\n this.emitter.on(internalTopic, wrapper);\n this.subscriptions.set(id, { topic: internalTopic, handler: wrapper });\n this.stats.activeSubscriptions++;\n\n return { id, topic: internalTopic, agentId };\n }\n\n /** Remove a subscription by its handle */\n unsubscribe(subscription: BusSubscription): void {\n const entry = this.subscriptions.get(subscription.id);\n if (!entry) return;\n this.emitter.off(entry.topic, entry.handler);\n this.subscriptions.delete(subscription.id);\n this.stats.activeSubscriptions = Math.max(0, this.stats.activeSubscriptions - 1);\n }\n\n // ─── Publish ─────────────────────────────────────────────────────────────\n\n /**\n * Publish a message. Supports wildcard fan-out: a message on 'task:completed'\n * is delivered to both 'task:completed' and 'task:*' subscribers.\n */\n publish<T = unknown>(message: Omit<BusMessage<T>, 'id' | 'timestamp'>): BusMessage<T> {\n const traceContext = extractTraceContext();\n const full: BusMessage<T> = {\n id: randomUUID(),\n timestamp: Date.now(),\n ...(traceContext ? { traceContext } : {}),\n ...message,\n } as BusMessage<T>;\n\n this.stats.messagesPublished++;\n\n // TTL check\n if (full.ttl !== undefined && Date.now() > full.ttl) {\n this.stats.messagesDropped++;\n return full;\n }\n\n // Audit ring buffer\n this.history.push(full as BusMessage);\n if (this.history.length > HISTORY_LIMIT) this.history.shift();\n\n const exactTopic = this.normalise(full.topic);\n const wildcardTopic = this.wildcardOf(exactTopic);\n\n const listenerCount =\n this.emitter.listenerCount(exactTopic) +\n this.emitter.listenerCount(wildcardTopic);\n\n if (listenerCount === 0) {\n // Dead letter: no subscribers\n this.deadLetters.push(full as BusMessage);\n if (this.deadLetters.length > DEAD_LETTER_LIMIT) this.deadLetters.shift();\n this.stats.deadLetters++;\n } else {\n this.emitter.emit(exactTopic, full);\n if (wildcardTopic !== exactTopic) {\n this.emitter.emit(wildcardTopic, full);\n }\n this.stats.messagesDelivered++;\n }\n\n return full;\n }\n\n // ─── Convenience helpers ─────────────────────────────────────────────────\n\n /** Broadcast to all subscribers of a topic (no specific recipient) */\n broadcast<T = unknown>(\n from: string,\n topic: string,\n payload: T,\n priority: MessagePriority = 'normal',\n ): BusMessage<T> {\n const category = this.categoryOf(topic);\n return this.publish<T>({ from, topic, category, payload, priority });\n }\n\n /** Send a direct message to a specific agent */\n direct<T = unknown>(\n from: string,\n to: string,\n topic: string,\n payload: T,\n priority: MessagePriority = 'normal',\n ): BusMessage<T> {\n const directTopic = `direct:${to}`;\n return this.publish<T>({\n from,\n to,\n topic: directTopic,\n category: 'direct',\n payload: { originalTopic: topic, ...((payload as object) ?? {}) } as T,\n priority,\n });\n }\n\n /**\n * Request/reply: publishes a message and waits for a reply on a generated\n * reply topic. Rejects if no reply arrives within `timeoutMs`.\n */\n request<TReq = unknown, TReply = unknown>(\n from: string,\n to: string,\n topic: string,\n payload: TReq,\n timeoutMs = 5000,\n ): Promise<BusMessage<TReply>> {\n return new Promise<BusMessage<TReply>>((resolve, reject) => {\n const replyTopic = `direct:reply:${randomUUID()}`;\n let sub: BusSubscription | null = null;\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const cleanup = () => {\n if (sub) this.unsubscribe(sub);\n if (timer) clearTimeout(timer);\n };\n\n sub = this.subscribe<TReply>(replyTopic, (msg) => {\n cleanup();\n resolve(msg);\n });\n\n timer = setTimeout(() => {\n cleanup();\n reject(new Error(`AgentBus: request to ${to} on ${topic} timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n\n // Route through direct:${to} so the recipient can subscribe to their\n // own direct channel (same routing as the direct() helper).\n this.publish<Record<string, unknown>>({\n from,\n to,\n topic: `direct:${to}`,\n category: 'direct',\n payload: { originalTopic: topic, ...(payload as object) },\n priority: 'normal',\n replyTo: replyTopic,\n });\n });\n }\n\n /** Reply to a request message */\n reply<T = unknown>(\n from: string,\n originalMessage: BusMessage,\n payload: T,\n ): void {\n if (!originalMessage.replyTo) return;\n this.publish<T>({\n from,\n to: originalMessage.from,\n topic: originalMessage.replyTo,\n category: 'direct',\n payload,\n priority: originalMessage.priority,\n correlationId: originalMessage.id,\n });\n }\n\n // ─── Introspection ────────────────────────────────────────────────────────\n\n /**\n * Return message history, optionally filtered by topic prefix.\n * Most recent messages first.\n */\n getHistory(topicPrefix?: string, limit = 50): BusMessage[] {\n let items = [...this.history].reverse();\n if (topicPrefix) {\n items = items.filter((m) => m.topic.startsWith(topicPrefix));\n }\n return items.slice(0, limit);\n }\n\n getDeadLetters(limit = 20): BusMessage[] {\n return [...this.deadLetters].reverse().slice(0, limit);\n }\n\n getStats(): Readonly<BusStats> {\n return { ...this.stats };\n }\n\n // ─── Internals ────────────────────────────────────────────────────────────\n\n private normalise(topic: string): string {\n return topic.trim().toLowerCase();\n }\n\n private wildcardOf(topic: string): string {\n const parts = topic.split(':');\n if (parts.length < 2) return topic;\n return `${parts[0]}:*`;\n }\n\n private categoryOf(topic: string): BusTopicCategory {\n const prefix = topic.split(':')[0] as BusTopicCategory;\n const valid: BusTopicCategory[] = ['task', 'agent', 'trust', 'governance', 'system', 'direct'];\n return valid.includes(prefix) ? prefix : 'system';\n }\n}\n","/**\n * BaselineOS Configuration\n * \n * Projects configure BaselineOS via:\n * 1. baseline.config.ts (recommended)\n * 2. baseline.config.js\n * 3. baseline.config.json\n * 4. package.json \"baseline\" field\n * 5. Programmatic config\n * \n * @license Apache-2.0\n */\n\nimport { cosmiconfig } from 'cosmiconfig';\nimport { z } from 'zod';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\n\n// ─── Schema ──────────────────────────────────────────────────────────────────\n\nconst OrchestratorConfigSchema = z.object({\n /** Tasks above this complexity require human approval */\n maxAutonomousComplexity: z.enum(['trivial', 'simple', 'moderate', 'complex', 'epic']).default('complex'),\n \n /** Require self-verification at every step */\n selfVerificationRequired: z.boolean().default(true),\n \n /** Confidence threshold for supervisor review (0-1) */\n supervisorReviewThreshold: z.number().min(0).max(1).default(0.7),\n \n /** Percentage of tasks to quality review */\n qualityReviewSampleRate: z.number().min(0).max(1).default(0.1),\n \n /** Default trust score for new agents */\n defaultTrustScore: z.number().min(0).max(100).default(70),\n \n /** Max retry attempts per task */\n defaultMaxAttempts: z.number().min(1).default(3),\n \n /** Max tokens per task */\n maxTokensPerTask: z.number().default(100000),\n \n /** Max concurrent agents */\n maxConcurrentAgents: z.number().default(10),\n\n /** Trust growth rate (asymptotic) */\n trustGrowthRate: z.number().default(0.02),\n\n /** Trust decay rate (proportional) */\n trustDecayRate: z.number().default(0.05),\n});\n\nconst CacheConfigSchema = z.object({\n /** Cache TTL in milliseconds */\n ttl: z.number().default(86400000), // 24 hours\n \n /** Max cache entries */\n maxSize: z.number().default(10000),\n \n /** Similarity threshold for semantic cache hits */\n similarityThreshold: z.number().min(0).max(1).default(0.92),\n});\n\nconst PathsConfigSchema = z.object({\n /** Directory for BaselineOS data */\n data: z.string().default('.baseline'),\n \n /** Directory for knowledge index */\n index: z.string().default('.baseline/index'),\n \n /** Directory for checkpoints */\n checkpoints: z.string().default('.baseline/checkpoints'),\n});\n\nconst LLMConfigSchema = z.object({\n /** LLM provider */\n provider: z.enum(['anthropic', 'openai', 'local']).default('anthropic'),\n \n /** Model to use */\n model: z.string().default('claude-sonnet-4-20250514'),\n \n /** API key (or use env var) */\n apiKey: z.string().optional(),\n \n /** Max tokens per request */\n maxTokens: z.number().default(8000),\n});\n\nconst WorkflowBudgetSchema = z.object({\n maxTokens: z.number().optional(),\n maxCostUsd: z.number().optional(),\n costPer1kTokensUsd: z.number().optional(),\n maxSteps: z.number().optional(),\n maxDurationMs: z.number().optional(),\n maxAttempts: z.number().optional(),\n});\n\nconst WorkflowStepSchema = z.object({\n id: z.string(),\n title: z.string(),\n description: z.string(),\n action: z.object({\n type: z.enum(['llm', 'tool', 'human', 'composite']),\n operation: z.string(),\n parameters: z.record(z.unknown()).default({}),\n timeout: z.number().optional(),\n }),\n verificationCriteria: z.array(z.string()).optional(),\n});\n\nconst WorkflowSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n steps: z.array(WorkflowStepSchema),\n requiredCapabilities: z.array(z.string()).optional(),\n budget: WorkflowBudgetSchema.optional(),\n});\n\nconst RetrievalBudgetSchema = z.object({\n /** Max tokens for retrieval context */\n maxTokens: z.number().optional(),\n\n /** Max cost in USD for retrieval (requires costPer1kTokensUsd) */\n maxCostUsd: z.number().optional(),\n\n /** Cost per 1k tokens in USD */\n costPer1kTokensUsd: z.number().optional(),\n});\n\nconst RAGConfigSchema = z.object({\n /** Default retrieval budget */\n budget: RetrievalBudgetSchema.default({}),\n /** ChromaDB host for vector search (optional — BM25 works without it) */\n chromaHost: z.string().default('localhost'),\n /** ChromaDB port */\n chromaPort: z.number().default(8000),\n /** OpenAI API key for embeddings (optional — reads OPENAI_API_KEY env var) */\n openaiApiKey: z.string().optional(),\n /** Chunk size in characters for ingestion */\n chunkSize: z.number().default(1500),\n /** Chunk overlap in characters */\n chunkOverlap: z.number().default(200),\n /** Max chunks per collection */\n maxChunksPerCollection: z.number().default(1000),\n /** ABAC role profiles for policy-filtered retrieval */\n roles: z.record(z.object({\n collections: z.array(z.string()).default([]),\n sensitivity: z.enum(['public', 'internal', 'restricted']).default('public'),\n repos: z.array(z.string()).default([]),\n scopes: z.array(z.string()).default([]),\n })).default({}),\n});\n\nexport const BaselineConfigSchema = z.object({\n /** Project root directory */\n projectRoot: z.string().default(process.cwd()),\n \n /** Project name */\n name: z.string().optional(),\n \n /** Knowledge paths to index (relative to projectRoot) */\n knowledge: z.array(z.string()).default(['./docs', './knowledge', './specs']),\n \n /** File patterns to include */\n include: z.array(z.string()).default([\n '**/*.md',\n '**/*.ts',\n '**/*.py',\n '**/*.json',\n ]),\n \n /** File patterns to exclude */\n exclude: z.array(z.string()).default([\n '**/node_modules/**',\n '**/dist/**',\n '**/.git/**',\n '**/coverage/**',\n ]),\n \n /** Orchestrator settings */\n orchestrator: OrchestratorConfigSchema.default({}),\n \n /** Cache settings */\n cache: CacheConfigSchema.default({}),\n \n /** Path settings */\n paths: PathsConfigSchema.default({}),\n \n /** LLM settings */\n llm: LLMConfigSchema.default({}),\n\n /** Workflows (AMP/Ralph registry) */\n workflows: z.array(WorkflowSchema).default([]),\n\n /** RAG settings */\n rag: RAGConfigSchema.default({}),\n \n /** Custom agents */\n agents: z.array(z.object({\n id: z.string(),\n name: z.string(),\n role: z.enum(['planner', 'executor', 'supervisor', 'quality', 'specialist']),\n capabilities: z.array(z.string()),\n domains: z.array(z.string()),\n })).default([]),\n \n /** Governance rules */\n governance: z.object({\n /** Actions that require approval */\n requireApproval: z.array(z.string()).default([]),\n\n /** Resources that are restricted */\n restricted: z.array(z.string()).default([]),\n\n /** Audit level */\n auditLevel: z.enum(['none', 'basic', 'full']).default('basic'),\n\n /** Governance pillar validators — enable/configure each pillar */\n validators: z.object({\n /** Policy enforcement — evaluate and enforce governance policies */\n policy: z.object({\n enabled: z.boolean().default(true),\n enforcement: z.enum(['advisory', 'warn', 'block']).default('warn'),\n }).default({}),\n /** Risk assessment — evaluate complexity/impact before execution */\n risk: z.object({\n enabled: z.boolean().default(true),\n blockOnCritical: z.boolean().default(true),\n }).default({}),\n /** Compliance checks — validate against standards (ISO 27001, NDPC, AfCFTA) */\n compliance: z.object({\n enabled: z.boolean().default(true),\n standards: z.array(z.string()).default([]),\n }).default({}),\n /** Approval workflows — require human sign-off for high-impact actions */\n approval: z.object({\n enabled: z.boolean().default(true),\n requiredApprovers: z.array(z.string()).default([]),\n }).default({}),\n /** Permission gating — ABAC-based resource access control */\n permission: z.object({\n enabled: z.boolean().default(true),\n }).default({}),\n /** Cost tracking — monitor and enforce token/resource budgets */\n cost: z.object({\n enabled: z.boolean().default(true),\n maxBudgetUsd: z.number().optional(),\n }).default({}),\n /** Evidence production — generate exportable governance bundles */\n evidence: z.object({\n enabled: z.boolean().default(true),\n autoExport: z.boolean().default(false),\n exportPath: z.string().default('.baseline/evidence'),\n }).default({}),\n }).default({}),\n }).default({}),\n});\n\nexport type BaselineConfig = z.infer<typeof BaselineConfigSchema>;\nexport type OrchestratorConfig = z.infer<typeof OrchestratorConfigSchema>;\nexport type CacheConfig = z.infer<typeof CacheConfigSchema>;\nexport type LLMConfig = z.infer<typeof LLMConfigSchema>;\nexport type RAGConfig = z.infer<typeof RAGConfigSchema>;\n\n// ─── Config Loader ───────────────────────────────────────────────────────────\n\nexport class ConfigLoader {\n private static explorer = cosmiconfig('baseline', {\n searchPlaces: [\n 'baseline.config.ts',\n 'baseline.config.js',\n 'baseline.config.mjs',\n 'baseline.config.json',\n '.baselinerc',\n '.baselinerc.json',\n 'package.json',\n ],\n });\n\n /**\n * Load configuration from file.\n */\n static async load(cwd: string = process.cwd()): Promise<BaselineConfig> {\n const result = await this.explorer.search(cwd);\n \n if (result?.config) {\n return this.resolve(result.config);\n }\n \n // Return defaults\n return this.resolve({});\n }\n\n /**\n * Load configuration synchronously (for CLI).\n */\n static loadSync(cwd: string = process.cwd()): BaselineConfig {\n // Try common config files\n const configFiles = [\n 'baseline.config.js',\n 'baseline.config.json',\n '.baselinerc.json',\n ];\n\n for (const file of configFiles) {\n const path = join(cwd, file);\n if (existsSync(path)) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const config = require(path);\n return this.resolve(config.default || config);\n } catch (err) {\n process.stderr.write(`[baseline:config] Failed to load ${file}: ${(err as Error).message}\\n`);\n continue;\n }\n }\n }\n\n return this.resolve({});\n }\n\n /**\n * Resolve and validate configuration.\n */\n static resolve(config: Partial<BaselineConfig>): BaselineConfig {\n // Set defaults\n const withDefaults = {\n projectRoot: process.cwd(),\n ...config,\n };\n\n // Resolve relative paths\n if (withDefaults.paths) {\n withDefaults.paths = {\n data: join(withDefaults.projectRoot, withDefaults.paths.data || '.baseline'),\n index: join(withDefaults.projectRoot, withDefaults.paths.index || '.baseline/index'),\n checkpoints: join(withDefaults.projectRoot, withDefaults.paths.checkpoints || '.baseline/checkpoints'),\n };\n }\n\n // Validate\n return BaselineConfigSchema.parse(withDefaults);\n }\n\n /**\n * Generate a config file template.\n */\n static generateTemplate(format: 'ts' | 'js' | 'json' = 'ts'): string {\n if (format === 'json') {\n return JSON.stringify(\n {\n name: 'my-project',\n knowledge: ['./docs', './specs'],\n orchestrator: {\n maxAutonomousComplexity: 'complex',\n selfVerificationRequired: true,\n },\n llm: {\n provider: 'anthropic',\n model: 'claude-sonnet-4-20250514',\n },\n workflows: [],\n rag: {\n budget: {\n maxTokens: 1200,\n // maxCostUsd: 0.05,\n // costPer1kTokensUsd: 0.003,\n },\n },\n },\n null,\n 2\n );\n }\n\n const isTS = format === 'ts';\n \n return `${isTS ? \"import type { BaselineConfig } from 'baselineos';\\n\\n\" : ''}${isTS ? 'const config: BaselineConfig = ' : 'module.exports = '}{\n /**\n * Project name (optional)\n */\n name: 'my-project',\n\n /**\n * Paths to index for knowledge retrieval.\n * BaselineOS will index markdown, code, and other files from these paths.\n */\n knowledge: [\n './docs',\n './specs',\n './knowledge',\n ],\n\n /**\n * Orchestrator configuration.\n * Controls autonomous task execution behavior.\n */\n orchestrator: {\n /**\n * Tasks above this complexity require human approval.\n * Options: 'trivial' | 'simple' | 'moderate' | 'complex' | 'epic'\n */\n maxAutonomousComplexity: 'complex',\n\n /**\n * Require self-verification at every step.\n */\n selfVerificationRequired: true,\n\n /**\n * Confidence threshold below which supervisor review is triggered.\n */\n supervisorReviewThreshold: 0.7,\n\n /**\n * Percentage of tasks to send through quality review.\n */\n qualityReviewSampleRate: 0.1,\n },\n\n /**\n * LLM configuration.\n */\n llm: {\n provider: 'anthropic',\n model: 'claude-sonnet-4-20250514',\n // apiKey: process.env.ANTHROPIC_API_KEY, // Or set via env\n },\n\n /**\n * RAG retrieval budget (optional).\n * Enforces token/cost ceilings during context assembly.\n */\n rag: {\n budget: {\n maxTokens: 1200,\n // maxCostUsd: 0.05,\n // costPer1kTokensUsd: 0.003,\n },\n },\n\n /**\n * Custom agents (optional).\n * Add domain-specific executor agents.\n */\n agents: [\n // {\n // id: 'backend-expert',\n // name: 'Backend Developer',\n // role: 'executor',\n // capabilities: ['typescript', 'nodejs', 'postgresql'],\n // domains: ['api', 'database', 'backend'],\n // },\n ],\n\n /**\n * Workflows (optional).\n * AMP/Ralph-style workflow registry with budgets.\n */\n workflows: [\n // {\n // id: 'spec-review',\n // name: 'Spec Review',\n // description: 'Review a spec and provide feedback',\n // budget: { maxSteps: 5, maxDurationMs: 600000 },\n // steps: [\n // {\n // id: 'read',\n // title: 'Read spec',\n // description: 'Load the spec and identify key requirements',\n // action: { type: 'llm', operation: 'analyze', parameters: {} },\n // },\n // ],\n // },\n ],\n\n /**\n * Governance rules (optional).\n */\n governance: {\n requireApproval: [],\n restricted: [],\n auditLevel: 'basic',\n },\n}${isTS ? ';\\n\\nexport default config;' : ';'}\n`;\n }\n}\n","/**\n * BaselineOS MCP Server\n *\n * Model Context Protocol server for Claude Desktop and other MCP clients.\n *\n * @license Apache-2.0\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\n\nimport type { Baseline } from '../index.js';\nimport type { TaskInput, TaskPriority, TaskStatus } from '../core/types.js';\nimport type { ContextLevel, Overlay, PolicyFilter, RetrievalBudget } from '../core/indexer.js';\nimport type { MemoryScope, RetrieveOptions } from '../core/memory.js';\n\ninterface MCPToolDefinition {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n}\n\ninterface MCPResourceDefinition {\n uri: string;\n name: string;\n description: string;\n mimeType: string;\n}\n\ntype ToolRiskLevel = 'low' | 'medium' | 'high';\ninterface ToolRiskDecision {\n allowed: boolean;\n response?: {\n error: 'escalation_required';\n tool: string;\n risk: { level: ToolRiskLevel; requiresEscalation: boolean; reason: string };\n next: string;\n };\n}\n\nconst TOOL_RISKS: Record<string, { level: ToolRiskLevel; requiresEscalation: boolean; reason: string }> = {\n search_knowledge: { level: 'low', requiresEscalation: false, reason: 'Read-only retrieval' },\n get_context: { level: 'low', requiresEscalation: false, reason: 'Read-only retrieval' },\n get_context_delta: { level: 'low', requiresEscalation: false, reason: 'Read-only retrieval' },\n remember: { level: 'medium', requiresEscalation: false, reason: 'Writes to memory store' },\n recall: { level: 'low', requiresEscalation: false, reason: 'Read-only memory access' },\n run_task: { level: 'high', requiresEscalation: true, reason: 'Triggers autonomous execution' },\n list_tasks: { level: 'low', requiresEscalation: false, reason: 'Read-only task listing' },\n list_workflows: { level: 'low', requiresEscalation: false, reason: 'Read-only workflow listing' },\n run_workflow: { level: 'high', requiresEscalation: true, reason: 'Triggers autonomous execution' },\n get_checkpoint: { level: 'medium', requiresEscalation: false, reason: 'Reads checkpoint state' },\n recover_checkpoint: { level: 'high', requiresEscalation: true, reason: 'Recovers task state' },\n get_task_audit: { level: 'medium', requiresEscalation: false, reason: 'Reads audit trail' },\n get_evidence_bundle: { level: 'medium', requiresEscalation: false, reason: 'Reads evidence bundle' },\n get_task: { level: 'low', requiresEscalation: false, reason: 'Read-only task access' },\n stats: { level: 'low', requiresEscalation: false, reason: 'Read-only stats' },\n get_tool_risks: { level: 'low', requiresEscalation: false, reason: 'Read-only tool metadata' },\n};\n\nconst CONTEXT_LEVELS: ContextLevel[] = ['oneliner', 'summary', 'working', 'full', 'expanded'];\nconst TASK_PRIORITIES: TaskPriority[] = ['critical', 'high', 'medium', 'low'];\nconst TASK_STATUSES: TaskStatus[] = [\n 'pending',\n 'planning',\n 'executing',\n 'verifying',\n 'reviewing',\n 'correcting',\n 'completed',\n 'failed',\n 'blocked',\n];\nconst MEMORY_SCOPES: MemoryScope[] = ['working', 'session', 'long-term', 'shared'];\nconst RETRIEVE_SCOPES: NonNullable<RetrieveOptions['scope']>[] = [...MEMORY_SCOPES, 'all'];\n\nfunction parsePolicy(value: unknown): PolicyFilter | undefined {\n if (!value || typeof value !== 'object') return undefined;\n return value as PolicyFilter;\n}\n\nfunction parseBudget(value: unknown): RetrievalBudget | undefined {\n if (!value || typeof value !== 'object') return undefined;\n return value as RetrievalBudget;\n}\n\nfunction parseLevel(value: unknown): ContextLevel {\n if (typeof value === 'string' && CONTEXT_LEVELS.includes(value as ContextLevel)) {\n return value as ContextLevel;\n }\n return 'working';\n}\n\nfunction parseOverlayOrder(value: unknown): Overlay[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const overlays = value\n .map((entry) => String(entry))\n .filter((entry): entry is Overlay => entry === 'org' || entry === 'repo' || entry === 'public');\n return overlays.length > 0 ? overlays : undefined;\n}\n\nfunction parseMemoryScope(value: unknown): MemoryScope {\n if (typeof value === 'string' && MEMORY_SCOPES.includes(value as MemoryScope)) {\n return value as MemoryScope;\n }\n return 'session';\n}\n\nfunction parseRetrieveScope(value: unknown): RetrieveOptions['scope'] {\n if (typeof value === 'string' && RETRIEVE_SCOPES.includes(value as NonNullable<RetrieveOptions['scope']>)) {\n return value as RetrieveOptions['scope'];\n }\n return 'all';\n}\n\nfunction parseTaskPriority(value: unknown): TaskPriority {\n if (typeof value === 'string' && TASK_PRIORITIES.includes(value as TaskPriority)) {\n return value as TaskPriority;\n }\n return 'medium';\n}\n\nfunction parseTaskStatus(value: unknown): TaskStatus | undefined {\n if (typeof value === 'string' && TASK_STATUSES.includes(value as TaskStatus)) {\n return value as TaskStatus;\n }\n return undefined;\n}\n\nfunction parseAcceptanceCriteria(value: unknown): TaskInput['acceptanceCriteria'] {\n if (!Array.isArray(value)) return [];\n return value\n .filter((entry): entry is { description: string; type?: 'automated' | 'agent-review' | 'human-review'; weight?: number } => {\n return Boolean(entry && typeof entry === 'object' && typeof (entry as { description?: unknown }).description === 'string');\n })\n .map((entry) => ({\n description: entry.description,\n type: entry.type ?? 'automated',\n weight: typeof entry.weight === 'number' ? entry.weight : 1,\n }));\n}\n\nexport class MCPServer {\n private baseline: Baseline;\n private server?: Server;\n private transport?: StdioServerTransport;\n private running = false;\n\n constructor(baseline: Baseline) {\n this.baseline = baseline;\n }\n\n async start(): Promise<void> {\n if (this.running) return;\n\n this.server = new Server(\n { name: 'baselineos', version: '0.2.0-beta.1' },\n { capabilities: { tools: {}, resources: {} } }\n );\n\n this.server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: this.getTools(),\n }));\n\n this.server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const name = request.params.name;\n const args = (request.params.arguments || {}) as Record<string, unknown>;\n\n try {\n const result = await this.handleToolCall(name, args);\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n { error: (error as Error).message || 'Unknown error' },\n null,\n 2\n ),\n },\n ],\n };\n }\n });\n\n this.server.setRequestHandler(ListResourcesRequestSchema, async () => ({\n resources: this.getResources(),\n }));\n\n this.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {\n const uri = request.params.uri;\n const resource = await this.readResource(uri);\n return {\n contents: [\n {\n uri,\n mimeType: 'application/json',\n text: JSON.stringify(resource, null, 2),\n },\n ],\n };\n });\n\n this.transport = new StdioServerTransport();\n await this.server.connect(this.transport);\n\n this.running = true;\n console.error('[MCP] Server started (stdio)');\n }\n\n async stop(): Promise<void> {\n this.running = false;\n console.error('[MCP] Server stopped');\n }\n\n isRunning(): boolean {\n return this.running;\n }\n\n private getTools(): MCPToolDefinition[] {\n return [\n {\n name: 'search_knowledge',\n description: 'Search the BaselineOS knowledge index',\n inputSchema: {\n type: 'object',\n properties: {\n query: { type: 'string' },\n limit: { type: 'number', default: 5 },\n policy: {\n type: 'object',\n properties: {\n repo: { type: 'array', items: { type: 'string' } },\n overlays: { type: 'array', items: { type: 'string', enum: ['org', 'repo', 'public'] } },\n sensitivity: { type: 'string', enum: ['public', 'internal', 'restricted'] },\n scopes: { type: 'array', items: { type: 'string' } },\n roles: { type: 'array', items: { type: 'string' } },\n },\n additionalProperties: false,\n },\n },\n required: ['query'],\n },\n },\n {\n name: 'get_context',\n description: 'Get context for a subject at a specified compression level',\n inputSchema: {\n type: 'object',\n properties: {\n subject: { type: 'string' },\n level: {\n type: 'string',\n enum: ['oneliner', 'summary', 'working', 'full', 'expanded'],\n default: 'working',\n },\n policy: {\n type: 'object',\n properties: {\n repo: { type: 'array', items: { type: 'string' } },\n overlays: { type: 'array', items: { type: 'string', enum: ['org', 'repo', 'public'] } },\n sensitivity: { type: 'string', enum: ['public', 'internal', 'restricted'] },\n scopes: { type: 'array', items: { type: 'string' } },\n roles: { type: 'array', items: { type: 'string' } },\n },\n additionalProperties: false,\n },\n overlayOrder: { type: 'array', items: { type: 'string', enum: ['org', 'repo', 'public'] } },\n budget: {\n type: 'object',\n properties: {\n maxTokens: { type: 'number' },\n maxCostUsd: { type: 'number' },\n costPer1kTokensUsd: { type: 'number' },\n },\n additionalProperties: false,\n },\n },\n required: ['subject'],\n },\n },\n {\n name: 'get_context_delta',\n description: 'Get only changed/unknown context for a subject (delta compression)',\n inputSchema: {\n type: 'object',\n properties: {\n subject: { type: 'string' },\n level: {\n type: 'string',\n enum: ['oneliner', 'summary', 'working', 'full', 'expanded'],\n default: 'working',\n },\n known: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n hash: { type: 'string' },\n },\n required: ['id'],\n additionalProperties: false,\n },\n },\n policy: {\n type: 'object',\n properties: {\n repo: { type: 'array', items: { type: 'string' } },\n overlays: { type: 'array', items: { type: 'string', enum: ['org', 'repo', 'public'] } },\n sensitivity: { type: 'string', enum: ['public', 'internal', 'restricted'] },\n scopes: { type: 'array', items: { type: 'string' } },\n roles: { type: 'array', items: { type: 'string' } },\n },\n additionalProperties: false,\n },\n overlayOrder: { type: 'array', items: { type: 'string', enum: ['org', 'repo', 'public'] } },\n budget: {\n type: 'object',\n properties: {\n maxTokens: { type: 'number' },\n maxCostUsd: { type: 'number' },\n costPer1kTokensUsd: { type: 'number' },\n },\n additionalProperties: false,\n },\n },\n required: ['subject'],\n },\n },\n {\n name: 'remember',\n description: 'Store a value in memory',\n inputSchema: {\n type: 'object',\n properties: {\n key: { type: 'string' },\n value: {},\n scope: {\n type: 'string',\n enum: ['working', 'session', 'long-term', 'shared'],\n default: 'session',\n },\n sessionId: { type: 'string' },\n taskId: { type: 'string' },\n repo: { type: 'string' },\n persona: { type: 'string' },\n ttl: { type: 'number' },\n tags: { type: 'array', items: { type: 'string' } },\n },\n required: ['key', 'value'],\n },\n },\n {\n name: 'recall',\n description: 'Retrieve a value from memory',\n inputSchema: {\n type: 'object',\n properties: {\n key: { type: 'string' },\n scope: {\n type: 'string',\n enum: ['working', 'session', 'long-term', 'shared', 'all'],\n default: 'all',\n },\n sessionId: { type: 'string' },\n taskId: { type: 'string' },\n repo: { type: 'string' },\n persona: { type: 'string' },\n },\n required: ['key'],\n },\n },\n {\n name: 'run_task',\n description: 'Execute a task in BaselineOS',\n inputSchema: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n description: { type: 'string' },\n priority: {\n type: 'string',\n enum: ['critical', 'high', 'medium', 'low'],\n default: 'medium',\n },\n requiredCapabilities: { type: 'array', items: { type: 'string' } },\n acceptanceCriteria: { type: 'array' },\n context: { type: 'object' },\n blocking: { type: 'boolean', default: false },\n timeout: { type: 'number', default: 300000 },\n allowHighRisk: { type: 'boolean', default: false },\n reason: { type: 'string' },\n },\n required: ['title', 'description'],\n },\n },\n {\n name: 'list_tasks',\n description: 'List tasks by status',\n inputSchema: {\n type: 'object',\n properties: {\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'planning',\n 'executing',\n 'verifying',\n 'reviewing',\n 'correcting',\n 'completed',\n 'failed',\n 'blocked',\n ],\n },\n },\n },\n },\n {\n name: 'list_workflows',\n description: 'List registered workflows',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'run_workflow',\n description: 'Execute a workflow by ID',\n inputSchema: {\n type: 'object',\n properties: {\n workflowId: { type: 'string' },\n title: { type: 'string' },\n description: { type: 'string' },\n priority: {\n type: 'string',\n enum: ['critical', 'high', 'medium', 'low'],\n default: 'medium',\n },\n requiredCapabilities: { type: 'array', items: { type: 'string' } },\n acceptanceCriteria: { type: 'array' },\n context: { type: 'object' },\n blocking: { type: 'boolean', default: false },\n timeout: { type: 'number', default: 300000 },\n allowHighRisk: { type: 'boolean', default: false },\n reason: { type: 'string' },\n },\n required: ['workflowId'],\n },\n },\n {\n name: 'get_checkpoint',\n description: 'Get checkpoint by ID',\n inputSchema: {\n type: 'object',\n properties: {\n checkpointId: { type: 'string' },\n allowHighRisk: { type: 'boolean', default: false },\n reason: { type: 'string' },\n },\n required: ['checkpointId'],\n },\n },\n {\n name: 'recover_checkpoint',\n description: 'Recover a task from checkpoint',\n inputSchema: {\n type: 'object',\n properties: {\n checkpointId: { type: 'string' },\n },\n required: ['checkpointId'],\n },\n },\n {\n name: 'get_task_audit',\n description: 'Get audit trail for a task',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: { type: 'string' },\n },\n required: ['taskId'],\n },\n },\n {\n name: 'get_evidence_bundle',\n description: 'Get evidence bundle for a task',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: { type: 'string' },\n },\n required: ['taskId'],\n },\n },\n {\n name: 'get_task',\n description: 'Get a specific task by ID',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: { type: 'string' },\n },\n required: ['taskId'],\n },\n },\n {\n name: 'stats',\n description: 'Get BaselineOS system stats',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'get_tool_risks',\n description: 'Get risk scoring for MCP tools',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n ];\n }\n\n private getResources(): MCPResourceDefinition[] {\n return [\n {\n uri: 'baseline://tasks',\n name: 'Tasks',\n description: 'Task list and status',\n mimeType: 'application/json',\n },\n {\n uri: 'baseline://agents',\n name: 'Agents',\n description: 'Agent registry',\n mimeType: 'application/json',\n },\n {\n uri: 'baseline://stats',\n name: 'Stats',\n description: 'System statistics',\n mimeType: 'application/json',\n },\n ];\n }\n\n private async handleToolCall(name: string, args: Record<string, unknown>): Promise<unknown> {\n const riskDecision = this.enforceToolRisk(name, args);\n if (!riskDecision.allowed) {\n return riskDecision.response ?? {\n error: 'escalation_required',\n tool: name,\n risk: { level: 'high' as const, requiresEscalation: true, reason: 'Escalation required' },\n next: 'retry_with_escalation=true',\n };\n }\n\n switch (name) {\n case 'search_knowledge': {\n const query = String(args.query ?? '');\n const limit = typeof args.limit === 'number' ? args.limit : 5;\n const policy = parsePolicy(args.policy);\n return this.baseline.search(query, { limit, policy });\n }\n case 'get_context': {\n const subject = String(args.subject ?? '');\n const level = parseLevel(args.level);\n const policy = parsePolicy(args.policy);\n const overlayOrder = parseOverlayOrder(args.overlayOrder);\n const budget = parseBudget(args.budget);\n return this.baseline.getContext(subject, level, { policy, overlayOrder, budget });\n }\n case 'get_context_delta': {\n const subject = String(args.subject ?? '');\n const level = parseLevel(args.level);\n const policy = parsePolicy(args.policy);\n const overlayOrder = parseOverlayOrder(args.overlayOrder);\n const known = Array.isArray(args.known)\n ? (args.known as Array<{ id: string; hash?: string }>)\n : undefined;\n const budget = parseBudget(args.budget);\n return this.baseline.getContextDelta(subject, level, { policy, overlayOrder, known, budget });\n }\n case 'remember': {\n const key = String(args.key ?? '');\n const value = args.value;\n const scope = parseMemoryScope(args.scope);\n await this.baseline.remember(key, value, {\n scope,\n sessionId: typeof args.sessionId === 'string' ? args.sessionId : undefined,\n taskId: typeof args.taskId === 'string' ? args.taskId : undefined,\n repo: typeof args.repo === 'string' ? args.repo : undefined,\n persona: typeof args.persona === 'string' ? args.persona : undefined,\n ttl: typeof args.ttl === 'number' ? args.ttl : undefined,\n tags: Array.isArray(args.tags) ? (args.tags as string[]) : undefined,\n });\n return { status: 'ok' };\n }\n case 'recall': {\n const key = String(args.key ?? '');\n const scope = parseRetrieveScope(args.scope);\n return { value: await this.baseline.recall(key, {\n scope,\n sessionId: typeof args.sessionId === 'string' ? args.sessionId : undefined,\n taskId: typeof args.taskId === 'string' ? args.taskId : undefined,\n repo: typeof args.repo === 'string' ? args.repo : undefined,\n persona: typeof args.persona === 'string' ? args.persona : undefined,\n }) };\n }\n case 'run_task': {\n const input: TaskInput = {\n title: String(args.title ?? ''),\n description: String(args.description ?? ''),\n priority: parseTaskPriority(args.priority),\n requiredCapabilities: Array.isArray(args.requiredCapabilities)\n ? (args.requiredCapabilities as string[])\n : [],\n acceptanceCriteria: parseAcceptanceCriteria(args.acceptanceCriteria),\n context: (args.context && typeof args.context === 'object') ? args.context as Record<string, unknown> : {},\n };\n\n const handle = await this.baseline.run(input);\n const blocking = Boolean(args.blocking);\n if (blocking) {\n const task = await handle.wait(typeof args.timeout === 'number' ? args.timeout : 300000);\n return { task };\n }\n return { taskId: handle.id, status: handle.status };\n }\n case 'list_tasks': {\n const status = parseTaskStatus(args.status);\n return this.baseline.listTasks(status ? { status } : undefined);\n }\n case 'list_workflows': {\n return this.baseline.listWorkflows();\n }\n case 'run_workflow': {\n const workflowId = String(args.workflowId ?? '');\n const handle = await this.baseline.runWorkflow(workflowId, {\n title: typeof args.title === 'string' ? args.title : undefined,\n description: typeof args.description === 'string' ? args.description : undefined,\n priority: parseTaskPriority(args.priority),\n requiredCapabilities: Array.isArray(args.requiredCapabilities)\n ? (args.requiredCapabilities as string[])\n : undefined,\n acceptanceCriteria: parseAcceptanceCriteria(args.acceptanceCriteria),\n context: (args.context && typeof args.context === 'object') ? args.context as Record<string, unknown> : undefined,\n });\n const blocking = Boolean(args.blocking);\n if (blocking) {\n const task = await handle.wait(typeof args.timeout === 'number' ? args.timeout : 300000);\n return { task };\n }\n return { taskId: handle.id, status: handle.status };\n }\n case 'get_checkpoint': {\n const checkpointId = String(args.checkpointId ?? '');\n const checkpoint = this.baseline.loadCheckpoint(checkpointId);\n if (!checkpoint) return { error: 'not_found' };\n return { checkpoint };\n }\n case 'recover_checkpoint': {\n const checkpointId = String(args.checkpointId ?? '');\n const task = this.baseline.recoverTaskFromCheckpoint(checkpointId);\n if (!task) return { error: 'not_found' };\n return { task };\n }\n case 'get_task_audit': {\n const taskId = String(args.taskId ?? '');\n return { taskId, audit: this.baseline.getAuditTrail(taskId) };\n }\n case 'get_evidence_bundle': {\n const taskId = String(args.taskId ?? '');\n return { taskId, bundle: this.baseline.getEvidenceBundle(taskId) };\n }\n case 'get_task': {\n const taskId = String(args.taskId ?? '');\n const task = this.baseline.getTask(taskId);\n if (!task) return { error: 'not_found' };\n return task;\n }\n case 'stats': {\n return this.baseline.getStats();\n }\n case 'get_tool_risks': {\n return { tools: TOOL_RISKS };\n }\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n }\n\n private enforceToolRisk(name: string, args: Record<string, unknown>): ToolRiskDecision {\n const risk = TOOL_RISKS[name];\n if (!risk || !risk.requiresEscalation) {\n return { allowed: true };\n }\n\n const allowHighRisk = args.allowHighRisk === true;\n const reason = typeof args.reason === 'string' ? args.reason.trim() : '';\n\n if (!allowHighRisk || reason.length === 0) {\n return {\n allowed: false,\n response: {\n error: 'escalation_required',\n tool: name,\n risk,\n next: \"Retry with { allowHighRisk: true, reason: '...' } after supervisor approval.\",\n },\n };\n }\n\n return { allowed: true };\n }\n\n private async readResource(uri: string): Promise<unknown> {\n switch (uri) {\n case 'baseline://tasks':\n return this.baseline.listTasks();\n case 'baseline://agents':\n return this.baseline.listAgents();\n case 'baseline://stats':\n return this.baseline.getStats();\n default:\n return { error: 'not_found' };\n }\n }\n}\n","/**\n * BaselineOS API Server\n * \n * REST API and WebSocket for programmatic access.\n * \n * @license Apache-2.0\n */\n\nimport express, { Express, Request, Response, NextFunction } from 'express';\nimport { WebSocketServer, WebSocket } from 'ws';\nimport { createServer, Server } from 'http';\nimport { initTelemetry, extractTraceContext } from '../core/telemetry.js';\n\nimport type { Baseline } from '../index.js';\nimport type { TaskInput, TaskStatus, OrchestratorEvent } from '../core/types.js';\nimport type { Overlay, ContextLevel, PolicyFilter, RetrievalBudget } from '../core/indexer.js';\nimport type { RetrieveOptions } from '../core/memory.js';\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\ninterface APIServerConfig {\n port: number;\n allowedOrigins?: string[];\n}\n\ntype SocketMessage = { type: 'subscribe'; taskId?: string } | { type: 'ping' };\n\nconst TASK_STATUSES: TaskStatus[] = [\n 'pending',\n 'planning',\n 'executing',\n 'verifying',\n 'reviewing',\n 'correcting',\n 'completed',\n 'failed',\n 'blocked',\n];\n\nconst CONTEXT_LEVELS: ContextLevel[] = ['oneliner', 'summary', 'working', 'full', 'expanded'];\nconst MEMORY_SCOPES: NonNullable<RetrieveOptions['scope']>[] = ['working', 'session', 'long-term', 'shared', 'all'];\n\nfunction parseTaskStatus(value: unknown): TaskStatus | undefined {\n return typeof value === 'string' && TASK_STATUSES.includes(value as TaskStatus)\n ? (value as TaskStatus)\n : undefined;\n}\n\nfunction parseContextLevel(value: unknown): ContextLevel {\n if (typeof value === 'string' && CONTEXT_LEVELS.includes(value as ContextLevel)) {\n return value as ContextLevel;\n }\n return 'working';\n}\n\nfunction parseScope(value: unknown): RetrieveOptions['scope'] | undefined {\n if (typeof value === 'string' && MEMORY_SCOPES.includes(value as NonNullable<RetrieveOptions['scope']>)) {\n return value as RetrieveOptions['scope'];\n }\n return undefined;\n}\n\nfunction parseJson(value?: string): unknown {\n if (!value) return undefined;\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return undefined;\n }\n}\n\nfunction parsePolicy(value: unknown): PolicyFilter | undefined {\n if (!value || typeof value !== 'object') return undefined;\n return value as PolicyFilter;\n}\n\nfunction parseBudget(value: unknown): RetrievalBudget | undefined {\n if (!value || typeof value !== 'object') return undefined;\n return value as RetrievalBudget;\n}\n\nfunction parseSocketMessage(value: unknown): SocketMessage | null {\n if (!value || typeof value !== 'object') return null;\n const message = value as Record<string, unknown>;\n if (message.type === 'ping') return { type: 'ping' };\n if (message.type === 'subscribe') {\n return {\n type: 'subscribe',\n taskId: typeof message.taskId === 'string' ? message.taskId : undefined,\n };\n }\n return null;\n}\n\n// ─── API Server ──────────────────────────────────────────────────────────────\n\nexport class APIServer {\n private app: Express;\n private server: Server;\n private wss: WebSocketServer;\n private baseline: Baseline;\n private config: APIServerConfig;\n private clients: Set<WebSocket>;\n private unsubscribeEvents: Array<() => void>;\n\n // ── Prometheus counters (in-process, reset on restart) ──────────────────\n private metricsCounters = {\n requestsTotal: new Map<string, number>(), // label: \"method_path_status\"\n requestDurationMs: new Map<string, number[]>(), // label: \"method\"\n tasksTotal: new Map<string, number>(), // label: task status\n tokensByAgentRole: new Map<string, number>(), // label: agent role (SIGNAL-013)\n wsConnections: 0,\n wsMessagesTotal: 0,\n serverStartTime: Date.now(),\n /** Running ratio of autonomous tasks that passed self-verification (SIGNAL-046) */\n autonomousAccuracy: 1.0,\n autonomousTotal: 0,\n autonomousPassed: 0,\n };\n\n /** Optional CostGuard for per-tenant cost metrics (SIGNAL-052) */\n private costGuard?: import('../core/cost-guard.js').CostGuard;\n /** Optional TraceCurator for dataset size gauge (SIGNAL-049) */\n private traceCurator?: import('../core/trace-curator.js').TraceCurator;\n /** Optional ModelVersionRegistry for active model version gauge (SIGNAL-049) */\n private modelVersionRegistry?: import('../core/model-version-registry.js').ModelVersionRegistry;\n /** Optional ProductionEvalPipeline for latest eval score gauge (SIGNAL-056) */\n private productionEvalPipeline?: import('../core/production-eval-pipeline.js').ProductionEvalPipeline;\n /** Optional DriftDetector for model drift metrics (SIGNAL-071) */\n private driftDetector?: import('../core/drift-detector.js').DriftDetector;\n /** Optional OPAPolicyGate for SLO-6 latency metrics */\n private opaPolicyGate?: import('../core/opa-policy-gate.js').OPAPolicyGate;\n\n constructor(baseline: Baseline, config: APIServerConfig) {\n this.baseline = baseline;\n this.config = config;\n this.clients = new Set();\n this.unsubscribeEvents = [];\n\n // Initialize OTel SDK (no-op when BASELINE_OTEL_DISABLED=1 or already initialized)\n initTelemetry();\n\n this.app = express();\n this.server = createServer(this.app);\n this.wss = new WebSocketServer({ server: this.server, path: '/api/stream' });\n this.wss.on('error', (error) => {\n const code = (error as NodeJS.ErrnoException)?.code;\n if (code !== 'EADDRINUSE') {\n console.error('[WS Error]', error);\n }\n });\n\n this.setupMiddleware();\n this.setupRoutes();\n this.setupWebSocket();\n this.attachEventBridge();\n }\n\n // ─── Setup ─────────────────────────────────────────────────────────────────\n\n private setupMiddleware(): void {\n this.app.use(express.json());\n \n // CORS\n const allowedOrigins = this.config.allowedOrigins ?? ['http://localhost:3000', 'http://localhost:3141', 'http://localhost:5173', 'tauri://localhost'];\n this.app.use((req, res, next) => {\n const origin = req.headers.origin;\n if (origin && allowedOrigins.includes(origin)) {\n res.header('Access-Control-Allow-Origin', origin);\n }\n res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');\n if (req.method === 'OPTIONS') {\n return res.sendStatus(200);\n }\n next();\n });\n\n // Propagate active OTel trace context in response headers (SIGNAL-012)\n this.app.use((_req, res, next) => {\n const traceparent = extractTraceContext();\n if (traceparent) res.setHeader('traceparent', traceparent);\n next();\n });\n\n // Request logging + metrics collection\n this.app.use((req, res, next) => {\n const start = Date.now();\n res.on('finish', () => {\n const duration = Date.now() - start;\n console.log(`[API] ${req.method} ${req.path} ${res.statusCode} ${duration}ms`);\n\n // Skip /metrics endpoint itself to avoid self-referential noise\n if (req.path !== '/metrics') {\n const reqKey = `${req.method}_${res.statusCode}`;\n this.metricsCounters.requestsTotal.set(\n reqKey,\n (this.metricsCounters.requestsTotal.get(reqKey) ?? 0) + 1\n );\n const durKey = req.method;\n const existing = this.metricsCounters.requestDurationMs.get(durKey) ?? [];\n existing.push(duration);\n if (existing.length > 1000) existing.shift(); // cap sliding window\n this.metricsCounters.requestDurationMs.set(durKey, existing);\n }\n });\n next();\n });\n }\n\n private setupRoutes(): void {\n // Health check — lightweight liveness probe\n this.app.get('/api/health', (req, res) => {\n res.json({ status: 'ok', version: '0.2.0-beta.1', timestamp: new Date().toISOString() });\n });\n\n // Readiness check — verifies core system is initialized\n this.app.get('/api/ready', (req, res) => {\n const ready = !!this.baseline;\n res.status(ready ? 200 : 503).json({\n ready,\n timestamp: new Date().toISOString(),\n });\n });\n\n // Tasks\n this.app.post('/api/tasks', this.createTask.bind(this));\n this.app.get('/api/tasks', this.listTasks.bind(this));\n this.app.get('/api/tasks/:id', this.getTask.bind(this));\n this.app.delete('/api/tasks/:id', this.cancelTask.bind(this));\n this.app.post('/api/tasks/:id/approve', this.approveTask.bind(this));\n this.app.get('/api/tasks/:id/artifacts', this.getTaskArtifacts.bind(this));\n this.app.get('/api/tasks/:id/audit', this.getTaskAudit.bind(this));\n this.app.get('/api/tasks/:id/evidence', this.getTaskEvidence.bind(this));\n this.app.get('/api/workflows', this.listWorkflows.bind(this));\n this.app.post('/api/workflows/:id/run', this.runWorkflow.bind(this));\n this.app.get('/api/checkpoints/:id', this.getCheckpoint.bind(this));\n this.app.post('/api/checkpoints/:id/recover', this.recoverCheckpoint.bind(this));\n\n // Agents\n this.app.get('/api/agents', this.listAgents.bind(this));\n\n // Knowledge\n this.app.post('/api/search', this.search.bind(this));\n this.app.get('/api/context/:subject', this.getContext.bind(this));\n this.app.post('/api/index', this.indexKnowledge.bind(this));\n\n // Init & Scan (GA-07, GA-08)\n this.app.post('/api/init', this.initDeployment.bind(this));\n this.app.post('/api/scan', this.scanDeployment.bind(this));\n\n // Memory\n this.app.post('/api/memory', this.remember.bind(this));\n this.app.get('/api/memory/:key', this.recall.bind(this));\n\n // Stats\n this.app.get('/api/stats', this.getStats.bind(this));\n\n // Prometheus metrics endpoint (SIGNAL-005)\n this.app.get('/metrics', this.getMetrics.bind(this));\n\n // Error handler\n this.app.use(this.errorHandler.bind(this));\n }\n\n private setupWebSocket(): void {\n this.wss.on('connection', (ws) => {\n this.clients.add(ws);\n console.log('[WS] Client connected');\n \n this.metricsCounters.wsConnections++;\n ws.on('close', () => {\n this.clients.delete(ws);\n console.log('[WS] Client disconnected');\n });\n\n ws.on('message', async (data) => {\n try {\n const message = JSON.parse(data.toString());\n await this.handleWebSocketMessage(ws, message);\n } catch {\n ws.send(JSON.stringify({ error: 'Invalid message' }));\n }\n });\n\n // Send welcome\n ws.send(JSON.stringify({ \n type: 'connected', \n timestamp: Date.now(),\n message: 'Connected to BaselineOS',\n }));\n });\n }\n\n private attachEventBridge(): void {\n const events: Array<import('../core/types.js').OrchestratorEvent['type']> = [\n 'task:created',\n 'task:decomposed',\n 'task:assigned',\n 'task:started',\n 'task:checkpoint',\n 'task:verified',\n 'task:review-requested',\n 'task:reviewed',\n 'task:correction-needed',\n 'task:corrected',\n 'task:completed',\n 'task:failed',\n 'task:blocked',\n 'task:approved',\n 'agent:status-changed',\n 'agent:trust-updated',\n 'escalation',\n ];\n\n for (const event of events) {\n const unsubscribe = this.baseline.onEvent(event, (payload: Extract<OrchestratorEvent, { type: typeof event }>) => {\n this.broadcast({ ...payload, timestamp: Date.now() });\n\n // Track task lifecycle metrics\n if (event === 'task:completed' || event === 'task:failed') {\n const status = event === 'task:completed' ? 'completed' : 'failed';\n this.metricsCounters.tasksTotal.set(\n status,\n (this.metricsCounters.tasksTotal.get(status) ?? 0) + 1\n );\n\n // Per-agent-role token tracking (SIGNAL-013)\n if (event === 'task:completed') {\n const completedPayload = payload as Extract<OrchestratorEvent, { type: 'task:completed' }>;\n const tokens = completedPayload.task.actualTokens ?? 0;\n if (tokens > 0 && completedPayload.task.assignedAgent) {\n const agents = this.baseline.listAgents();\n const agent = agents.find(a => a.id === completedPayload.task.assignedAgent);\n const role = agent?.role ?? 'unknown';\n this.metricsCounters.tokensByAgentRole.set(\n role,\n (this.metricsCounters.tokensByAgentRole.get(role) ?? 0) + tokens\n );\n }\n\n // Autonomous accuracy tracking (SIGNAL-046):\n // A completion counts as \"autonomous\" when assignedAgent is set.\n // It counts as \"passed\" when verificationResults show no failures.\n const task = completedPayload.task;\n if (task.assignedAgent) {\n this.metricsCounters.autonomousTotal += 1;\n const hasFailure = task.verificationResults?.some((v) => !v.passed);\n if (!hasFailure) {\n this.metricsCounters.autonomousPassed += 1;\n }\n this.metricsCounters.autonomousAccuracy =\n this.metricsCounters.autonomousTotal > 0\n ? this.metricsCounters.autonomousPassed / this.metricsCounters.autonomousTotal\n : 1.0;\n }\n }\n }\n if (event === 'task:created') {\n this.metricsCounters.tasksTotal.set(\n 'created',\n (this.metricsCounters.tasksTotal.get('created') ?? 0) + 1\n );\n }\n });\n this.unsubscribeEvents.push(unsubscribe);\n }\n }\n\n // ─── Task Handlers ─────────────────────────────────────────────────────────\n\n private async createTask(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const acceptanceCriteriaInput = Array.isArray(req.body.acceptanceCriteria)\n ? (req.body.acceptanceCriteria as Array<{\n description?: string;\n type?: 'automated' | 'agent-review' | 'human-review';\n weight?: number;\n }>)\n : [];\n const acceptanceCriteria = acceptanceCriteriaInput\n .filter(item => typeof item?.description === 'string' && item.description.trim().length > 0)\n .map((item, index) => ({\n description: item.description?.trim() || `Criteria ${index + 1}`,\n type: item.type ?? 'automated',\n weight: typeof item.weight === 'number' ? item.weight : 1,\n }));\n const input: TaskInput = {\n title: req.body.title,\n description: req.body.description,\n priority: req.body.priority || 'medium',\n requiredCapabilities: Array.isArray(req.body.requiredCapabilities)\n ? req.body.requiredCapabilities\n : [],\n acceptanceCriteria,\n context: req.body.context && typeof req.body.context === 'object' ? req.body.context : {},\n };\n\n const handle = await this.baseline.run(input);\n\n // Broadcast to WebSocket clients\n this.broadcast({\n type: 'task:created',\n taskId: handle.id,\n title: input.title,\n timestamp: Date.now(),\n });\n\n // If blocking, wait for completion\n if (req.body.blocking) {\n const result = await handle.wait(req.body.timeout);\n res.json({ task: result });\n } else {\n res.status(201).json({ \n taskId: handle.id,\n status: handle.status,\n });\n }\n } catch (error) {\n next(error);\n }\n }\n\n private async listTasks(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const status = parseTaskStatus(req.query.status);\n const tasks = this.baseline.listTasks(status ? { status } : undefined);\n \n res.json({ \n tasks: tasks.map(t => ({\n id: t.id,\n title: t.title,\n status: t.status,\n priority: t.priority,\n complexity: t.complexity,\n createdAt: t.createdAt,\n completedAt: t.completedAt,\n })),\n });\n } catch (error) {\n next(error);\n }\n }\n\n private async getTask(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const task = this.baseline.getTask(req.params.id);\n \n if (!task) {\n res.status(404).json({ error: 'not_found', message: 'Task not found' });\n return;\n }\n\n res.json({ task });\n } catch (error) {\n next(error);\n }\n }\n\n private async cancelTask(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const cancelled = this.baseline.cancelTask(\n req.params.id,\n typeof req.body?.reason === 'string' ? req.body.reason : undefined\n );\n if (!cancelled) {\n res.status(404).json({ error: 'not_found', message: 'Task not found or not cancellable' });\n return;\n }\n res.json({ cancelled: true });\n } catch (error) {\n next(error);\n }\n }\n\n private async approveTask(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const approvedBy = typeof req.body?.approvedBy === 'string' ? req.body.approvedBy : 'human';\n const approvalToken = typeof req.body?.approvalToken === 'string' ? req.body.approvalToken : undefined;\n const task = await this.baseline.approveTask(req.params.id, approvedBy, approvalToken);\n res.json({ task });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('not found')) {\n res.status(404).json({ error: 'not_found', message });\n } else if (message.includes('not blocked')) {\n res.status(409).json({ error: 'conflict', message });\n } else if (message.includes('token') || message.includes('expired')) {\n res.status(403).json({ error: 'forbidden', message });\n } else {\n next(error);\n }\n }\n }\n\n private async getTaskArtifacts(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const task = this.baseline.getTask(req.params.id);\n \n if (!task) {\n res.status(404).json({ error: 'not_found', message: 'Task not found' });\n return;\n }\n\n res.json({ artifacts: task.artifacts });\n } catch (error) {\n next(error);\n }\n }\n\n private async getTaskAudit(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const taskId = req.params.id;\n const audit = this.baseline.getAuditTrail(taskId);\n res.json({ taskId, audit });\n } catch (error) {\n next(error);\n }\n }\n\n private async getTaskEvidence(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const taskId = req.params.id;\n const bundle = this.baseline.getEvidenceBundle(taskId);\n if (!bundle.task) {\n res.status(404).json({ error: 'not_found', message: 'Task not found' });\n return;\n }\n res.json({ taskId, bundle });\n } catch (error) {\n next(error);\n }\n }\n\n private async listWorkflows(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const workflows = this.baseline.listWorkflows();\n res.json({ workflows });\n } catch (error) {\n next(error);\n }\n }\n\n private async runWorkflow(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const handle = await this.baseline.runWorkflow(req.params.id, {\n title: req.body.title,\n description: req.body.description,\n priority: req.body.priority,\n requiredCapabilities: Array.isArray(req.body.requiredCapabilities)\n ? req.body.requiredCapabilities\n : undefined,\n acceptanceCriteria: Array.isArray(req.body.acceptanceCriteria)\n ? req.body.acceptanceCriteria\n : undefined,\n context: req.body.context && typeof req.body.context === 'object' ? req.body.context : undefined,\n });\n\n if (req.body.blocking) {\n const result = await handle.wait(req.body.timeout);\n res.json({ task: result });\n } else {\n res.status(201).json({ taskId: handle.id, status: handle.status });\n }\n } catch (error) {\n next(error);\n }\n }\n\n private async getCheckpoint(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const checkpoint = this.baseline.loadCheckpoint(req.params.id);\n if (!checkpoint) {\n res.status(404).json({ error: 'not_found', message: 'Checkpoint not found' });\n return;\n }\n res.json({ checkpoint });\n } catch (error) {\n next(error);\n }\n }\n\n private async recoverCheckpoint(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const task = this.baseline.recoverTaskFromCheckpoint(req.params.id);\n if (!task) {\n res.status(404).json({ error: 'not_found', message: 'Checkpoint not found' });\n return;\n }\n res.json({ task });\n } catch (error) {\n next(error);\n }\n }\n\n // ─── Agent Handlers ────────────────────────────────────────────────────────\n\n private async listAgents(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const agents = this.baseline.listAgents();\n res.json({ agents });\n } catch (error) {\n next(error);\n }\n }\n\n // ─── Knowledge Handlers ────────────────────────────────────────────────────\n\n private async search(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const policy = req.body.policy && typeof req.body.policy === 'object'\n ? req.body.policy\n : undefined;\n const results = await this.baseline.search(req.body.query, {\n limit: req.body.limit,\n policy,\n });\n res.json({ results });\n } catch (error) {\n next(error);\n }\n }\n\n private async getContext(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const level = parseContextLevel(req.query.level);\n const policy = parsePolicy(parseJson(req.query.policy ? String(req.query.policy) : undefined));\n const overlayOrder = req.query.overlayOrder\n ? String(req.query.overlayOrder)\n .split(',')\n .map(v => v.trim())\n .filter((v): v is Overlay => v === 'org' || v === 'repo' || v === 'public')\n : undefined;\n const budget = parseBudget(parseJson(req.query.budget ? String(req.query.budget) : undefined));\n const context = await this.baseline.getContext(req.params.subject, level, {\n policy,\n overlayOrder,\n budget,\n });\n \n if (!context) {\n res.status(404).json({ error: 'not_found', message: 'Context not found' });\n return;\n }\n\n res.json({ context });\n } catch (error) {\n next(error);\n }\n }\n\n private async indexKnowledge(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const result = await this.baseline.index({ full: req.body.full });\n res.json({ \n indexed: result.indexed, \n errors: result.errors,\n skipped: result.skipped,\n changed: result.changed,\n removed: result.removed,\n message: `Indexed ${result.indexed} documents`,\n });\n } catch (error) {\n next(error);\n }\n }\n\n // ─── Init & Scan Handlers (GA-07, GA-08) ───────────────────────────────────\n\n private async initDeployment(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const contextPath = req.body.contextPath || process.cwd();\n const scan = await this.scanPath(contextPath);\n const result = await this.baseline.index({ full: false });\n res.json({\n initialized: true,\n contextPath,\n detected: scan,\n indexed: result.indexed,\n message: `Baseline initialized for ${contextPath}`,\n });\n } catch (error) {\n next(error);\n }\n }\n\n private async scanDeployment(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const contextPath = req.body.contextPath || process.cwd();\n const detected = await this.scanPath(contextPath);\n res.json({ contextPath, detected });\n } catch (error) {\n next(error);\n }\n }\n\n private async scanPath(contextPath: string): Promise<Record<string, unknown>> {\n const detected: Record<string, unknown> = {};\n try {\n const { existsSync, readFileSync } = await import('fs');\n const { join } = await import('path');\n const pkgPath = join(contextPath, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));\n const allDeps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };\n if (allDeps['@anthropic-ai/sdk']) detected.provider = 'anthropic';\n else if (allDeps['openai']) detected.provider = 'openai';\n if (allDeps['langchain'] || allDeps['@langchain/core']) detected.framework = 'langchain';\n if (allDeps['@modelcontextprotocol/sdk']) detected.mcp = true;\n if (allDeps['bullmq'] || allDeps['@temporalio/client']) detected.orchestration = true;\n detected.runtime = 'node';\n detected.name = pkg.name;\n }\n const pyReq = join(contextPath, 'requirements.txt');\n if (existsSync(pyReq)) {\n const reqs = readFileSync(pyReq, 'utf8');\n if (reqs.includes('anthropic')) detected.provider = 'anthropic';\n else if (reqs.includes('openai')) detected.provider = 'openai';\n if (reqs.includes('langchain')) detected.framework = 'langchain';\n detected.runtime = 'python';\n }\n } catch {\n // Scan is best-effort\n }\n return detected;\n }\n\n // ─── Memory Handlers ───────────────────────────────────────────────────────\n\n private async remember(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n await this.baseline.remember(req.body.key, req.body.value, {\n scope: req.body.scope,\n sessionId: req.body.sessionId,\n taskId: req.body.taskId,\n repo: req.body.repo,\n persona: req.body.persona,\n ttl: req.body.ttl,\n tags: Array.isArray(req.body.tags) ? req.body.tags : undefined,\n });\n res.json({ stored: true });\n } catch (error) {\n next(error);\n }\n }\n\n private async recall(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const scope = parseScope(req.query.scope);\n const sessionId = req.query.sessionId ? String(req.query.sessionId) : undefined;\n const taskId = req.query.taskId ? String(req.query.taskId) : undefined;\n const repo = req.query.repo ? String(req.query.repo) : undefined;\n const persona = req.query.persona ? String(req.query.persona) : undefined;\n const value = await this.baseline.recall(req.params.key, {\n scope,\n sessionId,\n taskId,\n repo,\n persona,\n });\n \n if (value === undefined) {\n res.status(404).json({ error: 'not_found', message: 'Key not found' });\n return;\n }\n\n res.json({ value });\n } catch (error) {\n next(error);\n }\n }\n\n // ─── Stats Handler ─────────────────────────────────────────────────────────\n\n private async getStats(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const stats = this.baseline.getStats();\n res.json(stats);\n } catch (error) {\n next(error);\n }\n }\n\n // ─── Prometheus Metrics (SIGNAL-005) ───────────────────────────────────────\n\n private async getMetrics(req: Request, res: Response, next: NextFunction): Promise<void> {\n try {\n const stats = this.baseline.getStats();\n const lines: string[] = [];\n\n const gauge = (name: string, help: string, value: number, labels?: string) => {\n lines.push(`# HELP ${name} ${help}`);\n lines.push(`# TYPE ${name} gauge`);\n lines.push(labels ? `${name}{${labels}} ${value}` : `${name} ${value}`);\n };\n\n const counter = (name: string, help: string, value: number, labels?: string) => {\n lines.push(`# HELP ${name} ${help}`);\n lines.push(`# TYPE ${name} counter`);\n lines.push(labels ? `${name}{${labels}} ${value}` : `${name} ${value}`);\n };\n\n // ── Uptime ──────────────────────────────────────────────────────────\n gauge('baseline_uptime_seconds', 'Seconds since API server started',\n Math.round((Date.now() - this.metricsCounters.serverStartTime) / 1000));\n\n // ── Tasks ───────────────────────────────────────────────────────────\n const tasks = this.baseline.listTasks();\n const tasksByStatus = tasks.reduce((acc, t) => {\n acc[t.status] = (acc[t.status] ?? 0) + 1;\n return acc;\n }, {} as Record<string, number>);\n\n lines.push('# HELP baseline_tasks_active Current tasks by status');\n lines.push('# TYPE baseline_tasks_active gauge');\n for (const [status, count] of Object.entries(tasksByStatus)) {\n lines.push(`baseline_tasks_active{status=\"${status}\"} ${count}`);\n }\n\n lines.push('# HELP baseline_tasks_total Cumulative tasks by terminal status');\n lines.push('# TYPE baseline_tasks_total counter');\n for (const [status, count] of this.metricsCounters.tasksTotal) {\n lines.push(`baseline_tasks_total{status=\"${status}\"} ${count}`);\n }\n\n // ── Agents ──────────────────────────────────────────────────────────\n const agentStats = stats.orchestrator;\n gauge('baseline_agents_total', 'Total registered agents', agentStats.agents?.total ?? 0);\n gauge('baseline_agents_active', 'Currently active agents',\n Object.values(agentStats.agents?.byRole ?? {}).reduce((a: number, b) => a + (b as number), 0));\n\n // ── Memory ──────────────────────────────────────────────────────────\n const memStats = stats.memory;\n const memTotal = (memStats.working ?? 0) + (memStats.session ?? 0) +\n (memStats.longTerm ?? 0) + (memStats.shared ?? 0);\n gauge('baseline_memory_entries', 'Total memory entries stored', memTotal);\n\n // ── Knowledge Indexer ───────────────────────────────────────────────\n const idxStats = stats.indexer;\n gauge('baseline_knowledge_documents', 'Documents indexed in knowledge base', idxStats.documents ?? 0);\n gauge('baseline_knowledge_compressions', 'Pre-computed compressions in index', idxStats.compressions ?? 0);\n\n // ── Cache ────────────────────────────────────────────────────────────\n const cacheStats = stats.cache;\n if (typeof cacheStats.hits === 'number') {\n counter('baseline_cache_hits_total', 'Total semantic cache hits', cacheStats.hits);\n counter('baseline_cache_misses_total', 'Total semantic cache misses', cacheStats.misses ?? 0);\n if (cacheStats.hits + (cacheStats.misses ?? 0) > 0) {\n gauge('baseline_cache_hit_rate', 'Cache hit rate (0–1)',\n cacheStats.hits / (cacheStats.hits + (cacheStats.misses ?? 0)));\n }\n }\n\n // ── HTTP requests ────────────────────────────────────────────────────\n lines.push('# HELP baseline_http_requests_total HTTP requests by method and status');\n lines.push('# TYPE baseline_http_requests_total counter');\n for (const [label, count] of this.metricsCounters.requestsTotal) {\n const [method, status] = label.split('_');\n lines.push(`baseline_http_requests_total{method=\"${method}\",status=\"${status}\"} ${count}`);\n }\n\n // p50 + p95 latency per method\n lines.push('# HELP baseline_http_request_duration_p50_ms HTTP request duration p50 in ms');\n lines.push('# TYPE baseline_http_request_duration_p50_ms gauge');\n lines.push('# HELP baseline_http_request_duration_p95_ms HTTP request duration p95 in ms');\n lines.push('# TYPE baseline_http_request_duration_p95_ms gauge');\n for (const [method, durations] of this.metricsCounters.requestDurationMs) {\n if (durations.length > 0) {\n const sorted = [...durations].sort((a, b) => a - b);\n const p50 = sorted[Math.floor(sorted.length * 0.5)];\n const p95 = sorted[Math.floor(sorted.length * 0.95)];\n lines.push(`baseline_http_request_duration_p50_ms{method=\"${method}\"} ${p50}`);\n lines.push(`baseline_http_request_duration_p95_ms{method=\"${method}\"} ${p95}`);\n }\n }\n\n // ── Per-agent-role token usage (SIGNAL-013) ──────────────────────────\n if (this.metricsCounters.tokensByAgentRole.size > 0) {\n lines.push('# HELP baseline_task_tokens_total Cumulative tokens used by agent role');\n lines.push('# TYPE baseline_task_tokens_total counter');\n for (const [role, tokens] of this.metricsCounters.tokensByAgentRole) {\n lines.push(`baseline_task_tokens_total{role=\"${role}\"} ${tokens}`);\n }\n }\n\n // ── WebSocket ────────────────────────────────────────────────────────\n gauge('baseline_ws_active_connections', 'Currently active WebSocket connections', this.clients.size);\n counter('baseline_ws_connections_total', 'Total WebSocket connections since start', this.metricsCounters.wsConnections);\n\n // ── Rollback & Autonomous Accuracy (SIGNAL-046) ──────────────────────\n const rollbackTotal = this.metricsCounters.tasksTotal.get('rolledback') ?? 0;\n counter('baseline_rollback_total', 'Cumulative rollbacks since start', rollbackTotal);\n gauge('baseline_autonomous_accuracy',\n 'Ratio of self-verified autonomous task completions to total autonomous completions (0–1)',\n this.metricsCounters.autonomousAccuracy);\n\n // ── Per-Tenant Cost (SIGNAL-052) ──────────────────────────────────────\n if (this.costGuard) {\n const tenantCosts = this.costGuard.getCostByTenant();\n if (tenantCosts.length > 0) {\n lines.push('# HELP baseline_tenant_cost_usd Estimated LLM cost in USD by tenant');\n lines.push('# TYPE baseline_tenant_cost_usd gauge');\n for (const tc of tenantCosts) {\n lines.push(`baseline_tenant_cost_usd{tenant_id=\"${tc.tenantId}\"} ${tc.totalCostUsd.toFixed(6)}`);\n }\n }\n }\n\n // ── Intelligence Loop (SIGNAL-049) ───────────────────────────────────\n if (this.traceCurator) {\n gauge('baseline_trace_curator_dataset_size',\n 'Number of ground-truth cases in the TraceCurator dataset',\n this.traceCurator.getDatasetSize());\n }\n if (this.modelVersionRegistry) {\n const activeProviders = this.modelVersionRegistry.listActiveProviders();\n if (activeProviders.length > 0) {\n lines.push('# HELP baseline_active_model_version Active model version per provider (info metric, value=1)');\n lines.push('# TYPE baseline_active_model_version gauge');\n for (const { provider, modelId } of activeProviders) {\n lines.push(`baseline_active_model_version{provider=\"${provider}\",model=\"${modelId}\"} 1`);\n }\n }\n }\n if (this.productionEvalPipeline) {\n const history = this.productionEvalPipeline.getHistory();\n if (history.length > 0) {\n // Emit latest score per model_id\n const latestByModel = new Map<string, number>();\n for (const entry of history) {\n latestByModel.set(entry.modelId, entry.score);\n }\n lines.push('# HELP baseline_eval_score_latest Latest production eval score per model (0-100)');\n lines.push('# TYPE baseline_eval_score_latest gauge');\n for (const [modelId, score] of latestByModel) {\n lines.push(`baseline_eval_score_latest{model_id=\"${modelId}\"} ${score}`);\n }\n }\n }\n\n // ── Model Drift (SIGNAL-071) ──────────────────────────────────────────\n if (this.driftDetector && this.productionEvalPipeline) {\n const history = this.productionEvalPipeline.getHistory();\n if (history.length >= 3) {\n const driftReport = this.driftDetector.check(history);\n const severityNum = driftReport.severity === 'critical' ? 2\n : driftReport.severity === 'warning' ? 1 : 0;\n gauge('baseline_model_drift_severity',\n 'Model quality drift severity: 0=none 1=warning 2=critical',\n severityNum);\n gauge('baseline_model_drift_delta',\n 'Score delta from rolling baseline (negative = regression)',\n driftReport.delta);\n gauge('baseline_model_drift_baseline_score',\n 'Rolling baseline score used for drift comparison',\n driftReport.baselineScore);\n gauge('baseline_model_drift_current_score',\n 'Current model eval score from latest run',\n driftReport.currentScore);\n counter('baseline_model_drift_samples_analyzed',\n 'Number of eval history entries analyzed for drift',\n driftReport.samplesAnalyzed);\n }\n }\n\n // ── OPA Policy Latency (SLO-6) ────────────────────────────────────────\n if (this.opaPolicyGate) {\n const opaMetrics = this.opaPolicyGate.getEvalMetrics();\n if (opaMetrics.count > 0) {\n gauge('baseline_opa_evaluation_p50_ms', 'OPA policy evaluation p50 latency in ms', opaMetrics.p50Ms);\n gauge('baseline_opa_evaluation_p95_ms', 'OPA policy evaluation p95 latency in ms', opaMetrics.p95Ms);\n gauge('baseline_opa_evaluation_p99_ms', 'OPA policy evaluation p99 latency in ms (SLO-6 target: < 500ms)', opaMetrics.p99Ms);\n counter('baseline_opa_evaluations_total', 'Total OPA policy evaluations', opaMetrics.count);\n }\n }\n\n // ── Governance ───────────────────────────────────────────────────────\n gauge('baseline_governance_required_approvals', 'Operations requiring human approval',\n stats.governance.requireApproval);\n gauge('baseline_governance_restricted_operations', 'Restricted operation count',\n stats.governance.restricted);\n\n res.set('Content-Type', 'text/plain; version=0.0.4; charset=utf-8');\n res.send(lines.join('\\n') + '\\n');\n } catch (error) {\n next(error);\n }\n }\n\n /** Inject a CostGuard instance for per-tenant cost metrics (SIGNAL-052). */\n setCostGuard(guard: import('../core/cost-guard.js').CostGuard): void {\n this.costGuard = guard;\n }\n\n /** Inject a TraceCurator for the dataset-size gauge (SIGNAL-049). */\n setTraceCurator(curator: import('../core/trace-curator.js').TraceCurator): void {\n this.traceCurator = curator;\n }\n\n /** Inject a ModelVersionRegistry for the active-model gauge (SIGNAL-049). */\n setModelVersionRegistry(registry: import('../core/model-version-registry.js').ModelVersionRegistry): void {\n this.modelVersionRegistry = registry;\n }\n\n /** Inject a ProductionEvalPipeline for the eval score gauge (SIGNAL-056). */\n setProductionEvalPipeline(pipeline: import('../core/production-eval-pipeline.js').ProductionEvalPipeline): void {\n this.productionEvalPipeline = pipeline;\n }\n\n /** Inject a DriftDetector for model drift metrics (SIGNAL-071). */\n setDriftDetector(detector: import('../core/drift-detector.js').DriftDetector): void {\n this.driftDetector = detector;\n }\n\n /** Inject an OPAPolicyGate for SLO-6 latency metrics. */\n setOPAPolicyGate(gate: import('../core/opa-policy-gate.js').OPAPolicyGate): void {\n this.opaPolicyGate = gate;\n }\n\n // ─── WebSocket ─────────────────────────────────────────────────────────────\n\n private async handleWebSocketMessage(ws: WebSocket, message: unknown): Promise<void> {\n const parsed = parseSocketMessage(message);\n if (!parsed) {\n ws.send(JSON.stringify({ error: 'Unknown message type' }));\n return;\n }\n\n switch (parsed.type) {\n case 'subscribe':\n // Subscribe to task updates\n ws.send(JSON.stringify({ type: 'subscribed', taskId: parsed.taskId }));\n break;\n\n case 'ping':\n ws.send(JSON.stringify({ type: 'pong', timestamp: Date.now() }));\n break;\n\n default:\n ws.send(JSON.stringify({ error: 'Unknown message type' }));\n }\n }\n\n /**\n * Broadcast message to all connected WebSocket clients.\n */\n broadcast(message: object): void {\n const data = JSON.stringify(message);\n for (const client of this.clients) {\n if (client.readyState === WebSocket.OPEN) {\n client.send(data);\n }\n }\n }\n\n // ─── Error Handler ─────────────────────────────────────────────────────────\n\n private errorHandler(err: Error, req: Request, res: Response, _next: NextFunction): void {\n process.stderr.write(`[baseline:api] ${req.method} ${req.path} — ${err.stack ?? err.message}\\n`);\n\n res.status(500).json({\n error: 'internal_error',\n message: 'An unexpected error occurred. Check server logs for details.',\n });\n }\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n private formatStartError(error: NodeJS.ErrnoException): Error {\n if (error.code === 'EADDRINUSE') {\n return new Error(\n `Port ${this.config.port} is already in use. Stop the existing Baseline API process or choose a different port.`\n );\n }\n if (error.code === 'EACCES') {\n return new Error(\n `Insufficient permission to bind port ${this.config.port}. Try a non-privileged port (for example: 3141).`\n );\n }\n return new Error(`Failed to start API server on port ${this.config.port}: ${error.message}`);\n }\n\n async start(): Promise<void> {\n if (this.server.listening) return;\n\n return new Promise((resolve, reject) => {\n const onError = (error: NodeJS.ErrnoException) => {\n this.server.off('listening', onListening);\n reject(this.formatStartError(error));\n };\n\n const onListening = () => {\n this.server.off('error', onError);\n resolve();\n };\n\n this.server.once('error', onError);\n this.server.once('listening', onListening);\n this.server.listen(this.config.port);\n });\n }\n\n async stop(): Promise<void> {\n this.wss.close();\n if (!this.server.listening) return;\n\n return new Promise((resolve, reject) => {\n this.server.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n });\n }\n}\n","/**\n * Evidence Export\n *\n * Exports DFI-ready evidence bundles from the Baseline governance layer.\n * Produces standalone JSON that external auditors can review without\n * Baseline knowledge — self-describing, timestamped, signed metadata.\n */\n\nimport { BaselineGovernSystem } from '@baselineos/govern';\nimport type {\n GovernanceAuditEvent,\n ApprovalRequest,\n} from '@baselineos/govern';\nimport { existsSync, mkdirSync, writeFileSync } from 'node:fs';\nimport { dirname } from 'node:path';\n\n// ─── Types ──────────────────────────────────────────────────────────\n\nexport interface DFIEvidenceBundle {\n version: '1.0.0';\n exportedAt: string;\n exportedBy: string;\n format: 'baseline-evidence-bundle';\n metadata: {\n policyId?: string;\n resourceId?: string;\n governanceSystem: string;\n exportDuration: number;\n };\n summary: {\n totalAuditEvents: number;\n totalComplianceChecks: number;\n totalApprovals: number;\n overallCompliant: boolean;\n riskLevel?: string;\n };\n policy?: {\n id: string;\n name: string;\n description: string;\n status: string;\n createdAt: string;\n updatedAt: string;\n };\n complianceChecks: Array<{\n id: string;\n standard: string;\n compliant: boolean;\n violations: string[];\n checked: string;\n }>;\n approvals: Array<{\n id: string;\n policyId: string;\n status: string;\n approvals: Array<{ approver: string; at: string }>;\n rejections: Array<{ approver: string; at: string }>;\n }>;\n auditTrail: Array<{\n id: string;\n type: string;\n actor: string;\n timestamp: string;\n details: Record<string, unknown>;\n }>;\n}\n\nexport interface ExportOptions {\n policyId?: string;\n resourceId?: string;\n outputPath?: string;\n operator?: string;\n includeDetails?: boolean;\n}\n\n// ─── Exporter ───────────────────────────────────────────────────────\n\nexport class EvidenceExporter {\n private govern: BaselineGovernSystem;\n\n constructor(govern?: BaselineGovernSystem) {\n this.govern = govern ?? new BaselineGovernSystem();\n }\n\n async exportBundle(options: ExportOptions = {}): Promise<DFIEvidenceBundle> {\n const start = Date.now();\n\n const policyId = options.policyId;\n const resourceId = options.resourceId;\n\n // Get governance data\n const evidenceBundle = policyId\n ? this.govern.getEvidenceBundle(policyId, resourceId)\n : { approvals: [], auditTrail: [] as GovernanceAuditEvent[] };\n\n const auditTrail = this.govern.getAuditTrail(policyId, resourceId);\n\n // Extract compliance checks from audit events\n const complianceEvents = auditTrail.filter(\n (e: GovernanceAuditEvent) => e.type === 'compliance_checked',\n );\n\n const bundle: DFIEvidenceBundle = {\n version: '1.0.0',\n exportedAt: new Date().toISOString(),\n exportedBy: options.operator ?? 'baseline-evidence-exporter',\n format: 'baseline-evidence-bundle',\n metadata: {\n policyId,\n resourceId,\n governanceSystem: 'BaselineGovernSystem',\n exportDuration: 0,\n },\n summary: {\n totalAuditEvents: auditTrail.length,\n totalComplianceChecks: complianceEvents.length,\n totalApprovals: evidenceBundle.approvals.length,\n overallCompliant: complianceEvents.every(\n (e: GovernanceAuditEvent) => (e.details as Record<string, unknown>).compliant === true,\n ),\n riskLevel: this.extractRiskLevel(auditTrail),\n },\n policy: evidenceBundle.policy\n ? {\n id: evidenceBundle.policy.id,\n name: evidenceBundle.policy.name,\n description: evidenceBundle.policy.content,\n status: evidenceBundle.policy.status,\n createdAt: evidenceBundle.policy.created.toISOString(),\n updatedAt: (evidenceBundle.policy.approved ?? evidenceBundle.policy.created).toISOString(),\n }\n : undefined,\n complianceChecks: complianceEvents.map((e: GovernanceAuditEvent) => ({\n id: e.id,\n standard: String((e.details as Record<string, unknown>).standard ?? ''),\n compliant: Boolean((e.details as Record<string, unknown>).compliant),\n violations: this.extractViolations(e),\n checked: e.timestamp.toISOString(),\n })),\n approvals: evidenceBundle.approvals.map((a: ApprovalRequest) => ({\n id: a.id,\n policyId: a.policyId,\n status: a.status,\n approvals: a.approvals.map((ap: { approver: string; at: Date; note?: string }) => ({\n approver: ap.approver,\n at: ap.at.toISOString(),\n })),\n rejections: a.rejections.map((r: { approver: string; at: Date; note?: string }) => ({\n approver: r.approver,\n at: r.at.toISOString(),\n })),\n })),\n auditTrail: auditTrail.map((e: GovernanceAuditEvent) => ({\n id: e.id,\n type: e.type,\n actor: e.actor,\n timestamp: e.timestamp.toISOString(),\n details: options.includeDetails !== false ? e.details : {},\n })),\n };\n\n bundle.metadata.exportDuration = Date.now() - start;\n return bundle;\n }\n\n async exportJSON(options: ExportOptions = {}): Promise<string> {\n const bundle = await this.exportBundle(options);\n return JSON.stringify(bundle, null, 2);\n }\n\n async exportToFile(options: ExportOptions & { outputPath: string }): Promise<{\n path: string;\n size: number;\n duration: number;\n }> {\n const start = Date.now();\n const json = await this.exportJSON(options);\n\n const dir = dirname(options.outputPath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n writeFileSync(options.outputPath, json, 'utf-8');\n\n return {\n path: options.outputPath,\n size: Buffer.byteLength(json, 'utf-8'),\n duration: Date.now() - start,\n };\n }\n\n exportSummary(bundle: DFIEvidenceBundle): string {\n const lines: string[] = [\n '═══ Baseline Evidence Bundle Summary ═══',\n '',\n `Exported: ${bundle.exportedAt}`,\n `By: ${bundle.exportedBy}`,\n `Format: ${bundle.format} v${bundle.version}`,\n '',\n '─── Summary ───',\n `Audit Events: ${bundle.summary.totalAuditEvents}`,\n `Compliance Checks: ${bundle.summary.totalComplianceChecks}`,\n `Approvals: ${bundle.summary.totalApprovals}`,\n `Overall Compliant: ${bundle.summary.overallCompliant ? 'YES' : 'NO'}`,\n ];\n\n if (bundle.summary.riskLevel) {\n lines.push(`Risk Level: ${bundle.summary.riskLevel.toUpperCase()}`);\n }\n\n if (bundle.policy) {\n lines.push('', '─── Policy ───');\n lines.push(`${bundle.policy.name} (${bundle.policy.id})`);\n lines.push(`Status: ${bundle.policy.status}`);\n }\n\n if (bundle.complianceChecks.length > 0) {\n lines.push('', '─── Compliance Checks ───');\n for (const check of bundle.complianceChecks) {\n const status = check.compliant ? 'PASS' : 'FAIL';\n lines.push(`[${status}] ${check.standard} — ${check.violations.length} violation(s)`);\n }\n }\n\n lines.push('', `Export Duration: ${bundle.metadata.exportDuration}ms`);\n lines.push('═══════════════════════════════════════');\n\n return lines.join('\\n');\n }\n\n private extractRiskLevel(auditTrail: GovernanceAuditEvent[]): string | undefined {\n const riskEvents = auditTrail.filter(\n (e) => e.details && (e.details as Record<string, unknown>).riskLevel,\n );\n if (riskEvents.length === 0) return undefined;\n const last = riskEvents[riskEvents.length - 1];\n return String((last.details as Record<string, unknown>).riskLevel);\n }\n\n /**\n * Export evidence bundle as a self-contained HTML document suitable for\n * PDF conversion (print to PDF from browser, or puppeteer/wkhtmltopdf).\n * DFI partners can open this in any browser and print.\n */\n async exportHTML(options: ExportOptions = {}): Promise<string> {\n const bundle = await this.exportBundle(options);\n const escHtml = (s: string) => s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\n const complianceRows = bundle.complianceChecks.map(c =>\n `<tr><td>${escHtml(c.standard)}</td><td class=\"${c.compliant ? 'pass' : 'fail'}\">${c.compliant ? 'PASS' : 'FAIL'}</td><td>${c.violations.length}</td><td>${c.checked}</td></tr>`\n ).join('\\n');\n\n const approvalRows = bundle.approvals.map(a =>\n `<tr><td>${escHtml(a.policyId)}</td><td>${a.status}</td><td>${a.approvals.map(ap => escHtml(ap.approver)).join(', ') || '—'}</td></tr>`\n ).join('\\n');\n\n const auditRows = bundle.auditTrail.slice(0, 50).map(e =>\n `<tr><td>${e.timestamp}</td><td>${escHtml(e.type)}</td><td>${escHtml(e.actor)}</td></tr>`\n ).join('\\n');\n\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<title>Baseline Evidence Bundle</title>\n<style>\n body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; max-width: 800px; margin: 0 auto; padding: 40px 20px; color: #1a1a1a; }\n h1 { font-size: 24px; border-bottom: 2px solid #1a1a1a; padding-bottom: 8px; }\n h2 { font-size: 16px; margin-top: 32px; color: #333; }\n table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 13px; }\n th, td { border: 1px solid #ddd; padding: 8px 12px; text-align: left; }\n th { background: #f5f5f5; font-weight: 600; }\n .pass { color: #17C653; font-weight: 600; }\n .fail { color: #F8285A; font-weight: 600; }\n .meta { color: #666; font-size: 13px; }\n .summary-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 16px 0; }\n .summary-card { border: 1px solid #ddd; border-radius: 8px; padding: 16px; text-align: center; }\n .summary-card .value { font-size: 28px; font-weight: 700; }\n .summary-card .label { font-size: 11px; color: #666; text-transform: uppercase; letter-spacing: 0.5px; margin-top: 4px; }\n .compliant { border-color: #17C653; }\n .non-compliant { border-color: #F8285A; }\n .footer { margin-top: 40px; padding-top: 16px; border-top: 1px solid #ddd; font-size: 11px; color: #999; }\n @media print { body { padding: 20px; } }\n</style>\n</head>\n<body>\n<h1>Baseline Evidence Bundle</h1>\n<p class=\"meta\">Exported: ${bundle.exportedAt} &middot; By: ${escHtml(bundle.exportedBy)} &middot; Format: ${bundle.format} v${bundle.version}</p>\n\n<div class=\"summary-grid\">\n <div class=\"summary-card ${bundle.summary.overallCompliant ? 'compliant' : 'non-compliant'}\">\n <div class=\"value\">${bundle.summary.overallCompliant ? 'YES' : 'NO'}</div>\n <div class=\"label\">Compliant</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"value\">${bundle.summary.totalAuditEvents}</div>\n <div class=\"label\">Audit Events</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"value\">${bundle.summary.totalComplianceChecks}</div>\n <div class=\"label\">Compliance Checks</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"value\">${bundle.summary.totalApprovals}</div>\n <div class=\"label\">Approvals</div>\n </div>\n</div>\n\n${bundle.summary.riskLevel ? `<p><strong>Risk Level:</strong> ${escHtml(bundle.summary.riskLevel.toUpperCase())}</p>` : ''}\n\n${bundle.policy ? `\n<h2>Policy</h2>\n<table>\n <tr><th>Name</th><td>${escHtml(bundle.policy.name)}</td></tr>\n <tr><th>ID</th><td>${escHtml(bundle.policy.id)}</td></tr>\n <tr><th>Status</th><td>${bundle.policy.status}</td></tr>\n <tr><th>Description</th><td>${escHtml(bundle.policy.description)}</td></tr>\n</table>\n` : ''}\n\n${bundle.complianceChecks.length > 0 ? `\n<h2>Compliance Checks</h2>\n<table>\n <tr><th>Standard</th><th>Result</th><th>Violations</th><th>Checked</th></tr>\n ${complianceRows}\n</table>\n` : ''}\n\n${bundle.approvals.length > 0 ? `\n<h2>Approvals</h2>\n<table>\n <tr><th>Policy</th><th>Status</th><th>Approvers</th></tr>\n ${approvalRows}\n</table>\n` : ''}\n\n<h2>Audit Trail${bundle.auditTrail.length > 50 ? ` (first 50 of ${bundle.auditTrail.length})` : ''}</h2>\n<table>\n <tr><th>Timestamp</th><th>Event</th><th>Actor</th></tr>\n ${auditRows || '<tr><td colspan=\"3\">No audit events</td></tr>'}\n</table>\n\n<div class=\"footer\">\n Generated by Baseline Protocol &middot; ${bundle.format} v${bundle.version} &middot; Export duration: ${bundle.metadata.exportDuration}ms\n</div>\n</body>\n</html>`;\n }\n\n async exportHTMLToFile(options: ExportOptions & { outputPath: string }): Promise<{\n path: string;\n size: number;\n duration: number;\n }> {\n const start = Date.now();\n const html = await this.exportHTML(options);\n const dir = dirname(options.outputPath);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(options.outputPath, html, 'utf-8');\n return { path: options.outputPath, size: Buffer.byteLength(html, 'utf-8'), duration: Date.now() - start };\n }\n\n private extractViolations(event: GovernanceAuditEvent): string[] {\n const details = event.details as Record<string, unknown>;\n const count = Number(details.violationCount ?? 0);\n if (count === 0) return [];\n return [`${count} violation(s) detected`];\n }\n}\n","/**\n * Task Handoff Protocol — Cross-agent task chaining\n *\n * Enables output of one agent to feed as input to the next,\n * forming multi-step pipelines across specialized agents.\n *\n * @license Apache-2.0\n */\n\nimport { randomUUID } from 'crypto';\nimport type { TaskInput, TaskPriority } from './types.js';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface PipelineStep {\n id: string;\n capability: string;\n description: string;\n dependsOn: string[];\n affinityAgent?: string;\n input?: Record<string, unknown>;\n}\n\nexport interface Pipeline {\n id: string;\n name: string;\n steps: PipelineStep[];\n priority: TaskPriority;\n createdAt: number;\n}\n\nexport interface PipelineExecution {\n id: string;\n pipelineId: string;\n steps: PipelineStepExecution[];\n status: 'pending' | 'running' | 'completed' | 'failed';\n startedAt?: number;\n completedAt?: number;\n}\n\nexport interface PipelineStepExecution {\n stepId: string;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';\n agentId?: string;\n taskId?: string;\n output?: unknown;\n error?: string;\n startedAt?: number;\n completedAt?: number;\n}\n\nexport interface HandoffContext {\n fromAgent: string;\n toAgent: string;\n fromStep: string;\n toStep: string;\n payload: Record<string, unknown>;\n timestamp: number;\n}\n\n// ─── Pipeline Builder ─────────────────────────────────────────────────────────\n\nexport function createPipeline(\n name: string,\n steps: Array<Omit<PipelineStep, 'id'>>,\n priority: TaskPriority = 'medium',\n): Pipeline {\n return {\n id: randomUUID(),\n name,\n steps: steps.map((s, i) => ({\n ...s,\n id: `step-${i}`,\n })),\n priority,\n createdAt: Date.now(),\n };\n}\n\nexport function createPipelineExecution(pipeline: Pipeline): PipelineExecution {\n return {\n id: randomUUID(),\n pipelineId: pipeline.id,\n steps: pipeline.steps.map(s => ({\n stepId: s.id,\n status: 'pending',\n })),\n status: 'pending',\n };\n}\n\n// ─── Step Resolution ──────────────────────────────────────────────────────────\n\nexport function getReadySteps(execution: PipelineExecution, pipeline: Pipeline): PipelineStep[] {\n const completedStepIds = new Set(\n execution.steps\n .filter(s => s.status === 'completed')\n .map(s => s.stepId)\n );\n\n return pipeline.steps.filter(step => {\n const stepExec = execution.steps.find(s => s.stepId === step.id);\n if (!stepExec || stepExec.status !== 'pending') return false;\n return step.dependsOn.every(dep => completedStepIds.has(dep));\n });\n}\n\nexport function isComplete(execution: PipelineExecution): boolean {\n return execution.steps.every(\n s => s.status === 'completed' || s.status === 'skipped'\n );\n}\n\nexport function isFailed(execution: PipelineExecution): boolean {\n return execution.steps.some(s => s.status === 'failed');\n}\n\n// ─── Handoff ──────────────────────────────────────────────────────────────────\n\nexport function createHandoff(\n fromAgent: string,\n toAgent: string,\n fromStep: string,\n toStep: string,\n payload: Record<string, unknown>,\n): HandoffContext {\n return {\n fromAgent,\n toAgent,\n fromStep,\n toStep,\n payload,\n timestamp: Date.now(),\n };\n}\n\nexport function buildStepTaskInput(\n step: PipelineStep,\n pipeline: Pipeline,\n priorOutputs: Map<string, unknown>,\n): TaskInput {\n const context: Record<string, unknown> = {\n pipelineId: pipeline.id,\n pipelineName: pipeline.name,\n stepId: step.id,\n ...step.input,\n };\n\n // Inject outputs from dependencies\n for (const depId of step.dependsOn) {\n const output = priorOutputs.get(depId);\n if (output !== undefined) {\n context[`dep:${depId}`] = output;\n }\n }\n\n return {\n title: `[${pipeline.name}] ${step.description}`,\n description: step.description,\n priority: pipeline.priority,\n requiredCapabilities: [step.capability],\n acceptanceCriteria: [],\n context,\n };\n}\n\n// ─── Standard Pipelines ───────────────────────────────────────────────────────\n\nexport const STANDARD_PIPELINES = {\n 'code-review': createPipeline('Code Review', [\n { capability: 'code-generation', description: 'Generate or modify code', dependsOn: [] },\n { capability: 'testing', description: 'Write tests for the changes', dependsOn: ['step-0'] },\n { capability: 'review', description: 'Review code and tests for quality', dependsOn: ['step-0', 'step-1'] },\n ]),\n 'compliance-check': createPipeline('Compliance Check', [\n { capability: 'analysis', description: 'Analyze requirements and compliance context', dependsOn: [] },\n { capability: 'compliance', description: 'Run compliance checks and generate evidence', dependsOn: ['step-0'] },\n { capability: 'documentation', description: 'Document findings and recommendations', dependsOn: ['step-1'] },\n ]),\n 'migration': createPipeline('Data Migration', [\n { capability: 'analysis', description: 'Analyze migration scope and risks', dependsOn: [] },\n { capability: 'migration', description: 'Execute migration with safety checks', dependsOn: ['step-0'] },\n { capability: 'testing', description: 'Verify migration integrity', dependsOn: ['step-1'] },\n { capability: 'compliance', description: 'Generate compliance evidence for migration', dependsOn: ['step-2'] },\n ], 'high'),\n 'feature-delivery': createPipeline('Feature Delivery', [\n { capability: 'analysis', description: 'Decompose feature requirements', dependsOn: [] },\n { capability: 'code-generation', description: 'Implement the feature', dependsOn: ['step-0'] },\n { capability: 'testing', description: 'Write and run tests', dependsOn: ['step-1'] },\n { capability: 'review', description: 'Code review', dependsOn: ['step-1', 'step-2'] },\n { capability: 'documentation', description: 'Update documentation', dependsOn: ['step-3'] },\n ]),\n};\n","/**\n * Temporal Workflows — SIGNAL-045\n *\n * Durable workflow definitions for BaselineOS task execution.\n *\n * Workflows run in Temporal's deterministic sandbox. They orchestrate\n * activity calls and carry the full execution history, enabling:\n * - Automatic retry of failed activities (with backoff)\n * - Pause/resume after process restarts\n * - Full audit trail via Temporal's event history\n * - Human-in-the-loop signals (humanApproval, pause, cancel)\n *\n * Main workflow: baselineTaskWorkflow\n * 1. [Optional] decompose — if task complexity is 'epic' or 'complex'\n * 2. execute — call the LLM via executeTask activity\n * 3. selfVerify — agent verifies its own output\n * 4. [Optional] supervisorReview — for high-priority or failed self-verify\n * 5. Return WorkflowResult\n *\n * Signals:\n * humanApproval(approved: boolean, reason: string) — unblocks paused workflows\n *\n * Queries:\n * getStatus() — returns current workflow phase\n *\n * @license Apache-2.0\n */\n\nimport { proxyActivities, defineSignal, defineQuery, setHandler, condition, sleep, ApplicationFailure } from '@temporalio/workflow';\nimport type { BaselineActivities } from './activities.js';\nimport type { Task, ExecutionStep, VerificationResult, Review } from '../core/types.js';\nimport type { ExecutionResult, DecompositionResult } from '../core/execution-engine.js';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface BaselineTaskWorkflowInput {\n task: Task;\n step?: ExecutionStep;\n /** Whether to run supervisor review after self-verify (default: false) */\n runSupervisorReview?: boolean;\n /** Whether to decompose the task before executing (default: false) */\n runDecomposition?: boolean;\n /** Whether to pause for human approval before execution (default: false) */\n requireHumanApproval?: boolean;\n}\n\nexport interface WorkflowResult {\n taskId: string;\n output: string;\n tokensUsed: number;\n duration: number;\n model: string;\n verification: VerificationResult;\n review?: Review;\n decomposition?: DecompositionResult;\n phase: WorkflowPhase;\n}\n\nexport type WorkflowPhase =\n | 'initialising'\n | 'awaiting-approval'\n | 'decomposing'\n | 'executing'\n | 'verifying'\n | 'reviewing'\n | 'completed'\n | 'failed';\n\n// ─── Signals & Queries ────────────────────────────────────────────────────────\n\nexport const humanApprovalSignal = defineSignal<[{ approved: boolean; reason: string }]>('humanApproval');\nexport const getStatusQuery = defineQuery<WorkflowPhase>('getStatus');\n\n// ─── Activity proxies ─────────────────────────────────────────────────────────\n\nconst {\n executeTask,\n selfVerifyTask,\n conductTaskReview,\n decomposeTask,\n} = proxyActivities<BaselineActivities>({\n startToCloseTimeout: '5 minutes',\n retry: {\n maximumAttempts: 3,\n initialInterval: '1 second',\n backoffCoefficient: 2,\n maximumInterval: '30 seconds',\n nonRetryableErrorTypes: ['ComplianceFailure'],\n },\n});\n\n// ─── Main Workflow ────────────────────────────────────────────────────────────\n\nexport async function baselineTaskWorkflow(input: BaselineTaskWorkflowInput): Promise<WorkflowResult> {\n let phase: WorkflowPhase = 'initialising';\n setHandler(getStatusQuery, () => phase);\n\n // ── Human approval gate ──────────────────────────────────────────────────\n if (input.requireHumanApproval) {\n phase = 'awaiting-approval';\n let approved = false;\n let approvalReason = '';\n\n setHandler(humanApprovalSignal, ({ approved: a, reason }) => {\n approved = a;\n approvalReason = reason;\n });\n\n // Wait up to 24 hours for approval\n const signalReceived = await condition(() => approved || approvalReason !== '', '24 hours');\n\n if (!signalReceived || !approved) {\n throw ApplicationFailure.nonRetryable(\n `Human approval not received within timeout${approvalReason ? `: ${approvalReason}` : ''}`,\n 'ApprovalTimeout',\n );\n }\n }\n\n // ── Optional decomposition ───────────────────────────────────────────────\n let decomposition: DecompositionResult | undefined;\n if (input.runDecomposition) {\n phase = 'decomposing';\n decomposition = await decomposeTask({ task: input.task });\n // Small delay to let downstream observers catch the decomposition event\n await sleep(100);\n }\n\n // ── Execute ──────────────────────────────────────────────────────────────\n phase = 'executing';\n const executionStart = Date.now();\n const execution: ExecutionResult = await executeTask({\n task: input.task,\n step: input.step,\n });\n\n // ── Self-verify ──────────────────────────────────────────────────────────\n phase = 'verifying';\n const verification: VerificationResult = await selfVerifyTask({\n task: input.task,\n output: execution.output,\n });\n\n // ── Optional supervisor review ───────────────────────────────────────────\n let review: Review | undefined;\n const needsReview = input.runSupervisorReview || !verification.passed;\n if (needsReview) {\n phase = 'reviewing';\n review = await conductTaskReview({\n task: input.task,\n output: execution.output,\n reviewType: verification.passed ? 'quality' : 'supervisor',\n });\n }\n\n phase = 'completed';\n\n return {\n taskId: input.task.id,\n output: execution.output,\n tokensUsed: execution.tokensUsed,\n duration: Date.now() - executionStart,\n model: execution.model,\n verification,\n review,\n decomposition,\n phase,\n };\n}\n","/**\n * BaselineOS\n * \n * Agentic Governance Engine for AI-native organizations.\n * \n * @example\n * ```typescript\n * import { Baseline } from 'baselineos';\n * \n * // Initialize with your project\n * const baseline = new Baseline({\n * projectRoot: process.cwd(),\n * knowledge: ['./docs', './specs'],\n * });\n * \n * await baseline.init();\n * \n * // Execute autonomous tasks\n * const task = await baseline.run({\n * title: 'Implement feature X',\n * description: 'Build the new authentication flow...',\n * acceptanceCriteria: [\n * { description: 'Tests pass', type: 'automated' },\n * ],\n * });\n * \n * // Wait for completion\n * const result = await task.wait();\n * console.log(result.artifacts);\n * ```\n * \n * @license Apache-2.0\n */\n\nimport { Orchestrator } from './core/orchestrator.js';\nimport { MemorySystem, type MemoryScope, type StoreOptions, type RetrieveOptions } from './core/memory.js';\nimport { KnowledgeIndexer, type ContextLevel, type SearchResult, type Context, type PolicyFilter, type Overlay, type RetrievalBudget } from './core/indexer.js';\nimport { SemanticCache } from './core/cache.js';\nimport { AnthropicEngine, MockExecutionEngine } from './core/execution-engine.js';\nimport type { ExecutionEngine } from './core/execution-engine.js';\nimport { RAGEngine } from './core/rag-engine.js';\nimport { AgentBus } from './core/agent-bus.js';\nimport { ConfigLoader, type BaselineConfig } from './core/config.js';\nimport { MCPServer } from './mcp/server.js';\nimport { APIServer } from './api/server.js';\nimport { basename } from 'path';\n\nimport type {\n Task,\n TaskInput,\n TaskStatus,\n Agent,\n Artifact,\n Checkpoint,\n OrchestratorEvent,\n} from './core/types.js';\nimport type { WorkflowDefinition } from './core/types.js';\n\n// ─── Main Class ──────────────────────────────────────────────────────────────\n\nexport class Baseline {\n private config: BaselineConfig;\n private orchestrator: Orchestrator;\n private memory: MemorySystem;\n private indexer: KnowledgeIndexer;\n private cache: SemanticCache;\n private rag: RAGEngine;\n readonly bus: AgentBus;\n private initialized: boolean = false;\n\n constructor(config: Partial<BaselineConfig> = {}) {\n this.config = ConfigLoader.resolve(config);\n\n // Agent-to-agent messaging bus (SIGNAL-008)\n this.bus = new AgentBus();\n\n // Initialize subsystems\n this.cache = new SemanticCache({\n ttl: this.config.cache.ttl,\n maxSize: this.config.cache.maxSize,\n similarityThreshold: this.config.cache.similarityThreshold,\n });\n\n this.memory = new MemorySystem({\n persistPath: this.config.paths.data,\n });\n\n this.indexer = new KnowledgeIndexer({\n projectRoot: this.config.projectRoot,\n knowledgePaths: this.config.knowledge,\n indexPath: this.config.paths.index,\n repo: this.config.name ?? basename(this.config.projectRoot),\n });\n\n this.rag = new RAGEngine({\n projectRoot: this.config.projectRoot,\n openaiApiKey: process.env.OPENAI_API_KEY,\n ...(this.config.rag ?? {}),\n });\n\n // Create execution engine based on LLM config\n const engine: ExecutionEngine = this.config.llm.provider === 'anthropic' && process.env.ANTHROPIC_API_KEY\n ? new AnthropicEngine({\n apiKey: process.env.ANTHROPIC_API_KEY,\n model: this.config.llm.model,\n maxTokens: this.config.llm.maxTokens,\n projectRoot: this.config.projectRoot,\n agentLoop: true,\n })\n : new MockExecutionEngine();\n\n this.orchestrator = new Orchestrator({\n ...this.config.orchestrator,\n memory: this.memory,\n indexer: this.indexer,\n cache: this.cache,\n checkpointsPath: this.config.paths.checkpoints,\n workflows: this.config.workflows,\n engine,\n bus: this.bus,\n });\n }\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n /**\n * Initialize BaselineOS. Call this before using other methods.\n */\n async init(): Promise<void> {\n if (this.initialized) return;\n\n await this.memory.initialize();\n await this.indexer.initialize();\n await this.rag.ingest(this.config.knowledge);\n\n // Register default agents\n this.registerDefaultAgents();\n\n this.initialized = true;\n }\n\n /**\n * Shutdown gracefully.\n */\n async shutdown(): Promise<void> {\n await this.memory.flush();\n this.memory.close();\n this.initialized = false;\n }\n\n // ─── Task Execution ────────────────────────────────────────────────────────\n\n /**\n * Execute an autonomous task.\n * \n * @param input - Task definition\n * @returns Task handle with status and control methods\n */\n async run(input: TaskInput): Promise<TaskHandle> {\n this.ensureInitialized();\n \n const task = await this.orchestrator.createTask(input);\n \n // Start execution (non-blocking)\n this.orchestrator.executeTask(task.id).catch(err => {\n console.error(`Task ${task.id} failed:`, err);\n });\n\n return new TaskHandle(task, this.orchestrator);\n }\n\n /**\n * Execute a workflow by id.\n */\n async runWorkflow(workflowId: string, input: Partial<TaskInput> = {}): Promise<TaskHandle> {\n this.ensureInitialized();\n const task = await this.orchestrator.createTaskFromWorkflow(workflowId, input);\n this.orchestrator.executeTask(task.id).catch(err => {\n console.error(`Task ${task.id} failed:`, err);\n });\n return new TaskHandle(task, this.orchestrator);\n }\n\n /**\n * Execute a task and wait for completion.\n */\n async runSync(input: TaskInput): Promise<Task> {\n const handle = await this.run(input);\n return handle.wait();\n }\n\n /**\n * Get a task by ID.\n */\n getTask(taskId: string): Task | undefined {\n return this.orchestrator.getTask(taskId);\n }\n\n /**\n * List all tasks.\n */\n listTasks(filter?: { status?: TaskStatus }): Task[] {\n const tasks = this.orchestrator.getAllTasks();\n if (filter?.status) {\n return tasks.filter(t => t.status === filter.status);\n }\n return tasks;\n }\n\n cancelTask(taskId: string, reason?: string): boolean {\n this.ensureInitialized();\n return this.orchestrator.cancelTask(taskId, reason);\n }\n\n async approveTask(taskId: string, approvedBy?: string, approvalToken?: string): Promise<Task> {\n this.ensureInitialized();\n return this.orchestrator.approveTask(taskId, approvedBy, approvalToken);\n }\n\n // ─── Workflows ────────────────────────────────────────────────────────────\n\n registerWorkflow(definition: WorkflowDefinition): void {\n this.orchestrator.registerWorkflow(definition);\n }\n\n listWorkflows(): WorkflowDefinition[] {\n return this.orchestrator.listWorkflows();\n }\n\n getWorkflow(id: string): WorkflowDefinition | undefined {\n return this.orchestrator.getWorkflow(id);\n }\n\n // ─── Knowledge ─────────────────────────────────────────────────────────────\n\n /**\n * Index knowledge base.\n */\n async index(options?: { full?: boolean }): Promise<{ indexed: number; errors: number; skipped: number; changed: string[]; removed: string[] }> {\n this.ensureInitialized();\n \n if (options?.full) {\n await this.indexer.clear();\n }\n \n const result = await this.indexer.indexAll();\n if (result.changed.length > 0 || result.removed.length > 0) {\n this.cache.clear();\n await this.memory.store('index:changes', {\n changed: result.changed,\n removed: result.removed,\n updatedAt: Date.now(),\n }, { scope: 'shared' });\n }\n return result;\n }\n\n /**\n * Search knowledge base.\n */\n async search(query: string, options?: { limit?: number; types?: Array<'doc' | 'code' | 'config' | 'spec' | 'api'>; policy?: PolicyFilter }): Promise<SearchResult[]> {\n this.ensureInitialized();\n return this.indexer.search(query, options);\n }\n\n /**\n * Get context for a subject.\n */\n async getContext(\n subject: string,\n level: ContextLevel = 'working',\n options?: { policy?: PolicyFilter; overlayOrder?: Overlay[]; budget?: RetrievalBudget }\n ): Promise<Context | null> {\n this.ensureInitialized();\n const budget = options?.budget ?? this.config.rag?.budget;\n const resolvedBudget = budget && (budget.maxTokens || budget.maxCostUsd || budget.costPer1kTokensUsd)\n ? budget\n : undefined;\n return this.indexer.getContext(subject, level, { ...options, budget: resolvedBudget });\n }\n\n /**\n * Get context delta for a subject (only changed/unknown docs).\n */\n async getContextDelta(\n subject: string,\n level: ContextLevel = 'working',\n options?: { policy?: PolicyFilter; overlayOrder?: Overlay[]; known?: Array<{ id: string; hash?: string }>; budget?: RetrievalBudget }\n ): Promise<Context | null> {\n this.ensureInitialized();\n const budget = options?.budget ?? this.config.rag?.budget;\n const resolvedBudget = budget && (budget.maxTokens || budget.maxCostUsd || budget.costPer1kTokensUsd)\n ? budget\n : undefined;\n return this.indexer.getContextDelta(subject, level, { ...options, budget: resolvedBudget });\n }\n\n // ─── RAG ─────────────────────────────────────────────────────────────────\n\n /**\n * Search using RAG hybrid retrieval (BM25 + vector).\n */\n async ragSearch(\n query: string,\n options?: { collections?: import('./core/rag-engine.js').CollectionName[]; repo?: string; limit?: number; minScore?: number }\n ): Promise<import('./core/rag-engine.js').RAGResult> {\n this.ensureInitialized();\n return this.rag.search(query, options);\n }\n\n /**\n * Get RAG context for a query — combines chunk-level retrieval\n * with optional structured context from the knowledge indexer.\n */\n async ragContext(\n query: string,\n options?: { collections?: import('./core/rag-engine.js').CollectionName[]; repo?: string; maxTokens?: number }\n ): Promise<{ content: string; sources: string[]; tokenEstimate: number }> {\n this.ensureInitialized();\n return this.rag.getContext(query, this.indexer, options);\n }\n\n /**\n * Re-ingest RAG knowledge paths.\n */\n async ragIngest(paths?: string[]): Promise<import('./core/rag-engine.js').IngestionResult> {\n this.ensureInitialized();\n return this.rag.ingest(paths);\n }\n\n // ─── Memory ────────────────────────────────────────────────────────────────\n\n /**\n * Store in memory.\n */\n async remember(\n key: string,\n value: unknown,\n scopeOrOptions: MemoryScope | StoreOptions = 'session'\n ): Promise<void> {\n this.ensureInitialized();\n const options: StoreOptions = typeof scopeOrOptions === 'string'\n ? { scope: scopeOrOptions }\n : scopeOrOptions;\n await this.memory.store(key, value, options);\n }\n\n /**\n * Retrieve from memory.\n */\n async recall(key: string, scopeOrOptions?: MemoryScope | RetrieveOptions): Promise<unknown> {\n this.ensureInitialized();\n const options: RetrieveOptions = typeof scopeOrOptions === 'string' || scopeOrOptions === undefined\n ? { scope: scopeOrOptions }\n : scopeOrOptions;\n return this.memory.retrieve(key, options);\n }\n\n // ─── Agents ────────────────────────────────────────────────────────────────\n\n /**\n * Register a custom agent.\n */\n registerAgent(agent: AgentConfig): void {\n this.orchestrator.registerAgent({\n ...agent,\n status: 'idle',\n trustScore: agent.trustScore ?? this.config.orchestrator.defaultTrustScore,\n successRate: 1,\n averageQuality: 0.8,\n tasksCompleted: 0,\n tasksFailed: 0,\n taskQueue: [],\n maxConcurrentTasks: 5,\n autoVerify: true,\n escalationThreshold: 0.6,\n supervisees: [],\n });\n }\n\n /**\n * List all agents.\n */\n listAgents(): Agent[] {\n return this.orchestrator.getAllAgents();\n }\n\n // ─── Servers ───────────────────────────────────────────────────────────────\n\n /**\n * Start MCP server for Claude integration.\n */\n async startMCPServer(): Promise<MCPServer> {\n this.ensureInitialized();\n const server = new MCPServer(this);\n await server.start();\n return server;\n }\n\n /**\n * Start HTTP/WebSocket API server.\n */\n async startAPIServer(port: number = 3141): Promise<APIServer> {\n this.ensureInitialized();\n const server = new APIServer(this, { port });\n await server.start();\n return server;\n }\n\n // ─── Statistics ────────────────────────────────────────────────────────────\n\n /**\n * Get system statistics.\n */\n getStats(): BaselineStats {\n return {\n orchestrator: this.orchestrator.getStats(),\n memory: this.memory.getStats(),\n indexer: this.indexer.getStats(),\n cache: this.cache.getStats(),\n rag: this.rag.getStats(),\n governance: {\n auditLevel: this.config.governance.auditLevel,\n requireApproval: this.config.governance.requireApproval.length,\n restricted: this.config.governance.restricted.length,\n },\n };\n }\n\n // ─── Agent Bus ────────────────────────────────────────────────────────────\n\n /**\n * Subscribe to agent bus events.\n * @example\n * baseline.bus.subscribe('task:*', (msg) => console.log(msg));\n * baseline.bus.subscribe('governance:violation', handleViolation);\n */\n getBusStats() {\n return this.bus.getStats();\n }\n\n // ─── Cache ───────────────────────────────────────────────────────────────\n\n /**\n * Get value from semantic cache.\n */\n async cacheGet<T>(key: string): Promise<T | null> {\n return this.cache.get<T>(key);\n }\n\n /**\n * Store value in semantic cache.\n */\n async cacheSet<T>(key: string, value: T, options?: { tokensSaved?: number }): Promise<void> {\n return this.cache.set(key, value, options);\n }\n\n /**\n * Get cache statistics.\n */\n getCacheStats() {\n return this.cache.getStats();\n }\n\n // ─── Audit + Evidence ─────────────────────────────────────────────────────\n\n getAuditTrail(taskId?: string): Array<{ timestamp: number; event: import('./core/types.js').OrchestratorEvent }> {\n if (this.config.governance.auditLevel === 'none') {\n return [];\n }\n return this.orchestrator.getAuditTrail(taskId);\n }\n\n getEvidenceBundle(taskId: string): ReturnType<Orchestrator['getEvidenceBundle']> {\n if (this.config.governance.auditLevel === 'none') {\n return {\n task: this.getTask(taskId),\n workflow: this.getWorkflow(this.getTask(taskId)?.workflowId ?? ''),\n plan: undefined,\n checkpoints: [],\n reviews: [],\n verificationResults: [],\n artifacts: this.getTask(taskId)?.artifacts ?? [],\n audit: [],\n };\n }\n return this.orchestrator.getEvidenceBundle(taskId);\n }\n\n // ─── Internal ──────────────────────────────────────────────────────────────\n\n private ensureInitialized(): void {\n if (!this.initialized) {\n throw new Error('BaselineOS not initialized. Call baseline.init() first.');\n }\n }\n\n private registerDefaultAgents(): void {\n // Planner agent\n this.orchestrator.registerAgent({\n id: 'planner-default',\n name: 'Task Planner',\n role: 'planner',\n status: 'idle',\n capabilities: ['decomposition', 'estimation', 'planning'],\n domains: ['*'],\n promptVersion: '1.0.0',\n trustScore: this.config.orchestrator.defaultTrustScore,\n successRate: 1,\n averageQuality: 0.8,\n tasksCompleted: 0,\n tasksFailed: 0,\n taskQueue: [],\n maxConcurrentTasks: 5,\n autoVerify: true,\n escalationThreshold: 0.6,\n supervisees: [],\n });\n\n // Supervisor agent\n this.orchestrator.registerAgent({\n id: 'supervisor-default',\n name: 'Senior Reviewer',\n role: 'supervisor',\n status: 'idle',\n capabilities: ['review', 'feedback', 'quality'],\n domains: ['*'],\n promptVersion: '1.0.0',\n trustScore: this.config.orchestrator.defaultTrustScore + 10,\n successRate: 1,\n averageQuality: 0.9,\n tasksCompleted: 0,\n tasksFailed: 0,\n taskQueue: [],\n maxConcurrentTasks: 10,\n autoVerify: false,\n escalationThreshold: 0.5,\n supervisees: [],\n });\n\n // Quality agent\n this.orchestrator.registerAgent({\n id: 'quality-default',\n name: 'Quality Gate',\n role: 'quality',\n status: 'idle',\n capabilities: ['audit', 'compliance', 'final-review'],\n domains: ['*'],\n promptVersion: '1.0.0',\n trustScore: 95,\n successRate: 1,\n averageQuality: 0.95,\n tasksCompleted: 0,\n tasksFailed: 0,\n taskQueue: [],\n maxConcurrentTasks: 5,\n autoVerify: false,\n escalationThreshold: 0.4,\n supervisees: [],\n });\n }\n\n // ─── Checkpoints ───────────────────────────────────────────────────────────\n\n loadCheckpoint(checkpointId: string): Checkpoint | null {\n return this.orchestrator.loadCheckpoint(checkpointId);\n }\n\n recoverTaskFromCheckpoint(checkpointId: string): Task | null {\n return this.orchestrator.recoverTaskFromCheckpoint(checkpointId);\n }\n\n // ─── Event Subscription ───────────────────────────────────────────────────\n\n onEvent<T extends OrchestratorEvent['type']>(\n type: T,\n handler: (event: Extract<OrchestratorEvent, { type: T }>) => void\n ): () => void {\n const typedHandler = handler as unknown as (event: OrchestratorEvent) => void;\n this.orchestrator.on(type, typedHandler);\n return () => this.orchestrator.off(type, typedHandler);\n }\n}\n\n// ─── Task Handle ─────────────────────────────────────────────────────────────\n\nexport class TaskHandle {\n constructor(\n private task: Task,\n private orchestrator: Orchestrator\n ) {}\n\n get id(): string {\n return this.task.id;\n }\n\n get status(): TaskStatus {\n return this.orchestrator.getTask(this.task.id)?.status ?? this.task.status;\n }\n\n /**\n * Wait for task completion.\n */\n async wait(timeoutMs?: number): Promise<Task> {\n const startTime = Date.now();\n \n while (true) {\n const task = this.orchestrator.getTask(this.task.id);\n if (!task) {\n throw new Error(`Task ${this.task.id} not found`);\n }\n\n if (task.status === 'completed' || task.status === 'failed' || task.status === 'blocked') {\n return task;\n }\n\n if (timeoutMs && Date.now() - startTime > timeoutMs) {\n throw new Error(`Task ${this.task.id} timed out`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Cancel the task.\n */\n async cancel(): Promise<void> {\n this.orchestrator.cancelTask(this.task.id);\n }\n\n /**\n * Get current artifacts.\n */\n getArtifacts(): Artifact[] {\n return this.orchestrator.getTask(this.task.id)?.artifacts ?? [];\n }\n\n /**\n * Stream task events.\n */\n async *stream(): AsyncGenerator<TaskEvent> {\n const queue: TaskEvent[] = [];\n let done = false;\n\n const push = (event: TaskEvent) => {\n queue.push(event);\n if (\n event.type === 'error' ||\n (event.type === 'status' &&\n ((event.data as { status?: string } | undefined)?.status === 'completed' ||\n (event.data as { status?: string } | undefined)?.status === 'failed'))\n ) {\n done = true;\n }\n };\n\n const matchesTask = (event: { task?: { id?: string } }) => event?.task?.id === this.task.id;\n\n const subscriptions: Array<() => void> = [];\n const subscribe = <T extends OrchestratorEvent['type']>(\n type: T,\n handler: (event: Extract<OrchestratorEvent, { type: T }>) => void,\n ) => {\n const typedHandler = handler as unknown as (event: OrchestratorEvent) => void;\n this.orchestrator.on(type, typedHandler);\n subscriptions.push(() => this.orchestrator.off(type, typedHandler));\n };\n\n subscribe('task:started', (event) => {\n if (matchesTask(event)) {\n push({ type: 'status', taskId: this.task.id, data: { status: 'executing' }, timestamp: Date.now() });\n }\n });\n subscribe('task:checkpoint', (event) => {\n if (matchesTask(event)) {\n push({ type: 'checkpoint', taskId: this.task.id, data: event.checkpoint, timestamp: Date.now() });\n }\n });\n subscribe('task:verified', (event) => {\n if (matchesTask(event)) {\n push({ type: 'progress', taskId: this.task.id, data: event.result, timestamp: Date.now() });\n }\n });\n subscribe('task:reviewed', (event) => {\n if (matchesTask(event)) {\n push({ type: 'progress', taskId: this.task.id, data: event.review, timestamp: Date.now() });\n }\n });\n subscribe('task:completed', (event) => {\n if (matchesTask(event)) {\n push({ type: 'status', taskId: this.task.id, data: { status: 'completed' }, timestamp: Date.now() });\n }\n });\n subscribe('task:failed', (event) => {\n if (matchesTask(event)) {\n push({ type: 'error', taskId: this.task.id, data: event.error, timestamp: Date.now() });\n }\n });\n\n try {\n push({\n type: 'status',\n taskId: this.task.id,\n data: { status: this.status },\n timestamp: Date.now(),\n });\n\n while (!done || queue.length > 0) {\n if (queue.length === 0) {\n await new Promise(resolve => setTimeout(resolve, 25));\n continue;\n }\n yield queue.shift()!;\n }\n } finally {\n for (const unsubscribe of subscriptions) {\n unsubscribe();\n }\n }\n }\n}\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface AgentConfig {\n id: string;\n name: string;\n role: 'planner' | 'executor' | 'supervisor' | 'quality' | 'specialist';\n capabilities: string[];\n domains: string[];\n trustScore?: number;\n}\n\nexport interface TaskEvent {\n type: 'status' | 'progress' | 'artifact' | 'checkpoint' | 'error';\n taskId: string;\n data: unknown;\n timestamp: number;\n}\n\nexport interface BaselineStats {\n orchestrator: {\n tasks: { total: number; byStatus: Record<string, number> };\n agents: { total: number; byRole: Record<string, number> };\n };\n memory: {\n working: number;\n session: number;\n longTerm: number;\n shared: number;\n };\n indexer: {\n documents: number;\n types: number;\n compressions: number;\n };\n cache: {\n size: number;\n hits: number;\n misses: number;\n hitRate: number;\n };\n rag: {\n totalChunks: number;\n collections: Record<string, number>;\n initialized: boolean;\n };\n governance: {\n auditLevel: 'none' | 'basic' | 'full';\n requireApproval: number;\n restricted: number;\n };\n}\n\n// Re-export types\nexport type {\n BaselineConfig,\n Task,\n TaskInput,\n TaskStatus,\n Agent,\n Artifact,\n Checkpoint,\n ContextLevel,\n MemoryScope,\n SearchResult,\n Context,\n};\n\n// Re-export core modules for advanced usage\nexport { Orchestrator } from './core/orchestrator.js';\nexport { MemorySystem } from './core/memory.js';\nexport { KnowledgeIndexer } from './core/indexer.js';\nexport { SemanticCache } from './core/cache.js';\nexport { ConfigLoader } from './core/config.js';\nexport { AnthropicEngine, MockExecutionEngine } from './core/execution-engine.js';\nexport type { ExecutionEngine, AnthropicEngineConfig, ExecutionResult, ComplianceResult, ComplianceViolation, DecompositionResult, ToolExecutor } from './core/execution-engine.js';\nexport { RAGEngine } from './core/rag-engine.js';\nexport type { RAGConfig, RAGChunk, RAGResult, IngestionResult, CollectionName } from './core/rag-engine.js';\nexport { MCPServer } from './mcp/server.js';\nexport { APIServer } from './api/server.js';\nexport { TradePassGovernanceBridge } from './integrations/tradepass-bridge.js';\nexport type { TradeContext, TradeVerificationResult } from './integrations/tradepass-bridge.js';\nexport { NDPCComplianceGate } from './integrations/ndpc-gate.js';\nexport type { NDPCContext, NDPCViolation, NDPCCheckResult } from './integrations/ndpc-gate.js';\nexport { EvidenceExporter } from './integrations/evidence-export.js';\nexport type { DFIEvidenceBundle, ExportOptions } from './integrations/evidence-export.js';\nexport { ComplianceOSBridge } from './integrations/compliance-os-bridge.js';\nexport type { ComplianceControl, ControlCheckContext, ControlCheckResult } from './integrations/compliance-os-bridge.js';\nexport { SenseiAIBridge } from './integrations/sensei-ai-bridge.js';\nexport type { MigrationTaskContext, MigrationResult, MigrationAuditEntry } from './integrations/sensei-ai-bridge.js';\nexport { GovernanceValidator } from './core/governance-validator.js';\nexport type { GovernanceValidatorConfig, GovernanceValidationResult, PillarResult } from './core/governance-validator.js';\nexport { TrustSyncProtocol } from './core/trust-sync.js';\nexport type { TrustSyncTarget, TrustSyncEvent } from './core/trust-sync.js';\nexport { AgenticBridge } from './integrations/agentic-bridge.js';\nexport type { AgenticBridgeConfig, SafetyRule, SafetyCheckResult, SafetyViolation, AgenticExecutionResult } from './integrations/agentic-bridge.js';\nexport { CommandCenter } from './core/command-center.js';\nexport type { CommandCenterConfig, CommandCenterMetrics, CommandCenterEvent, CommandCenterEventType, CommandCenterStatus, QueuedTask } from './core/command-center.js';\nexport { SPECIALIZED_AGENTS, createAgentFromDefinition, getAgentDefinition, getAgentsByCapability, getAgentsByDomain } from './core/agent-definitions.js';\nexport type { AgentDefinition } from './core/agent-definitions.js';\nexport { AgentExecutor } from './core/agent-executor.js';\nexport type { AgentExecutorConfig, AgentExecutionRecord, ToolCallRecord, AgentExecutorEvent, AgentExecutorEventType } from './core/agent-executor.js';\nexport { createPipeline, createPipelineExecution, getReadySteps, isComplete, isFailed, createHandoff, buildStepTaskInput, STANDARD_PIPELINES } from './core/task-handoff.js';\nexport type { Pipeline, PipelineStep, PipelineExecution, PipelineStepExecution, HandoffContext } from './core/task-handoff.js';\nexport { createDependencyGraph, findBlockers, getTopologicalOrder, detectCycles, createVelocitySnapshot, projectCompletion, synthesizeStandup, createGTCXGraph, GTCX_REPOS, GTCX_EDGES } from './core/agile-agents.js';\nexport type { RepoNode, DependencyEdge, DependencyGraph, BlockerAnalysis, CharterCommitment, VelocitySnapshot, GitActivity, StandupEntry, StandupSynthesis } from './core/agile-agents.js';\nexport { SecurityManager, getTrustTier } from './core/security.js';\nexport type { Permission, SecurityAuditEntry, SecurityAuditEventType, ToolRiskLevel, ToolRiskClassification, SafetyRule as SecuritySafetyRule, SafetyContext, SafetyResult, TrustTier, SecurityManagerConfig } from './core/security.js';\nexport { PiiDetector, PiiBlockedError } from './core/pii-detector.js';\nexport type { PiiType, PiiMode, PiiMatch, PiiScanResult, PiiDetectorConfig } from './core/pii-detector.js';\nexport { LlmTracer } from './core/llm-tracer.js';\nexport type { LlmTracerConfig, LlmGenerationOptions } from './core/llm-tracer.js';\nexport { TaskQueue } from './core/task-queue.js';\nexport type { TaskQueueConfig } from './core/task-queue.js';\nexport { OutputValidator } from './core/output-validator.js';\nexport type { OutputValidatorConfig, OutputValidationResult, OutputValidationFailure, OutputValidationFailureReason, ValidateOptions } from './core/output-validator.js';\nexport { CredentialProvider, CredentialExpiredError } from './core/credential-provider.js';\nexport type { CredentialProviderConfig, CredentialAccessEvent, CredentialEntry, ExpiringCredential } from './core/credential-provider.js';\nexport { RollbackManager } from './core/rollback-manager.js';\nexport type { RollbackManagerConfig, RollbackResult } from './core/rollback-manager.js';\nexport { CostGuard } from './core/cost-guard.js';\nexport type { CostGuardConfig, TokenUsage, WorkflowAccumulator, CostCheckResult, TenantCostSummary } from './core/cost-guard.js';\nexport { AuditLog } from './core/audit-log.js';\nexport type { AuditLogConfig, AuditEvent } from './core/audit-log.js';\nexport { loadRolePrompt, loadPersonaPrompt, loadAllPersonas } from './core/prompt-loader.js';\nexport type { PromptMeta, LoadedPrompt } from './core/prompt-loader.js';\nexport { ApprovalTokenManager } from './core/approval-token-manager.js';\nexport type { ApprovalToken, ValidationResult, ApprovalTokenConfig } from './core/approval-token-manager.js';\nexport { ProductionEvalPipeline } from './core/production-eval-pipeline.js';\nexport type {\n ProductionEvalPipelineConfig,\n GroundTruthCase,\n ProdEvalCheckContext,\n ProdEvalCheckResult,\n ProdEvalCheck,\n ProdEvalReport,\n} from './core/production-eval-pipeline.js';\nexport { TemporalOrchestrator } from './core/temporal-orchestrator.js';\nexport type { TemporalOrchestratorConfig, SubmitOptions } from './core/temporal-orchestrator.js';\nexport { createActivities } from './temporal/activities.js';\nexport type { BaselineActivities, ActivityDependencies } from './temporal/activities.js';\nexport { createTemporalClient, BASELINE_TASK_QUEUE } from './temporal/client.js';\nexport type { TemporalClientConfig } from './temporal/client.js';\nexport { TraceCurator } from './core/trace-curator.js';\nexport type { TraceCuratorConfig, TraceRecord, CurationResult, SamplingStrategy } from './core/trace-curator.js';\nexport { ModelVersionRegistry } from './core/model-version-registry.js';\nexport type { ModelVersionRegistryConfig, ModelVersionEntry } from './core/model-version-registry.js';\nexport { ImprovementCycleLog } from './core/improvement-cycle.js';\nexport type { ImprovementCycle, ImprovementCycleLogConfig, CycleTrigger, CycleOutcome } from './core/improvement-cycle.js';\nexport type { VersionEvalResult, VersionComparison } from './core/production-eval-pipeline.js';\nexport { ShadowRouter } from './core/shadow-router.js';\nexport type { ShadowRouterConfig, ShadowComparison, ShadowMode } from './core/shadow-router.js';\nexport { RedTeamRunner } from './core/red-team-runner.js';\nexport type { RedTeamRunnerConfig, RedTeamProbe, ProbeResult, RedTeamReport, ProbeCategory } from './core/red-team-runner.js';\nexport { DEFAULT_PROBES } from './core/red-team-runner.js';\nexport { PromotionGate } from './core/promotion-gate.js';\nexport type { PromotionGateConfig, PromotionDecision, PromotionOutcome, EvaluateInput } from './core/promotion-gate.js';\nexport { DriftDetector } from './core/drift-detector.js';\nexport type { DriftDetectorConfig, DriftReport, DriftSeverity, DriftStrategy } from './core/drift-detector.js';\nexport { L5Pipeline } from './core/l5-pipeline.js';\nexport type { L5PipelineConfig, L5CycleInput, L5CycleResult } from './core/l5-pipeline.js';\nexport { LayerSweep } from './core/layer-sweep.js';\nexport type { LayerSweepConfig, LayerSweepContext, LayerSweepResult, LayerResult, LayerId } from './core/layer-sweep.js';\n","/**\n * baseline index\n * \n * Index knowledge base for RAG.\n * \n * @license Apache-2.0\n */\n\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Baseline } from '../../index.js';\nimport { ConfigLoader } from '../../core/config.js';\n\ninterface IndexOptions {\n path?: string[];\n watch?: boolean;\n full?: boolean;\n}\n\nexport async function indexCommand(options: IndexOptions): Promise<void> {\n console.log();\n console.log(chalk.cyan(' BaselineOS') + ' — Indexing knowledge base...');\n console.log();\n\n const spinner = ora('Loading configuration...').start();\n\n try {\n const config = await ConfigLoader.load();\n \n // Override paths if specified\n if (options.path) {\n config.knowledge = options.path;\n }\n\n spinner.text = 'Initializing...';\n const baseline = new Baseline(config);\n await baseline.init();\n\n spinner.text = 'Indexing...';\n const result = await baseline.index({ full: options.full });\n\n spinner.succeed(`Indexed ${result.indexed} documents`);\n\n if (result.errors > 0) {\n console.log(chalk.yellow(` ⚠ ${result.errors} errors during indexing`));\n }\n\n const stats = baseline.getStats();\n console.log();\n console.log(chalk.dim(' Index statistics:'));\n console.log(` Documents: ${stats.indexer.documents}`);\n console.log(` Types: ${stats.indexer.types}`);\n console.log(` Compressions: ${stats.indexer.compressions}`);\n console.log();\n\n if (options.watch) {\n console.log(chalk.dim(' Watching for changes... (Ctrl+C to stop)'));\n // TODO: Implement file watching with chokidar\n process.on('SIGINT', async () => {\n console.log();\n await baseline.shutdown();\n process.exit(0);\n });\n } else {\n await baseline.shutdown();\n }\n\n } catch (error) {\n spinner.fail('Failed to index');\n throw error;\n }\n}\n","/**\n * baseline serve\n * \n * Start MCP server and HTTP API.\n * \n * @license Apache-2.0\n */\n\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Baseline } from '../../index.js';\nimport { ConfigLoader } from '../../core/config.js';\n\ninterface ServeOptions {\n port?: string;\n mcpOnly?: boolean;\n apiOnly?: boolean;\n}\n\nexport async function serveCommand(options: ServeOptions): Promise<void> {\n const port = parseInt(options.port || '3141', 10);\n\n console.log();\n console.log(chalk.cyan(' BaselineOS') + ' — Starting servers...');\n console.log();\n\n const spinner = ora('Loading configuration...').start();\n\n try {\n // Load config\n const config = await ConfigLoader.load();\n spinner.text = 'Initializing BaselineOS...';\n\n // Initialize\n const baseline = new Baseline(config);\n await baseline.init();\n\n spinner.text = 'Indexing knowledge base...';\n const indexResult = await baseline.index();\n \n spinner.succeed(`Indexed ${indexResult.indexed} documents`);\n\n // Start servers\n if (!options.apiOnly) {\n const mcpSpinner = ora('Starting MCP server...').start();\n await baseline.startMCPServer();\n mcpSpinner.succeed('MCP server started (stdio)');\n }\n\n if (!options.mcpOnly) {\n const apiSpinner = ora(`Starting API server on port ${port}...`).start();\n await baseline.startAPIServer(port);\n apiSpinner.succeed(`API server started on http://localhost:${port}`);\n }\n\n console.log();\n console.log(chalk.green(' BaselineOS is running'));\n console.log();\n\n if (!options.mcpOnly) {\n console.log(chalk.dim(' API Endpoints:'));\n console.log(` POST /api/tasks Create and run a task`);\n console.log(` GET /api/tasks List all tasks`);\n console.log(` GET /api/tasks/:id Get task status`);\n console.log(` DELETE /api/tasks/:id Cancel a task`);\n console.log(` GET /api/agents List agents`);\n console.log(` POST /api/search Search knowledge base`);\n console.log(` GET /api/stats System statistics`);\n console.log(` WS /api/stream Real-time task events`);\n console.log();\n }\n\n if (!options.apiOnly) {\n console.log(chalk.dim(' MCP Server (for Claude):'));\n console.log(` Add to claude_desktop_config.json:`);\n console.log();\n console.log(chalk.cyan(` {\n \"mcpServers\": {\n \"baseline\": {\n \"command\": \"baseline\",\n \"args\": [\"serve\", \"--mcp-only\"]\n }\n }\n }`));\n console.log();\n }\n\n console.log(chalk.dim(' Press Ctrl+C to stop'));\n console.log();\n\n // Keep process alive\n process.on('SIGINT', async () => {\n console.log();\n console.log(chalk.dim(' Shutting down...'));\n await baseline.shutdown();\n process.exit(0);\n });\n\n } catch (error) {\n spinner.fail('Failed to start');\n throw error;\n }\n}\n","/**\n * baseline run <task>\n * \n * Execute an autonomous task.\n * \n * @license Apache-2.0\n */\n\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Baseline } from '../../index.js';\nimport { ConfigLoader } from '../../core/config.js';\nimport type { TaskPriority } from '../../core/types.js';\n\ninterface RunOptions {\n blocking?: boolean;\n priority?: string;\n context?: string;\n}\n\nfunction parsePriority(priority?: string): TaskPriority {\n if (priority === 'critical' || priority === 'high' || priority === 'medium' || priority === 'low') {\n return priority;\n }\n return 'medium';\n}\n\nexport async function runCommand(taskDescription: string, options: RunOptions): Promise<void> {\n console.log();\n console.log(chalk.cyan(' BaselineOS') + ' — Executing task...');\n console.log();\n\n const spinner = ora('Initializing...').start();\n\n try {\n // Load config and initialize\n const config = await ConfigLoader.load();\n const baseline = new Baseline(config);\n await baseline.init();\n\n // Parse context if provided\n let context = {};\n if (options.context) {\n try {\n context = JSON.parse(options.context);\n } catch {\n spinner.fail('Invalid context JSON');\n return;\n }\n }\n\n // Create task\n spinner.text = 'Creating task...';\n \n const task = await baseline.run({\n title: taskDescription.slice(0, 100),\n description: taskDescription,\n priority: parsePriority(options.priority),\n requiredCapabilities: [],\n context,\n acceptanceCriteria: [\n { description: 'Task completed successfully', type: 'automated', weight: 1 },\n ],\n });\n\n spinner.succeed(`Task created: ${task.id}`);\n\n console.log();\n console.log(chalk.dim(' Task ID: ') + task.id);\n console.log(chalk.dim(' Status: ') + formatStatus(task.status));\n console.log();\n\n if (options.blocking) {\n // Wait for completion with progress\n const progressSpinner = ora('Executing...').start();\n\n for await (const event of task.stream()) {\n if (event.type === 'status' && event.data && typeof event.data === 'object') {\n const status = (event.data as { status?: string }).status;\n if (status) {\n progressSpinner.text = `Status: ${status}`;\n }\n } else if (event.type === 'checkpoint') {\n progressSpinner.text = 'Checkpoint saved';\n } else if (event.type === 'progress') {\n progressSpinner.text = 'Reviewing output...';\n } else if (event.type === 'error') {\n progressSpinner.text = 'Execution reported an error';\n }\n }\n\n const result = await task.wait(1000);\n\n if (result.status === 'completed') {\n progressSpinner.succeed('Task completed');\n \n console.log();\n console.log(chalk.green(' ✓ Task completed successfully'));\n console.log();\n\n if (result.artifacts.length > 0) {\n console.log(chalk.dim(' Artifacts:'));\n for (const artifact of result.artifacts) {\n console.log(` • ${artifact.type}: ${artifact.path || artifact.id}`);\n }\n console.log();\n }\n } else {\n progressSpinner.fail('Task failed');\n \n console.log();\n console.log(chalk.red(' ✗ Task failed'));\n console.log();\n }\n } else {\n console.log(chalk.dim(' Task is running in the background.'));\n console.log(chalk.dim(' Check status with:'));\n console.log(chalk.cyan(` baseline status --task ${task.id}`));\n console.log();\n }\n\n await baseline.shutdown();\n\n } catch (error) {\n spinner.fail('Failed');\n throw error;\n }\n}\n\nfunction formatStatus(status: string): string {\n const colors: Record<string, (s: string) => string> = {\n pending: chalk.gray,\n planning: chalk.blue,\n executing: chalk.yellow,\n verifying: chalk.cyan,\n reviewing: chalk.magenta,\n correcting: chalk.yellow,\n completed: chalk.green,\n failed: chalk.red,\n blocked: chalk.red,\n };\n\n return (colors[status] || chalk.white)(status);\n}\n","/**\n * baseline status\n * \n * Check status of running tasks.\n * \n * @license Apache-2.0\n */\n\nimport chalk from 'chalk';\nimport { Baseline } from '../../index.js';\nimport { ConfigLoader } from '../../core/config.js';\n\ninterface StatusOptions {\n task?: string;\n watch?: boolean;\n}\n\nexport async function statusCommand(options: StatusOptions): Promise<void> {\n const config = await ConfigLoader.load();\n const baseline = new Baseline(config);\n await baseline.init();\n\n if (options.task) {\n // Show specific task\n const task = baseline.getTask(options.task);\n \n if (!task) {\n console.log(chalk.red(`Task not found: ${options.task}`));\n await baseline.shutdown();\n return;\n }\n\n console.log();\n console.log(chalk.cyan(' Task Details'));\n console.log();\n console.log(` ID: ${task.id}`);\n console.log(` Title: ${task.title}`);\n console.log(` Status: ${formatStatus(task.status)}`);\n console.log(` Priority: ${task.priority}`);\n console.log(` Complexity: ${task.complexity}`);\n console.log(` Attempts: ${task.attempts}/${task.maxAttempts}`);\n console.log(` Subtasks: ${task.subtasks.length}`);\n console.log(` Artifacts: ${task.artifacts.length}`);\n \n if (task.assignedAgent) {\n console.log(` Agent: ${task.assignedAgent}`);\n }\n \n if (task.createdAt) {\n console.log(` Created: ${new Date(task.createdAt).toLocaleString()}`);\n }\n \n if (task.completedAt) {\n console.log(` Completed: ${new Date(task.completedAt).toLocaleString()}`);\n }\n \n console.log();\n \n if (task.subtasks.length > 0) {\n console.log(chalk.dim(' Subtasks:'));\n for (const subtask of task.subtasks) {\n console.log(` ${formatStatus(subtask.status).padEnd(15)} ${subtask.title.slice(0, 50)}`);\n }\n console.log();\n }\n\n if (task.artifacts.length > 0) {\n console.log(chalk.dim(' Artifacts:'));\n for (const artifact of task.artifacts) {\n console.log(` • ${artifact.type}: ${artifact.path || artifact.id}`);\n }\n console.log();\n }\n \n } else {\n // List all tasks\n const tasks = baseline.listTasks();\n \n console.log();\n console.log(chalk.cyan(' Active Tasks'));\n console.log();\n\n if (tasks.length === 0) {\n console.log(chalk.dim(' No active tasks'));\n } else {\n // Group by status\n const byStatus: Record<string, typeof tasks> = {};\n for (const task of tasks) {\n if (!byStatus[task.status]) {\n byStatus[task.status] = [];\n }\n byStatus[task.status].push(task);\n }\n\n for (const [status, statusTasks] of Object.entries(byStatus)) {\n console.log(chalk.dim(` ${status.toUpperCase()}`));\n for (const task of statusTasks) {\n console.log(` ${task.id.slice(0, 8)} ${task.title.slice(0, 50)}`);\n }\n console.log();\n }\n }\n }\n\n if (options.watch) {\n console.log(chalk.dim(' Watching for updates... (Ctrl+C to stop)'));\n // TODO: Implement watch mode with polling\n process.on('SIGINT', async () => {\n console.log();\n await baseline.shutdown();\n process.exit(0);\n });\n } else {\n await baseline.shutdown();\n }\n}\n\nfunction formatStatus(status: string): string {\n const colors: Record<string, (s: string) => string> = {\n pending: chalk.gray,\n planning: chalk.blue,\n executing: chalk.yellow,\n verifying: chalk.cyan,\n reviewing: chalk.magenta,\n correcting: chalk.yellow,\n completed: chalk.green,\n failed: chalk.red,\n blocked: chalk.red,\n };\n return (colors[status] || chalk.white)(status);\n}\n","/**\n * baseline agents\n * \n * Manage agents.\n * \n * @license Apache-2.0\n */\n\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Baseline } from '../../index.js';\nimport { ConfigLoader } from '../../core/config.js';\n\ninterface AgentsOptions {\n list?: boolean;\n stats?: boolean;\n reset?: string;\n}\n\nexport async function agentsCommand(options: AgentsOptions): Promise<void> {\n void options;\n const spinner = ora('Loading agents...').start();\n \n try {\n const config = await ConfigLoader.load();\n const baseline = new Baseline(config);\n await baseline.init();\n \n spinner.stop();\n\n const agents = baseline.listAgents();\n\n console.log();\n console.log(chalk.cyan(' Agents'));\n console.log();\n\n if (agents.length === 0) {\n console.log(chalk.dim(' No agents registered'));\n } else {\n // Group by role\n const byRole: Record<string, typeof agents> = {};\n for (const agent of agents) {\n if (!byRole[agent.role]) byRole[agent.role] = [];\n byRole[agent.role].push(agent);\n }\n\n for (const [role, roleAgents] of Object.entries(byRole)) {\n console.log(chalk.dim(` ${role.toUpperCase()}`));\n \n for (const agent of roleAgents) {\n const statusColor = agent.status === 'idle' ? chalk.green : \n agent.status === 'busy' ? chalk.yellow : chalk.red;\n \n const trustBar = '█'.repeat(Math.floor(agent.trustScore / 10)) + \n '░'.repeat(10 - Math.floor(agent.trustScore / 10));\n \n console.log(` ${agent.name}`);\n console.log(chalk.dim(` ID: ${agent.id}`));\n console.log(chalk.dim(` Status: `) + statusColor(agent.status));\n console.log(chalk.dim(` Trust: [${trustBar}] ${agent.trustScore.toFixed(0)}/100`));\n console.log(chalk.dim(` Tasks: ${agent.tasksCompleted} ✓ ${agent.tasksFailed} ✗`));\n console.log();\n }\n }\n }\n\n // Show capabilities summary\n const allCapabilities = new Set<string>();\n const allDomains = new Set<string>();\n \n for (const agent of agents) {\n agent.capabilities.forEach(c => allCapabilities.add(c));\n agent.domains.forEach(d => allDomains.add(d));\n }\n\n console.log(chalk.dim(' Capabilities:'));\n console.log(` ${[...allCapabilities].join(', ')}`);\n console.log();\n \n console.log(chalk.dim(' Domains:'));\n console.log(` ${[...allDomains].join(', ')}`);\n console.log();\n\n await baseline.shutdown();\n \n } catch (error) {\n spinner.fail('Failed to load agents');\n throw error;\n }\n}\n","/**\n * baseline config\n * \n * View or edit configuration.\n * \n * @license Apache-2.0\n */\n\nimport chalk from 'chalk';\nimport { ConfigLoader } from '../../core/config.js';\n\ninterface ConfigOptions {\n get?: string;\n set?: string;\n show?: boolean;\n}\n\nexport async function configCommand(options: ConfigOptions): Promise<void> {\n const config = await ConfigLoader.load();\n\n console.log();\n \n if (options.get) {\n // Get specific value\n const value = getNestedValue(config, options.get);\n if (value === undefined) {\n console.log(chalk.yellow(` Key not found: ${options.get}`));\n } else {\n console.log(chalk.cyan(` ${options.get}:`));\n console.log(` ${JSON.stringify(value, null, 2).replace(/\\n/g, '\\n ')}`);\n }\n \n } else if (options.set) {\n // Set value (not yet implemented)\n console.log(chalk.yellow(' Setting config values not yet implemented.'));\n console.log(chalk.dim(' Edit baseline.config.ts directly.'));\n \n } else {\n // Show full config\n console.log(chalk.cyan(' BaselineOS Configuration'));\n console.log();\n \n console.log(chalk.dim(' Project:'));\n console.log(` Name: ${config.name || '(unnamed)'}`);\n console.log(` Root: ${config.projectRoot}`);\n console.log();\n \n console.log(chalk.dim(' Knowledge:'));\n for (const path of config.knowledge) {\n console.log(` • ${path}`);\n }\n console.log();\n \n console.log(chalk.dim(' Orchestrator:'));\n console.log(` Max autonomy: ${config.orchestrator.maxAutonomousComplexity}`);\n console.log(` Self-verify: ${config.orchestrator.selfVerificationRequired}`);\n console.log(` Review threshold: ${config.orchestrator.supervisorReviewThreshold}`);\n console.log(` Quality sample: ${(config.orchestrator.qualityReviewSampleRate * 100).toFixed(0)}%`);\n console.log(` Default trust: ${config.orchestrator.defaultTrustScore}`);\n console.log(` Max attempts: ${config.orchestrator.defaultMaxAttempts}`);\n console.log();\n \n console.log(chalk.dim(' LLM:'));\n console.log(` Provider: ${config.llm.provider}`);\n console.log(` Model: ${config.llm.model}`);\n console.log(` Max tokens: ${config.llm.maxTokens}`);\n console.log();\n \n console.log(chalk.dim(' Cache:'));\n console.log(` TTL: ${(config.cache.ttl / 3600000).toFixed(0)} hours`);\n console.log(` Max size: ${config.cache.maxSize} entries`);\n console.log(` Similarity: ${(config.cache.similarityThreshold * 100).toFixed(0)}%`);\n console.log();\n \n if (config.agents.length > 0) {\n console.log(chalk.dim(' Custom Agents:'));\n for (const agent of config.agents) {\n console.log(` • ${agent.name} (${agent.role})`);\n }\n console.log();\n }\n \n console.log(chalk.dim(' Governance:'));\n console.log(` Audit level: ${config.governance.auditLevel}`);\n if (config.governance.requireApproval.length > 0) {\n console.log(` Require approval: ${config.governance.requireApproval.join(', ')}`);\n }\n if (config.governance.restricted.length > 0) {\n console.log(` Restricted: ${config.governance.restricted.join(', ')}`);\n }\n console.log();\n }\n \n console.log();\n}\n\nfunction getNestedValue(obj: unknown, path: string): unknown {\n return path.split('.').reduce<unknown>((value, segment) => {\n if (value && typeof value === 'object') {\n return (value as Record<string, unknown>)[segment];\n }\n return undefined;\n }, obj);\n}\n","/**\n * Cache Warm Command\n *\n * Pre-populates the semantic cache with common queries across GTCX domains.\n * Each query is run through the knowledge index, and results are cached\n * so subsequent identical or similar queries hit the cache.\n *\n * @license Apache-2.0\n */\n\nimport { Baseline } from '../../index.js';\nimport { ConfigLoader } from '../../core/config.js';\n\n// 100 warming queries across GTCX domains\nconst WARMING_QUERIES: string[] = [\n // Governance & Policy (15)\n 'governance policy enforcement',\n 'audit trail format',\n 'evidence bundle export',\n 'compliance check NDPC',\n 'risk assessment model',\n 'approval workflow',\n 'permission gating ABAC',\n 'cost tracking budget',\n 'policy evaluation rules',\n 'governance pillar validators',\n 'policy severity levels',\n 'enforcement actions block warn',\n 'compliance standards ISO 27001',\n 'audit event types',\n 'governance evidence bundle schema',\n\n // Trade & Protocols (15)\n 'TradePass verification protocol',\n 'commodity trade governance',\n 'GeoTag location verification',\n 'GCI commodity inspection',\n 'VaultMark warehouse receipts',\n 'PvP payment versus payment',\n 'PANX analytics exchange',\n 'AfCFTA rules of origin',\n 'cross-border trade compliance',\n 'DFI development finance institution',\n 'COCOBOD cocoa board',\n 'GCX Ghana commodity exchange',\n 'trade finance verification',\n 'customs clearance protocol',\n 'FIC AML anti-money laundering',\n\n // Architecture & Layers (15)\n 'baseline protocol layers',\n 'layer 1 lang language processing',\n 'layer 2 frame context management',\n 'layer 3 studio execution engine',\n 'layer 4 govern policy compliance',\n 'layer 5 experience adoption',\n 'layer 6 autonomy agent operations',\n 'protocol core parser lexicon',\n 'six layer architecture',\n 'layer dependency order',\n 'orchestrator task decomposition',\n 'MCP server tools resources',\n 'API server REST endpoints',\n 'WebSocket streaming events',\n 'knowledge indexer collections',\n\n // Execution & Orchestration (15)\n 'task execution lifecycle',\n 'planner supervisor loop',\n 'agent trust scoring',\n 'self verification criteria',\n 'supervisor review threshold',\n 'task complexity assessment',\n 'checkpoint recovery state',\n 'execution plan steps',\n 'workflow definition budget',\n 'task priority assignment',\n 'agent role executor planner',\n 'escalation threshold trigger',\n 'quality review sample rate',\n 'token budget enforcement',\n 'parallel workstream orchestration',\n\n // Memory & Cache (10)\n 'memory system multi-scope',\n 'working session long-term shared',\n 'memory persistence SQLite',\n 'semantic cache similarity',\n 'cache hit rate optimization',\n 'token optimization strategy',\n 'context delta retrieval',\n 'retrieval budget filtering',\n 'knowledge compression levels',\n 'cache warming pre-population',\n\n // RAG & Knowledge (10)\n 'RAG engine hybrid retrieval',\n 'BM25 keyword search',\n 'vector embedding search',\n 'reciprocal rank fusion',\n 'ChromaDB collection population',\n 'knowledge indexer delta updates',\n 'document chunking strategy',\n 'semantic search relevance',\n 'context level working full',\n 'multi-repo knowledge deployment',\n\n // MCP Integration (10)\n 'MCP server Claude Desktop',\n 'MCP tool risk gating',\n 'MCP resource baseline tasks',\n 'stdio transport protocol',\n 'tool use governance',\n 'Claude Desktop configuration',\n 'MCP ecosystem listing Anthropic',\n 'model context protocol server',\n 'risk level low medium high',\n 'MCP tool search knowledge',\n\n // Desktop & CLI (5)\n 'Desktop app dark mode',\n 'CLI commands baseline init',\n 'baseline serve MCP API',\n 'evidence export operator flow',\n 'desktop workflow page',\n\n // Configuration (5)\n 'baseline config orchestrator',\n 'LLM provider anthropic model',\n 'cache TTL similarity threshold',\n 'agent capabilities domains',\n 'governance audit level full',\n];\n\ninterface WarmOptions {\n queries?: string;\n verbose?: boolean;\n}\n\nexport async function warmCommand(options: WarmOptions): Promise<void> {\n const config = await ConfigLoader.load();\n\n const baseline = new Baseline({\n ...config,\n projectRoot: process.cwd(),\n });\n\n await baseline.init();\n\n console.log('Indexing knowledge base...');\n const indexResult = await baseline.index();\n console.log(` Indexed: ${indexResult.indexed} files (${indexResult.errors} errors, ${indexResult.skipped} skipped)`);\n\n const queries = WARMING_QUERIES;\n const total = queries.length;\n let completed = 0;\n let errors = 0;\n\n console.log(`\\nWarming cache with ${total} queries...\\n`);\n\n for (const query of queries) {\n try {\n const results = await baseline.search(query, { limit: 5 });\n\n // Cache the search results\n if (results.length > 0) {\n await baseline.cacheSet(query, results, { tokensSaved: results.length * 200 });\n }\n\n completed++;\n\n if (options.verbose) {\n console.log(` [${completed}/${total}] \"${query}\" → ${results.length} results`);\n } else if (completed % 25 === 0) {\n console.log(` ${completed}/${total} queries processed`);\n }\n } catch {\n errors++;\n completed++;\n }\n }\n\n // Run queries again to generate cache hits\n console.log('\\nVerifying cache hits...');\n let cacheHits = 0;\n for (const query of queries.slice(0, 20)) {\n const cached = await baseline.cacheGet(query);\n if (cached !== null) cacheHits++;\n }\n\n const stats = baseline.getCacheStats();\n\n console.log('\\n--- Cache Warm-Up Complete ---');\n console.log(` Queries run: ${completed}`);\n console.log(` Errors: ${errors}`);\n console.log(` Cache size: ${stats.size}`);\n console.log(` Cache hits: ${stats.hits}`);\n console.log(` Semantic hits: ${stats.semanticHits}`);\n console.log(` Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`);\n console.log(` Tokens saved: ${stats.tokensSaved.toLocaleString()}`);\n console.log(` Verify hits: ${cacheHits}/20`);\n}\n","/**\n * RAG Ingestion Command\n *\n * Ingests project knowledge into the RAG engine's 6 collections.\n * Supports multi-repo ingestion with configurable knowledge paths.\n *\n * @license Apache-2.0\n */\n\nimport { RAGEngine } from '../../core/rag-engine.js';\nimport { ConfigLoader } from '../../core/config.js';\n\ninterface IngestOptions {\n paths?: string[];\n chromaHost?: string;\n chromaPort?: string;\n verbose?: boolean;\n}\n\nexport async function ingestCommand(options: IngestOptions): Promise<void> {\n const config = await ConfigLoader.load();\n\n const ragConfig = {\n projectRoot: config.projectRoot,\n openaiApiKey: config.rag?.openaiApiKey ?? process.env.OPENAI_API_KEY,\n chromaHost: options.chromaHost ?? config.rag?.chromaHost ?? 'localhost',\n chromaPort: options.chromaPort ? parseInt(options.chromaPort, 10) : (config.rag?.chromaPort ?? 8000),\n chunkSize: config.rag?.chunkSize ?? 1500,\n chunkOverlap: config.rag?.chunkOverlap ?? 200,\n maxChunksPerCollection: config.rag?.maxChunksPerCollection ?? 1000,\n };\n\n const rag = new RAGEngine(ragConfig);\n\n console.log('Starting RAG ingestion...');\n console.log(` Project root: ${ragConfig.projectRoot}`);\n console.log(` ChromaDB: ${ragConfig.chromaHost}:${ragConfig.chromaPort}`);\n console.log(` Chunk size: ${ragConfig.chunkSize} chars (${ragConfig.chunkOverlap} overlap)`);\n console.log('');\n\n const knowledgePaths = options.paths ?? undefined;\n const result = await rag.ingest(knowledgePaths);\n\n console.log('--- Ingestion Complete ---');\n console.log(` Files scanned: ${result.totalFiles}`);\n console.log(` Total chunks: ${result.totalChunks}`);\n console.log(` Duration: ${result.duration}ms`);\n console.log('');\n\n console.log(' Collections:');\n for (const [name, count] of Object.entries(result.collections)) {\n const bar = '█'.repeat(Math.min(Math.ceil(count / 50), 20));\n console.log(` ${name.padEnd(12)} ${String(count).padStart(5)} chunks ${bar}`);\n }\n\n if (result.errors.length > 0) {\n console.log('');\n console.log(` Errors: ${result.errors.length}`);\n if (options.verbose) {\n for (const err of result.errors) {\n console.log(` - ${err}`);\n }\n } else {\n console.log(' (use --verbose to see details)');\n }\n }\n\n const stats = rag.getStats();\n console.log('');\n console.log(` Vector store: ${stats.vectorStoreAvailable ? 'connected (ChromaDB)' : 'not available (BM25-only mode)'}`);\n}\n","/**\n * CLI command: evidence-export\n *\n * Exports DFI-ready evidence bundles for operator review and external audit.\n */\n\nimport { join } from 'node:path';\nimport { BaselineGovernSystem } from '@baselineos/govern';\nimport { EvidenceExporter } from '../../integrations/evidence-export.js';\n\nexport async function evidenceExportCommand(args: string[]): Promise<void> {\n const policyId = args.find((a) => a.startsWith('--policy='))?.split('=')[1];\n const resourceId = args.find((a) => a.startsWith('--resource='))?.split('=')[1];\n const operator = args.find((a) => a.startsWith('--operator='))?.split('=')[1];\n const outputArg = args.find((a) => a.startsWith('--output='))?.split('=')[1];\n const formatArg = args.find((a) => a.startsWith('--format='))?.split('=')[1] ?? 'json';\n const summaryOnly = args.includes('--summary');\n\n const ext = formatArg === 'html' ? 'html' : 'json';\n const outputPath =\n outputArg ?? join(process.cwd(), '.baseline', 'evidence', `bundle-${Date.now()}.${ext}`);\n\n console.log('');\n console.log('═══ Baseline Evidence Export ═══');\n console.log('');\n\n const start = Date.now();\n const govern = new BaselineGovernSystem();\n const exporter = new EvidenceExporter(govern);\n\n if (summaryOnly) {\n const bundle = await exporter.exportBundle({ policyId, resourceId, operator });\n console.log(exporter.exportSummary(bundle));\n return;\n }\n\n console.log(` Policy: ${policyId ?? '(all)'}`);\n console.log(` Resource: ${resourceId ?? '(all)'}`);\n console.log(` Output: ${outputPath}`);\n console.log('');\n\n const result = formatArg === 'html'\n ? await exporter.exportHTMLToFile({ policyId, resourceId, operator, outputPath })\n : await exporter.exportToFile({ policyId, resourceId, operator, outputPath, includeDetails: true });\n\n const duration = Date.now() - start;\n\n console.log(` Exported: ${result.path}`);\n console.log(` Size: ${(result.size / 1024).toFixed(1)} KB`);\n console.log(` Duration: ${duration}ms`);\n console.log('');\n\n if (duration < 300_000) {\n console.log(' Target: < 5 min — PASS');\n } else {\n console.log(' Target: < 5 min — FAIL (took ' + (duration / 1000).toFixed(1) + 's)');\n }\n\n console.log('');\n console.log('═══════════════════════════════');\n}\n","#!/usr/bin/env node\n\n/**\n * BaselineOS CLI\n * \n * Command-line interface for BaselineOS.\n * \n * @license Apache-2.0\n */\n\nimport { Command } from 'commander';\n\nimport { initCommand } from './commands/init.js';\nimport { indexCommand } from './commands/indexer.js';\nimport { serveCommand } from './commands/serve.js';\nimport { runCommand } from './commands/run.js';\nimport { statusCommand } from './commands/status.js';\nimport { agentsCommand } from './commands/agents.js';\nimport { configCommand } from './commands/config.js';\nimport { warmCommand } from './commands/warm.js';\nimport { ingestCommand } from './commands/ingest.js';\nimport { evidenceExportCommand } from './commands/evidence-export.js';\n\nconst VERSION = '0.2.0-beta.1';\n\nconst program = new Command();\n\nprogram\n .name('baseline')\n .description('BaselineOS — Agentic Governance Engine')\n .version(VERSION);\n\n// Initialize BaselineOS in a project\nprogram\n .command('init')\n .description('Initialize BaselineOS in your project')\n .option('-t, --template <template>', 'Use a template')\n .option('-f, --force', 'Overwrite existing configuration')\n .action(initCommand);\n\n// Index knowledge base\nprogram\n .command('index')\n .description('Index knowledge base for RAG retrieval')\n .option('-p, --path <paths...>', 'Paths to index')\n .option('-w, --watch', 'Watch for changes')\n .option('-f, --full', 'Full re-index (clear existing)')\n .action(indexCommand);\n\n// Start servers\nprogram\n .command('serve')\n .description('Start MCP and API servers')\n .option('-p, --port <port>', 'API server port', '3141')\n .option('--mcp-only', 'Start MCP server only')\n .option('--api-only', 'Start API server only')\n .action(serveCommand);\n\n// Run a task\nprogram\n .command('run <task>')\n .description('Execute an autonomous task')\n .option('-b, --blocking', 'Wait for task completion')\n .option('--priority <priority>', 'Task priority (critical|high|medium|low)')\n .option('-c, --context <json>', 'Additional context (JSON)')\n .action(runCommand);\n\n// Check status\nprogram\n .command('status')\n .description('Check status of tasks and agents')\n .option('-t, --task <id>', 'Show specific task')\n .option('-w, --watch', 'Watch for updates')\n .action(statusCommand);\n\n// Manage agents\nprogram\n .command('agents')\n .description('List and manage agents')\n .option('-l, --list', 'List all agents')\n .option('-s, --stats', 'Show agent statistics')\n .option('--reset <id>', 'Reset agent trust score')\n .action(agentsCommand);\n\n// View/edit config\nprogram\n .command('config')\n .description('View or edit configuration')\n .option('-g, --get <key>', 'Get specific value')\n .option('-s, --set <key=value>', 'Set value')\n .option('--show', 'Show full configuration')\n .action(configCommand);\n\n// Ingest knowledge into RAG collections\nprogram\n .command('ingest')\n .description('Ingest knowledge into RAG collections (6 collections)')\n .option('-p, --paths <paths...>', 'Knowledge paths to ingest')\n .option('--chroma-host <host>', 'ChromaDB host', 'localhost')\n .option('--chroma-port <port>', 'ChromaDB port', '8000')\n .option('-v, --verbose', 'Show detailed error output')\n .action(ingestCommand);\n\n// Warm semantic cache\nprogram\n .command('warm')\n .description('Pre-populate semantic cache with common queries')\n .option('-v, --verbose', 'Show each query result')\n .action(warmCommand);\n\n// Export evidence bundle\nprogram\n .command('evidence-export')\n .description('Export DFI-ready evidence bundle for audit')\n .option('--policy <id>', 'Filter by policy ID')\n .option('--resource <id>', 'Filter by resource ID')\n .option('--operator <name>', 'Operator name for export metadata')\n .option('--output <path>', 'Output file path')\n .option('--summary', 'Print summary only (no file export)')\n .action((_opts, cmd) => {\n evidenceExportCommand(cmd.parent.rawArgs.slice(3));\n });\n\nprogram.parse();\n"]}