@svashevchenko/ez-know 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -18
- package/dist/cli.js +1038 -746
- package/dist/cli.js.map +4 -4
- package/dist/rest/server.js +520 -15
- package/dist/rest/server.js.map +4 -4
- package/dist/server.js +584 -292
- package/dist/server.js.map +4 -4
- package/package.json +1 -1
package/dist/cli.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/cli.ts", "../packages/mcp/src/run.ts", "../packages/core/src/knowledge/schema.ts", "../packages/core/src/knowledge/extraction-registry.ts", "../packages/core/src/knowledge/extraction-resources.ts", "../packages/core/src/knowledge/loader.ts", "../packages/core/src/knowledge/root.ts", "../packages/core/src/knowledge/patch/storage.ts", "../packages/core/src/knowledge/patch/constants.ts", "../packages/core/src/knowledge/patch/paths.ts", "../packages/core/src/knowledge/patch/schemas.ts", "../packages/core/src/knowledge/patch/utils.ts", "../packages/core/src/knowledge/patch/simulation.ts", "../packages/core/src/knowledge/effective-state.ts", "../packages/core/src/knowledge/graphql.ts", "../packages/core/src/knowledge/
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\n\nimport { existsSync, realpathSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\n\nimport { startMcpServer } from '@ez-know/mcp';\nimport { type StartRestServerOptions, startRestServer } from '@ez-know/rest';\nimport {\n promptForSkillsFolderPath,\n runInitCommand,\n} from './init.js';\n\nconst PACKAGE_NAME = 'ez-know';\nconst PACKAGE_VERSION = '0.1.0';\n\nexport interface CliDependencies {\n startMcpServer?: typeof startMcpServer;\n startRestServer?: typeof startRestServer;\n promptSkillsFolderPath?: () => Promise<string | undefined>;\n stdout?: (message: string) => void;\n stderr?: (message: string) => void;\n}\n\nfunction writeLine(writer: (message: string) => void, message: string) {\n writer(`${message}\\n`);\n}\n\nexport function renderHelpText() {\n return [\n `${PACKAGE_NAME} ${PACKAGE_VERSION}`,\n 'Knowledge base service for MCP and REST access.',\n '',\n 'Usage:',\n ` ${PACKAGE_NAME} Show this overview`,\n ` ${PACKAGE_NAME} --help Show this overview`,\n ` ${PACKAGE_NAME} -h Show this overview`,\n ` ${PACKAGE_NAME} init Prompt for a skills folder and install bundled skills`,\n ` ${PACKAGE_NAME} mcp Start the MCP server over stdio`,\n ` ${PACKAGE_NAME} rest Start the REST service and frontend`,\n '',\n 'Launch modes:',\n ' init',\n ' Prompts for a skills folder and installs bundled reference skills.',\n ' Config: interactive terminal',\n '',\n ' mcp',\n ' Runs the MCP server over stdio.',\n ' Config: EZ_KNOW_ROOT',\n ' Built script: npm start',\n '',\n ' rest',\n ' Runs the HTTP REST service and serves the browser UI.',\n ' Config: EZ_KNOW_ROOT, EZ_KNOW_REST_HOST, EZ_KNOW_REST_PORT, PORT',\n ' Built script: npm run start:rest',\n '',\n 'Configuration:',\n ' EZ_KNOW_ROOT Knowledge root containing domain folders and .patches',\n ' Defaults to ./ez-know under the current working directory.',\n ' EZ_KNOW_REST_HOST REST bind host (default: 127.0.0.1)',\n ' EZ_KNOW_REST_PORT REST bind port (default: 3000)',\n ' PORT Alternate REST bind port input',\n ].join('\\n');\n}\n\nfunction renderUnknownMode(mode: string) {\n return [\n `Unknown command: ${mode}`,\n `Run \\`${PACKAGE_NAME} --help\\` for usage.`,\n ].join('\\n');\n}\n\nfunction resolveRestStaticRoot() {\n const distPublicRoot = fileURLToPath(new URL('./public', import.meta.url));\n if (existsSync(distPublicRoot)) {\n return distPublicRoot;\n }\n\n const webDistRoot = fileURLToPath(\n new URL('../packages/web/dist', import.meta.url),\n );\n if (existsSync(webDistRoot)) {\n return webDistRoot;\n }\n\n return fileURLToPath(new URL('../packages/web/public', import.meta.url));\n}\n\nexport async function runCli(\n args: string[],\n dependencies: CliDependencies = {},\n) {\n const stdout =\n dependencies.stdout ?? ((message: string) => process.stdout.write(message));\n const stderr =\n dependencies.stderr ?? ((message: string) => process.stderr.write(message));\n const startMcp = dependencies.startMcpServer ?? startMcpServer;\n const startRest = dependencies.startRestServer ?? startRestServer;\n const promptSkillsFolderPath =\n dependencies.promptSkillsFolderPath ?? (() => promptForSkillsFolderPath(stdout));\n const [mode] = args;\n\n if (!mode || mode === '--help' || mode === '-h') {\n writeLine(stdout, renderHelpText());\n return 0;\n }\n\n switch (mode) {\n case 'mcp':\n await startMcp();\n return 0;\n case 'rest':\n await startRest({\n staticRoot: resolveRestStaticRoot(),\n } satisfies StartRestServerOptions);\n return 0;\n case 'init':\n if (\n dependencies.promptSkillsFolderPath === undefined &&\n (!process.stdin.isTTY || !process.stdout.isTTY)\n ) {\n writeLine(stderr, 'init requires an interactive terminal.');\n return 1;\n }\n\n return runInitCommand({\n stdout,\n stderr,\n promptSkillsFolderPath,\n });\n default:\n writeLine(stderr, renderUnknownMode(mode));\n return 1;\n }\n}\n\nfunction resolveRealPath(value: string | undefined) {\n if (!value || !existsSync(value)) {\n return undefined;\n }\n\n return realpathSync(value);\n}\n\nconst mainModulePath = resolveRealPath(process.argv[1]);\nconst currentModulePath = resolveRealPath(fileURLToPath(import.meta.url));\nconst isMainModule =\n mainModulePath !== undefined &&\n currentModulePath !== undefined &&\n mainModulePath === currentModulePath;\n\nif (isMainModule) {\n const exitCode = await runCli(process.argv.slice(2));\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n}\n", "import { McpServer, StdioServerTransport } from '@modelcontextprotocol/server';\nimport { loadEffectiveKnowledgeStoreFromEnv } from '@ez-know/core';\nimport { registerKnowledgeExtractionResources } from './resources/knowledge-extraction.js';\nimport { registerCompareScopeWithEvidenceTool } from './tools/compare-scope-with-evidence.js';\nimport { registerKnowledgeGraphTool } from './tools/knowledge-graph.js';\nimport { registerKnowledgePatchApplyTool } from './tools/knowledge-patch-apply.js';\nimport { registerKnowledgePatchTool } from './tools/knowledge-patch.js';\nimport { registerKnowledgeSchemaResources } from './resources/knowledge-schema.js';\n\nexport async function startMcpServer() {\n const server = new McpServer({\n name: 'ez-know',\n version: '0.1.0',\n });\n\n registerKnowledgeSchemaResources(server);\n registerKnowledgeExtractionResources(server);\n\n registerKnowledgeGraphTool(server, async () => {\n const effectiveState = await loadEffectiveKnowledgeStoreFromEnv(\n process.env.EZ_KNOW_ROOT,\n );\n return effectiveState?.store;\n });\n registerKnowledgePatchTool(server);\n registerKnowledgePatchApplyTool(server);\n registerCompareScopeWithEvidenceTool(server);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n", "import { extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi';\nimport { z } from 'zod/v4';\n\nextendZodWithOpenApi(z);\n\nexport const confidenceSchema = z.object({\n score: z.number().min(0).max(1),\n level: z.enum(['Low', 'Medium', 'High']),\n reason: z.string().optional(),\n});\n\nexport const certaintySchema = z.enum([\n 'confirmed',\n 'direct_evidence',\n 'inferred',\n 'weak_inference',\n 'unknown',\n]);\n\nexport const withConfidenceSchema = z.object({\n certainty: certaintySchema,\n confidence: confidenceSchema,\n evidence_ids: z.array(z.string()),\n questions: z.array(z.string()),\n});\n\nexport const evidenceSchema = z.object({\n id: z.string(),\n source_type: z.enum([\n 'code',\n 'test',\n 'ui_text',\n 'translation',\n 'api',\n 'route',\n 'schema',\n 'comment',\n 'documentation',\n 'repowise_search',\n 'human',\n 'increment_description',\n 'git_diff',\n ]),\n description: z.string(),\n location: z\n .object({\n path: z.string().optional(),\n symbol: z.string().optional(),\n route: z.string().optional(),\n api: z.string().optional(),\n query: z.string().optional(),\n })\n .optional(),\n supports: z.array(z.string()),\n excerpt: z.string().optional(),\n confidence: confidenceSchema,\n});\n\nexport const domainSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n purpose: z.string(),\n why_it_exists: z.string().optional(),\n entity_ids: z.array(z.string()),\n capability_ids: z.array(z.string()),\n});\n\nexport const entityTechnicalRepresentationSchema = z.object({\n kind: z.enum([\n 'type',\n 'api',\n 'route',\n 'database',\n 'ui_label',\n 'translation',\n 'unknown',\n ]),\n name: z.string(),\n location_hint: z.string().optional(),\n});\n\nexport const entitySchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n business_definition: z.string(),\n description: z.string(),\n purpose: z.string().optional(),\n aliases: z.array(z.string()),\n ambiguous_terms: z.array(z.string()),\n technical_representations: z.array(entityTechnicalRepresentationSchema),\n domain_ids: z.array(z.string()),\n state_values: z.array(z.string()).optional(),\n relationship_ids: z.array(z.string()),\n capability_ids: z.array(z.string()),\n feature_ids: z.array(z.string()),\n rule_ids: z.array(z.string()),\n});\n\nexport const relationshipSchema = withConfidenceSchema.extend({\n id: z.string(),\n from_entity_id: z.string(),\n to_entity_id: z.string(),\n relationship_type: z.enum([\n 'has_many',\n 'has_one',\n 'belongs_to',\n 'depends_on',\n 'references',\n 'transitions_to',\n 'unknown',\n ]),\n description: z.string(),\n});\n\nexport const capabilitySchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n why_it_exists: z.string().optional(),\n domain_ids: z.array(z.string()),\n entity_ids: z.array(z.string()),\n parent_capability_ids: z.array(z.string()),\n child_capability_ids: z.array(z.string()),\n feature_ids: z.array(z.string()),\n});\n\nexport const featureSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n purpose: z.string().optional(),\n why_it_exists: z.string().optional(),\n domain_ids: z.array(z.string()),\n capability_ids: z.array(z.string()),\n entity_ids: z.array(z.string()),\n rule_ids: z.array(z.string()),\n constraint_ids: z.array(z.string()),\n});\n\nexport const ruleConditionSchema = z.object({\n subject: z.string(),\n field: z.string().optional(),\n operator: z.enum([\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'exists',\n 'not_exists',\n 'greater_than',\n 'less_than',\n 'succeeds',\n 'fails',\n 'unknown',\n ]),\n value: z.unknown().optional(),\n});\n\nexport const ruleTriggerSchema = z.object({\n actor: z.string(),\n action: z.string(),\n subject: z.string().optional(),\n field: z.string().optional(),\n operator: z\n .enum([\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'exists',\n 'not_exists',\n 'greater_than',\n 'less_than',\n 'succeeds',\n 'fails',\n 'unknown',\n ])\n .optional(),\n value: z.unknown().optional(),\n});\n\nexport const ruleEffectSchema = z.object({\n effect: z.enum([\n 'allow_action',\n 'disallow_action',\n 'hide_action',\n 'disable_action',\n 'require_action',\n 'show_message',\n 'change_state',\n 'calculate_value',\n 'unknown',\n ]),\n action: z.string().optional(),\n message: z.string().optional(),\n target_state: z.string().optional(),\n value: z.unknown().optional(),\n});\n\nexport const businessRuleSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n statement: z.string(),\n rule_type: z.enum([\n 'validation',\n 'permission',\n 'state_transition',\n 'visibility',\n 'workflow',\n 'calculation',\n 'integration',\n 'integration_behavior',\n 'data_consistency',\n 'acceptance_criterion',\n 'unknown',\n ]),\n behavior_type: z.enum([\n 'allow',\n 'disallow',\n 'require',\n 'calculate',\n 'show',\n 'hide',\n 'transition',\n 'notify',\n 'block',\n 'default',\n 'unknown',\n ]),\n applies_to: z.object({\n domain_ids: z.array(z.string()).optional(),\n entity_ids: z.array(z.string()).optional(),\n capability_ids: z.array(z.string()).optional(),\n feature_ids: z.array(z.string()).optional(),\n }),\n condition: z\n .object({\n given: z.array(ruleConditionSchema),\n when: z.array(ruleTriggerSchema),\n then: z.array(ruleEffectSchema),\n })\n .optional(),\n enforcement: z\n .object({\n level: z.enum([\n 'ui',\n 'api',\n 'backend',\n 'database',\n 'external_system',\n 'unknown',\n ]),\n description: z.string().optional(),\n })\n .optional(),\n related_constraint_ids: z.array(z.string()),\n rationale_ids: z.array(z.string()),\n});\n\nexport const constraintSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n constraint_type: z.enum([\n 'business',\n 'technical',\n 'regulatory',\n 'compliance',\n 'integration',\n 'legacy',\n 'architecture',\n 'infrastructure',\n 'performance',\n 'security',\n 'operational',\n 'data_model',\n 'unknown',\n ]),\n cause: z\n .object({\n source: z.string(),\n source_type: z.enum([\n 'external_system',\n 'database',\n 'framework',\n 'infrastructure',\n 'architecture',\n 'policy',\n 'regulation',\n 'business_process',\n 'legacy_code',\n 'unknown',\n ]),\n description: z.string(),\n })\n .optional(),\n impact: z\n .object({\n affected_change_types: z.array(z.string()),\n severity: z.enum(['low', 'medium', 'high', 'critical', 'unknown']),\n description: z.string(),\n })\n .optional(),\n applies_to: z.object({\n domain_ids: z.array(z.string()).optional(),\n entity_ids: z.array(z.string()).optional(),\n capability_ids: z.array(z.string()).optional(),\n feature_ids: z.array(z.string()).optional(),\n business_rule_ids: z.array(z.string()).optional(),\n }),\n workaround: z\n .object({\n exists: z.enum(['yes', 'no', 'unknown']),\n description: z.string().optional(),\n })\n .optional(),\n removability: z\n .object({\n can_be_removed_by_refactor: z.enum(['yes', 'no', 'partially', 'unknown']),\n requires: z.array(z.string()),\n risk: z.enum(['low', 'medium', 'high', 'critical', 'unknown']),\n })\n .optional(),\n});\n\nexport const rationaleSchema = withConfidenceSchema.extend({\n id: z.string(),\n statement: z.string(),\n explains: z.array(z.string()),\n});\n\nexport const questionSchema = z.object({\n id: z.string(),\n question: z.string(),\n category: z.enum([\n 'rationale',\n 'business_rule',\n 'constraint',\n 'terminology',\n 'domain_boundary',\n 'lifecycle',\n 'permission',\n 'legacy',\n 'ownership',\n 'enforcement',\n ]),\n reason: z.string(),\n impact: z.string().optional(),\n related_ids: z.array(z.string()),\n evidence_ids: z.array(z.string()),\n priority: z.enum(['low', 'medium', 'high']),\n status: z.enum(['open', 'answered', 'obsolete']),\n answer: z.string().nullable().optional(),\n answered_by: z.string().nullable().optional(),\n answered_at: z.string().nullable().optional(),\n});\n\nexport const conflictSchema = z.object({\n id: z.string(),\n type: z.enum([\n 'domain_boundary',\n 'terminology',\n 'rule_conflict',\n 'rationale_conflict',\n 'entity_duplicate',\n 'relationship_conflict',\n ]),\n description: z.string(),\n related_ids: z.array(z.string()),\n evidence_ids: z.array(z.string()),\n status: z.enum(['needs_human_input', 'resolved', 'obsolete']),\n questions: z.array(z.string()),\n resolution: z.string().optional(),\n resolved_by_evidence_id: z.string().optional(),\n});\n\nexport const knowledgeCollectionSchemas = {\n domains: z.array(domainSchema),\n entities: z.array(entitySchema),\n relationships: z.array(relationshipSchema),\n capabilities: z.array(capabilitySchema),\n features: z.array(featureSchema),\n business_rules: z.array(businessRuleSchema),\n constraints: z.array(constraintSchema),\n rationales: z.array(rationaleSchema),\n evidence: z.array(evidenceSchema),\n questions: z.array(questionSchema),\n conflicts: z.array(conflictSchema),\n} as const;\n\nexport const knowledgeCollectionSchemaNames = {\n domains: 'Domain',\n entities: 'Entity',\n relationships: 'EntityRelationship',\n capabilities: 'Capability',\n features: 'Feature',\n business_rules: 'BusinessRule',\n constraints: 'Constraint',\n rationales: 'Rationale',\n evidence: 'Evidence',\n questions: 'Question',\n conflicts: 'Conflict',\n} as const;\n\nexport type KnowledgeCollectionSchemaName =\n (typeof knowledgeCollectionSchemaNames)[keyof typeof knowledgeCollectionSchemaNames];\n", "import type { ZodTypeAny } from 'zod/v4';\n\nimport {\n businessRuleSchema,\n capabilitySchema,\n conflictSchema,\n constraintSchema,\n domainSchema,\n entitySchema,\n evidenceSchema,\n featureSchema,\n questionSchema,\n rationaleSchema,\n relationshipSchema,\n} from './schema.js';\nimport type { KnowledgeCollectionName } from './types.js';\n\nexport type KnowledgeExtractionIdConvention = {\n pattern: string;\n prefix: string;\n example: string;\n};\n\nexport type KnowledgeExtractionTypeDefinition = {\n collection: KnowledgeCollectionName;\n title: string;\n storageFile: string;\n idConvention: KnowledgeExtractionIdConvention;\n schemaName: string;\n schema: ZodTypeAny;\n guideFilePath: string;\n aliases: string[];\n};\n\nexport const KNOWLEDGE_EXTRACTION_TYPE_REGISTRY = {\n domains: {\n collection: 'domains',\n title: 'Domains',\n storageFile: 'domain.json',\n idConvention: {\n pattern: 'domain.<domain-slug>',\n prefix: 'domain',\n example: 'domain.orders',\n },\n schemaName: 'Domain',\n schema: domainSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/domains.md',\n aliases: [],\n },\n entities: {\n collection: 'entities',\n title: 'Entities',\n storageFile: 'entities.json',\n idConvention: {\n pattern: 'entity.<domain-slug>.<entity-slug>',\n prefix: 'entity',\n example: 'entity.orders.order',\n },\n schemaName: 'Entity',\n schema: entitySchema,\n guideFilePath: 'packages/core/src/knowledge/guides/entities.md',\n aliases: [],\n },\n relationships: {\n collection: 'relationships',\n title: 'Relationships',\n storageFile: 'relationships.json',\n idConvention: {\n pattern: 'rel.<domain-slug>.<relationship-slug>',\n prefix: 'rel',\n example: 'rel.orders.order-has-items',\n },\n schemaName: 'EntityRelationship',\n schema: relationshipSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/relationships.md',\n aliases: ['entity-relationships'],\n },\n capabilities: {\n collection: 'capabilities',\n title: 'Capabilities',\n storageFile: 'capabilities.json',\n idConvention: {\n pattern: 'cap.<domain-slug>.<capability-slug>',\n prefix: 'cap',\n example: 'cap.orders.order-lifecycle',\n },\n schemaName: 'Capability',\n schema: capabilitySchema,\n guideFilePath: 'packages/core/src/knowledge/guides/capabilities.md',\n aliases: [],\n },\n features: {\n collection: 'features',\n title: 'Features',\n storageFile: 'features.json',\n idConvention: {\n pattern: 'feature.<domain-slug>.<feature-slug>',\n prefix: 'feature',\n example: 'feature.orders.cancel-order',\n },\n schemaName: 'Feature',\n schema: featureSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/features.md',\n aliases: [],\n },\n business_rules: {\n collection: 'business_rules',\n title: 'Business Rules',\n storageFile: 'business-rules.json',\n idConvention: {\n pattern: 'rule.<domain-slug>.<rule-slug>',\n prefix: 'rule',\n example: 'rule.orders.no-direct-cancel-paid-order',\n },\n schemaName: 'BusinessRule',\n schema: businessRuleSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/business-rules.md',\n aliases: ['business-rules'],\n },\n constraints: {\n collection: 'constraints',\n title: 'Constraints',\n storageFile: 'constraints.json',\n idConvention: {\n pattern: 'constraint.<domain-slug>.<constraint-slug>',\n prefix: 'constraint',\n example: 'constraint.orders.erp-sync-one-way',\n },\n schemaName: 'Constraint',\n schema: constraintSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/constraints.md',\n aliases: [],\n },\n rationales: {\n collection: 'rationales',\n title: 'Rationales',\n storageFile: 'rationales.json',\n idConvention: {\n pattern: 'why.<domain-slug>.<rationale-slug>',\n prefix: 'why',\n example: 'why.orders.refund-required-for-paid-order',\n },\n schemaName: 'Rationale',\n schema: rationaleSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/rationales.md',\n aliases: [],\n },\n evidence: {\n collection: 'evidence',\n title: 'Evidence',\n storageFile: 'evidence.json',\n idConvention: {\n pattern: 'ev.<domain-slug>.<evidence-slug>',\n prefix: 'ev',\n example: 'ev.orders.cancel-disabled-paid',\n },\n schemaName: 'Evidence',\n schema: evidenceSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/evidence.md',\n aliases: [],\n },\n questions: {\n collection: 'questions',\n title: 'Questions',\n storageFile: 'questions.json',\n idConvention: {\n pattern: 'q.<domain-slug>.<question-slug>',\n prefix: 'q',\n example: 'q.orders.paid-cancel-rationale',\n },\n schemaName: 'Question',\n schema: questionSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/questions.md',\n aliases: [],\n },\n conflicts: {\n collection: 'conflicts',\n title: 'Conflicts',\n storageFile: 'conflicts.json',\n idConvention: {\n pattern: 'conflict.<domain-slug>.<conflict-slug>',\n prefix: 'conflict',\n example: 'conflict.invoice-domain',\n },\n schemaName: 'Conflict',\n schema: conflictSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/conflicts.md',\n aliases: [],\n },\n} as const satisfies Record<\n KnowledgeCollectionName,\n KnowledgeExtractionTypeDefinition\n>;\n\nexport const KNOWLEDGE_EXTRACTION_TYPES = Object.values(\n KNOWLEDGE_EXTRACTION_TYPE_REGISTRY,\n);\n\nconst KNOWLEDGE_EXTRACTION_TYPE_LOOKUP: Map<\n string,\n KnowledgeExtractionTypeDefinition\n> = new Map(\n KNOWLEDGE_EXTRACTION_TYPES.flatMap((definition) => [\n [definition.collection, definition] as const,\n ...definition.aliases.map((alias) => [alias, definition] as const),\n ]),\n);\n\nexport function listKnowledgeExtractionTypes() {\n return KNOWLEDGE_EXTRACTION_TYPES.slice();\n}\n\nexport function getKnowledgeExtractionTypeDefinition(type: string) {\n const normalized = type.trim().toLowerCase().replace(/-/g, '_');\n const exactMatch = KNOWLEDGE_EXTRACTION_TYPE_LOOKUP.get(normalized);\n if (exactMatch) {\n return exactMatch;\n }\n\n return KNOWLEDGE_EXTRACTION_TYPE_LOOKUP.get(type.trim().toLowerCase());\n}\n\nexport function requireKnowledgeExtractionTypeDefinition(type: string) {\n const definition = getKnowledgeExtractionTypeDefinition(type);\n if (!definition) {\n throw new Error(\n `Unsupported extraction type \"${type}\". Supported types: ${KNOWLEDGE_EXTRACTION_TYPES.map(\n (entry) => entry.collection,\n ).join(', ')}`,\n );\n }\n\n return definition;\n}\n\nexport function buildKnowledgeExtractionSchemaUri(type: string) {\n return `ez-know://extraction/schema/${requireKnowledgeExtractionTypeDefinition(type).collection}`;\n}\n\nexport function buildKnowledgeExtractionGuideUri(type: string) {\n return `ez-know://extraction/guide/${requireKnowledgeExtractionTypeDefinition(type).collection}`;\n}\n", "import { readFile } from 'node:fs/promises';\n\nimport { z } from 'zod/v4';\n\nimport {\n buildKnowledgeExtractionGuideUri,\n buildKnowledgeExtractionSchemaUri,\n KNOWLEDGE_EXTRACTION_TYPES,\n listKnowledgeExtractionTypes,\n type KnowledgeExtractionTypeDefinition,\n requireKnowledgeExtractionTypeDefinition,\n} from './extraction-registry.js';\n\nexport const KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI =\n 'ez-know://extraction/types';\n\nexport const KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI =\n 'ez-know://extraction/schema/{type}';\n\nexport const KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI =\n 'ez-know://extraction/guide/{type}';\n\nexport type KnowledgeExtractionTypeResource = {\n collection: string;\n title: string;\n aliases: string[];\n storageFile: string;\n idConvention: {\n pattern: string;\n prefix: string;\n example: string;\n };\n schemaUri: string;\n guideUri: string;\n};\n\nexport type KnowledgeExtractionTypeIndexDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'registry';\n count: number;\n };\n supportedTypes: KnowledgeExtractionTypeResource[];\n};\n\nexport type KnowledgeExtractionSchemaDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-zod';\n collection: string;\n schemaName: string;\n storageFile: string;\n guideUri: string;\n };\n type: KnowledgeExtractionTypeResource;\n schema: any;\n};\n\nexport type KnowledgeExtractionGuideDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'checked-in-markdown';\n filePath: string;\n };\n type: KnowledgeExtractionTypeResource;\n markdown: string;\n};\n\nfunction createKnowledgeExtractionTypeResource(\n definition: KnowledgeExtractionTypeDefinition,\n): KnowledgeExtractionTypeResource {\n return {\n collection: definition.collection,\n title: definition.title,\n aliases: definition.aliases.slice(),\n storageFile: definition.storageFile,\n idConvention: { ...definition.idConvention },\n schemaUri: buildKnowledgeExtractionSchemaUri(definition.collection),\n guideUri: buildKnowledgeExtractionGuideUri(definition.collection),\n };\n}\n\nexport function buildKnowledgeExtractionTypeIndexDocument(): KnowledgeExtractionTypeIndexDocument {\n const supportedTypes = listKnowledgeExtractionTypes().map(\n createKnowledgeExtractionTypeResource,\n );\n\n return {\n resource: {\n uri: KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n title: 'Knowledge Extraction Types',\n description:\n 'Canonical registry of knowledge types supported by the extraction workflow.',\n },\n source: {\n kind: 'registry',\n count: supportedTypes.length,\n },\n supportedTypes,\n };\n}\n\nexport function buildKnowledgeExtractionSchemaDocument(\n type: string,\n): KnowledgeExtractionSchemaDocument {\n const definition = requireKnowledgeExtractionTypeDefinition(type);\n const resource = createKnowledgeExtractionTypeResource(definition);\n\n return {\n resource: {\n uri: resource.schemaUri,\n title: `${definition.title} Extraction Schema`,\n description:\n 'Runtime JSON Schema view of the canonical knowledge object model.',\n },\n source: {\n kind: 'runtime-zod',\n collection: definition.collection,\n schemaName: definition.schemaName,\n storageFile: definition.storageFile,\n guideUri: resource.guideUri,\n },\n type: resource,\n schema: z.toJSONSchema(definition.schema),\n };\n}\n\nexport async function readKnowledgeExtractionGuideMarkdown(type: string) {\n const definition = requireKnowledgeExtractionTypeDefinition(type);\n const guideFileName = definition.guideFilePath.split('/').pop();\n if (!guideFileName) {\n throw new Error(\n `Invalid guide file path for extraction type \"${definition.collection}\".`,\n );\n }\n\n const guideUrl = new URL(`./guides/${guideFileName}`, import.meta.url);\n const markdown = await readFile(guideUrl, 'utf8');\n\n return {\n definition,\n markdown,\n };\n}\n\nexport async function buildKnowledgeExtractionGuideDocument(\n type: string,\n): Promise<KnowledgeExtractionGuideDocument> {\n const definition = requireKnowledgeExtractionTypeDefinition(type);\n const resource = createKnowledgeExtractionTypeResource(definition);\n const { markdown } = await readKnowledgeExtractionGuideMarkdown(type);\n\n return {\n resource: {\n uri: resource.guideUri,\n title: `${definition.title} Extraction Guide`,\n description:\n 'Checked-in Markdown guidance for extracting this knowledge type.',\n },\n source: {\n kind: 'checked-in-markdown',\n filePath: definition.guideFilePath,\n },\n type: resource,\n markdown,\n };\n}\n\nexport function listKnowledgeExtractionResourceTypes() {\n return listKnowledgeExtractionTypes().map(\n createKnowledgeExtractionTypeResource,\n );\n}\n", "import { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport { basename, join, resolve } from 'node:path';\nimport { z } from 'zod/v4';\n\nimport {\n businessRuleSchema,\n capabilitySchema,\n conflictSchema,\n constraintSchema,\n domainSchema,\n entitySchema,\n evidenceSchema,\n featureSchema,\n rationaleSchema,\n relationshipSchema,\n questionSchema,\n} from './schema.js';\nimport { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from './extraction-registry.js';\nimport type {\n BusinessRule,\n Capability,\n Conflict,\n Constraint,\n Domain,\n Entity,\n EntityRelationship,\n Evidence,\n Feature,\n KnowledgeCollectionName,\n KnowledgeLoadDiagnostic,\n KnowledgeRecord,\n KnowledgeStore,\n NormalizedKnowledgeStore,\n Question,\n Rationale,\n} from './types.js';\nimport { resolveKnowledgeRootFromEnv } from './root.js';\n\nconst COLLECTION_REFERENCE_FIELDS: Record<KnowledgeCollectionName, string[]> = {\n domains: ['entity_ids', 'capability_ids'],\n entities: [\n 'domain_ids',\n 'relationship_ids',\n 'capability_ids',\n 'feature_ids',\n 'rule_ids',\n ],\n relationships: ['from_entity_id', 'to_entity_id'],\n capabilities: [\n 'domain_ids',\n 'entity_ids',\n 'parent_capability_ids',\n 'child_capability_ids',\n 'feature_ids',\n ],\n features: [\n 'domain_ids',\n 'capability_ids',\n 'entity_ids',\n 'rule_ids',\n 'constraint_ids',\n ],\n business_rules: [\n 'domain_ids',\n 'entity_ids',\n 'capability_ids',\n 'feature_ids',\n 'related_constraint_ids',\n 'rationale_ids',\n ],\n constraints: [\n 'domain_ids',\n 'entity_ids',\n 'capability_ids',\n 'feature_ids',\n 'business_rule_ids',\n ],\n rationales: ['explains'],\n evidence: ['supports'],\n questions: ['related_ids', 'evidence_ids'],\n conflicts: [\n 'related_ids',\n 'evidence_ids',\n 'questions',\n 'resolved_by_evidence_id',\n ],\n};\n\nconst COLLECTION_SCHEMAS = {\n domains: z.array(domainSchema),\n entities: z.array(entitySchema),\n relationships: z.array(relationshipSchema),\n capabilities: z.array(capabilitySchema),\n features: z.array(featureSchema),\n business_rules: z.array(businessRuleSchema),\n constraints: z.array(constraintSchema),\n rationales: z.array(rationaleSchema),\n evidence: z.array(evidenceSchema),\n questions: z.array(questionSchema),\n conflicts: z.array(conflictSchema),\n} as const;\n\nconst COLLECTION_DEFINITIONS = KNOWLEDGE_EXTRACTION_TYPE_REGISTRY;\n\nexport class KnowledgeStoreLoadError extends Error {\n diagnostics: KnowledgeLoadDiagnostic[];\n\n constructor(message: string, diagnostics: KnowledgeLoadDiagnostic[]) {\n super(message);\n this.name = 'KnowledgeStoreLoadError';\n this.diagnostics = diagnostics;\n }\n}\n\nexport function resolveKnowledgeRoot(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return resolveKnowledgeRootFromEnv(envValue, cwd);\n}\n\nexport async function discoverDomainFolders(\n rootDir: string,\n): Promise<string[]> {\n const { readdir } = await import('node:fs/promises');\n const discovered: string[] = [];\n\n const entries = await readdir(rootDir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory() && !entry.name.startsWith('.')) {\n discovered.push(join(rootDir, entry.name));\n }\n }\n\n discovered.sort((left, right) => left.localeCompare(right));\n return discovered;\n}\n\nfunction readDiagnostic(\n kind: KnowledgeLoadDiagnostic['kind'],\n path: string | undefined,\n message: string,\n id?: string,\n): KnowledgeLoadDiagnostic {\n return {\n kind,\n path,\n id,\n message,\n };\n}\n\nasync function readCanonicalFile(\n filePath: string,\n schema: z.ZodTypeAny,\n): Promise<unknown> {\n let raw: string;\n try {\n raw = await readFile(filePath, 'utf8');\n } catch (error) {\n throw new KnowledgeStoreLoadError(\n `Failed to read canonical knowledge file: ${filePath}`,\n [\n readDiagnostic(\n 'missing_domain_file',\n filePath,\n `Unable to read canonical file: ${filePath}`,\n ),\n ],\n );\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch (error) {\n throw new KnowledgeStoreLoadError(\n `Invalid JSON in canonical knowledge file: ${filePath}`,\n [readDiagnostic('invalid_json', filePath, `Invalid JSON in ${filePath}`)],\n );\n }\n\n try {\n return schema.parse(parsed);\n } catch (error) {\n throw new KnowledgeStoreLoadError(\n `Invalid knowledge schema in canonical file: ${filePath}`,\n [\n readDiagnostic(\n 'invalid_shape',\n filePath,\n `Invalid canonical file shape in ${filePath}`,\n ),\n ],\n );\n }\n}\n\nfunction validateIdPrefix(\n collection: KnowledgeCollectionName,\n id: string,\n domainSlug: string,\n) {\n const definition = COLLECTION_DEFINITIONS[collection];\n if (collection === 'domains') {\n const expectedId = `domain.${domainSlug}`;\n if (id !== expectedId) {\n return `Expected ${id} to equal ${expectedId}`;\n }\n\n return undefined;\n }\n\n const expectedPrefix = `${definition.idConvention.prefix}.${domainSlug}.`;\n if (!id.startsWith(expectedPrefix)) {\n return `Expected ${id} to start with ${expectedPrefix}`;\n }\n\n return undefined;\n}\n\nfunction getDomainId(domainSlug: string) {\n return `domain.${domainSlug}`;\n}\n\nfunction emptyStore(rootDir: string): KnowledgeStore {\n return {\n rootDir,\n sourceFiles: [],\n domains: [],\n entities: [],\n relationships: [],\n capabilities: [],\n features: [],\n business_rules: [],\n constraints: [],\n rationales: [],\n evidence: [],\n questions: [],\n conflicts: [],\n byCollection: {\n domains: new Map(),\n entities: new Map(),\n relationships: new Map(),\n capabilities: new Map(),\n features: new Map(),\n business_rules: new Map(),\n constraints: new Map(),\n rationales: new Map(),\n evidence: new Map(),\n questions: new Map(),\n conflicts: new Map(),\n },\n byId: new Map(),\n reverseReferences: new Map(),\n diagnostics: [],\n };\n}\n\nfunction addRecord(\n store: KnowledgeStore,\n collection: KnowledgeCollectionName,\n record: KnowledgeRecord,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n if (store.byId.has(record.id)) {\n diagnostics.push(\n readDiagnostic(\n 'duplicate_id',\n undefined,\n `Duplicate knowledge id detected: ${record.id}`,\n record.id,\n ),\n );\n return;\n }\n\n store.byId.set(record.id, record);\n store.byCollection[collection].set(record.id, record);\n store[collection].push(record as never);\n}\n\nfunction validateFolderRecordIds(\n collection: KnowledgeCollectionName,\n records: KnowledgeRecord[],\n domainSlug: string,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n for (const record of records) {\n const message = validateIdPrefix(collection, record.id, domainSlug);\n if (message) {\n diagnostics.push(\n readDiagnostic('invalid_domain_id', undefined, message, record.id),\n );\n }\n }\n}\n\nfunction collectReferenceIds(record: KnowledgeRecord): string[] {\n if ('relationship_type' in record) {\n return [\n (record as EntityRelationship).from_entity_id,\n (record as EntityRelationship).to_entity_id,\n ];\n }\n\n if ('business_definition' in record) {\n const entity = record as Entity;\n return [\n ...entity.domain_ids,\n ...entity.relationship_ids,\n ...entity.capability_ids,\n ...entity.feature_ids,\n ...entity.rule_ids,\n ];\n }\n\n if ('behavior_type' in record) {\n const rule = record as BusinessRule;\n return [\n ...(rule.applies_to.domain_ids ?? []),\n ...(rule.applies_to.entity_ids ?? []),\n ...(rule.applies_to.capability_ids ?? []),\n ...(rule.applies_to.feature_ids ?? []),\n ...rule.related_constraint_ids,\n ...rule.rationale_ids,\n ];\n }\n\n if ('constraint_type' in record) {\n const constraint = record as Constraint;\n return [\n ...(constraint.applies_to.domain_ids ?? []),\n ...(constraint.applies_to.entity_ids ?? []),\n ...(constraint.applies_to.capability_ids ?? []),\n ...(constraint.applies_to.feature_ids ?? []),\n ...(constraint.applies_to.business_rule_ids ?? []),\n ];\n }\n\n if ('parent_capability_ids' in record) {\n const capability = record as Capability;\n return [\n ...capability.domain_ids,\n ...capability.entity_ids,\n ...capability.parent_capability_ids,\n ...capability.child_capability_ids,\n ...capability.feature_ids,\n ];\n }\n\n if ('rule_ids' in record && 'constraint_ids' in record) {\n const feature = record as Feature;\n return [\n ...feature.domain_ids,\n ...feature.capability_ids,\n ...feature.entity_ids,\n ...feature.rule_ids,\n ...feature.constraint_ids,\n ];\n }\n\n if (\n 'entity_ids' in record &&\n 'capability_ids' in record &&\n 'why_it_exists' in record &&\n !('business_definition' in record) &&\n !('parent_capability_ids' in record) &&\n !('constraint_ids' in record) &&\n !('rule_ids' in record)\n ) {\n const domain = record as Domain;\n return [...domain.entity_ids, ...domain.capability_ids];\n }\n\n if ('explains' in record) {\n return (record as Rationale).explains;\n }\n\n if ('source_type' in record) {\n return (record as Evidence).supports;\n }\n\n if ('priority' in record) {\n const question = record as Question;\n return [...question.related_ids, ...question.evidence_ids];\n }\n\n const conflict = record as Conflict;\n return [\n ...conflict.related_ids,\n ...conflict.evidence_ids,\n ...conflict.questions,\n ];\n}\n\nfunction buildReverseReferences(store: KnowledgeStore) {\n for (const record of store.byId.values()) {\n const references = collectReferenceIds(record);\n for (const referenceId of references) {\n const reverse = store.reverseReferences.get(referenceId) ?? [];\n reverse.push(record.id);\n store.reverseReferences.set(referenceId, reverse);\n }\n }\n}\n\nfunction validateReferences(\n store: KnowledgeStore,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n for (const record of store.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n if (!store.byId.has(referenceId)) {\n diagnostics.push(\n readDiagnostic(\n 'invalid_reference',\n undefined,\n `Unknown reference id \"${referenceId}\" from record \"${record.id}\"`,\n record.id,\n ),\n );\n }\n }\n }\n}\n\nfunction finalizeStore(\n store: KnowledgeStore,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n store.diagnostics = diagnostics;\n if (diagnostics.length > 0) {\n throw new KnowledgeStoreLoadError(\n diagnostics.map((diagnostic) => diagnostic.message).join('; '),\n diagnostics,\n );\n }\n\n return store;\n}\n\nexport async function loadKnowledgeStoreFromRoot(\n rootDir: string,\n): Promise<NormalizedKnowledgeStore> {\n if (!existsSync(rootDir)) {\n throw new KnowledgeStoreLoadError(\n `Knowledge root does not exist: ${rootDir}`,\n [\n readDiagnostic(\n 'missing_root',\n rootDir,\n `Knowledge root does not exist: ${rootDir}`,\n ),\n ],\n );\n }\n\n const diagnostics: KnowledgeLoadDiagnostic[] = [];\n const store = emptyStore(rootDir);\n const domainFolders = await discoverDomainFolders(rootDir);\n const sourceFiles: string[] = [];\n\n for (const domainFolder of domainFolders) {\n const domainSlug = basename(domainFolder);\n const domainFile = join(\n domainFolder,\n COLLECTION_DEFINITIONS.domains.storageFile,\n );\n if (!existsSync(domainFile)) {\n diagnostics.push(\n readDiagnostic(\n 'missing_domain_file',\n domainFile,\n `Missing canonical domain file: ${domainFile}`,\n ),\n );\n continue;\n }\n\n const domain = (await readCanonicalFile(\n domainFile,\n domainSchema,\n )) as Domain;\n sourceFiles.push(domainFile);\n validateFolderRecordIds('domains', [domain], domainSlug, diagnostics);\n\n const domainId = getDomainId(domainSlug);\n if (domain.id !== domainId) {\n diagnostics.push(\n readDiagnostic(\n 'invalid_domain_id',\n domainFile,\n `Domain id \"${domain.id}\" must match folder slug \"${domainSlug}\"`,\n domain.id,\n ),\n );\n }\n\n addRecord(store, 'domains', domain, diagnostics);\n\n for (const collection of Object.keys(\n COLLECTION_DEFINITIONS,\n ) as KnowledgeCollectionName[]) {\n if (collection === 'domains') {\n continue;\n }\n\n const fileName = COLLECTION_DEFINITIONS[collection].storageFile;\n const filePath = join(domainFolder, fileName);\n if (!existsSync(filePath)) {\n continue;\n }\n\n const parsed = (await readCanonicalFile(\n filePath,\n COLLECTION_SCHEMAS[collection],\n )) as KnowledgeRecord[];\n sourceFiles.push(filePath);\n validateFolderRecordIds(\n collection,\n parsed as KnowledgeRecord[],\n domainSlug,\n diagnostics,\n );\n\n for (const record of parsed as KnowledgeRecord[]) {\n addRecord(store, collection, record, diagnostics);\n }\n }\n }\n\n store.sourceFiles = sourceFiles.sort((left, right) =>\n left.localeCompare(right),\n );\n buildReverseReferences(store);\n validateReferences(store, diagnostics);\n\n return finalizeStore(store, diagnostics);\n}\n\nexport async function loadKnowledgeStoreFromEnv(\n envValue: string | undefined,\n cwd = process.cwd(),\n): Promise<NormalizedKnowledgeStore | undefined> {\n const rootDir = resolveKnowledgeRoot(envValue, cwd);\n if (!rootDir || !existsSync(rootDir)) {\n return undefined;\n }\n\n return loadKnowledgeStoreFromRoot(rootDir);\n}\n\nexport function getCollectionRecords(\n store: NormalizedKnowledgeStore,\n collection: KnowledgeCollectionName,\n) {\n return store[collection] as KnowledgeRecord[];\n}\n\nexport function asKnowledgeStore(\n store: NormalizedKnowledgeStore,\n): KnowledgeStore {\n return store;\n}\n", "import { resolve } from 'node:path';\n\nexport function resolveKnowledgeRootFromEnv(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return envValue ? resolve(cwd, envValue) : resolve(cwd, 'ez-know');\n}\n", "import { existsSync } from 'node:fs';\nimport { mkdir, readFile, readdir, writeFile } from 'node:fs/promises';\nimport { isAbsolute, join, normalize, resolve, sep } from 'node:path';\nimport { z } from 'zod/v4';\n\nimport { KNOWLEDGE_PATCH_SCHEMA_VERSION } from './constants.js';\nimport {\n resolveKnowledgePatchDirectory,\n resolveKnowledgePatchRoot,\n patchMetadataPath,\n patchOperationsPath,\n} from './paths.js';\nimport {\n addOperationInputSchema,\n createPatchInputSchema,\n knowledgePatchMetadataSchema,\n knowledgePatchOperationSchema,\n knowledgePatchOperationsEnvelopeSchema,\n updatePatchMetadataInputSchema,\n updateOperationInputSchema,\n} from './schemas.js';\nimport type {\n KnowledgePatchMetadata,\n KnowledgePatchMetadataUpdateInput,\n KnowledgePatchOmittedFile,\n KnowledgePatchOperationsEnvelope,\n KnowledgePatchState,\n KnowledgePatchSummary,\n} from './types.js';\nimport { buildOperationId, buildPatchId, nowIso } from './utils.js';\n\nasync function ensurePatchRoot(rootDir: string) {\n await mkdir(rootDir, { recursive: true });\n}\n\nasync function writeJsonFile(filePath: string, value: unknown) {\n await writeFile(filePath, `${JSON.stringify(value, null, 2)}\\n`, 'utf8');\n}\n\nasync function readJsonFile<T>(\n filePath: string,\n schema: z.ZodType<T>,\n): Promise<T> {\n const raw = await readFile(filePath, 'utf8');\n const parsed = JSON.parse(raw) as unknown;\n return schema.parse(parsed);\n}\n\nfunction normalizeRootFolder(rootFolder: string, cwd = process.cwd()) {\n return resolve(cwd, rootFolder);\n}\n\nfunction normalizeRepositoryRelativePath(inputPath: string) {\n const trimmed = inputPath.trim().replaceAll('\\\\', '/');\n if (!trimmed) {\n throw new Error('Omitted file path must not be empty.');\n }\n if (isAbsolute(trimmed)) {\n throw new Error(\n `Omitted file path \"${inputPath}\" must be repository-relative.`,\n );\n }\n\n const normalized = normalize(trimmed).replaceAll(sep, '/');\n if (\n normalized === '.' ||\n normalized === '..' ||\n normalized.startsWith('../')\n ) {\n throw new Error(\n `Omitted file path \"${inputPath}\" must stay within the repository root.`,\n );\n }\n\n return normalized;\n}\n\nfunction normalizeOmittedFiles(\n omittedFiles: KnowledgePatchOmittedFile[] | undefined,\n): KnowledgePatchOmittedFile[] {\n return (omittedFiles ?? []).map((entry) => ({\n path: normalizeRepositoryRelativePath(entry.path),\n reason: entry.reason.trim(),\n }));\n}\n\nexport async function loadPatchStateByDir(\n patchDir: string,\n): Promise<KnowledgePatchState> {\n const patch = await readJsonFile(\n patchMetadataPath(patchDir),\n knowledgePatchMetadataSchema,\n );\n const envelope = await readJsonFile(\n patchOperationsPath(patchDir),\n knowledgePatchOperationsEnvelopeSchema,\n );\n return {\n patch,\n operations: envelope.operations,\n };\n}\n\nexport async function readKnowledgePatch(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n return loadPatchStateByDir(patchDir);\n}\n\nfunction assertDraftPatch(patch: KnowledgePatchMetadata) {\n if (patch.status !== 'draft') {\n throw new Error(`Patch \"${patch.id}\" is closed and cannot be modified.`);\n }\n}\n\nasync function savePatchState(patchDir: string, state: KnowledgePatchState) {\n const envelope: KnowledgePatchOperationsEnvelope = {\n schemaVersion: KNOWLEDGE_PATCH_SCHEMA_VERSION,\n operations: state.operations,\n };\n await writeJsonFile(patchMetadataPath(patchDir), state.patch);\n await writeJsonFile(patchOperationsPath(patchDir), envelope);\n}\n\nexport async function createKnowledgePatch(\n envValue: string | undefined,\n input: z.input<typeof createPatchInputSchema>,\n cwd = process.cwd(),\n) {\n const patchRoot = resolveKnowledgePatchRoot(envValue, cwd);\n await ensurePatchRoot(patchRoot);\n\n const patchInput = createPatchInputSchema.parse(input);\n const patchId = buildPatchId(patchInput.title);\n const timestamp = nowIso();\n const patch: KnowledgePatchMetadata = {\n id: patchId,\n title: patchInput.title,\n description: patchInput.description,\n status: 'draft',\n rootFolder: normalizeRootFolder(patchInput.rootFolder, cwd),\n omittedFiles: normalizeOmittedFiles(patchInput.omittedFiles),\n schemaVersion: KNOWLEDGE_PATCH_SCHEMA_VERSION,\n createdAt: timestamp,\n updatedAt: timestamp,\n };\n const patchDir = join(patchRoot, patchId);\n await mkdir(patchDir, { recursive: true });\n await savePatchState(patchDir, { patch, operations: [] });\n return readKnowledgePatch(envValue, patchId, cwd);\n}\n\nexport async function listKnowledgePatches(\n envValue: string | undefined,\n cwd = process.cwd(),\n): Promise<KnowledgePatchSummary[]> {\n const patchRoot = resolveKnowledgePatchRoot(envValue, cwd);\n if (!existsSync(patchRoot)) {\n return [];\n }\n\n const entries = await readdir(patchRoot, { withFileTypes: true });\n const summaries: KnowledgePatchSummary[] = [];\n for (const entry of entries) {\n if (!entry.isDirectory()) {\n continue;\n }\n\n const patchDir = join(patchRoot, entry.name);\n const state = await loadPatchStateByDir(patchDir);\n summaries.push({\n id: state.patch.id,\n status: state.patch.status,\n title: state.patch.title,\n description: state.patch.description,\n rootFolder: state.patch.rootFolder,\n omittedFiles: state.patch.omittedFiles,\n operationCount: state.operations.length,\n createdAt: state.patch.createdAt,\n updatedAt: state.patch.updatedAt,\n });\n }\n\n summaries.sort((left, right) =>\n left.createdAt === right.createdAt\n ? left.id.localeCompare(right.id)\n : left.createdAt.localeCompare(right.createdAt),\n );\n return summaries;\n}\n\nexport async function addKnowledgePatchOperation(\n envValue: string | undefined,\n patchId: string,\n input: z.input<typeof addOperationInputSchema>,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const operation = knowledgePatchOperationSchema.parse({\n ...input,\n id: input.id ?? buildOperationId(),\n });\n state.operations.push(operation);\n state.patch.updatedAt = nowIso();\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function updateKnowledgePatchMetadata(\n envValue: string | undefined,\n patchId: string,\n input: z.input<typeof updatePatchMetadataInputSchema>,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const metadata = updatePatchMetadataInputSchema.parse(input);\n const nextMetadata: KnowledgePatchMetadataUpdateInput = {\n omittedFiles: normalizeOmittedFiles(metadata.omittedFiles),\n };\n\n if (metadata.rootFolder) {\n nextMetadata.rootFolder = normalizeRootFolder(metadata.rootFolder, cwd);\n }\n\n state.patch = knowledgePatchMetadataSchema.parse({\n ...state.patch,\n ...nextMetadata,\n updatedAt: nowIso(),\n });\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function updateKnowledgePatchOperation(\n envValue: string | undefined,\n patchId: string,\n input: z.input<typeof updateOperationInputSchema>,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const update = updateOperationInputSchema.parse(input);\n const index = state.operations.findIndex(\n (operation) => operation.id === update.operationId,\n );\n if (index === -1) {\n throw new Error(\n `Patch \"${patchId}\" does not contain operation \"${update.operationId}\".`,\n );\n }\n\n state.operations[index] = knowledgePatchOperationSchema.parse({\n ...update.operation,\n id: update.operation.id ?? update.operationId,\n });\n state.patch.updatedAt = nowIso();\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function deleteKnowledgePatchOperation(\n envValue: string | undefined,\n patchId: string,\n operationId: string,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const nextOperations = state.operations.filter(\n (operation) => operation.id !== operationId,\n );\n if (nextOperations.length === state.operations.length) {\n throw new Error(\n `Patch \"${patchId}\" does not contain operation \"${operationId}\".`,\n );\n }\n\n state.operations = nextOperations;\n state.patch.updatedAt = nowIso();\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function closeKnowledgePatch(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const timestamp = nowIso();\n state.patch.status = 'closed';\n state.patch.updatedAt = timestamp;\n state.patch.closedAt = timestamp;\n await savePatchState(patchDir, state);\n return state;\n}\n", "import { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from '../extraction-registry.js';\nimport type { KnowledgeCollectionName } from '../types.js';\n\nexport const KNOWLEDGE_PATCH_SCHEMA_VERSION = 1;\nexport const KNOWLEDGE_PATCH_FOLDER_NAME = '.patches';\nexport const SUPPORTED_OPERATION_TYPES = Object.keys(\n KNOWLEDGE_EXTRACTION_TYPE_REGISTRY,\n) as [KnowledgeCollectionName, ...KnowledgeCollectionName[]];\n\nexport const supportedOperationTypeSet = new Set<string>(\n SUPPORTED_OPERATION_TYPES,\n);\n", "import { join, resolve } from 'node:path';\n\nimport { KNOWLEDGE_PATCH_FOLDER_NAME } from './constants.js';\nimport { resolveKnowledgeRootFromEnv } from '../root.js';\n\nfunction getKnowledgeRoot(envValue: string | undefined, cwd = process.cwd()) {\n return resolveKnowledgeRootFromEnv(envValue, cwd);\n}\n\nexport function resolveKnowledgePatchRoot(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return join(getKnowledgeRoot(envValue, cwd), KNOWLEDGE_PATCH_FOLDER_NAME);\n}\n\nexport function resolveKnowledgePatchDirectory(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n return join(resolveKnowledgePatchRoot(envValue, cwd), patchId);\n}\n\nexport function resolveKnowledgeRoot(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return getKnowledgeRoot(envValue, cwd);\n}\n\nexport function patchMetadataPath(patchDir: string) {\n return join(patchDir, 'patch.json');\n}\n\nexport function patchOperationsPath(patchDir: string) {\n return join(patchDir, 'operations.json');\n}\n", "import { z } from 'zod/v4';\n\nimport {\n SUPPORTED_OPERATION_TYPES,\n KNOWLEDGE_PATCH_SCHEMA_VERSION,\n supportedOperationTypeSet,\n} from './constants.js';\nimport type { KnowledgeCollectionName } from '../types.js';\n\nconst patchStatusSchema = z.enum(['draft', 'closed']);\n\nconst canonicalOperationTypeSchema = z\n .string()\n .trim()\n .min(1)\n .superRefine((value, ctx) => {\n if (!supportedOperationTypeSet.has(value)) {\n ctx.addIssue({\n code: 'custom',\n message: `Unsupported patch operation type \"${value}\". Supported types: ${SUPPORTED_OPERATION_TYPES.join(\n ', ',\n )}`,\n });\n }\n })\n .transform((value) => value as KnowledgeCollectionName);\n\nexport const knowledgePatchMetadataSchema = z.object({\n id: z.string().min(1),\n title: z.string().trim().min(1),\n description: z.string().trim().min(1).optional(),\n status: patchStatusSchema,\n rootFolder: z.string().trim().min(1),\n omittedFiles: z.array(\n z.object({\n path: z.string().trim().min(1),\n reason: z.string().trim().min(1),\n }),\n ),\n schemaVersion: z.literal(KNOWLEDGE_PATCH_SCHEMA_VERSION),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n closedAt: z.string().datetime({ offset: true }).optional(),\n});\n\nconst operationBaseSchema = z.object({\n id: z.string().min(1),\n type: canonicalOperationTypeSchema,\n domain: z.string().trim().min(1),\n});\n\nexport const knowledgePatchCreateOperationSchema = operationBaseSchema.extend({\n kind: z.literal('create'),\n payload: z.record(z.string(), z.unknown()),\n});\n\nexport const knowledgePatchUpdateOperationSchema = operationBaseSchema.extend({\n kind: z.literal('update'),\n targetId: z.string().min(1),\n payload: z.record(z.string(), z.unknown()),\n});\n\nexport const knowledgePatchDeleteOperationSchema = operationBaseSchema.extend({\n kind: z.literal('delete'),\n targetId: z.string().min(1),\n reason: z.string().trim().min(1),\n});\n\nexport const knowledgePatchOperationSchema = z.discriminatedUnion('kind', [\n knowledgePatchCreateOperationSchema,\n knowledgePatchUpdateOperationSchema,\n knowledgePatchDeleteOperationSchema,\n]);\n\nexport const knowledgePatchOperationsEnvelopeSchema = z.object({\n schemaVersion: z.literal(KNOWLEDGE_PATCH_SCHEMA_VERSION),\n operations: z.array(knowledgePatchOperationSchema),\n});\n\nexport const knowledgePatchDiagnosticSchema = z.object({\n severity: z.enum(['error', 'critical']),\n code: z.string(),\n message: z.string(),\n patchId: z.string().optional(),\n operationId: z.string().optional(),\n targetId: z.string().optional(),\n path: z.array(z.union([z.string(), z.number()])).optional(),\n supportedTypes: z.array(z.string()).optional(),\n});\n\nexport const knowledgePatchValidationResultSchema = z.object({\n valid: z.boolean(),\n fingerprint: z.string().optional(),\n diagnostics: z.array(knowledgePatchDiagnosticSchema),\n operationCount: z.number().int().nonnegative(),\n appliedOperationIds: z.array(z.string()),\n affectedFiles: z.array(z.string()),\n});\n\nexport const knowledgePatchApplyApprovalSchema = z.object({\n approved: z.boolean(),\n validationFingerprint: z.string().min(1),\n});\n\nexport const createPatchInputSchema = z.object({\n title: z.string().trim().min(1),\n description: z.string().trim().min(1).optional(),\n rootFolder: z.string().trim().min(1),\n omittedFiles: z\n .array(\n z.object({\n path: z.string().trim().min(1),\n reason: z.string().trim().min(1),\n }),\n )\n .optional(),\n});\n\nexport const addOperationInputSchema = z.discriminatedUnion('kind', [\n knowledgePatchCreateOperationSchema.omit({ id: true }).extend({\n id: z.string().min(1).optional(),\n }),\n knowledgePatchUpdateOperationSchema.omit({ id: true }).extend({\n id: z.string().min(1).optional(),\n }),\n knowledgePatchDeleteOperationSchema.omit({ id: true }).extend({\n id: z.string().min(1).optional(),\n }),\n]);\n\nexport const updateOperationInputSchema = z.object({\n operationId: z.string().min(1),\n operation: addOperationInputSchema,\n});\n\nexport const updatePatchMetadataInputSchema = z.object({\n rootFolder: z.string().trim().min(1).optional(),\n omittedFiles: z.array(\n z.object({\n path: z.string().trim().min(1),\n reason: z.string().trim().min(1),\n }),\n ),\n});\n\nexport const knowledgePatchToolInputSchema = z.discriminatedUnion('action', [\n z.object({\n action: z.literal('create'),\n patch: createPatchInputSchema,\n }),\n z.object({\n action: z.literal('list'),\n }),\n z.object({\n action: z.literal('get'),\n patchId: z.string().min(1),\n }),\n z.object({\n action: z.literal('add_operation'),\n patchId: z.string().min(1),\n operation: addOperationInputSchema,\n }),\n z.object({\n action: z.literal('update_operation'),\n patchId: z.string().min(1),\n update: updateOperationInputSchema,\n }),\n z.object({\n action: z.literal('update_metadata'),\n patchId: z.string().min(1),\n metadata: updatePatchMetadataInputSchema,\n }),\n z.object({\n action: z.literal('delete_operation'),\n patchId: z.string().min(1),\n operationId: z.string().min(1),\n }),\n z.object({\n action: z.literal('validate'),\n patchId: z.string().min(1),\n }),\n z.object({\n action: z.literal('close'),\n patchId: z.string().min(1),\n }),\n]);\n\nexport const knowledgePatchApplyToolInputSchema = z.object({\n patchId: z.string().min(1),\n approval: knowledgePatchApplyApprovalSchema,\n});\n", "import { createHash, randomUUID } from 'node:crypto';\n\nimport { knowledgePatchDiagnosticSchema } from './schemas.js';\nimport type { KnowledgePatchDiagnostic } from './types.js';\n\nexport function buildDiagnostic(\n diagnostic: KnowledgePatchDiagnostic,\n): KnowledgePatchDiagnostic {\n return knowledgePatchDiagnosticSchema.parse(diagnostic);\n}\n\nexport function nowIso() {\n return new Date().toISOString();\n}\n\nexport function slugifyPatchTitle(title: string) {\n const normalized = title\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n return normalized || 'patch';\n}\n\nexport function buildPatchId(title: string) {\n return `${slugifyPatchTitle(title)}-${randomUUID().slice(0, 8)}`;\n}\n\nexport function buildOperationId() {\n return `op_${randomUUID().slice(0, 10)}`;\n}\n\nexport function sha256(value: string) {\n return createHash('sha256').update(value).digest('hex');\n}\n", "import { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from '../extraction-registry.js';\nimport type {\n BusinessRule,\n Capability,\n Conflict,\n Constraint,\n Domain,\n Entity,\n EntityRelationship,\n Evidence,\n Feature,\n KnowledgeCollectionName,\n KnowledgeRecord,\n NormalizedKnowledgeStore,\n Question,\n Rationale,\n} from '../types.js';\nimport {\n SUPPORTED_OPERATION_TYPES,\n supportedOperationTypeSet,\n} from './constants.js';\nimport { buildDiagnostic } from './utils.js';\nimport type {\n KnowledgePatchDiagnostic,\n KnowledgePatchOperation,\n MutableKnowledgeState,\n SimulationResult,\n} from './types.js';\n\nexport function cloneStoreState(\n store: NormalizedKnowledgeStore,\n): MutableKnowledgeState {\n const byCollection = Object.fromEntries(\n SUPPORTED_OPERATION_TYPES.map((collection) => [\n collection,\n new Map(store.byCollection[collection]),\n ]),\n ) as Record<KnowledgeCollectionName, Map<string, KnowledgeRecord>>;\n\n return {\n byCollection,\n byId: new Map(store.byId),\n };\n}\n\nexport function validateRecordIdForDomain(\n type: KnowledgeCollectionName,\n id: string,\n domain: string,\n) {\n const definition = KNOWLEDGE_EXTRACTION_TYPE_REGISTRY[type];\n if (type === 'domains') {\n const expectedId = `domain.${domain}`;\n return id === expectedId\n ? undefined\n : `Expected domain record id \"${id}\" to equal \"${expectedId}\".`;\n }\n\n const expectedPrefix = `${definition.idConvention.prefix}.${domain}.`;\n return id.startsWith(expectedPrefix)\n ? undefined\n : `Expected record id \"${id}\" to start with \"${expectedPrefix}\".`;\n}\n\nexport function collectReferenceIds(record: KnowledgeRecord): string[] {\n if ('relationship_type' in record) {\n return [\n (record as EntityRelationship).from_entity_id,\n (record as EntityRelationship).to_entity_id,\n ];\n }\n\n if ('business_definition' in record) {\n const entity = record as Entity;\n return [\n ...entity.domain_ids,\n ...entity.relationship_ids,\n ...entity.capability_ids,\n ...entity.feature_ids,\n ...entity.rule_ids,\n ];\n }\n\n if ('behavior_type' in record) {\n const rule = record as BusinessRule;\n return [\n ...(rule.applies_to.domain_ids ?? []),\n ...(rule.applies_to.entity_ids ?? []),\n ...(rule.applies_to.capability_ids ?? []),\n ...(rule.applies_to.feature_ids ?? []),\n ...rule.related_constraint_ids,\n ...rule.rationale_ids,\n ];\n }\n\n if ('constraint_type' in record) {\n const constraint = record as Constraint;\n return [\n ...(constraint.applies_to.domain_ids ?? []),\n ...(constraint.applies_to.entity_ids ?? []),\n ...(constraint.applies_to.capability_ids ?? []),\n ...(constraint.applies_to.feature_ids ?? []),\n ...(constraint.applies_to.business_rule_ids ?? []),\n ];\n }\n\n if ('parent_capability_ids' in record) {\n const capability = record as Capability;\n return [\n ...capability.domain_ids,\n ...capability.entity_ids,\n ...capability.parent_capability_ids,\n ...capability.child_capability_ids,\n ...capability.feature_ids,\n ];\n }\n\n if ('rule_ids' in record && 'constraint_ids' in record) {\n const feature = record as Feature;\n return [\n ...feature.domain_ids,\n ...feature.capability_ids,\n ...feature.entity_ids,\n ...feature.rule_ids,\n ...feature.constraint_ids,\n ];\n }\n\n if (\n 'entity_ids' in record &&\n 'capability_ids' in record &&\n 'why_it_exists' in record &&\n !('business_definition' in record) &&\n !('parent_capability_ids' in record) &&\n !('constraint_ids' in record) &&\n !('rule_ids' in record)\n ) {\n const domain = record as Domain;\n return [...domain.entity_ids, ...domain.capability_ids];\n }\n\n if ('explains' in record) {\n return (record as Rationale).explains;\n }\n\n if ('source_type' in record) {\n return (record as Evidence).supports;\n }\n\n if ('priority' in record) {\n const question = record as Question;\n return [...question.related_ids, ...question.evidence_ids];\n }\n\n const conflict = record as Conflict;\n return [\n ...conflict.related_ids,\n ...conflict.evidence_ids,\n ...conflict.questions,\n ...(conflict.resolved_by_evidence_id\n ? [conflict.resolved_by_evidence_id]\n : []),\n ];\n}\n\nexport function inferDomainFromRecordId(recordId: string) {\n const [, domain] = recordId.split('.');\n return domain;\n}\n\nexport function inferDomainForRecord(record: KnowledgeRecord) {\n return inferDomainFromRecordId(record.id);\n}\n\nexport function parsePatchRecord(\n operation: KnowledgePatchOperation,\n diagnostics: KnowledgePatchDiagnostic[],\n) {\n const definition = KNOWLEDGE_EXTRACTION_TYPE_REGISTRY[operation.type];\n if (operation.kind === 'delete') {\n return undefined;\n }\n\n const parsed = definition.schema.safeParse(operation.payload);\n if (!parsed.success) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_payload',\n message: `Operation \"${operation.id}\" payload is invalid for type \"${operation.type}\".`,\n operationId: operation.id,\n path: ['operations', operation.id, 'payload'],\n }),\n );\n return undefined;\n }\n\n return parsed.data as KnowledgeRecord;\n}\n\nexport function simulateKnowledgePatch(\n store: NormalizedKnowledgeStore,\n operations: KnowledgePatchOperation[],\n patchId: string,\n): SimulationResult {\n const state = cloneStoreState(store);\n const diagnostics: KnowledgePatchDiagnostic[] = [];\n const deleteTargets: string[] = [];\n const appliedOperationIds: string[] = [];\n\n for (const operation of operations) {\n if (!supportedOperationTypeSet.has(operation.type)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_type',\n message: `Unsupported patch operation type \"${operation.type}\".`,\n patchId,\n operationId: operation.id,\n supportedTypes: SUPPORTED_OPERATION_TYPES,\n }),\n );\n continue;\n }\n\n if (operation.kind === 'delete') {\n const existing = state.byCollection[operation.type].get(\n operation.targetId,\n );\n if (!existing) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'missing_target',\n message: `Delete target \"${operation.targetId}\" does not exist in \"${operation.type}\".`,\n patchId,\n operationId: operation.id,\n targetId: operation.targetId,\n }),\n );\n continue;\n }\n\n state.byCollection[operation.type].delete(operation.targetId);\n state.byId.delete(operation.targetId);\n deleteTargets.push(operation.targetId);\n appliedOperationIds.push(operation.id);\n continue;\n }\n\n const parsedRecord = parsePatchRecord(operation, diagnostics);\n if (!parsedRecord) {\n continue;\n }\n\n const idMessage = validateRecordIdForDomain(\n operation.type,\n parsedRecord.id,\n operation.domain,\n );\n if (idMessage) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_id_convention',\n message: idMessage,\n patchId,\n operationId: operation.id,\n targetId: parsedRecord.id,\n }),\n );\n continue;\n }\n\n if (operation.kind === 'create' && state.byId.has(parsedRecord.id)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'duplicate_id',\n message: `Create operation would duplicate existing id \"${parsedRecord.id}\".`,\n patchId,\n operationId: operation.id,\n targetId: parsedRecord.id,\n }),\n );\n continue;\n }\n\n if (operation.kind === 'update') {\n if (parsedRecord.id !== operation.targetId) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'update_target_mismatch',\n message: `Update payload id \"${parsedRecord.id}\" must match target \"${operation.targetId}\".`,\n patchId,\n operationId: operation.id,\n targetId: operation.targetId,\n }),\n );\n continue;\n }\n\n if (!state.byCollection[operation.type].has(operation.targetId)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'missing_target',\n message: `Update target \"${operation.targetId}\" does not exist in \"${operation.type}\".`,\n patchId,\n operationId: operation.id,\n targetId: operation.targetId,\n }),\n );\n continue;\n }\n }\n\n state.byCollection[operation.type].set(parsedRecord.id, parsedRecord);\n state.byId.set(parsedRecord.id, parsedRecord);\n appliedOperationIds.push(operation.id);\n }\n\n for (const record of state.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n if (!state.byId.has(referenceId)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_reference',\n message: `Record \"${record.id}\" references unknown id \"${referenceId}\".`,\n patchId,\n targetId: record.id,\n }),\n );\n }\n }\n }\n\n const inboundReferenceMap = new Map<string, string[]>();\n for (const record of state.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n const inbound = inboundReferenceMap.get(referenceId) ?? [];\n inbound.push(record.id);\n inboundReferenceMap.set(referenceId, inbound);\n }\n }\n\n for (const deleteTarget of deleteTargets) {\n const inbound = inboundReferenceMap.get(deleteTarget) ?? [];\n if (inbound.length > 0) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'delete_has_inbound_references',\n message: `Delete target \"${deleteTarget}\" still has inbound references from: ${inbound.join(\n ', ',\n )}`,\n patchId,\n targetId: deleteTarget,\n }),\n );\n }\n }\n\n return {\n state,\n diagnostics,\n appliedOperationIds,\n deleteTargets,\n };\n}\n", "import {\n loadKnowledgeStoreFromEnv,\n loadKnowledgeStoreFromRoot,\n} from './loader.js';\nimport type {\n KnowledgeCollectionName,\n NormalizedKnowledgeStore,\n} from './types.js';\nimport { readKnowledgePatch, listKnowledgePatches } from './patch/storage.js';\nimport {\n collectReferenceIds,\n simulateKnowledgePatch,\n} from './patch/simulation.js';\nimport type {\n KnowledgePatchDiagnostic,\n KnowledgePatchSummary,\n MutableKnowledgeState,\n} from './patch/types.js';\n\nexport interface EffectiveKnowledgeProvenanceEntry {\n patchIds: string[];\n patched: boolean;\n}\n\nexport interface EffectiveKnowledgeStateResult {\n store: NormalizedKnowledgeStore;\n patches: KnowledgePatchSummary[];\n patchIds: string[];\n provenance: Map<string, EffectiveKnowledgeProvenanceEntry>;\n diagnostics: KnowledgePatchDiagnostic[];\n}\n\nexport interface EffectiveKnowledgeStateOptions {\n selectedPatchId?: string;\n includeSelectedPatch?: boolean;\n includeAllStatuses?: boolean;\n}\n\nfunction getCollectionNames(): KnowledgeCollectionName[] {\n return [\n 'domains',\n 'entities',\n 'relationships',\n 'capabilities',\n 'features',\n 'business_rules',\n 'constraints',\n 'rationales',\n 'evidence',\n 'questions',\n 'conflicts',\n ];\n}\n\nfunction toSimulationStore(\n rootDir: string,\n sourceFiles: string[],\n state: MutableKnowledgeState,\n): NormalizedKnowledgeStore {\n const store: NormalizedKnowledgeStore = {\n rootDir,\n sourceFiles,\n domains: [...state.byCollection.domains.values()] as never,\n entities: [...state.byCollection.entities.values()] as never,\n relationships: [...state.byCollection.relationships.values()] as never,\n capabilities: [...state.byCollection.capabilities.values()] as never,\n features: [...state.byCollection.features.values()] as never,\n business_rules: [...state.byCollection.business_rules.values()] as never,\n constraints: [...state.byCollection.constraints.values()] as never,\n rationales: [...state.byCollection.rationales.values()] as never,\n evidence: [...state.byCollection.evidence.values()] as never,\n questions: [...state.byCollection.questions.values()] as never,\n conflicts: [...state.byCollection.conflicts.values()] as never,\n byCollection: state.byCollection,\n byId: state.byId,\n reverseReferences: new Map(),\n diagnostics: [],\n };\n\n for (const record of store.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n const reverse = store.reverseReferences.get(referenceId) ?? [];\n reverse.push(record.id);\n store.reverseReferences.set(referenceId, reverse);\n }\n }\n\n return store;\n}\n\nfunction selectOrderedPatches(\n patches: KnowledgePatchSummary[],\n options: EffectiveKnowledgeStateOptions,\n) {\n const visiblePatches = options.includeAllStatuses\n ? patches\n : patches.filter((patch) => patch.status === 'draft');\n\n if (!options.selectedPatchId) {\n return visiblePatches;\n }\n\n const selectedIndex = visiblePatches.findIndex(\n (patch) => patch.id === options.selectedPatchId,\n );\n if (selectedIndex === -1) {\n throw new Error(`Patch \"${options.selectedPatchId}\" was not found.`);\n }\n\n const endIndex =\n options.includeSelectedPatch === false ? selectedIndex : selectedIndex + 1;\n return visiblePatches.slice(0, endIndex);\n}\n\nexport async function composeEffectiveKnowledgeState(\n store: NormalizedKnowledgeStore,\n envValue: string | undefined,\n options: EffectiveKnowledgeStateOptions = {},\n cwd = process.cwd(),\n): Promise<EffectiveKnowledgeStateResult> {\n const orderedPatches = selectOrderedPatches(\n await listKnowledgePatches(envValue, cwd),\n options,\n );\n\n let currentState = store;\n const provenance = new Map<string, EffectiveKnowledgeProvenanceEntry>();\n const diagnostics: KnowledgePatchDiagnostic[] = [];\n\n for (const patch of orderedPatches) {\n const patchState = await readKnowledgePatch(envValue, patch.id, cwd);\n const simulation = simulateKnowledgePatch(\n currentState,\n patchState.operations,\n patch.id,\n );\n diagnostics.push(...simulation.diagnostics);\n\n for (const operationId of simulation.appliedOperationIds) {\n const operation = patchState.operations.find(\n (entry) => entry.id === operationId,\n );\n if (!operation || operation.kind === 'delete') {\n continue;\n }\n\n const recordId =\n operation.kind === 'update'\n ? operation.targetId\n : (operation.payload as { id: string }).id;\n const existing = provenance.get(recordId);\n const patchIds = new Set(existing?.patchIds ?? []);\n patchIds.add(patch.id);\n provenance.set(recordId, {\n patchIds: [...patchIds],\n patched: true,\n });\n }\n\n currentState = toSimulationStore(\n store.rootDir,\n store.sourceFiles,\n simulation.state,\n );\n }\n\n return {\n store: currentState,\n patches: orderedPatches,\n patchIds: orderedPatches.map((patch) => patch.id),\n provenance,\n diagnostics,\n };\n}\n\nexport async function loadEffectiveKnowledgeStoreFromRoot(\n rootDir: string,\n options: EffectiveKnowledgeStateOptions = {},\n): Promise<EffectiveKnowledgeStateResult> {\n const store = await loadKnowledgeStoreFromRoot(rootDir);\n return composeEffectiveKnowledgeState(store, rootDir, options);\n}\n\nexport async function loadEffectiveKnowledgeStoreFromEnv(\n envValue: string | undefined,\n cwd = process.cwd(),\n options: EffectiveKnowledgeStateOptions = {},\n): Promise<EffectiveKnowledgeStateResult | undefined> {\n const store = await loadKnowledgeStoreFromEnv(envValue, cwd);\n if (!store) {\n return undefined;\n }\n\n return composeEffectiveKnowledgeState(store, envValue, options, cwd);\n}\n", "import {\n GraphQLBoolean,\n GraphQLFloat,\n GraphQLID,\n GraphQLList,\n GraphQLObjectType,\n GraphQLSchema,\n GraphQLString,\n graphql,\n} from 'graphql';\n\nimport type {\n BusinessRule,\n Capability,\n Conflict,\n Constraint,\n Domain,\n Entity,\n EntityRelationship,\n Evidence,\n Feature,\n KnowledgeCollectionName,\n KnowledgeRecord,\n KnowledgeStore,\n Question,\n Rationale,\n} from './types.js';\n\ntype Source = KnowledgeStore | undefined;\n\nfunction stringifyValue(value: unknown) {\n if (value === undefined || value === null) {\n return null;\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n}\n\nconst confidenceType = new GraphQLObjectType({\n name: 'Confidence',\n fields: {\n score: { type: GraphQLFloat },\n level: { type: GraphQLString },\n reason: { type: GraphQLString },\n },\n});\n\nconst locationType = new GraphQLObjectType({\n name: 'EvidenceLocation',\n fields: {\n path: { type: GraphQLString },\n symbol: { type: GraphQLString },\n route: { type: GraphQLString },\n api: { type: GraphQLString },\n query: { type: GraphQLString },\n },\n});\n\nconst evidenceType = new GraphQLObjectType({\n name: 'Evidence',\n fields: () => ({\n id: { type: GraphQLID },\n source_type: { type: GraphQLString },\n description: { type: GraphQLString },\n location: { type: locationType },\n supports: { type: new GraphQLList(GraphQLID) },\n excerpt: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst entityTechnicalRepresentationType = new GraphQLObjectType({\n name: 'EntityTechnicalRepresentation',\n fields: {\n kind: { type: GraphQLString },\n name: { type: GraphQLString },\n location_hint: { type: GraphQLString },\n },\n});\n\nconst entityType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Entity',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n business_definition: { type: GraphQLString },\n description: { type: GraphQLString },\n purpose: { type: GraphQLString },\n aliases: { type: new GraphQLList(GraphQLString) },\n ambiguous_terms: { type: new GraphQLList(GraphQLString) },\n technical_representations: {\n type: new GraphQLList(entityTechnicalRepresentationType),\n },\n domain_ids: { type: new GraphQLList(GraphQLID) },\n state_values: { type: new GraphQLList(GraphQLString) },\n relationship_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n rule_ids: { type: new GraphQLList(GraphQLID) },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'domains', entity.domain_ids),\n },\n relationships: {\n type: new GraphQLList(entityRelationshipType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'relationships', entity.relationship_ids),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'capabilities', entity.capability_ids),\n },\n features: {\n type: new GraphQLList(featureType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'features', entity.feature_ids),\n },\n business_rules: {\n type: new GraphQLList(businessRuleType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'business_rules', entity.rule_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst ruleConditionType = new GraphQLObjectType({\n name: 'RuleCondition',\n fields: {\n subject: { type: GraphQLString },\n field: { type: GraphQLString },\n operator: { type: GraphQLString },\n value: {\n type: GraphQLString,\n resolve: (condition: { value?: unknown }) =>\n stringifyValue(condition.value),\n },\n },\n});\n\nconst ruleTriggerType = new GraphQLObjectType({\n name: 'RuleTrigger',\n fields: {\n actor: { type: GraphQLString },\n action: { type: GraphQLString },\n subject: { type: GraphQLString },\n field: { type: GraphQLString },\n operator: { type: GraphQLString },\n value: {\n type: GraphQLString,\n resolve: (trigger: { value?: unknown }) => stringifyValue(trigger.value),\n },\n },\n});\n\nconst ruleEffectType = new GraphQLObjectType({\n name: 'RuleEffect',\n fields: {\n effect: { type: GraphQLString },\n action: { type: GraphQLString },\n message: { type: GraphQLString },\n target_state: { type: GraphQLString },\n value: {\n type: GraphQLString,\n resolve: (effect: { value?: unknown }) => stringifyValue(effect.value),\n },\n },\n});\n\nconst businessRuleConditionType = new GraphQLObjectType({\n name: 'BusinessRuleCondition',\n fields: {\n given: { type: new GraphQLList(ruleConditionType) },\n when: { type: new GraphQLList(ruleTriggerType) },\n then: { type: new GraphQLList(ruleEffectType) },\n },\n});\n\nconst businessRuleAppliesToType = new GraphQLObjectType({\n name: 'BusinessRuleAppliesTo',\n fields: {\n domain_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n },\n});\n\nconst businessRuleEnforcementType = new GraphQLObjectType({\n name: 'BusinessRuleEnforcement',\n fields: {\n level: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst businessRuleType = new GraphQLObjectType({\n name: 'BusinessRule',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n statement: { type: GraphQLString },\n rule_type: { type: GraphQLString },\n behavior_type: { type: GraphQLString },\n applies_to: { type: businessRuleAppliesToType },\n condition: { type: businessRuleConditionType },\n enforcement: { type: businessRuleEnforcementType },\n related_constraint_ids: { type: new GraphQLList(GraphQLID) },\n rationale_ids: { type: new GraphQLList(GraphQLID) },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst constraintCauseType = new GraphQLObjectType({\n name: 'ConstraintCause',\n fields: {\n source: { type: GraphQLString },\n source_type: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst constraintImpactType = new GraphQLObjectType({\n name: 'ConstraintImpact',\n fields: {\n affected_change_types: { type: new GraphQLList(GraphQLString) },\n severity: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst constraintAppliesToType = new GraphQLObjectType({\n name: 'ConstraintAppliesTo',\n fields: {\n domain_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n business_rule_ids: { type: new GraphQLList(GraphQLID) },\n },\n});\n\nconst constraintWorkaroundType = new GraphQLObjectType({\n name: 'ConstraintWorkaround',\n fields: {\n exists: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst constraintRemovabilityType = new GraphQLObjectType({\n name: 'ConstraintRemovability',\n fields: {\n can_be_removed_by_refactor: { type: GraphQLString },\n requires: { type: new GraphQLList(GraphQLString) },\n risk: { type: GraphQLString },\n },\n});\n\nconst constraintType = new GraphQLObjectType({\n name: 'Constraint',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n description: { type: GraphQLString },\n constraint_type: { type: GraphQLString },\n cause: { type: constraintCauseType },\n impact: { type: constraintImpactType },\n applies_to: { type: constraintAppliesToType },\n workaround: { type: constraintWorkaroundType },\n removability: { type: constraintRemovabilityType },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst rationaleType = new GraphQLObjectType({\n name: 'Rationale',\n fields: () => ({\n id: { type: GraphQLID },\n statement: { type: GraphQLString },\n explains: { type: new GraphQLList(GraphQLID) },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst questionType = new GraphQLObjectType({\n name: 'Question',\n fields: () => ({\n id: { type: GraphQLID },\n question: { type: GraphQLString },\n category: { type: GraphQLString },\n reason: { type: GraphQLString },\n impact: { type: GraphQLString },\n related_ids: { type: new GraphQLList(GraphQLID) },\n evidence_ids: { type: new GraphQLList(GraphQLID) },\n priority: { type: GraphQLString },\n status: { type: GraphQLString },\n answer: { type: GraphQLString },\n answered_by: { type: GraphQLString },\n answered_at: { type: GraphQLString },\n }),\n});\n\nconst conflictType = new GraphQLObjectType({\n name: 'Conflict',\n fields: () => ({\n id: { type: GraphQLID },\n type: { type: GraphQLString },\n description: { type: GraphQLString },\n related_ids: { type: new GraphQLList(GraphQLID) },\n evidence_ids: { type: new GraphQLList(GraphQLID) },\n status: { type: GraphQLString },\n questions: { type: new GraphQLList(GraphQLID) },\n resolution: { type: GraphQLString },\n resolved_by_evidence_id: { type: GraphQLID },\n }),\n});\n\nconst domainType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Domain',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n purpose: { type: GraphQLString },\n why_it_exists: { type: GraphQLString },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (domain: Domain, _args, context: Source) =>\n resolveByIds(context, 'entities', domain.entity_ids),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (domain: Domain, _args, context: Source) =>\n resolveByIds(context, 'capabilities', domain.capability_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst entityRelationshipType = new GraphQLObjectType({\n name: 'EntityRelationship',\n fields: () => ({\n id: { type: GraphQLID },\n from_entity_id: { type: GraphQLID },\n to_entity_id: { type: GraphQLID },\n relationship_type: { type: GraphQLString },\n description: { type: GraphQLString },\n from_entity: {\n type: entityType,\n resolve: (relationship: EntityRelationship, _args, context: Source) =>\n resolveByIds(context, 'entities', [relationship.from_entity_id])[0] ??\n null,\n },\n to_entity: {\n type: entityType,\n resolve: (relationship: EntityRelationship, _args, context: Source) =>\n resolveByIds(context, 'entities', [relationship.to_entity_id])[0] ??\n null,\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst capabilityType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Capability',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n description: { type: GraphQLString },\n why_it_exists: { type: GraphQLString },\n domain_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n parent_capability_ids: { type: new GraphQLList(GraphQLID) },\n child_capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'domains', capability.domain_ids),\n },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'entities', capability.entity_ids),\n },\n parent_capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'capabilities', capability.parent_capability_ids),\n },\n child_capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'capabilities', capability.child_capability_ids),\n },\n features: {\n type: new GraphQLList(featureType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'features', capability.feature_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst featureType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Feature',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n description: { type: GraphQLString },\n purpose: { type: GraphQLString },\n why_it_exists: { type: GraphQLString },\n domain_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n rule_ids: { type: new GraphQLList(GraphQLID) },\n constraint_ids: { type: new GraphQLList(GraphQLID) },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'domains', feature.domain_ids),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'capabilities', feature.capability_ids),\n },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'entities', feature.entity_ids),\n },\n business_rules: {\n type: new GraphQLList(businessRuleType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'business_rules', feature.rule_ids),\n },\n constraints: {\n type: new GraphQLList(constraintType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'constraints', feature.constraint_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nfunction resolveCollection<T extends { id: string }>(\n store: Source,\n collection: KnowledgeCollectionName,\n): T[] {\n if (!store) {\n return [];\n }\n\n return store[collection] as unknown as T[];\n}\n\nfunction resolveByIds<T extends { id: string }>(\n store: Source,\n collection: KnowledgeCollectionName,\n ids: readonly string[] | undefined,\n): T[] {\n if (!store || !ids?.length) {\n return [];\n }\n\n const typedCollection = store.byCollection[collection] as unknown as Map<\n string,\n T\n >;\n return ids\n .map((id) => typedCollection.get(id))\n .filter((item): item is T => item !== undefined);\n}\n\nconst queryType = new GraphQLObjectType({\n name: 'Query',\n fields: () => ({\n store_available: {\n type: GraphQLBoolean,\n resolve: (_source, _args, context: Source) => Boolean(context),\n },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Domain>(context, 'domains'),\n },\n domain: {\n type: domainType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.domains.get(args.id) as Domain | undefined) ??\n null,\n },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Entity>(context, 'entities'),\n },\n entity: {\n type: entityType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.entities.get(args.id) as Entity | undefined) ??\n null,\n },\n relationships: {\n type: new GraphQLList(entityRelationshipType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<EntityRelationship>(context, 'relationships'),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Capability>(context, 'capabilities'),\n },\n capability: {\n type: capabilityType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.capabilities.get(args.id) as\n | Capability\n | undefined) ?? null,\n },\n features: {\n type: new GraphQLList(featureType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Feature>(context, 'features'),\n },\n feature: {\n type: featureType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.features.get(args.id) as Feature | undefined) ??\n null,\n },\n business_rules: {\n type: new GraphQLList(businessRuleType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<BusinessRule>(context, 'business_rules'),\n },\n business_rule: {\n type: businessRuleType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.business_rules.get(args.id) as\n | BusinessRule\n | undefined) ?? null,\n },\n constraints: {\n type: new GraphQLList(constraintType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Constraint>(context, 'constraints'),\n },\n constraint: {\n type: constraintType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.constraints.get(args.id) as\n | Constraint\n | undefined) ?? null,\n },\n rationales: {\n type: new GraphQLList(rationaleType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Rationale>(context, 'rationales'),\n },\n rationale: {\n type: rationaleType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.rationales.get(args.id) as\n | Rationale\n | undefined) ?? null,\n },\n evidence: {\n type: new GraphQLList(evidenceType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Evidence>(context, 'evidence'),\n },\n question: {\n type: questionType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.questions.get(args.id) as\n | Question\n | undefined) ?? null,\n },\n questions: {\n type: new GraphQLList(questionType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Question>(context, 'questions'),\n },\n conflict: {\n type: conflictType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.conflicts.get(args.id) as\n | Conflict\n | undefined) ?? null,\n },\n conflicts: {\n type: new GraphQLList(conflictType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Conflict>(context, 'conflicts'),\n },\n }),\n});\n\nexport const knowledgeGraphSchema = new GraphQLSchema({\n query: queryType,\n});\n\nexport async function executeKnowledgeQuery(\n store: Source,\n query: string,\n variables?: Record<string, unknown>,\n operationName?: string,\n) {\n if (!store) {\n return {\n data: null,\n errors: [\n {\n message:\n 'Knowledge store is not loaded. Set EZ_KNOW_ROOT to the knowledge root to enable querying.',\n },\n ],\n };\n }\n\n return graphql({\n schema: knowledgeGraphSchema,\n source: query,\n contextValue: store,\n variableValues: variables,\n operationName,\n });\n}\n\nexport function buildKnowledgeGraphQLText(\n result: Awaited<ReturnType<typeof executeKnowledgeQuery>>,\n) {\n return JSON.stringify({\n data: result.data,\n errors: result.errors?.map((error) => ({ message: error.message })),\n });\n}\n", "import { existsSync } from 'node:fs';\nimport { mkdir, rm, unlink, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\n\nimport {\n KnowledgeStoreLoadError,\n loadKnowledgeStoreFromRoot,\n} from '../loader.js';\nimport {\n resolveKnowledgePatchDirectory,\n resolveKnowledgeRoot,\n} from './paths.js';\nimport { knowledgePatchApplyToolInputSchema } from './schemas.js';\nimport { listKnowledgePatches, loadPatchStateByDir } from './storage.js';\nimport { simulateKnowledgePatch } from './simulation.js';\nimport {\n buildCollectionRecordsForDomain,\n buildCanonicalPathForCollection,\n computeValidationResult,\n} from './validation.js';\nimport type {\n KnowledgePatchApplyResult,\n KnowledgePatchApplyToolInput,\n KnowledgePatchOperation,\n MutableKnowledgeState,\n} from './types.js';\nimport { buildDiagnostic } from './utils.js';\n\nasync function writeCanonicalFilesFromSimulation(\n knowledgeRoot: string,\n operations: KnowledgePatchOperation[],\n simulationState: MutableKnowledgeState,\n) {\n const plannedWrites = new Map<string, string>();\n for (const operation of operations) {\n const filePath = buildCanonicalPathForCollection(\n knowledgeRoot,\n operation.domain,\n operation.type,\n );\n\n const records = buildCollectionRecordsForDomain(\n simulationState,\n operation.type,\n operation.domain,\n );\n\n if (operation.type === 'domains') {\n if (records.length === 0) {\n if (existsSync(filePath)) {\n await unlink(filePath);\n }\n continue;\n }\n\n plannedWrites.set(filePath, `${JSON.stringify(records[0], null, 2)}\\n`);\n continue;\n }\n\n plannedWrites.set(filePath, `${JSON.stringify(records, null, 2)}\\n`);\n }\n\n for (const filePath of plannedWrites.keys()) {\n await mkdir(dirname(filePath), { recursive: true });\n }\n\n for (const [filePath, content] of plannedWrites.entries()) {\n await writeFile(filePath, content, 'utf8');\n }\n}\n\nexport async function applyKnowledgePatch(\n envValue: string | undefined,\n input: KnowledgePatchApplyToolInput,\n cwd = process.cwd(),\n): Promise<KnowledgePatchApplyResult> {\n const parsedInput = knowledgePatchApplyToolInputSchema.parse(input);\n const knowledgeRoot = resolveKnowledgeRoot(envValue, cwd);\n const patchDir = resolveKnowledgePatchDirectory(\n envValue,\n parsedInput.patchId,\n cwd,\n );\n const patchState = await loadPatchStateByDir(patchDir);\n\n const validation = await computeValidationResult(\n knowledgeRoot,\n patchState.patch.id,\n patchState.patch,\n patchState.operations,\n );\n\n const diagnostics = [...validation.diagnostics];\n const pendingPatches = (await listKnowledgePatches(envValue, cwd)).filter(\n (patch) => patch.status === 'draft',\n );\n const firstPendingPatchId = pendingPatches[0]?.id;\n if (\n firstPendingPatchId !== undefined &&\n firstPendingPatchId !== patchState.patch.id\n ) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'apply_out_of_order',\n message: `Patch \"${patchState.patch.id}\" cannot be applied while earlier pending patch \"${firstPendingPatchId}\" still exists.`,\n patchId: patchState.patch.id,\n }),\n );\n }\n\n if (!parsedInput.approval.approved) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'approval_required',\n message: 'Patch apply requires explicit approval.',\n patchId: patchState.patch.id,\n }),\n );\n }\n\n if (\n (firstPendingPatchId !== undefined &&\n firstPendingPatchId !== patchState.patch.id) ||\n !parsedInput.approval.approved ||\n !validation.valid ||\n parsedInput.approval.validationFingerprint !== validation.fingerprint\n ) {\n if (\n validation.valid &&\n parsedInput.approval.validationFingerprint !== validation.fingerprint\n ) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'stale_validation_fingerprint',\n message:\n 'Patch validation fingerprint is stale. Revalidate before apply.',\n patchId: patchState.patch.id,\n }),\n );\n }\n\n return {\n patchId: patchState.patch.id,\n applied: false,\n validation,\n diagnostics,\n deletedPatch: false,\n };\n }\n\n const store = await loadKnowledgeStoreFromRoot(knowledgeRoot);\n const simulation = simulateKnowledgePatch(\n store,\n patchState.operations,\n patchState.patch.id,\n );\n if (simulation.diagnostics.length > 0) {\n return {\n patchId: patchState.patch.id,\n applied: false,\n validation: {\n ...validation,\n valid: false,\n diagnostics: simulation.diagnostics,\n },\n diagnostics: simulation.diagnostics,\n deletedPatch: false,\n };\n }\n\n await writeCanonicalFilesFromSimulation(\n knowledgeRoot,\n patchState.operations,\n simulation.state,\n );\n\n try {\n await loadKnowledgeStoreFromRoot(knowledgeRoot);\n } catch (error) {\n const reloadDiagnostics =\n error instanceof KnowledgeStoreLoadError\n ? error.diagnostics.map((diagnostic) =>\n buildDiagnostic({\n severity: 'critical',\n code: diagnostic.kind,\n message: diagnostic.message,\n path: diagnostic.path ? [diagnostic.path] : undefined,\n targetId: diagnostic.id,\n }),\n )\n : [\n buildDiagnostic({\n severity: 'critical',\n code: 'reload_failed',\n message: 'Canonical knowledge store reload failed after apply.',\n patchId: patchState.patch.id,\n }),\n ];\n\n return {\n patchId: patchState.patch.id,\n applied: false,\n validation,\n diagnostics: reloadDiagnostics,\n deletedPatch: false,\n };\n }\n\n await rm(patchDir, { recursive: true, force: true });\n return {\n patchId: patchState.patch.id,\n applied: true,\n validation,\n diagnostics: [],\n deletedPatch: true,\n };\n}\n", "import { readFile, stat } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nimport { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from '../extraction-registry.js';\nimport { loadEffectiveKnowledgeStoreFromRoot } from '../effective-state.js';\nimport type { KnowledgeCollectionName } from '../types.js';\nimport { KNOWLEDGE_PATCH_SCHEMA_VERSION } from './constants.js';\nimport { resolveKnowledgeRoot } from './paths.js';\nimport { knowledgePatchValidationResultSchema } from './schemas.js';\nimport { readKnowledgePatch } from './storage.js';\nimport { inferDomainForRecord, simulateKnowledgePatch } from './simulation.js';\nimport type {\n KnowledgePatchMetadata,\n KnowledgePatchOperation,\n MutableKnowledgeState,\n} from './types.js';\nimport { sha256 } from './utils.js';\n\nasync function buildSourceFingerprintInput(sourceFiles: string[]) {\n const entries = await Promise.all(\n sourceFiles.map(async (filePath) => {\n const [fileStat, content] = await Promise.all([\n stat(filePath),\n readFile(filePath, 'utf8'),\n ]);\n return {\n path: filePath,\n size: fileStat.size,\n mtimeMs: fileStat.mtimeMs,\n contentHash: sha256(content),\n };\n }),\n );\n\n entries.sort((left, right) => left.path.localeCompare(right.path));\n return entries;\n}\n\nexport function buildCanonicalPathForCollection(\n rootDir: string,\n domain: string,\n type: KnowledgeCollectionName,\n) {\n return join(\n rootDir,\n domain,\n KNOWLEDGE_EXTRACTION_TYPE_REGISTRY[type].storageFile,\n );\n}\n\nexport function buildAffectedFileList(\n knowledgeRoot: string,\n operations: KnowledgePatchOperation[],\n) {\n const affected = new Set<string>();\n for (const operation of operations) {\n affected.add(\n buildCanonicalPathForCollection(\n knowledgeRoot,\n operation.domain,\n operation.type,\n ),\n );\n }\n\n return [...affected].sort((left, right) => left.localeCompare(right));\n}\n\nexport function buildCollectionRecordsForDomain(\n state: MutableKnowledgeState,\n type: KnowledgeCollectionName,\n domain: string,\n) {\n const records = [...state.byCollection[type].values()].filter(\n (record) => inferDomainForRecord(record) === domain,\n );\n records.sort((left, right) => left.id.localeCompare(right.id));\n return records;\n}\n\nexport async function computeValidationResult(\n knowledgeRoot: string,\n patchId: string,\n patch: KnowledgePatchMetadata,\n operations: KnowledgePatchOperation[],\n) {\n const effectiveBase = await loadEffectiveKnowledgeStoreFromRoot(\n knowledgeRoot,\n {\n selectedPatchId: patchId,\n includeSelectedPatch: false,\n },\n );\n const simulation = simulateKnowledgePatch(\n effectiveBase.store,\n operations,\n patchId,\n );\n const affectedFiles = buildAffectedFileList(knowledgeRoot, operations);\n const diagnostics = [\n ...effectiveBase.diagnostics,\n ...simulation.diagnostics,\n ];\n if (diagnostics.length > 0) {\n return knowledgePatchValidationResultSchema.parse({\n valid: false,\n diagnostics,\n operationCount: operations.length,\n appliedOperationIds: simulation.appliedOperationIds,\n affectedFiles,\n });\n }\n\n const sourceFingerprint = await buildSourceFingerprintInput(\n effectiveBase.store.sourceFiles,\n );\n const fingerprint = sha256(\n JSON.stringify({\n schemaVersion: KNOWLEDGE_PATCH_SCHEMA_VERSION,\n patch: {\n id: patch.id,\n status: patch.status,\n updatedAt: patch.updatedAt,\n },\n operations,\n sourceFingerprint,\n }),\n );\n\n return knowledgePatchValidationResultSchema.parse({\n valid: true,\n fingerprint,\n diagnostics,\n operationCount: operations.length,\n appliedOperationIds: simulation.appliedOperationIds,\n affectedFiles,\n });\n}\n\nexport async function validateKnowledgePatch(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n const knowledgeRoot = resolveKnowledgeRoot(envValue, cwd);\n const state = await readKnowledgePatch(envValue, patchId, cwd);\n return computeValidationResult(\n knowledgeRoot,\n patchId,\n state.patch,\n state.operations,\n );\n}\n", "import { readdir } from 'node:fs/promises';\nimport { isAbsolute, relative, resolve, sep } from 'node:path';\nimport { z } from 'zod/v4';\n\nimport { loadEffectiveKnowledgeStoreFromRoot } from '../effective-state.js';\nimport { KNOWLEDGE_PATCH_FOLDER_NAME } from './constants.js';\nimport { resolveKnowledgeRoot } from './paths.js';\nimport { readKnowledgePatch } from './storage.js';\n\nexport const compareScopeWithEvidenceInputSchema = z.object({\n patchId: z.string().min(1),\n rootFolder: z.string().trim().min(1).optional(),\n});\n\nexport const compareScopeWithEvidenceResultSchema = z.object({\n patchId: z.string().min(1),\n rootFolder: z.string().min(1),\n scopeFiles: z.array(z.string()),\n coveredFiles: z.array(z.string()),\n omittedFiles: z.array(\n z.object({\n path: z.string(),\n reason: z.string(),\n }),\n ),\n uncoveredFiles: z.array(z.string()),\n outOfRootEvidenceFiles: z.array(z.string()),\n message: z.string(),\n});\n\nfunction toPosixPath(value: string) {\n return value.replaceAll(sep, '/');\n}\n\nfunction normalizeAuditedRoot(rootFolder: string) {\n return resolve(rootFolder);\n}\n\nfunction isPathWithinRoot(rootFolder: string, filePath: string) {\n const relativePath = toPosixPath(relative(rootFolder, filePath));\n return Boolean(\n relativePath &&\n relativePath !== '..' &&\n !relativePath.startsWith('../'),\n );\n}\n\nfunction normalizePathWithinRoot(\n rootFolder: string,\n filePath: string,\n outputRoot = rootFolder,\n) {\n let candidate: string;\n if (isAbsolute(filePath)) {\n candidate = resolve(filePath);\n } else {\n const repoRelativeCandidate = resolve(outputRoot, filePath);\n candidate = isPathWithinRoot(rootFolder, repoRelativeCandidate)\n ? repoRelativeCandidate\n : resolve(rootFolder, filePath);\n }\n const relativePath = toPosixPath(relative(outputRoot, candidate));\n\n if (\n !relativePath ||\n relativePath === '..' ||\n relativePath.startsWith('../')\n ) {\n return null;\n }\n\n return relativePath;\n}\n\nasync function collectScopeFiles(\n currentDir: string,\n auditedRoot: string,\n patchStorageRoot: string,\n outputRoot: string,\n): Promise<string[]> {\n if (currentDir === patchStorageRoot) {\n return [];\n }\n\n const entries = await readdir(currentDir, { withFileTypes: true });\n const files: string[] = [];\n\n for (const entry of entries) {\n const entryPath = resolve(currentDir, entry.name);\n\n if (entry.isDirectory()) {\n files.push(\n ...(await collectScopeFiles(\n entryPath,\n auditedRoot,\n patchStorageRoot,\n outputRoot,\n )),\n );\n continue;\n }\n\n if (!entry.isFile()) {\n continue;\n }\n\n const normalized = normalizePathWithinRoot(auditedRoot, entryPath, outputRoot);\n if (normalized) {\n files.push(normalized);\n }\n }\n\n return files;\n}\n\nexport type CompareScopeWithEvidenceInput = z.infer<\n typeof compareScopeWithEvidenceInputSchema\n>;\nexport type CompareScopeWithEvidenceResult = z.infer<\n typeof compareScopeWithEvidenceResultSchema\n>;\n\nexport async function compareScopeWithEvidence(\n envValue: string | undefined,\n input: CompareScopeWithEvidenceInput,\n cwd = process.cwd(),\n): Promise<CompareScopeWithEvidenceResult> {\n const parsedInput = compareScopeWithEvidenceInputSchema.parse(input);\n const patchState = await readKnowledgePatch(envValue, parsedInput.patchId, cwd);\n const auditedRoot = normalizeAuditedRoot(\n parsedInput.rootFolder ?? patchState.patch.rootFolder,\n );\n const repositoryRoot = resolve(cwd);\n const effectiveState = await loadEffectiveKnowledgeStoreFromRoot(\n resolveKnowledgeRoot(envValue, cwd),\n {\n selectedPatchId: parsedInput.patchId,\n },\n );\n const effectivePatchIds = new Set(effectiveState.patchIds);\n\n const coveredFiles = new Set<string>();\n const outOfRootEvidenceFiles = new Set<string>();\n\n for (const evidence of effectiveState.store.evidence) {\n const provenance = effectiveState.provenance.get(evidence.id);\n if (\n !provenance?.patchIds.some((patchId) => effectivePatchIds.has(patchId))\n ) {\n continue;\n }\n\n const sourcePath = evidence.location?.path;\n if (!sourcePath) {\n continue;\n }\n\n const normalized = normalizePathWithinRoot(\n auditedRoot,\n sourcePath,\n repositoryRoot,\n );\n if (normalized) {\n coveredFiles.add(normalized);\n continue;\n }\n\n outOfRootEvidenceFiles.add(sourcePath);\n }\n\n const omittedFiles = patchState.patch.omittedFiles.map((entry) => ({\n path: entry.path,\n reason: entry.reason,\n }));\n const omittedFileSet = new Set(omittedFiles.map((entry) => entry.path));\n const patchStorageRoot = resolve(auditedRoot, KNOWLEDGE_PATCH_FOLDER_NAME);\n const scopeFiles = (await collectScopeFiles(\n auditedRoot,\n auditedRoot,\n patchStorageRoot,\n repositoryRoot,\n )).sort((left, right) => left.localeCompare(right));\n\n const uncoveredFiles = scopeFiles.filter(\n (filePath) => !coveredFiles.has(filePath) && !omittedFileSet.has(filePath),\n );\n const sortedCoveredFiles = [...coveredFiles].sort((left, right) =>\n left.localeCompare(right),\n );\n const sortedOutOfRootEvidenceFiles = [...outOfRootEvidenceFiles].sort(\n (left, right) => left.localeCompare(right),\n );\n\n const message =\n uncoveredFiles.length > 0\n ? `Recheck ${uncoveredFiles.length} uncovered file(s): add evidence-backed knowledge or mark them omitted with a reason.`\n : 'Scope audit complete. No uncovered files remain.';\n\n return compareScopeWithEvidenceResultSchema.parse({\n patchId: parsedInput.patchId,\n rootFolder: auditedRoot,\n scopeFiles,\n coveredFiles: sortedCoveredFiles,\n omittedFiles,\n uncoveredFiles,\n outOfRootEvidenceFiles: sortedOutOfRootEvidenceFiles,\n message,\n });\n}\n", "import { listKnowledgeExtractionTypes } from '../extraction-registry.js';\n\nimport { applyKnowledgePatch } from './apply.js';\nimport {\n knowledgePatchApplyApprovalSchema,\n knowledgePatchApplyToolInputSchema,\n knowledgePatchCreateOperationSchema,\n knowledgePatchDeleteOperationSchema,\n knowledgePatchDiagnosticSchema,\n knowledgePatchMetadataSchema,\n knowledgePatchOperationSchema,\n knowledgePatchOperationsEnvelopeSchema,\n knowledgePatchToolInputSchema,\n knowledgePatchUpdateOperationSchema,\n knowledgePatchValidationResultSchema,\n} from './schemas.js';\nimport {\n addKnowledgePatchOperation,\n closeKnowledgePatch,\n createKnowledgePatch,\n deleteKnowledgePatchOperation,\n listKnowledgePatches,\n readKnowledgePatch,\n updateKnowledgePatchMetadata,\n updateKnowledgePatchOperation,\n} from './storage.js';\nimport type { KnowledgePatchToolInput } from './types.js';\nimport {\n resolveKnowledgePatchDirectory,\n resolveKnowledgePatchRoot,\n} from './paths.js';\nimport { validateKnowledgePatch } from './validation.js';\n\nexport * from './apply.js';\nexport * from './paths.js';\nexport * from './schemas.js';\nexport * from './scope-audit.js';\nexport * from './storage.js';\nexport * from './types.js';\nexport * from './validation.js';\n\nexport async function executeKnowledgePatchAction(\n envValue: string | undefined,\n input: KnowledgePatchToolInput,\n cwd = process.cwd(),\n) {\n switch (input.action) {\n case 'create':\n return createKnowledgePatch(envValue, input.patch, cwd);\n case 'list':\n return listKnowledgePatches(envValue, cwd);\n case 'get':\n return readKnowledgePatch(envValue, input.patchId, cwd);\n case 'add_operation':\n return addKnowledgePatchOperation(\n envValue,\n input.patchId,\n input.operation,\n cwd,\n );\n case 'update_operation':\n return updateKnowledgePatchOperation(\n envValue,\n input.patchId,\n input.update,\n cwd,\n );\n case 'update_metadata':\n return updateKnowledgePatchMetadata(\n envValue,\n input.patchId,\n input.metadata,\n cwd,\n );\n case 'delete_operation':\n return deleteKnowledgePatchOperation(\n envValue,\n input.patchId,\n input.operationId,\n cwd,\n );\n case 'validate':\n return validateKnowledgePatch(envValue, input.patchId, cwd);\n case 'close':\n return closeKnowledgePatch(envValue, input.patchId, cwd);\n }\n}\n\nexport function buildKnowledgePatchToolText(result: unknown) {\n return JSON.stringify(result, null, 2);\n}\n\nexport function listSupportedKnowledgePatchTypes() {\n return listKnowledgeExtractionTypes().map((type) => type.collection);\n}\n\nvoid applyKnowledgePatch;\nvoid closeKnowledgePatch;\nvoid createKnowledgePatch;\nvoid deleteKnowledgePatchOperation;\nvoid knowledgePatchApplyApprovalSchema;\nvoid knowledgePatchApplyToolInputSchema;\nvoid knowledgePatchCreateOperationSchema;\nvoid knowledgePatchDeleteOperationSchema;\nvoid knowledgePatchDiagnosticSchema;\nvoid knowledgePatchMetadataSchema;\nvoid knowledgePatchOperationSchema;\nvoid knowledgePatchOperationsEnvelopeSchema;\nvoid knowledgePatchToolInputSchema;\nvoid knowledgePatchUpdateOperationSchema;\nvoid knowledgePatchValidationResultSchema;\nvoid listKnowledgePatches;\nvoid readKnowledgePatch;\nvoid resolveKnowledgePatchDirectory;\nvoid resolveKnowledgePatchRoot;\nvoid updateKnowledgePatchMetadata;\nvoid updateKnowledgePatchOperation;\n", "import {\n type GraphQLField,\n type GraphQLObjectType,\n type GraphQLSchema,\n isAbstractType,\n isCompositeType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from 'graphql';\n\nexport const KNOWLEDGE_SCHEMA_RESOURCE_URI = 'knowledge-schema://schema';\nexport const KNOWLEDGE_SCHEMA_LOOKUP_URI = 'knowledge-schema://lookup/{target}';\n\nexport type SchemaFieldArgument = {\n name: string;\n type: string;\n defaultValue: string | null;\n description: string | null;\n};\n\nexport type SchemaFieldSummary = {\n name: string;\n type: string;\n description: string | null;\n arguments: SchemaFieldArgument[];\n traversesTo: string | null;\n};\n\nexport type SchemaTypeSummary = {\n name: string;\n description: string | null;\n fields: SchemaFieldSummary[];\n traversalFields: string[];\n};\n\nexport type KnowledgeSchemaDiscoveryDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n rootQuery: SchemaTypeSummary;\n objectTypes: SchemaTypeSummary[];\n};\n\nexport type KnowledgeSchemaLookupDocument =\n | {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n lookup: {\n target: 'Query';\n kind: 'root-query';\n };\n rootQuery: SchemaTypeSummary;\n }\n | {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n lookup: {\n target: string;\n kind: 'root-field';\n };\n field: SchemaFieldSummary;\n parentType: string;\n }\n | {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n lookup: {\n target: string;\n kind: 'object-type';\n };\n type: SchemaTypeSummary;\n rootFields: string[];\n };\n\nfunction unwrapType(type: unknown): { name: string; composite: unknown } {\n if (isNonNullType(type) || isListType(type)) {\n return unwrapType(type.ofType);\n }\n\n if (\n isObjectType(type) ||\n isScalarType(type) ||\n isUnionType(type) ||\n isAbstractType(type)\n ) {\n return { name: type.name, composite: type };\n }\n\n return { name: 'Unknown', composite: type };\n}\n\nfunction describeType(type: unknown): string {\n if (isNonNullType(type)) {\n return `${describeType(type.ofType)}!`;\n }\n\n if (isListType(type)) {\n return `[${describeType(type.ofType)}]`;\n }\n\n if (isObjectType(type) || isScalarType(type) || isUnionType(type)) {\n return type.name;\n }\n\n if (isAbstractType(type)) {\n return type.name;\n }\n\n return 'Unknown';\n}\n\nfunction formatDefaultValue(value: unknown): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n return JSON.stringify(value) ?? String(value);\n}\n\nfunction summarizeField(\n field: GraphQLField<unknown, unknown>,\n): SchemaFieldSummary {\n const traversedType = unwrapType(field.type).composite;\n const traversesTo =\n isCompositeType(traversedType) && !isScalarType(traversedType)\n ? (traversedType as { name: string }).name\n : null;\n\n return {\n name: field.name,\n type: describeType(field.type),\n description: field.description ?? null,\n arguments:\n field.args?.map((argument) => ({\n name: argument.name,\n type: describeType(argument.type),\n description: argument.description ?? null,\n defaultValue: formatDefaultValue(argument.defaultValue),\n })) ?? [],\n traversesTo,\n };\n}\n\nfunction summarizeObjectType(type: GraphQLObjectType): SchemaTypeSummary {\n const fields = Object.values(type.getFields()).map(summarizeField);\n return {\n name: type.name,\n description: type.description ?? null,\n fields,\n traversalFields: fields\n .filter((field) => field.traversesTo !== null)\n .map((field) => field.name),\n };\n}\n\nfunction getObjectTypes(schema: GraphQLSchema) {\n return Object.values(schema.getTypeMap())\n .filter((type): type is GraphQLObjectType => isObjectType(type))\n .filter((type) => !type.name.startsWith('__'))\n .filter((type) => type.name !== schema.getQueryType()?.name);\n}\n\nexport function buildKnowledgeSchemaDiscoveryDocument(\n schema: GraphQLSchema,\n): KnowledgeSchemaDiscoveryDocument {\n const queryType = schema.getQueryType();\n if (!queryType) {\n throw new Error('Knowledge GraphQL schema has no root query type.');\n }\n\n return {\n resource: {\n uri: KNOWLEDGE_SCHEMA_RESOURCE_URI,\n title: 'Knowledge GraphQL Schema',\n description:\n 'Canonical discovery view of the runtime knowledge GraphQL schema.',\n },\n source: {\n kind: 'runtime-schema',\n queryType: queryType.name,\n },\n rootQuery: summarizeObjectType(queryType),\n objectTypes: getObjectTypes(schema).map(summarizeObjectType),\n };\n}\n\nfunction getLookupMetadata(schema: GraphQLSchema, target: string) {\n const queryType = schema.getQueryType();\n if (!queryType) {\n throw new Error('Knowledge GraphQL schema has no root query type.');\n }\n\n if (target === queryType.name) {\n return {\n resource: {\n uri: `knowledge-schema://lookup/${target}`,\n title: `Knowledge schema lookup: ${target}`,\n description:\n 'Focused lookup of the root query fields and their arguments.',\n },\n source: {\n kind: 'runtime-schema' as const,\n queryType: queryType.name,\n },\n lookup: {\n target: queryType.name as 'Query',\n kind: 'root-query' as const,\n },\n rootQuery: summarizeObjectType(queryType),\n };\n }\n\n const rootField = queryType.getFields()[target];\n if (rootField) {\n return {\n resource: {\n uri: `knowledge-schema://lookup/${target}`,\n title: `Knowledge schema lookup: ${target}`,\n description:\n 'Focused lookup of a single root query field and its arguments.',\n },\n source: {\n kind: 'runtime-schema' as const,\n queryType: queryType.name,\n },\n lookup: {\n target,\n kind: 'root-field' as const,\n },\n field: summarizeField(rootField),\n parentType: queryType.name,\n };\n }\n\n const objectType = schema.getType(target);\n if (objectType && isObjectType(objectType)) {\n const typeSummary = summarizeObjectType(objectType);\n const rootFields = Object.values(queryType.getFields())\n .filter((field) => unwrapType(field.type).name === target)\n .map((field) => field.name);\n\n return {\n resource: {\n uri: `knowledge-schema://lookup/${target}`,\n title: `Knowledge schema lookup: ${target}`,\n description:\n 'Focused lookup of a single GraphQL type and its nested traversal fields.',\n },\n source: {\n kind: 'runtime-schema' as const,\n queryType: queryType.name,\n },\n lookup: {\n target,\n kind: 'object-type' as const,\n },\n type: typeSummary,\n rootFields,\n };\n }\n\n throw new Error(\n `Unknown schema lookup target \"${target}\". Use a root field name, a type name, or \"Query\".`,\n );\n}\n\nexport function buildKnowledgeSchemaLookupDocument(\n schema: GraphQLSchema,\n target: string,\n): KnowledgeSchemaLookupDocument {\n return getLookupMetadata(schema, target) as KnowledgeSchemaLookupDocument;\n}\n\nexport function createKnowledgeSchemaResourceText(\n schema: GraphQLSchema,\n): string {\n return JSON.stringify(buildKnowledgeSchemaDiscoveryDocument(schema), null, 2);\n}\n\nexport function createKnowledgeSchemaLookupText(\n schema: GraphQLSchema,\n target: string,\n): string {\n return JSON.stringify(\n buildKnowledgeSchemaLookupDocument(schema, target),\n null,\n 2,\n );\n}\n\nexport function listKnowledgeSchemaTargets(schema: GraphQLSchema) {\n const queryType = schema.getQueryType();\n if (!queryType) {\n throw new Error('Knowledge GraphQL schema has no root query type.');\n }\n\n const objectTypeNames = getObjectTypes(schema).map((type) => type.name);\n const rootFieldNames = Object.keys(queryType.getFields());\n const targetNames = ['Query', ...rootFieldNames, ...objectTypeNames];\n\n return Array.from(new Set(targetNames)).sort((left, right) =>\n left.localeCompare(right),\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport { ResourceTemplate } from '@modelcontextprotocol/server';\nimport {\n buildKnowledgeExtractionGuideDocument,\n buildKnowledgeExtractionSchemaDocument,\n buildKnowledgeExtractionTypeIndexDocument,\n KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI,\n KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI,\n KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n listKnowledgeExtractionResourceTypes,\n} from '@ez-know/core';\n\nfunction createJsonResourceContent(uri: string, text: string) {\n return {\n contents: [\n {\n uri,\n mimeType: 'application/json',\n text,\n },\n ],\n };\n}\n\nfunction createMarkdownResourceContent(uri: string, text: string) {\n return {\n contents: [\n {\n uri,\n mimeType: 'text/markdown',\n text,\n },\n ],\n };\n}\n\nfunction listExtractionTypeNames() {\n return listKnowledgeExtractionResourceTypes().flatMap((definition) => [\n definition.collection,\n ...definition.aliases,\n ]);\n}\n\nexport function registerKnowledgeExtractionResources(server: McpServer) {\n server.registerResource(\n 'knowledge-extraction-types',\n KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n {\n title: 'Knowledge Extraction Types',\n description:\n 'Canonical registry of knowledge types supported by the extraction workflow.',\n mimeType: 'application/json',\n },\n async (uri) =>\n createJsonResourceContent(\n uri.href,\n JSON.stringify(buildKnowledgeExtractionTypeIndexDocument(), null, 2),\n ),\n );\n\n server.registerResource(\n 'knowledge-extraction-schema',\n new ResourceTemplate(KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI, {\n list: async () => ({\n resources: listKnowledgeExtractionResourceTypes().map((definition) => ({\n uri: `ez-know://extraction/schema/${definition.collection}`,\n name: definition.collection,\n title: `${definition.title} Extraction Schema`,\n description: `Runtime schema discovery for ${definition.title.toLowerCase()}.`,\n mimeType: 'application/json',\n })),\n }),\n complete: {\n type: async (value) =>\n listExtractionTypeNames().filter((name) =>\n name.toLowerCase().startsWith(value.toLowerCase()),\n ),\n },\n }),\n {\n title: 'Knowledge Extraction Schema',\n description:\n 'Runtime JSON-schema discovery for a supported knowledge type.',\n mimeType: 'application/json',\n },\n async (_uri, variables) => {\n const type = variables.type;\n if (typeof type !== 'string' || type.length === 0) {\n throw new Error('Resource type is required.');\n }\n\n const document = buildKnowledgeExtractionSchemaDocument(type);\n return createJsonResourceContent(\n `ez-know://extraction/schema/${document.type.collection}`,\n JSON.stringify(document, null, 2),\n );\n },\n );\n\n server.registerResource(\n 'knowledge-extraction-guide',\n new ResourceTemplate(KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI, {\n list: async () => ({\n resources: listKnowledgeExtractionResourceTypes().map((definition) => ({\n uri: `ez-know://extraction/guide/${definition.collection}`,\n name: definition.collection,\n title: `${definition.title} Extraction Guide`,\n description: `Checked-in extraction guidance for ${definition.title.toLowerCase()}.`,\n mimeType: 'text/markdown',\n })),\n }),\n complete: {\n type: async (value) =>\n listExtractionTypeNames().filter((name) =>\n name.toLowerCase().startsWith(value.toLowerCase()),\n ),\n },\n }),\n {\n title: 'Knowledge Extraction Guide',\n description:\n 'Checked-in Markdown guidance for a supported knowledge type.',\n mimeType: 'text/markdown',\n },\n async (_uri, variables) => {\n const type = variables.type;\n if (typeof type !== 'string' || type.length === 0) {\n throw new Error('Resource type is required.');\n }\n\n const document = await buildKnowledgeExtractionGuideDocument(type);\n return createMarkdownResourceContent(\n `ez-know://extraction/guide/${document.type.collection}`,\n document.markdown,\n );\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport {\n buildKnowledgePatchToolText,\n compareScopeWithEvidence,\n compareScopeWithEvidenceInputSchema,\n} from '@ez-know/core';\n\nexport function registerCompareScopeWithEvidenceTool(server: McpServer) {\n server.registerTool(\n 'compare_scope_with_evidence',\n {\n title: 'Compare Scope With Evidence',\n description:\n 'Compares a patch evidence footprint against the audited repository root and reports uncovered files that still need review.',\n inputSchema: compareScopeWithEvidenceInputSchema,\n },\n async (input) => {\n const parsedInput = compareScopeWithEvidenceInputSchema.parse(input);\n const result = await compareScopeWithEvidence(\n process.env.EZ_KNOW_ROOT,\n parsedInput,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgePatchToolText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport * as z from 'zod/v4';\nimport {\n buildKnowledgeGraphQLText,\n executeKnowledgeQuery,\n type NormalizedKnowledgeStore,\n} from '@ez-know/core';\n\ntype GraphQLContext = NormalizedKnowledgeStore | undefined;\n\nexport function registerKnowledgeGraphTool(\n server: McpServer,\n getStore: () => Promise<GraphQLContext>,\n) {\n server.registerTool(\n 'knowledge_graph_query',\n {\n title: 'Knowledge Graph Query',\n description:\n 'Executes a GraphQL query against the loaded knowledge store.',\n inputSchema: z.object({\n query: z.string(),\n variables: z.record(z.string(), z.unknown()).optional(),\n operationName: z.string().optional(),\n }),\n },\n async ({ query, variables, operationName }) => {\n const result = await executeKnowledgeQuery(\n await getStore(),\n query,\n variables,\n operationName,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgeGraphQLText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport {\n applyKnowledgePatch,\n buildKnowledgePatchToolText,\n knowledgePatchApplyToolInputSchema,\n} from '@ez-know/core';\n\nexport function registerKnowledgePatchApplyTool(server: McpServer) {\n server.registerTool(\n 'knowledge_patch_apply',\n {\n title: 'Knowledge Patch Apply',\n description:\n 'Applies a validated knowledge patch to canonical files after explicit approval.',\n inputSchema: knowledgePatchApplyToolInputSchema,\n },\n async (input) => {\n const parsedInput = knowledgePatchApplyToolInputSchema.parse(input);\n const result = await applyKnowledgePatch(\n process.env.EZ_KNOW_ROOT,\n parsedInput,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgePatchToolText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport {\n buildKnowledgePatchToolText,\n executeKnowledgePatchAction,\n knowledgePatchToolInputSchema,\n} from '@ez-know/core';\n\nexport function registerKnowledgePatchTool(server: McpServer) {\n server.registerTool(\n 'knowledge_patch',\n {\n title: 'Knowledge Patch',\n description:\n 'Manages draft knowledge patches without mutating canonical knowledge files.',\n inputSchema: knowledgePatchToolInputSchema,\n },\n async (input) => {\n const parsedInput = knowledgePatchToolInputSchema.parse(input);\n const result = await executeKnowledgePatchAction(\n process.env.EZ_KNOW_ROOT,\n parsedInput,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgePatchToolText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport { ResourceTemplate } from '@modelcontextprotocol/server';\nimport {\n createKnowledgeSchemaLookupText,\n createKnowledgeSchemaResourceText,\n KNOWLEDGE_SCHEMA_LOOKUP_URI,\n KNOWLEDGE_SCHEMA_RESOURCE_URI,\n knowledgeGraphSchema,\n listKnowledgeSchemaTargets,\n} from '@ez-know/core';\n\nfunction createJsonResourceContent(uri: string, text: string) {\n return {\n contents: [\n {\n uri,\n mimeType: 'application/json',\n text,\n },\n ],\n };\n}\n\nexport function registerKnowledgeSchemaResources(server: McpServer) {\n server.registerResource(\n 'knowledge-schema',\n KNOWLEDGE_SCHEMA_RESOURCE_URI,\n {\n title: 'Knowledge GraphQL Schema',\n description:\n 'Canonical runtime GraphQL schema discovery payload for the knowledge layer.',\n mimeType: 'application/json',\n },\n async (uri) =>\n createJsonResourceContent(\n uri.href,\n createKnowledgeSchemaResourceText(knowledgeGraphSchema),\n ),\n );\n\n server.registerResource(\n 'knowledge-schema-lookup',\n new ResourceTemplate(KNOWLEDGE_SCHEMA_LOOKUP_URI, {\n list: async () => ({\n resources: listKnowledgeSchemaTargets(knowledgeGraphSchema).map(\n (target) => ({\n uri: `knowledge-schema://lookup/${target}`,\n name: target,\n title: `Knowledge schema lookup: ${target}`,\n description:\n target === 'Query'\n ? 'Focused lookup of the root query fields.'\n : `Focused lookup of ${target}.`,\n mimeType: 'application/json',\n }),\n ),\n }),\n complete: {\n target: async (value) =>\n listKnowledgeSchemaTargets(knowledgeGraphSchema).filter((target) =>\n target.toLowerCase().startsWith(value.toLowerCase()),\n ),\n },\n }),\n {\n title: 'Knowledge Schema Lookup',\n description:\n 'Focused runtime GraphQL schema lookup for a type name, root field, or Query.',\n mimeType: 'application/json',\n },\n async (_uri, variables) => {\n const target = variables.target;\n if (typeof target !== 'string' || target.length === 0) {\n throw new Error('Resource target is required.');\n }\n\n return createJsonResourceContent(\n `knowledge-schema://lookup/${target}`,\n createKnowledgeSchemaLookupText(knowledgeGraphSchema, target),\n );\n },\n );\n}\n", "import { access } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nimport fastifyStatic from '@fastify/static';\nimport Fastify, { type FastifyInstance } from 'fastify';\nimport type { NormalizedKnowledgeStore } from '@ez-know/core';\nimport { registerRestRoutes } from './routes.js';\n\nexport interface RestAppOptions {\n staticRoot?: string;\n}\n\nexport async function buildRestApp(\n store: NormalizedKnowledgeStore | undefined,\n options: RestAppOptions = {},\n): Promise<FastifyInstance> {\n const app = Fastify({\n logger: false,\n });\n\n await registerRestRoutes(app, store);\n\n if (options.staticRoot) {\n try {\n const staticRoot = resolve(options.staticRoot);\n\n await access(staticRoot);\n await app.register(fastifyStatic, {\n root: staticRoot,\n prefix: '/',\n });\n } catch {\n // The package can still run the API without bundled frontend assets.\n }\n }\n\n await app.ready();\n\n return app;\n}\n", "import type { KnowledgeCollectionName } from '@ez-know/core';\n\nexport const REST_SERVICE_NAME = 'ez-know-rest';\nexport const REST_API_PREFIX = '/api';\nexport const REST_V1_PREFIX = '/api/v1';\nexport const REST_OPENAPI_PATH = '/api/openapi.json';\nexport const REST_DOCS_PATH = '/api/docs';\nexport const REST_HEALTH_PATH = '/api/health';\nexport const REST_PATCHES_ROUTE = 'patches';\nexport const REST_PATCH_PREVIEW_ROUTE = 'patches/:patchId/preview';\nexport const REST_PATCH_PREVIEW_PATH = 'patches/{patchId}/preview';\n\nexport interface RestCollectionRoute {\n route: string;\n collection: KnowledgeCollectionName;\n label: string;\n}\n\nexport const REST_COLLECTIONS = [\n { route: 'domains', collection: 'domains', label: 'Domains' },\n { route: 'entities', collection: 'entities', label: 'Entities' },\n {\n route: 'relationships',\n collection: 'relationships',\n label: 'Relationships',\n },\n {\n route: 'capabilities',\n collection: 'capabilities',\n label: 'Capabilities',\n },\n { route: 'features', collection: 'features', label: 'Features' },\n {\n route: 'business-rules',\n collection: 'business_rules',\n label: 'Business rules',\n },\n { route: 'constraints', collection: 'constraints', label: 'Constraints' },\n { route: 'rationales', collection: 'rationales', label: 'Rationales' },\n { route: 'evidence', collection: 'evidence', label: 'Evidence' },\n { route: 'questions', collection: 'questions', label: 'Questions' },\n { route: 'conflicts', collection: 'conflicts', label: 'Conflicts' },\n] as const satisfies readonly RestCollectionRoute[];\n\nexport type RestCollectionRouteName =\n (typeof REST_COLLECTIONS)[number]['route'];\n\nexport const REST_COLLECTION_ROUTE_LOOKUP = new Map<\n RestCollectionRouteName,\n RestCollectionRoute\n>(\n REST_COLLECTIONS.map((definition) => [definition.route, definition] as const),\n);\n\nexport function isRestCollectionRouteName(\n value: string,\n): value is RestCollectionRouteName {\n return REST_COLLECTION_ROUTE_LOOKUP.has(value as RestCollectionRouteName);\n}\n", "import { REST_OPENAPI_PATH } from './constants.js';\n\nexport function buildSwaggerUiHtml(openApiPath = REST_OPENAPI_PATH) {\n return `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>ez-know REST API</title>\n <link\n rel=\"stylesheet\"\n href=\"https://unpkg.com/swagger-ui-dist@5/swagger-ui.css\"\n />\n <style>\n html,\n body {\n margin: 0;\n padding: 0;\n background: #0f172a;\n }\n\n #swagger-ui {\n background: #fff;\n }\n </style>\n </head>\n <body>\n <div id=\"swagger-ui\"></div>\n <script src=\"https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js\" crossorigin=\"anonymous\"></script>\n <script>\n window.ui = SwaggerUIBundle({\n url: '${openApiPath}',\n dom_id: '#swagger-ui',\n deepLinking: true,\n presets: [SwaggerUIBundle.presets.apis],\n });\n </script>\n </body>\n</html>`;\n}\n", "import {\n extendZodWithOpenApi,\n OpenAPIRegistry,\n OpenApiGeneratorV3,\n} from '@asteasolutions/zod-to-openapi';\nimport { z } from 'zod/v4';\n\nimport {\n REST_COLLECTIONS,\n REST_DOCS_PATH,\n REST_HEALTH_PATH,\n REST_PATCHES_ROUTE,\n REST_PATCH_PREVIEW_PATH,\n REST_OPENAPI_PATH,\n REST_V1_PREFIX,\n} from './constants.js';\nimport {\n getRestCollectionSchemaDefinition,\n REST_CERTAINTY_SCHEMA,\n REST_CONFIDENCE_SCHEMA,\n} from './schema-registry.js';\n\nextendZodWithOpenApi(z);\n\nconst openApiRegistry = new OpenAPIRegistry();\n\nconst restErrorResponseSchema = openApiRegistry.register(\n 'RestErrorResponse',\n z\n .object({\n error: z.object({\n code: z.string(),\n message: z.string(),\n }),\n })\n .openapi({\n description: 'Standard REST error envelope.',\n }),\n);\n\nconst restHealthResponseSchema = openApiRegistry.register(\n 'RestHealthResponse',\n z\n .object({\n service: z.string(),\n status: z.literal('ok'),\n storeAvailable: z.boolean(),\n })\n .openapi({\n description: 'Service health payload.',\n }),\n);\n\nconst restPatchSummarySchema = openApiRegistry.register(\n 'RestPatchSummary',\n z\n .object({\n id: z.string(),\n status: z.string(),\n title: z.string(),\n description: z.string().optional(),\n rootFolder: z.string(),\n omittedFiles: z.array(\n z.object({\n path: z.string(),\n reason: z.string(),\n }),\n ),\n operationCount: z.number().int().min(0),\n createdAt: z.string(),\n updatedAt: z.string(),\n })\n .openapi({\n description: 'Patch inventory summary.',\n }),\n);\n\nconst restPatchProvenanceEntrySchema = openApiRegistry.register(\n 'RestPatchProvenanceEntry',\n z\n .object({\n patchIds: z.array(z.string()),\n patched: z.boolean(),\n })\n .openapi({\n description: 'Patch provenance for a previewed record.',\n }),\n);\n\nconst restPatchFacetItemSchema = openApiRegistry.register(\n 'RestPatchFacetItem',\n z\n .object({\n id: z.string(),\n label: z.string(),\n patched: z.boolean(),\n provenancePatchIds: z.array(z.string()),\n })\n .openapi({\n description: 'Patch-aware facet option.',\n }),\n);\n\nconst confidenceRef = openApiRegistry.register(\n 'Confidence',\n REST_CONFIDENCE_SCHEMA,\n);\nconst certaintyRef = openApiRegistry.register(\n 'Certainty',\n REST_CERTAINTY_SCHEMA,\n);\n\nconst restOpenApiDocumentSchema = openApiRegistry.register(\n 'RestOpenApiDocument',\n z.record(z.string(), z.unknown()),\n);\n\nconst previewCollectionResponseSchemas = new Map<string, any>();\n\nfor (const collection of REST_COLLECTIONS) {\n const schemaDefinition = getRestCollectionSchemaDefinition(\n collection.collection,\n );\n const schemaShape = (\n schemaDefinition.itemSchema as { shape?: Record<string, unknown> }\n ).shape;\n\n const itemSchemaSource =\n schemaShape && 'certainty' in schemaShape && 'confidence' in schemaShape\n ? schemaDefinition.itemSchema.extend({\n certainty: certaintyRef,\n confidence: confidenceRef,\n })\n : schemaShape && 'confidence' in schemaShape\n ? schemaDefinition.itemSchema.extend({\n confidence: confidenceRef,\n })\n : schemaDefinition.itemSchema;\n\n const itemSchema = openApiRegistry.register(\n schemaDefinition.itemName,\n itemSchemaSource,\n );\n\n const previewItemSchema = openApiRegistry.register(\n `${schemaDefinition.itemName}PreviewRecord`,\n itemSchemaSource.extend({\n patched: z.boolean(),\n provenancePatchIds: z.array(z.string()),\n }),\n );\n\n const collectionResponseSchema = openApiRegistry.register(\n schemaDefinition.collectionResponseName,\n z\n .object({\n items: z.array(itemSchema),\n count: z.number().int().min(0),\n })\n .openapi({\n description: `${schemaDefinition.itemName} collection response.`,\n }),\n );\n\n const previewCollectionResponseSchema = openApiRegistry.register(\n `${schemaDefinition.itemName}PreviewCollectionResponse`,\n z\n .object({\n items: z.array(previewItemSchema),\n count: z.number().int().min(0),\n })\n .openapi({\n description: `${schemaDefinition.itemName} preview collection response.`,\n }),\n );\n previewCollectionResponseSchemas.set(\n collection.collection,\n previewCollectionResponseSchema,\n );\n\n const itemResponseSchema = openApiRegistry.register(\n schemaDefinition.itemResponseName,\n z\n .object({\n item: itemSchema,\n })\n .openapi({\n description: `${schemaDefinition.itemName} item response.`,\n }),\n );\n\n openApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${collection.route}`,\n summary: `List ${collection.label.toLowerCase()}`,\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: collectionResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n 503: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n });\n\n openApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${collection.route}/{id}`,\n summary: `Get ${collection.label.toLowerCase()} by id`,\n request: {\n params: z.object({\n id: z.string(),\n }),\n },\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: itemResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n 503: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n });\n}\n\nconst restPatchInventoryResponseSchema = openApiRegistry.register(\n 'RestPatchInventoryResponse',\n z\n .object({\n items: z.array(restPatchSummarySchema),\n count: z.number().int().min(0),\n })\n .openapi({\n description: 'Patch inventory response.',\n }),\n);\n\nconst restPatchPreviewResponseSchema = openApiRegistry.register(\n 'RestPatchPreviewResponse',\n z\n .object({\n selectedPatchId: z.string(),\n prefixPatchIds: z.array(z.string()),\n patches: z.array(restPatchSummarySchema),\n provenance: z.record(z.string(), restPatchProvenanceEntrySchema),\n facets: z\n .object({\n domains: z.array(restPatchFacetItemSchema),\n entities: z.array(restPatchFacetItemSchema),\n })\n .strict(),\n collections: z\n .object({\n domains: previewCollectionResponseSchemas.get('domains')!,\n entities: previewCollectionResponseSchemas.get('entities')!,\n relationships: previewCollectionResponseSchemas.get('relationships')!,\n capabilities: previewCollectionResponseSchemas.get('capabilities')!,\n features: previewCollectionResponseSchemas.get('features')!,\n business_rules:\n previewCollectionResponseSchemas.get('business_rules')!,\n constraints: previewCollectionResponseSchemas.get('constraints')!,\n rationales: previewCollectionResponseSchemas.get('rationales')!,\n evidence: previewCollectionResponseSchemas.get('evidence')!,\n questions: previewCollectionResponseSchemas.get('questions')!,\n conflicts: previewCollectionResponseSchemas.get('conflicts')!,\n })\n .strict(),\n })\n .openapi({\n description: 'Patch-aware preview snapshot response.',\n }),\n);\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${REST_PATCHES_ROUTE}`,\n summary: 'List patch inventory',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restPatchInventoryResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${REST_PATCH_PREVIEW_PATH}`,\n summary: 'Preview a patch prefix',\n request: {\n params: z.object({\n patchId: z.string(),\n }),\n },\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restPatchPreviewResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n 503: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: REST_HEALTH_PATH,\n summary: 'Service health',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restHealthResponseSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: REST_OPENAPI_PATH,\n summary: 'OpenAPI document',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restOpenApiDocumentSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: REST_DOCS_PATH,\n summary: 'Swagger UI',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'text/html': {\n schema: z.string(),\n },\n },\n },\n },\n});\n\nexport function buildRestOpenApiDocument() {\n return new OpenApiGeneratorV3(openApiRegistry.definitions).generateDocument({\n openapi: '3.1.0',\n info: {\n title: 'ez-know REST API',\n version: '0.1.0',\n description:\n 'Read-only HTTP interface for loaded ez-know knowledge collections.',\n },\n servers: [{ url: '/' }],\n });\n}\n\nexport const REST_OPENAPI_DOCUMENT = buildRestOpenApiDocument();\n", "import type { ZodTypeAny } from 'zod/v4';\nimport {\n businessRuleSchema,\n capabilitySchema,\n certaintySchema,\n confidenceSchema,\n conflictSchema,\n constraintSchema,\n domainSchema,\n entitySchema,\n evidenceSchema,\n featureSchema,\n questionSchema,\n rationaleSchema,\n relationshipSchema,\n type KnowledgeCollectionName,\n} from '@ez-know/core';\n\nexport interface RestCollectionSchemaDefinition {\n itemName: string;\n itemSchema: ZodTypeAny;\n collectionResponseName: string;\n itemResponseName: string;\n}\n\nexport const REST_COLLECTION_SCHEMA_REGISTRY = {\n domains: {\n itemName: 'Domain',\n itemSchema: domainSchema,\n collectionResponseName: 'DomainCollectionResponse',\n itemResponseName: 'DomainItemResponse',\n },\n entities: {\n itemName: 'Entity',\n itemSchema: entitySchema,\n collectionResponseName: 'EntityCollectionResponse',\n itemResponseName: 'EntityItemResponse',\n },\n relationships: {\n itemName: 'EntityRelationship',\n itemSchema: relationshipSchema,\n collectionResponseName: 'EntityRelationshipCollectionResponse',\n itemResponseName: 'EntityRelationshipItemResponse',\n },\n capabilities: {\n itemName: 'Capability',\n itemSchema: capabilitySchema,\n collectionResponseName: 'CapabilityCollectionResponse',\n itemResponseName: 'CapabilityItemResponse',\n },\n features: {\n itemName: 'Feature',\n itemSchema: featureSchema,\n collectionResponseName: 'FeatureCollectionResponse',\n itemResponseName: 'FeatureItemResponse',\n },\n business_rules: {\n itemName: 'BusinessRule',\n itemSchema: businessRuleSchema,\n collectionResponseName: 'BusinessRuleCollectionResponse',\n itemResponseName: 'BusinessRuleItemResponse',\n },\n constraints: {\n itemName: 'Constraint',\n itemSchema: constraintSchema,\n collectionResponseName: 'ConstraintCollectionResponse',\n itemResponseName: 'ConstraintItemResponse',\n },\n rationales: {\n itemName: 'Rationale',\n itemSchema: rationaleSchema,\n collectionResponseName: 'RationaleCollectionResponse',\n itemResponseName: 'RationaleItemResponse',\n },\n evidence: {\n itemName: 'Evidence',\n itemSchema: evidenceSchema,\n collectionResponseName: 'EvidenceCollectionResponse',\n itemResponseName: 'EvidenceItemResponse',\n },\n questions: {\n itemName: 'Question',\n itemSchema: questionSchema,\n collectionResponseName: 'QuestionCollectionResponse',\n itemResponseName: 'QuestionItemResponse',\n },\n conflicts: {\n itemName: 'Conflict',\n itemSchema: conflictSchema,\n collectionResponseName: 'ConflictCollectionResponse',\n itemResponseName: 'ConflictItemResponse',\n },\n} as const satisfies Record<\n KnowledgeCollectionName,\n RestCollectionSchemaDefinition\n>;\n\nexport function getRestCollectionSchemaDefinition(\n collection: KnowledgeCollectionName,\n) {\n return REST_COLLECTION_SCHEMA_REGISTRY[collection];\n}\n\nexport function getRestCollectionItemSchema(\n collection: KnowledgeCollectionName,\n) {\n return REST_COLLECTION_SCHEMA_REGISTRY[collection].itemSchema;\n}\n\nexport const REST_CONFIDENCE_SCHEMA = confidenceSchema;\nexport const REST_CERTAINTY_SCHEMA = certaintySchema;\n", "import {\n loadEffectiveKnowledgeStoreFromRoot,\n listKnowledgePatches,\n type KnowledgeCollectionName,\n type KnowledgeRecord,\n type KnowledgePatchSummary,\n} from '@ez-know/core';\n\nexport interface RestPatchProvenanceEntry {\n patchIds: string[];\n patched: boolean;\n}\n\nexport type RestPreviewRecord<T = KnowledgeRecord> = T & {\n patched: boolean;\n provenancePatchIds: string[];\n};\n\nexport interface RestPatchFacetItem {\n id: string;\n label: string;\n patched: boolean;\n provenancePatchIds: string[];\n}\n\nexport interface RestPatchFacets {\n domains: RestPatchFacetItem[];\n entities: RestPatchFacetItem[];\n}\n\nexport interface RestPreviewCollection<T = KnowledgeRecord> {\n items: RestPreviewRecord<T>[];\n count: number;\n}\n\nexport interface RestPatchPreviewCollections {\n domains: RestPreviewCollection;\n entities: RestPreviewCollection;\n relationships: RestPreviewCollection;\n capabilities: RestPreviewCollection;\n features: RestPreviewCollection;\n business_rules: RestPreviewCollection;\n constraints: RestPreviewCollection;\n rationales: RestPreviewCollection;\n evidence: RestPreviewCollection;\n questions: RestPreviewCollection;\n conflicts: RestPreviewCollection;\n}\n\nexport interface RestPatchPreviewResponse {\n selectedPatchId: string;\n prefixPatchIds: string[];\n patches: KnowledgePatchSummary[];\n provenance: Record<string, RestPatchProvenanceEntry>;\n facets: RestPatchFacets;\n collections: RestPatchPreviewCollections;\n}\n\nfunction buildPreviewRecord<T extends KnowledgeRecord>(\n record: T,\n provenance: RestPatchProvenanceEntry | undefined,\n): RestPreviewRecord<T> {\n return {\n ...structuredClone(record),\n patched: Boolean(provenance?.patched),\n provenancePatchIds: provenance?.patchIds ?? [],\n };\n}\n\nfunction buildFacetItem(\n record: KnowledgeRecord & {\n name?: string;\n question?: string;\n description?: string;\n },\n provenance: RestPatchProvenanceEntry | undefined,\n): RestPatchFacetItem {\n const label: string =\n 'name' in record && typeof record.name === 'string'\n ? record.name\n : 'question' in record && typeof record.question === 'string'\n ? record.question\n : (record.description ?? '');\n\n return {\n id: record.id,\n label,\n patched: Boolean(provenance?.patched),\n provenancePatchIds: provenance?.patchIds ?? [],\n };\n}\n\nfunction buildCollectionPreview<T extends KnowledgeRecord>(\n records: T[],\n provenance: Map<string, RestPatchProvenanceEntry>,\n): RestPreviewCollection<T> {\n const items = records.map((record) =>\n buildPreviewRecord(record, provenance.get(record.id)),\n );\n return {\n items,\n count: items.length,\n };\n}\n\nexport async function buildPatchInventory(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return listKnowledgePatches(envValue, cwd);\n}\n\nfunction getCollectionNames(): KnowledgeCollectionName[] {\n return [\n 'domains',\n 'entities',\n 'relationships',\n 'capabilities',\n 'features',\n 'business_rules',\n 'constraints',\n 'rationales',\n 'evidence',\n 'questions',\n 'conflicts',\n ];\n}\n\nfunction emptyPreviewCollections(): RestPatchPreviewCollections {\n const emptyCollection: RestPreviewCollection = { items: [], count: 0 };\n return {\n domains: structuredClone(emptyCollection),\n entities: structuredClone(emptyCollection),\n relationships: structuredClone(emptyCollection),\n capabilities: structuredClone(emptyCollection),\n features: structuredClone(emptyCollection),\n business_rules: structuredClone(emptyCollection),\n constraints: structuredClone(emptyCollection),\n rationales: structuredClone(emptyCollection),\n evidence: structuredClone(emptyCollection),\n questions: structuredClone(emptyCollection),\n conflicts: structuredClone(emptyCollection),\n };\n}\n\nexport async function buildPatchPreview(\n selectedPatchId: string,\n knowledgeRoot: string,\n): Promise<RestPatchPreviewResponse> {\n const patches = await listKnowledgePatches(knowledgeRoot);\n const selectedIndex = patches.findIndex(\n (patch) => patch.id === selectedPatchId,\n );\n if (selectedIndex === -1) {\n throw new Error(`Patch \"${selectedPatchId}\" was not found.`);\n }\n\n const prefixPatches = patches.slice(0, selectedIndex + 1);\n const effectiveState = await loadEffectiveKnowledgeStoreFromRoot(\n knowledgeRoot,\n { selectedPatchId },\n );\n const currentState = effectiveState.store;\n const provenanceMap = new Map<string, RestPatchProvenanceEntry>(\n effectiveState.provenance.entries(),\n );\n\n const collections = emptyPreviewCollections();\n const provenanceObject = Object.fromEntries(provenanceMap.entries());\n\n for (const collection of getCollectionNames()) {\n const records = currentState[collection] as KnowledgeRecord[];\n const previewCollection = buildCollectionPreview(records, provenanceMap);\n collections[collection] = previewCollection as never;\n }\n\n const domainItems = currentState.domains.map((record) =>\n buildFacetItem(record, provenanceMap.get(record.id)),\n );\n const entityItems = currentState.entities.map((record) =>\n buildFacetItem(record, provenanceMap.get(record.id)),\n );\n\n return {\n selectedPatchId,\n prefixPatchIds: effectiveState.patchIds,\n patches: prefixPatches,\n provenance: provenanceObject,\n facets: {\n domains: domainItems,\n entities: entityItems,\n },\n collections,\n };\n}\n", "import type { NormalizedKnowledgeStore } from '@ez-know/core';\n\nexport interface RestServiceHealthPayload {\n service: string;\n status: 'ok';\n storeAvailable: boolean;\n}\n\nexport interface RestErrorPayload {\n error: {\n code: string;\n message: string;\n };\n}\n\nexport interface RestCollectionPayload<T = unknown> {\n items: T[];\n count: number;\n}\n\nexport interface RestItemPayload<T = unknown> {\n item: T;\n}\n\nexport function buildHealthPayload(\n serviceName: string,\n store: NormalizedKnowledgeStore | undefined,\n): RestServiceHealthPayload {\n return {\n service: serviceName,\n status: 'ok',\n storeAvailable: store !== undefined,\n };\n}\n\nexport function buildErrorPayload(\n code: string,\n message: string,\n): RestErrorPayload {\n return {\n error: {\n code,\n message,\n },\n };\n}\n\nexport function buildCollectionPayload<T>(\n items: T[],\n): RestCollectionPayload<T> {\n return {\n items,\n count: items.length,\n };\n}\n\nexport function buildItemPayload<T>(item: T): RestItemPayload<T> {\n return {\n item,\n };\n}\n", "export const restObjectSchema = {\n type: 'object',\n required: ['id'],\n properties: {\n id: {\n type: 'string',\n },\n },\n additionalProperties: true,\n} as const;\n\nexport const restErrorResponseSchema = {\n type: 'object',\n required: ['error'],\n properties: {\n error: {\n type: 'object',\n required: ['code', 'message'],\n properties: {\n code: { type: 'string' },\n message: { type: 'string' },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restHealthResponseSchema = {\n type: 'object',\n required: ['service', 'status', 'storeAvailable'],\n properties: {\n service: { type: 'string' },\n status: { type: 'string', const: 'ok' },\n storeAvailable: { type: 'boolean' },\n },\n additionalProperties: false,\n} as const;\n\nexport const restCollectionResponseSchema = {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: restObjectSchema,\n },\n count: {\n type: 'integer',\n minimum: 0,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchSummarySchema = {\n type: 'object',\n required: [\n 'id',\n 'status',\n 'title',\n 'rootFolder',\n 'omittedFiles',\n 'operationCount',\n 'createdAt',\n 'updatedAt',\n ],\n properties: {\n id: { type: 'string' },\n status: { type: 'string' },\n title: { type: 'string' },\n description: { type: 'string' },\n rootFolder: { type: 'string' },\n omittedFiles: {\n type: 'array',\n items: {\n type: 'object',\n required: ['path', 'reason'],\n properties: {\n path: { type: 'string' },\n reason: { type: 'string' },\n },\n additionalProperties: false,\n },\n },\n operationCount: { type: 'integer', minimum: 0 },\n createdAt: { type: 'string' },\n updatedAt: { type: 'string' },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchProvenanceEntrySchema = {\n type: 'object',\n required: ['patchIds', 'patched'],\n properties: {\n patchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n patched: { type: 'boolean' },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchFacetItemSchema = {\n type: 'object',\n required: ['id', 'label', 'patched', 'provenancePatchIds'],\n properties: {\n id: { type: 'string' },\n label: { type: 'string' },\n patched: { type: 'boolean' },\n provenancePatchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchPreviewRecordSchema = {\n type: 'object',\n required: ['patched', 'provenancePatchIds'],\n properties: {\n patched: { type: 'boolean' },\n provenancePatchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n },\n additionalProperties: true,\n} as const;\n\nexport const restPatchPreviewCollectionSchema = {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: restPatchPreviewRecordSchema,\n },\n count: {\n type: 'integer',\n minimum: 0,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchInventoryResponseSchema = {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: restPatchSummarySchema,\n },\n count: {\n type: 'integer',\n minimum: 0,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchPreviewResponseSchema = {\n type: 'object',\n required: [\n 'selectedPatchId',\n 'prefixPatchIds',\n 'patches',\n 'provenance',\n 'facets',\n 'collections',\n ],\n properties: {\n selectedPatchId: { type: 'string' },\n prefixPatchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n patches: {\n type: 'array',\n items: restPatchSummarySchema,\n },\n provenance: {\n type: 'object',\n additionalProperties: restPatchProvenanceEntrySchema,\n },\n facets: {\n type: 'object',\n required: ['domains', 'entities'],\n properties: {\n domains: {\n type: 'array',\n items: restPatchFacetItemSchema,\n },\n entities: {\n type: 'array',\n items: restPatchFacetItemSchema,\n },\n },\n additionalProperties: false,\n },\n collections: {\n type: 'object',\n required: [\n 'domains',\n 'entities',\n 'relationships',\n 'capabilities',\n 'features',\n 'business_rules',\n 'constraints',\n 'rationales',\n 'evidence',\n 'questions',\n 'conflicts',\n ],\n properties: {\n domains: restPatchPreviewCollectionSchema,\n entities: restPatchPreviewCollectionSchema,\n relationships: restPatchPreviewCollectionSchema,\n capabilities: restPatchPreviewCollectionSchema,\n features: restPatchPreviewCollectionSchema,\n business_rules: restPatchPreviewCollectionSchema,\n constraints: restPatchPreviewCollectionSchema,\n rationales: restPatchPreviewCollectionSchema,\n evidence: restPatchPreviewCollectionSchema,\n questions: restPatchPreviewCollectionSchema,\n conflicts: restPatchPreviewCollectionSchema,\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restItemResponseSchema = {\n type: 'object',\n required: ['item'],\n properties: {\n item: restObjectSchema,\n },\n additionalProperties: false,\n} as const;\n\nexport const restOpenApiDocumentSchema = {\n type: 'object',\n additionalProperties: true,\n} as const;\n", "import type { FastifyInstance } from 'fastify';\nimport type { NormalizedKnowledgeStore } from '@ez-know/core';\nimport {\n loadEffectiveKnowledgeStoreFromRoot,\n type KnowledgeCollectionName,\n} from '@ez-know/core';\nimport {\n REST_COLLECTIONS,\n REST_DOCS_PATH,\n REST_HEALTH_PATH,\n REST_PATCHES_ROUTE,\n REST_PATCH_PREVIEW_ROUTE,\n REST_OPENAPI_PATH,\n REST_SERVICE_NAME,\n REST_V1_PREFIX,\n} from './constants.js';\nimport { buildSwaggerUiHtml } from './docs.js';\nimport { REST_OPENAPI_DOCUMENT } from './openapi.js';\nimport { buildPatchInventory, buildPatchPreview } from './preview.js';\nimport {\n buildCollectionPayload,\n buildErrorPayload,\n buildHealthPayload,\n buildItemPayload,\n} from './payloads.js';\nimport {\n restCollectionResponseSchema,\n restErrorResponseSchema,\n restHealthResponseSchema,\n restPatchInventoryResponseSchema,\n restPatchPreviewResponseSchema,\n restItemResponseSchema,\n restOpenApiDocumentSchema,\n} from './schemas.js';\n\ntype RestStore = NormalizedKnowledgeStore | undefined;\n\nfunction getCollectionRecords(\n store: NormalizedKnowledgeStore,\n collection: KnowledgeCollectionName,\n) {\n return store[collection] as unknown[];\n}\n\nfunction getCollectionRecordById(\n store: NormalizedKnowledgeStore,\n collection: KnowledgeCollectionName,\n id: string,\n) {\n return store.byCollection[collection].get(id);\n}\n\nfunction buildItemParamsSchema() {\n return {\n type: 'object',\n required: ['id'],\n properties: {\n id: { type: 'string' },\n },\n additionalProperties: false,\n } as const;\n}\n\nfunction getPatchRoot(store: RestStore) {\n return store?.rootDir ?? process.env.EZ_KNOW_ROOT;\n}\n\nasync function loadEffectiveRestStore(store: RestStore) {\n if (!store) {\n return undefined;\n }\n\n const effectiveState = await loadEffectiveKnowledgeStoreFromRoot(\n store.rootDir,\n );\n return effectiveState.store;\n}\n\nfunction registerCollectionRoutes(\n app: FastifyInstance,\n store: RestStore,\n collection: (typeof REST_COLLECTIONS)[number],\n) {\n app.get(\n `${REST_V1_PREFIX}/${collection.route}`,\n {\n schema: {\n response: {\n 200: restCollectionResponseSchema,\n 404: restErrorResponseSchema,\n 503: restErrorResponseSchema,\n },\n },\n },\n async (_request, reply) => {\n const effectiveStore = await loadEffectiveRestStore(store);\n if (!effectiveStore) {\n reply.code(503);\n return buildErrorPayload(\n 'missing_store',\n 'Knowledge store is unavailable.',\n );\n }\n\n return buildCollectionPayload(\n getCollectionRecords(effectiveStore, collection.collection),\n );\n },\n );\n\n app.get<{ Params: { id: string } }>(\n `${REST_V1_PREFIX}/${collection.route}/:id`,\n {\n schema: {\n params: buildItemParamsSchema(),\n response: {\n 200: restItemResponseSchema,\n 404: restErrorResponseSchema,\n 503: restErrorResponseSchema,\n },\n },\n },\n async (request, reply) => {\n const effectiveStore = await loadEffectiveRestStore(store);\n if (!effectiveStore) {\n reply.code(503);\n return buildErrorPayload(\n 'missing_store',\n 'Knowledge store is unavailable.',\n );\n }\n\n const item = getCollectionRecordById(\n effectiveStore,\n collection.collection,\n request.params.id,\n );\n if (!item) {\n reply.code(404);\n return buildErrorPayload(\n 'unknown_item',\n `No item with id \"${request.params.id}\" exists in ${collection.collection}.`,\n );\n }\n\n return buildItemPayload(item);\n },\n );\n}\n\nexport async function registerRestRoutes(\n app: FastifyInstance,\n store: RestStore,\n) {\n app.get(\n REST_HEALTH_PATH,\n {\n schema: {\n response: {\n 200: restHealthResponseSchema,\n },\n },\n },\n async () => buildHealthPayload(REST_SERVICE_NAME, store),\n );\n\n app.get(\n REST_OPENAPI_PATH,\n {\n schema: {\n response: {\n 200: restOpenApiDocumentSchema,\n },\n },\n },\n async () => REST_OPENAPI_DOCUMENT,\n );\n\n app.get(\n REST_DOCS_PATH,\n {\n schema: {\n response: {\n 200: {\n type: 'string',\n },\n },\n },\n },\n async (_request, reply) => {\n reply.type('text/html; charset=utf-8');\n return buildSwaggerUiHtml(REST_OPENAPI_PATH);\n },\n );\n\n app.get(\n `${REST_V1_PREFIX}/${REST_PATCHES_ROUTE}`,\n {\n schema: {\n response: {\n 200: restPatchInventoryResponseSchema,\n 404: restErrorResponseSchema,\n },\n },\n },\n async () =>\n buildCollectionPayload(await buildPatchInventory(getPatchRoot(store))),\n );\n\n app.get<{ Params: { patchId: string } }>(\n `${REST_V1_PREFIX}/${REST_PATCH_PREVIEW_ROUTE}`,\n {\n schema: {\n params: {\n type: 'object',\n required: ['patchId'],\n properties: {\n patchId: { type: 'string' },\n },\n additionalProperties: false,\n },\n response: {\n 200: restPatchPreviewResponseSchema,\n 404: restErrorResponseSchema,\n 503: restErrorResponseSchema,\n },\n },\n },\n async (request, reply) => {\n if (!store) {\n reply.code(503);\n return buildErrorPayload(\n 'missing_store',\n 'Knowledge store is unavailable.',\n );\n }\n\n try {\n return await buildPatchPreview(request.params.patchId, store.rootDir);\n } catch (error) {\n reply.code(404);\n return buildErrorPayload(\n 'unknown_patch',\n error instanceof Error ? error.message : 'Patch not found.',\n );\n }\n },\n );\n\n for (const collection of REST_COLLECTIONS) {\n registerCollectionRoutes(app, store, collection);\n }\n}\n", "import type { FastifyInstance } from 'fastify';\nimport { loadKnowledgeStoreFromEnv } from '@ez-know/core';\nimport { buildRestApp } from './app.js';\n\nexport interface StartRestServerOptions {\n host?: string;\n port?: number;\n staticRoot?: string;\n}\n\nfunction parsePort(value: string | undefined, fallback: number) {\n if (!value) {\n return fallback;\n }\n\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(`Invalid REST port: ${value}`);\n }\n\n return parsed;\n}\n\nexport async function startRestServer(\n options: StartRestServerOptions = {},\n): Promise<FastifyInstance> {\n const host = options.host ?? process.env.EZ_KNOW_REST_HOST ?? '127.0.0.1';\n const port =\n options.port ??\n parsePort(process.env.EZ_KNOW_REST_PORT ?? process.env.PORT, 3000);\n const knowledgeStore = await loadKnowledgeStoreFromEnv(\n process.env.EZ_KNOW_ROOT,\n );\n const app = await buildRestApp(knowledgeStore, {\n staticRoot: options.staticRoot,\n });\n\n await app.listen({ port, host });\n console.log(`ez-know REST service listening on http://${host}:${port}`);\n\n return app;\n}\n", "import { access, cp, readdir, stat } from 'node:fs/promises';\nimport { constants as fsConstants } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\n\nexport interface InitDependencies {\n stdout: (message: string) => void;\n stderr: (message: string) => void;\n promptSkillsFolderPath: () => Promise<string | undefined>;\n}\n\nexport function resolveBundledReferenceSkillsRoot() {\n const distReferenceRoot = fileURLToPath(new URL('./reference', import.meta.url));\n return distReferenceRoot;\n}\n\nasync function resolveExistingReferenceSkillsRoot() {\n const distReferenceRoot = resolveBundledReferenceSkillsRoot();\n try {\n const distRootStats = await stat(distReferenceRoot);\n if (distRootStats.isDirectory()) {\n return distReferenceRoot;\n }\n } catch {\n // Fall back to source checkout layout below.\n }\n\n return fileURLToPath(new URL('../packages/core/src/reference', import.meta.url));\n}\n\nexport async function promptForSkillsFolderPath(\n stdout: (message: string) => void,\n): Promise<string | undefined> {\n const { createInterface } = await import('node:readline/promises');\n const stdin = process.stdin;\n const prompt = createInterface({\n input: stdin,\n output: process.stdout,\n });\n\n try {\n while (true) {\n const answer = await prompt.question(\n \"Enter the agent's skills folder path: \",\n );\n const trimmedAnswer = answer.trim();\n if (trimmedAnswer.length > 0) {\n return trimmedAnswer;\n }\n\n stdout('Skills folder path cannot be empty.\\n');\n }\n } finally {\n prompt.close();\n }\n}\n\nexport async function validateSkillsFolderPath(targetRoot: string) {\n try {\n const targetStats = await stat(targetRoot);\n if (!targetStats.isDirectory()) {\n return {\n ok: false as const,\n message: `Target skills folder is not a directory: ${targetRoot}`,\n };\n }\n\n await access(targetRoot, fsConstants.W_OK);\n return {\n ok: true as const,\n targetRoot,\n };\n } catch {\n return {\n ok: false as const,\n message: `Target skills folder is unavailable or not writable: ${targetRoot}`,\n };\n }\n}\n\nexport async function installBundledReferenceSkills(targetRoot: string) {\n const referenceRoot = await resolveExistingReferenceSkillsRoot();\n const entries = await stat(referenceRoot);\n if (!entries.isDirectory()) {\n throw new Error(`Bundled reference skills root is not a directory: ${referenceRoot}`);\n }\n\n const sourceEntries = await readdir(referenceRoot, { withFileTypes: true });\n\n for (const entry of sourceEntries) {\n const sourcePath = `${referenceRoot}/${entry.name}`;\n const targetPath = `${targetRoot}/${entry.name}`;\n await cp(sourcePath, targetPath, {\n force: true,\n recursive: true,\n });\n }\n\n return {\n referenceRoot,\n targetRoot,\n };\n}\n\nexport async function runInitCommand(\n dependencies: InitDependencies,\n): Promise<number> {\n const maybeTargetRoot = await dependencies.promptSkillsFolderPath();\n if (!maybeTargetRoot) {\n dependencies.stderr('Init cancelled: no skills folder path provided.\\n');\n return 1;\n }\n\n const validation = await validateSkillsFolderPath(maybeTargetRoot);\n if (!validation.ok) {\n dependencies.stderr(`${validation.message}\\n`);\n return 1;\n }\n\n try {\n const result = await installBundledReferenceSkills(validation.targetRoot);\n dependencies.stdout(\n `Installed bundled reference skills into ${result.targetRoot}.\\n`,\n );\n return 0;\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Unknown init failure';\n dependencies.stderr(`Failed to install bundled reference skills: ${message}\\n`);\n return 1;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["existsSync", "fileURLToPath", "z", "z", "readFile", "z", "z", "readdir", "readFile", "record", "existsSync", "readFile", "join", "resolve", "join", "join", "resolveKnowledgeRoot", "z", "z", "readFile", "resolve", "join", "existsSync", "collectReferenceIds", "record", "record", "collectReferenceIds", "existsSync", "mkdir", "writeFile", "readFile", "join", "readFile", "join", "record", "resolveKnowledgeRoot", "existsSync", "mkdir", "writeFile", "resolveKnowledgeRoot", "readdir", "isAbsolute", "resolve", "sep", "z", "z", "sep", "resolve", "isAbsolute", "readdir", "resolveKnowledgeRoot", "
|
|
3
|
+
"sources": ["../src/cli.ts", "../packages/mcp/src/run.ts", "../packages/core/src/knowledge/schema.ts", "../packages/core/src/knowledge/extraction-registry.ts", "../packages/core/src/knowledge/extraction-resources.ts", "../packages/core/src/knowledge/loader.ts", "../packages/core/src/knowledge/root.ts", "../packages/core/src/knowledge/patch/storage.ts", "../packages/core/src/knowledge/patch/constants.ts", "../packages/core/src/knowledge/patch/paths.ts", "../packages/core/src/knowledge/patch/schemas.ts", "../packages/core/src/knowledge/patch/utils.ts", "../packages/core/src/knowledge/patch/simulation.ts", "../packages/core/src/knowledge/effective-state.ts", "../packages/core/src/knowledge/graphql.ts", "../packages/core/src/knowledge/schema-discovery.ts", "../packages/core/src/knowledge/resource-catalog.ts", "../packages/core/src/knowledge/patch/apply.ts", "../packages/core/src/knowledge/patch/validation.ts", "../packages/core/src/knowledge/patch/scope-audit.ts", "../packages/core/src/knowledge/patch/index.ts", "../packages/mcp/src/resources/knowledge-extraction.ts", "../packages/mcp/src/tools/compare-scope-with-evidence.ts", "../packages/mcp/src/tools/knowledge-graph.ts", "../packages/mcp/src/tools/legacy-resource-tools.ts", "../packages/mcp/src/tools/knowledge-patch-apply.ts", "../packages/mcp/src/tools/knowledge-patch.ts", "../packages/mcp/src/resources/knowledge-schema.ts", "../packages/rest/src/app.ts", "../packages/rest/src/constants.ts", "../packages/rest/src/docs.ts", "../packages/rest/src/openapi.ts", "../packages/rest/src/schema-registry.ts", "../packages/rest/src/preview.ts", "../packages/rest/src/payloads.ts", "../packages/rest/src/schemas.ts", "../packages/rest/src/routes.ts", "../packages/rest/src/run.ts", "../src/init.ts"],
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\n\nimport { existsSync, realpathSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\n\nimport { startMcpServer } from '@ez-know/mcp';\nimport { type StartRestServerOptions, startRestServer } from '@ez-know/rest';\nimport {\n promptForSkillsFolderPath,\n runInitCommand,\n} from './init.js';\n\nconst PACKAGE_NAME = 'ez-know';\nconst PACKAGE_VERSION = '0.1.0';\n\nexport interface CliDependencies {\n startMcpServer?: typeof startMcpServer;\n startRestServer?: typeof startRestServer;\n promptSkillsFolderPath?: () => Promise<string | undefined>;\n stdout?: (message: string) => void;\n stderr?: (message: string) => void;\n}\n\nfunction writeLine(writer: (message: string) => void, message: string) {\n writer(`${message}\\n`);\n}\n\nexport function renderHelpText() {\n return [\n `${PACKAGE_NAME} ${PACKAGE_VERSION}`,\n 'Knowledge base service for MCP and REST access.',\n '',\n 'Usage:',\n ` ${PACKAGE_NAME} Show this overview`,\n ` ${PACKAGE_NAME} --help Show this overview`,\n ` ${PACKAGE_NAME} -h Show this overview`,\n ` ${PACKAGE_NAME} init Prompt for a skills folder and install bundled skills`,\n ` ${PACKAGE_NAME} mcp Start the MCP server over stdio`,\n ` ${PACKAGE_NAME} rest Start the REST service and frontend`,\n '',\n 'Launch modes:',\n ' init',\n ' Prompts for a skills folder and installs bundled ez-know skills.',\n ' Config: interactive terminal',\n '',\n ' mcp',\n ' Runs the MCP server over stdio.',\n ' Config: EZ_KNOW_ROOT',\n ' Built script: npm start',\n '',\n ' rest',\n ' Runs the HTTP REST service and serves the browser UI.',\n ' Config: EZ_KNOW_ROOT, EZ_KNOW_REST_HOST, EZ_KNOW_REST_PORT, PORT',\n ' Built script: npm run start:rest',\n '',\n 'Configuration:',\n ' EZ_KNOW_ROOT Knowledge root containing domain folders and .patches',\n ' Defaults to ./ez-know under the current working directory.',\n ' EZ_KNOW_REST_HOST REST bind host (default: 127.0.0.1)',\n ' EZ_KNOW_REST_PORT REST bind port (default: 3000)',\n ' PORT Alternate REST bind port input',\n ].join('\\n');\n}\n\nfunction renderUnknownMode(mode: string) {\n return [\n `Unknown command: ${mode}`,\n `Run \\`${PACKAGE_NAME} --help\\` for usage.`,\n ].join('\\n');\n}\n\nfunction resolveRestStaticRoot() {\n const distPublicRoot = fileURLToPath(new URL('./public', import.meta.url));\n if (existsSync(distPublicRoot)) {\n return distPublicRoot;\n }\n\n const webDistRoot = fileURLToPath(\n new URL('../packages/web/dist', import.meta.url),\n );\n if (existsSync(webDistRoot)) {\n return webDistRoot;\n }\n\n return fileURLToPath(new URL('../packages/web/public', import.meta.url));\n}\n\nexport async function runCli(\n args: string[],\n dependencies: CliDependencies = {},\n) {\n const stdout =\n dependencies.stdout ?? ((message: string) => process.stdout.write(message));\n const stderr =\n dependencies.stderr ?? ((message: string) => process.stderr.write(message));\n const startMcp = dependencies.startMcpServer ?? startMcpServer;\n const startRest = dependencies.startRestServer ?? startRestServer;\n const promptSkillsFolderPath =\n dependencies.promptSkillsFolderPath ?? (() => promptForSkillsFolderPath(stdout));\n const [mode] = args;\n\n if (!mode || mode === '--help' || mode === '-h') {\n writeLine(stdout, renderHelpText());\n return 0;\n }\n\n switch (mode) {\n case 'mcp':\n await startMcp();\n return 0;\n case 'rest':\n await startRest({\n staticRoot: resolveRestStaticRoot(),\n } satisfies StartRestServerOptions);\n return 0;\n case 'init':\n if (\n dependencies.promptSkillsFolderPath === undefined &&\n (!process.stdin.isTTY || !process.stdout.isTTY)\n ) {\n writeLine(stderr, 'init requires an interactive terminal.');\n return 1;\n }\n\n return runInitCommand({\n stdout,\n stderr,\n promptSkillsFolderPath,\n });\n default:\n writeLine(stderr, renderUnknownMode(mode));\n return 1;\n }\n}\n\nfunction resolveRealPath(value: string | undefined) {\n if (!value || !existsSync(value)) {\n return undefined;\n }\n\n return realpathSync(value);\n}\n\nconst mainModulePath = resolveRealPath(process.argv[1]);\nconst currentModulePath = resolveRealPath(fileURLToPath(import.meta.url));\nconst isMainModule =\n mainModulePath !== undefined &&\n currentModulePath !== undefined &&\n mainModulePath === currentModulePath;\n\nif (isMainModule) {\n const exitCode = await runCli(process.argv.slice(2));\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n}\n", "import { McpServer, StdioServerTransport } from '@modelcontextprotocol/server';\nimport { loadEffectiveKnowledgeStoreFromEnv } from '@ez-know/core';\nimport { registerKnowledgeExtractionResources } from './resources/knowledge-extraction.js';\nimport { registerCompareScopeWithEvidenceTool } from './tools/compare-scope-with-evidence.js';\nimport { registerKnowledgeGraphTool } from './tools/knowledge-graph.js';\nimport {\n isLegacyResourceToolsEnabled,\n registerLegacyResourceTools,\n} from './tools/legacy-resource-tools.js';\nimport { registerKnowledgePatchApplyTool } from './tools/knowledge-patch-apply.js';\nimport { registerKnowledgePatchTool } from './tools/knowledge-patch.js';\nimport { registerKnowledgeSchemaResources } from './resources/knowledge-schema.js';\n\nexport function registerMcpServerCapabilities(server: McpServer) {\n registerKnowledgeSchemaResources(server);\n registerKnowledgeExtractionResources(server);\n\n if (isLegacyResourceToolsEnabled()) {\n registerLegacyResourceTools(server);\n }\n\n registerKnowledgeGraphTool(server, async () => {\n const effectiveState = await loadEffectiveKnowledgeStoreFromEnv(\n process.env.EZ_KNOW_ROOT,\n );\n return effectiveState?.store;\n });\n registerKnowledgePatchTool(server);\n registerKnowledgePatchApplyTool(server);\n registerCompareScopeWithEvidenceTool(server);\n}\n\nexport async function startMcpServer() {\n const server = new McpServer({\n name: 'ez-know',\n version: '0.1.0',\n });\n\n registerMcpServerCapabilities(server);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n", "import { extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi';\nimport { z } from 'zod/v4';\n\nextendZodWithOpenApi(z);\n\nexport const confidenceSchema = z.object({\n score: z.number().min(0).max(1),\n level: z.enum(['Low', 'Medium', 'High']),\n reason: z.string().optional(),\n});\n\nexport const certaintySchema = z.enum([\n 'confirmed',\n 'direct_evidence',\n 'inferred',\n 'weak_inference',\n 'unknown',\n]);\n\nexport const withConfidenceSchema = z.object({\n certainty: certaintySchema,\n confidence: confidenceSchema,\n evidence_ids: z.array(z.string()),\n questions: z.array(z.string()),\n});\n\nexport const evidenceSchema = z.object({\n id: z.string(),\n source_type: z.enum([\n 'code',\n 'test',\n 'ui_text',\n 'translation',\n 'api',\n 'route',\n 'schema',\n 'comment',\n 'documentation',\n 'repowise_search',\n 'human',\n 'increment_description',\n 'git_diff',\n ]),\n description: z.string(),\n location: z\n .object({\n path: z.string().optional(),\n symbol: z.string().optional(),\n route: z.string().optional(),\n api: z.string().optional(),\n query: z.string().optional(),\n })\n .optional(),\n supports: z.array(z.string()),\n excerpt: z.string().optional(),\n confidence: confidenceSchema,\n});\n\nexport const domainSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n purpose: z.string(),\n why_it_exists: z.string().optional(),\n entity_ids: z.array(z.string()),\n capability_ids: z.array(z.string()),\n});\n\nexport const entityTechnicalRepresentationSchema = z.object({\n kind: z.enum([\n 'type',\n 'api',\n 'route',\n 'database',\n 'ui_label',\n 'translation',\n 'unknown',\n ]),\n name: z.string(),\n location_hint: z.string().optional(),\n});\n\nexport const entitySchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n business_definition: z.string(),\n description: z.string(),\n purpose: z.string().optional(),\n aliases: z.array(z.string()),\n ambiguous_terms: z.array(z.string()),\n technical_representations: z.array(entityTechnicalRepresentationSchema),\n domain_ids: z.array(z.string()),\n state_values: z.array(z.string()).optional(),\n relationship_ids: z.array(z.string()),\n capability_ids: z.array(z.string()),\n feature_ids: z.array(z.string()),\n rule_ids: z.array(z.string()),\n});\n\nexport const relationshipSchema = withConfidenceSchema.extend({\n id: z.string(),\n from_entity_id: z.string(),\n to_entity_id: z.string(),\n relationship_type: z.enum([\n 'has_many',\n 'has_one',\n 'belongs_to',\n 'depends_on',\n 'references',\n 'transitions_to',\n 'unknown',\n ]),\n description: z.string(),\n});\n\nexport const capabilitySchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n why_it_exists: z.string().optional(),\n domain_ids: z.array(z.string()),\n entity_ids: z.array(z.string()),\n parent_capability_ids: z.array(z.string()),\n child_capability_ids: z.array(z.string()),\n feature_ids: z.array(z.string()),\n});\n\nexport const featureSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n purpose: z.string().optional(),\n why_it_exists: z.string().optional(),\n domain_ids: z.array(z.string()),\n capability_ids: z.array(z.string()),\n entity_ids: z.array(z.string()),\n rule_ids: z.array(z.string()),\n constraint_ids: z.array(z.string()),\n});\n\nexport const ruleConditionSchema = z.object({\n subject: z.string(),\n field: z.string().optional(),\n operator: z.enum([\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'exists',\n 'not_exists',\n 'greater_than',\n 'less_than',\n 'succeeds',\n 'fails',\n 'unknown',\n ]),\n value: z.unknown().optional(),\n});\n\nexport const ruleTriggerSchema = z.object({\n actor: z.string(),\n action: z.string(),\n subject: z.string().optional(),\n field: z.string().optional(),\n operator: z\n .enum([\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'exists',\n 'not_exists',\n 'greater_than',\n 'less_than',\n 'succeeds',\n 'fails',\n 'unknown',\n ])\n .optional(),\n value: z.unknown().optional(),\n});\n\nexport const ruleEffectSchema = z.object({\n effect: z.enum([\n 'allow_action',\n 'disallow_action',\n 'hide_action',\n 'disable_action',\n 'require_action',\n 'show_message',\n 'change_state',\n 'calculate_value',\n 'unknown',\n ]),\n action: z.string().optional(),\n message: z.string().optional(),\n target_state: z.string().optional(),\n value: z.unknown().optional(),\n});\n\nexport const businessRuleSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n statement: z.string(),\n rule_type: z.enum([\n 'validation',\n 'permission',\n 'state_transition',\n 'visibility',\n 'workflow',\n 'calculation',\n 'integration',\n 'integration_behavior',\n 'data_consistency',\n 'acceptance_criterion',\n 'unknown',\n ]),\n behavior_type: z.enum([\n 'allow',\n 'disallow',\n 'require',\n 'calculate',\n 'show',\n 'hide',\n 'transition',\n 'notify',\n 'block',\n 'default',\n 'unknown',\n ]),\n applies_to: z.object({\n domain_ids: z.array(z.string()).optional(),\n entity_ids: z.array(z.string()).optional(),\n capability_ids: z.array(z.string()).optional(),\n feature_ids: z.array(z.string()).optional(),\n }),\n condition: z\n .object({\n given: z.array(ruleConditionSchema),\n when: z.array(ruleTriggerSchema),\n then: z.array(ruleEffectSchema),\n })\n .optional(),\n enforcement: z\n .object({\n level: z.enum([\n 'ui',\n 'api',\n 'backend',\n 'database',\n 'external_system',\n 'unknown',\n ]),\n description: z.string().optional(),\n })\n .optional(),\n related_constraint_ids: z.array(z.string()),\n rationale_ids: z.array(z.string()),\n});\n\nexport const constraintSchema = withConfidenceSchema.extend({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n constraint_type: z.enum([\n 'business',\n 'technical',\n 'regulatory',\n 'compliance',\n 'integration',\n 'legacy',\n 'architecture',\n 'infrastructure',\n 'performance',\n 'security',\n 'operational',\n 'data_model',\n 'unknown',\n ]),\n cause: z\n .object({\n source: z.string(),\n source_type: z.enum([\n 'external_system',\n 'database',\n 'framework',\n 'infrastructure',\n 'architecture',\n 'policy',\n 'regulation',\n 'business_process',\n 'legacy_code',\n 'unknown',\n ]),\n description: z.string(),\n })\n .optional(),\n impact: z\n .object({\n affected_change_types: z.array(z.string()),\n severity: z.enum(['low', 'medium', 'high', 'critical', 'unknown']),\n description: z.string(),\n })\n .optional(),\n applies_to: z.object({\n domain_ids: z.array(z.string()).optional(),\n entity_ids: z.array(z.string()).optional(),\n capability_ids: z.array(z.string()).optional(),\n feature_ids: z.array(z.string()).optional(),\n business_rule_ids: z.array(z.string()).optional(),\n }),\n workaround: z\n .object({\n exists: z.enum(['yes', 'no', 'unknown']),\n description: z.string().optional(),\n })\n .optional(),\n removability: z\n .object({\n can_be_removed_by_refactor: z.enum(['yes', 'no', 'partially', 'unknown']),\n requires: z.array(z.string()),\n risk: z.enum(['low', 'medium', 'high', 'critical', 'unknown']),\n })\n .optional(),\n});\n\nexport const rationaleSchema = withConfidenceSchema.extend({\n id: z.string(),\n statement: z.string(),\n explains: z.array(z.string()),\n});\n\nexport const questionSchema = z.object({\n id: z.string(),\n question: z.string(),\n category: z.enum([\n 'rationale',\n 'business_rule',\n 'constraint',\n 'terminology',\n 'domain_boundary',\n 'lifecycle',\n 'permission',\n 'legacy',\n 'ownership',\n 'enforcement',\n ]),\n reason: z.string(),\n impact: z.string().optional(),\n related_ids: z.array(z.string()),\n evidence_ids: z.array(z.string()),\n priority: z.enum(['low', 'medium', 'high']),\n status: z.enum(['open', 'answered', 'obsolete']),\n answer: z.string().nullable().optional(),\n answered_by: z.string().nullable().optional(),\n answered_at: z.string().nullable().optional(),\n});\n\nexport const conflictSchema = z.object({\n id: z.string(),\n type: z.enum([\n 'domain_boundary',\n 'terminology',\n 'rule_conflict',\n 'rationale_conflict',\n 'entity_duplicate',\n 'relationship_conflict',\n ]),\n description: z.string(),\n related_ids: z.array(z.string()),\n evidence_ids: z.array(z.string()),\n status: z.enum(['needs_human_input', 'resolved', 'obsolete']),\n questions: z.array(z.string()),\n resolution: z.string().optional(),\n resolved_by_evidence_id: z.string().optional(),\n});\n\nexport const knowledgeCollectionSchemas = {\n domains: z.array(domainSchema),\n entities: z.array(entitySchema),\n relationships: z.array(relationshipSchema),\n capabilities: z.array(capabilitySchema),\n features: z.array(featureSchema),\n business_rules: z.array(businessRuleSchema),\n constraints: z.array(constraintSchema),\n rationales: z.array(rationaleSchema),\n evidence: z.array(evidenceSchema),\n questions: z.array(questionSchema),\n conflicts: z.array(conflictSchema),\n} as const;\n\nexport const knowledgeCollectionSchemaNames = {\n domains: 'Domain',\n entities: 'Entity',\n relationships: 'EntityRelationship',\n capabilities: 'Capability',\n features: 'Feature',\n business_rules: 'BusinessRule',\n constraints: 'Constraint',\n rationales: 'Rationale',\n evidence: 'Evidence',\n questions: 'Question',\n conflicts: 'Conflict',\n} as const;\n\nexport type KnowledgeCollectionSchemaName =\n (typeof knowledgeCollectionSchemaNames)[keyof typeof knowledgeCollectionSchemaNames];\n", "import type { ZodTypeAny } from 'zod/v4';\n\nimport {\n businessRuleSchema,\n capabilitySchema,\n conflictSchema,\n constraintSchema,\n domainSchema,\n entitySchema,\n evidenceSchema,\n featureSchema,\n questionSchema,\n rationaleSchema,\n relationshipSchema,\n} from './schema.js';\nimport type { KnowledgeCollectionName } from './types.js';\n\nexport type KnowledgeExtractionIdConvention = {\n pattern: string;\n prefix: string;\n example: string;\n};\n\nexport type KnowledgeExtractionTypeDefinition = {\n collection: KnowledgeCollectionName;\n title: string;\n storageFile: string;\n idConvention: KnowledgeExtractionIdConvention;\n schemaName: string;\n schema: ZodTypeAny;\n guideFilePath: string;\n aliases: string[];\n};\n\nexport const KNOWLEDGE_EXTRACTION_TYPE_REGISTRY = {\n domains: {\n collection: 'domains',\n title: 'Domains',\n storageFile: 'domain.json',\n idConvention: {\n pattern: 'domain.<domain-slug>',\n prefix: 'domain',\n example: 'domain.orders',\n },\n schemaName: 'Domain',\n schema: domainSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/domains.md',\n aliases: [],\n },\n entities: {\n collection: 'entities',\n title: 'Entities',\n storageFile: 'entities.json',\n idConvention: {\n pattern: 'entity.<domain-slug>.<entity-slug>',\n prefix: 'entity',\n example: 'entity.orders.order',\n },\n schemaName: 'Entity',\n schema: entitySchema,\n guideFilePath: 'packages/core/src/knowledge/guides/entities.md',\n aliases: [],\n },\n relationships: {\n collection: 'relationships',\n title: 'Relationships',\n storageFile: 'relationships.json',\n idConvention: {\n pattern: 'rel.<domain-slug>.<relationship-slug>',\n prefix: 'rel',\n example: 'rel.orders.order-has-items',\n },\n schemaName: 'EntityRelationship',\n schema: relationshipSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/relationships.md',\n aliases: ['entity-relationships'],\n },\n capabilities: {\n collection: 'capabilities',\n title: 'Capabilities',\n storageFile: 'capabilities.json',\n idConvention: {\n pattern: 'cap.<domain-slug>.<capability-slug>',\n prefix: 'cap',\n example: 'cap.orders.order-lifecycle',\n },\n schemaName: 'Capability',\n schema: capabilitySchema,\n guideFilePath: 'packages/core/src/knowledge/guides/capabilities.md',\n aliases: [],\n },\n features: {\n collection: 'features',\n title: 'Features',\n storageFile: 'features.json',\n idConvention: {\n pattern: 'feature.<domain-slug>.<feature-slug>',\n prefix: 'feature',\n example: 'feature.orders.cancel-order',\n },\n schemaName: 'Feature',\n schema: featureSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/features.md',\n aliases: [],\n },\n business_rules: {\n collection: 'business_rules',\n title: 'Business Rules',\n storageFile: 'business-rules.json',\n idConvention: {\n pattern: 'rule.<domain-slug>.<rule-slug>',\n prefix: 'rule',\n example: 'rule.orders.no-direct-cancel-paid-order',\n },\n schemaName: 'BusinessRule',\n schema: businessRuleSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/business-rules.md',\n aliases: ['business-rules'],\n },\n constraints: {\n collection: 'constraints',\n title: 'Constraints',\n storageFile: 'constraints.json',\n idConvention: {\n pattern: 'constraint.<domain-slug>.<constraint-slug>',\n prefix: 'constraint',\n example: 'constraint.orders.erp-sync-one-way',\n },\n schemaName: 'Constraint',\n schema: constraintSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/constraints.md',\n aliases: [],\n },\n rationales: {\n collection: 'rationales',\n title: 'Rationales',\n storageFile: 'rationales.json',\n idConvention: {\n pattern: 'why.<domain-slug>.<rationale-slug>',\n prefix: 'why',\n example: 'why.orders.refund-required-for-paid-order',\n },\n schemaName: 'Rationale',\n schema: rationaleSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/rationales.md',\n aliases: [],\n },\n evidence: {\n collection: 'evidence',\n title: 'Evidence',\n storageFile: 'evidence.json',\n idConvention: {\n pattern: 'ev.<domain-slug>.<evidence-slug>',\n prefix: 'ev',\n example: 'ev.orders.cancel-disabled-paid',\n },\n schemaName: 'Evidence',\n schema: evidenceSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/evidence.md',\n aliases: [],\n },\n questions: {\n collection: 'questions',\n title: 'Questions',\n storageFile: 'questions.json',\n idConvention: {\n pattern: 'q.<domain-slug>.<question-slug>',\n prefix: 'q',\n example: 'q.orders.paid-cancel-rationale',\n },\n schemaName: 'Question',\n schema: questionSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/questions.md',\n aliases: [],\n },\n conflicts: {\n collection: 'conflicts',\n title: 'Conflicts',\n storageFile: 'conflicts.json',\n idConvention: {\n pattern: 'conflict.<domain-slug>.<conflict-slug>',\n prefix: 'conflict',\n example: 'conflict.invoice-domain',\n },\n schemaName: 'Conflict',\n schema: conflictSchema,\n guideFilePath: 'packages/core/src/knowledge/guides/conflicts.md',\n aliases: [],\n },\n} as const satisfies Record<\n KnowledgeCollectionName,\n KnowledgeExtractionTypeDefinition\n>;\n\nexport const KNOWLEDGE_EXTRACTION_TYPES = Object.values(\n KNOWLEDGE_EXTRACTION_TYPE_REGISTRY,\n);\n\nconst KNOWLEDGE_EXTRACTION_TYPE_LOOKUP: Map<\n string,\n KnowledgeExtractionTypeDefinition\n> = new Map(\n KNOWLEDGE_EXTRACTION_TYPES.flatMap((definition) => [\n [definition.collection, definition] as const,\n ...definition.aliases.map((alias) => [alias, definition] as const),\n ]),\n);\n\nexport function listKnowledgeExtractionTypes() {\n return KNOWLEDGE_EXTRACTION_TYPES.slice();\n}\n\nexport function getKnowledgeExtractionTypeDefinition(type: string) {\n const normalized = type.trim().toLowerCase().replace(/-/g, '_');\n const exactMatch = KNOWLEDGE_EXTRACTION_TYPE_LOOKUP.get(normalized);\n if (exactMatch) {\n return exactMatch;\n }\n\n return KNOWLEDGE_EXTRACTION_TYPE_LOOKUP.get(type.trim().toLowerCase());\n}\n\nexport function requireKnowledgeExtractionTypeDefinition(type: string) {\n const definition = getKnowledgeExtractionTypeDefinition(type);\n if (!definition) {\n throw new Error(\n `Unsupported extraction type \"${type}\". Supported types: ${KNOWLEDGE_EXTRACTION_TYPES.map(\n (entry) => entry.collection,\n ).join(', ')}`,\n );\n }\n\n return definition;\n}\n\nexport function buildKnowledgeExtractionSchemaUri(type: string) {\n return `ez-know://extraction/schema/${requireKnowledgeExtractionTypeDefinition(type).collection}`;\n}\n\nexport function buildKnowledgeExtractionGuideUri(type: string) {\n return `ez-know://extraction/guide/${requireKnowledgeExtractionTypeDefinition(type).collection}`;\n}\n", "import { readFile } from 'node:fs/promises';\n\nimport { z } from 'zod/v4';\n\nimport {\n buildKnowledgeExtractionGuideUri,\n buildKnowledgeExtractionSchemaUri,\n KNOWLEDGE_EXTRACTION_TYPES,\n listKnowledgeExtractionTypes,\n type KnowledgeExtractionTypeDefinition,\n requireKnowledgeExtractionTypeDefinition,\n} from './extraction-registry.js';\n\nexport const KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI =\n 'ez-know://extraction/types';\n\nexport const KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI =\n 'ez-know://extraction/schema/{type}';\n\nexport const KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI =\n 'ez-know://extraction/guide/{type}';\n\nexport type KnowledgeExtractionTypeResource = {\n collection: string;\n title: string;\n aliases: string[];\n storageFile: string;\n idConvention: {\n pattern: string;\n prefix: string;\n example: string;\n };\n schemaUri: string;\n guideUri: string;\n};\n\nexport type KnowledgeExtractionTypeIndexDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'registry';\n count: number;\n };\n supportedTypes: KnowledgeExtractionTypeResource[];\n};\n\nexport type KnowledgeExtractionSchemaDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-zod';\n collection: string;\n schemaName: string;\n storageFile: string;\n guideUri: string;\n };\n type: KnowledgeExtractionTypeResource;\n schema: any;\n};\n\nexport type KnowledgeExtractionGuideDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'checked-in-markdown';\n filePath: string;\n };\n type: KnowledgeExtractionTypeResource;\n markdown: string;\n};\n\nfunction createKnowledgeExtractionTypeResource(\n definition: KnowledgeExtractionTypeDefinition,\n): KnowledgeExtractionTypeResource {\n return {\n collection: definition.collection,\n title: definition.title,\n aliases: definition.aliases.slice(),\n storageFile: definition.storageFile,\n idConvention: { ...definition.idConvention },\n schemaUri: buildKnowledgeExtractionSchemaUri(definition.collection),\n guideUri: buildKnowledgeExtractionGuideUri(definition.collection),\n };\n}\n\nexport function buildKnowledgeExtractionTypeIndexDocument(): KnowledgeExtractionTypeIndexDocument {\n const supportedTypes = listKnowledgeExtractionTypes().map(\n createKnowledgeExtractionTypeResource,\n );\n\n return {\n resource: {\n uri: KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n title: 'Knowledge Extraction Types',\n description:\n 'Canonical registry of knowledge types supported by the extraction workflow.',\n },\n source: {\n kind: 'registry',\n count: supportedTypes.length,\n },\n supportedTypes,\n };\n}\n\nexport function buildKnowledgeExtractionSchemaDocument(\n type: string,\n): KnowledgeExtractionSchemaDocument {\n const definition = requireKnowledgeExtractionTypeDefinition(type);\n const resource = createKnowledgeExtractionTypeResource(definition);\n\n return {\n resource: {\n uri: resource.schemaUri,\n title: `${definition.title} Extraction Schema`,\n description:\n 'Runtime JSON Schema view of the canonical knowledge object model.',\n },\n source: {\n kind: 'runtime-zod',\n collection: definition.collection,\n schemaName: definition.schemaName,\n storageFile: definition.storageFile,\n guideUri: resource.guideUri,\n },\n type: resource,\n schema: z.toJSONSchema(definition.schema),\n };\n}\n\nexport async function readKnowledgeExtractionGuideMarkdown(type: string) {\n const definition = requireKnowledgeExtractionTypeDefinition(type);\n const guideFileName = definition.guideFilePath.split('/').pop();\n if (!guideFileName) {\n throw new Error(\n `Invalid guide file path for extraction type \"${definition.collection}\".`,\n );\n }\n\n const guideUrl = new URL(`./guides/${guideFileName}`, import.meta.url);\n const markdown = await readFile(guideUrl, 'utf8');\n\n return {\n definition,\n markdown,\n };\n}\n\nexport async function buildKnowledgeExtractionGuideDocument(\n type: string,\n): Promise<KnowledgeExtractionGuideDocument> {\n const definition = requireKnowledgeExtractionTypeDefinition(type);\n const resource = createKnowledgeExtractionTypeResource(definition);\n const { markdown } = await readKnowledgeExtractionGuideMarkdown(type);\n\n return {\n resource: {\n uri: resource.guideUri,\n title: `${definition.title} Extraction Guide`,\n description:\n 'Checked-in Markdown guidance for extracting this knowledge type.',\n },\n source: {\n kind: 'checked-in-markdown',\n filePath: definition.guideFilePath,\n },\n type: resource,\n markdown,\n };\n}\n\nexport function listKnowledgeExtractionResourceTypes() {\n return listKnowledgeExtractionTypes().map(\n createKnowledgeExtractionTypeResource,\n );\n}\n", "import { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport { basename, join, resolve } from 'node:path';\nimport { z } from 'zod/v4';\n\nimport {\n businessRuleSchema,\n capabilitySchema,\n conflictSchema,\n constraintSchema,\n domainSchema,\n entitySchema,\n evidenceSchema,\n featureSchema,\n rationaleSchema,\n relationshipSchema,\n questionSchema,\n} from './schema.js';\nimport { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from './extraction-registry.js';\nimport type {\n BusinessRule,\n Capability,\n Conflict,\n Constraint,\n Domain,\n Entity,\n EntityRelationship,\n Evidence,\n Feature,\n KnowledgeCollectionName,\n KnowledgeLoadDiagnostic,\n KnowledgeRecord,\n KnowledgeStore,\n NormalizedKnowledgeStore,\n Question,\n Rationale,\n} from './types.js';\nimport { resolveKnowledgeRootFromEnv } from './root.js';\n\nconst COLLECTION_REFERENCE_FIELDS: Record<KnowledgeCollectionName, string[]> = {\n domains: ['entity_ids', 'capability_ids'],\n entities: [\n 'domain_ids',\n 'relationship_ids',\n 'capability_ids',\n 'feature_ids',\n 'rule_ids',\n ],\n relationships: ['from_entity_id', 'to_entity_id'],\n capabilities: [\n 'domain_ids',\n 'entity_ids',\n 'parent_capability_ids',\n 'child_capability_ids',\n 'feature_ids',\n ],\n features: [\n 'domain_ids',\n 'capability_ids',\n 'entity_ids',\n 'rule_ids',\n 'constraint_ids',\n ],\n business_rules: [\n 'domain_ids',\n 'entity_ids',\n 'capability_ids',\n 'feature_ids',\n 'related_constraint_ids',\n 'rationale_ids',\n ],\n constraints: [\n 'domain_ids',\n 'entity_ids',\n 'capability_ids',\n 'feature_ids',\n 'business_rule_ids',\n ],\n rationales: ['explains'],\n evidence: ['supports'],\n questions: ['related_ids', 'evidence_ids'],\n conflicts: [\n 'related_ids',\n 'evidence_ids',\n 'questions',\n 'resolved_by_evidence_id',\n ],\n};\n\nconst COLLECTION_SCHEMAS = {\n domains: z.array(domainSchema),\n entities: z.array(entitySchema),\n relationships: z.array(relationshipSchema),\n capabilities: z.array(capabilitySchema),\n features: z.array(featureSchema),\n business_rules: z.array(businessRuleSchema),\n constraints: z.array(constraintSchema),\n rationales: z.array(rationaleSchema),\n evidence: z.array(evidenceSchema),\n questions: z.array(questionSchema),\n conflicts: z.array(conflictSchema),\n} as const;\n\nconst COLLECTION_DEFINITIONS = KNOWLEDGE_EXTRACTION_TYPE_REGISTRY;\n\nexport class KnowledgeStoreLoadError extends Error {\n diagnostics: KnowledgeLoadDiagnostic[];\n\n constructor(message: string, diagnostics: KnowledgeLoadDiagnostic[]) {\n super(message);\n this.name = 'KnowledgeStoreLoadError';\n this.diagnostics = diagnostics;\n }\n}\n\nexport function resolveKnowledgeRoot(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return resolveKnowledgeRootFromEnv(envValue, cwd);\n}\n\nexport async function discoverDomainFolders(\n rootDir: string,\n): Promise<string[]> {\n const { readdir } = await import('node:fs/promises');\n const discovered: string[] = [];\n\n const entries = await readdir(rootDir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory() && !entry.name.startsWith('.')) {\n discovered.push(join(rootDir, entry.name));\n }\n }\n\n discovered.sort((left, right) => left.localeCompare(right));\n return discovered;\n}\n\nfunction readDiagnostic(\n kind: KnowledgeLoadDiagnostic['kind'],\n path: string | undefined,\n message: string,\n id?: string,\n): KnowledgeLoadDiagnostic {\n return {\n kind,\n path,\n id,\n message,\n };\n}\n\nasync function readCanonicalFile(\n filePath: string,\n schema: z.ZodTypeAny,\n): Promise<unknown> {\n let raw: string;\n try {\n raw = await readFile(filePath, 'utf8');\n } catch (error) {\n throw new KnowledgeStoreLoadError(\n `Failed to read canonical knowledge file: ${filePath}`,\n [\n readDiagnostic(\n 'missing_domain_file',\n filePath,\n `Unable to read canonical file: ${filePath}`,\n ),\n ],\n );\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch (error) {\n throw new KnowledgeStoreLoadError(\n `Invalid JSON in canonical knowledge file: ${filePath}`,\n [readDiagnostic('invalid_json', filePath, `Invalid JSON in ${filePath}`)],\n );\n }\n\n try {\n return schema.parse(parsed);\n } catch (error) {\n throw new KnowledgeStoreLoadError(\n `Invalid knowledge schema in canonical file: ${filePath}`,\n [\n readDiagnostic(\n 'invalid_shape',\n filePath,\n `Invalid canonical file shape in ${filePath}`,\n ),\n ],\n );\n }\n}\n\nfunction validateIdPrefix(\n collection: KnowledgeCollectionName,\n id: string,\n domainSlug: string,\n) {\n const definition = COLLECTION_DEFINITIONS[collection];\n if (collection === 'domains') {\n const expectedId = `domain.${domainSlug}`;\n if (id !== expectedId) {\n return `Expected ${id} to equal ${expectedId}`;\n }\n\n return undefined;\n }\n\n const expectedPrefix = `${definition.idConvention.prefix}.${domainSlug}.`;\n if (!id.startsWith(expectedPrefix)) {\n return `Expected ${id} to start with ${expectedPrefix}`;\n }\n\n return undefined;\n}\n\nfunction getDomainId(domainSlug: string) {\n return `domain.${domainSlug}`;\n}\n\nfunction emptyStore(rootDir: string): KnowledgeStore {\n return {\n rootDir,\n sourceFiles: [],\n domains: [],\n entities: [],\n relationships: [],\n capabilities: [],\n features: [],\n business_rules: [],\n constraints: [],\n rationales: [],\n evidence: [],\n questions: [],\n conflicts: [],\n byCollection: {\n domains: new Map(),\n entities: new Map(),\n relationships: new Map(),\n capabilities: new Map(),\n features: new Map(),\n business_rules: new Map(),\n constraints: new Map(),\n rationales: new Map(),\n evidence: new Map(),\n questions: new Map(),\n conflicts: new Map(),\n },\n byId: new Map(),\n reverseReferences: new Map(),\n diagnostics: [],\n };\n}\n\nfunction addRecord(\n store: KnowledgeStore,\n collection: KnowledgeCollectionName,\n record: KnowledgeRecord,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n if (store.byId.has(record.id)) {\n diagnostics.push(\n readDiagnostic(\n 'duplicate_id',\n undefined,\n `Duplicate knowledge id detected: ${record.id}`,\n record.id,\n ),\n );\n return;\n }\n\n store.byId.set(record.id, record);\n store.byCollection[collection].set(record.id, record);\n store[collection].push(record as never);\n}\n\nfunction validateFolderRecordIds(\n collection: KnowledgeCollectionName,\n records: KnowledgeRecord[],\n domainSlug: string,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n for (const record of records) {\n const message = validateIdPrefix(collection, record.id, domainSlug);\n if (message) {\n diagnostics.push(\n readDiagnostic('invalid_domain_id', undefined, message, record.id),\n );\n }\n }\n}\n\nfunction collectReferenceIds(record: KnowledgeRecord): string[] {\n if ('relationship_type' in record) {\n return [\n (record as EntityRelationship).from_entity_id,\n (record as EntityRelationship).to_entity_id,\n ];\n }\n\n if ('business_definition' in record) {\n const entity = record as Entity;\n return [\n ...entity.domain_ids,\n ...entity.relationship_ids,\n ...entity.capability_ids,\n ...entity.feature_ids,\n ...entity.rule_ids,\n ];\n }\n\n if ('behavior_type' in record) {\n const rule = record as BusinessRule;\n return [\n ...(rule.applies_to.domain_ids ?? []),\n ...(rule.applies_to.entity_ids ?? []),\n ...(rule.applies_to.capability_ids ?? []),\n ...(rule.applies_to.feature_ids ?? []),\n ...rule.related_constraint_ids,\n ...rule.rationale_ids,\n ];\n }\n\n if ('constraint_type' in record) {\n const constraint = record as Constraint;\n return [\n ...(constraint.applies_to.domain_ids ?? []),\n ...(constraint.applies_to.entity_ids ?? []),\n ...(constraint.applies_to.capability_ids ?? []),\n ...(constraint.applies_to.feature_ids ?? []),\n ...(constraint.applies_to.business_rule_ids ?? []),\n ];\n }\n\n if ('parent_capability_ids' in record) {\n const capability = record as Capability;\n return [\n ...capability.domain_ids,\n ...capability.entity_ids,\n ...capability.parent_capability_ids,\n ...capability.child_capability_ids,\n ...capability.feature_ids,\n ];\n }\n\n if ('rule_ids' in record && 'constraint_ids' in record) {\n const feature = record as Feature;\n return [\n ...feature.domain_ids,\n ...feature.capability_ids,\n ...feature.entity_ids,\n ...feature.rule_ids,\n ...feature.constraint_ids,\n ];\n }\n\n if (\n 'entity_ids' in record &&\n 'capability_ids' in record &&\n 'why_it_exists' in record &&\n !('business_definition' in record) &&\n !('parent_capability_ids' in record) &&\n !('constraint_ids' in record) &&\n !('rule_ids' in record)\n ) {\n const domain = record as Domain;\n return [...domain.entity_ids, ...domain.capability_ids];\n }\n\n if ('explains' in record) {\n return (record as Rationale).explains;\n }\n\n if ('source_type' in record) {\n return (record as Evidence).supports;\n }\n\n if ('priority' in record) {\n const question = record as Question;\n return [...question.related_ids, ...question.evidence_ids];\n }\n\n const conflict = record as Conflict;\n return [\n ...conflict.related_ids,\n ...conflict.evidence_ids,\n ...conflict.questions,\n ];\n}\n\nfunction buildReverseReferences(store: KnowledgeStore) {\n for (const record of store.byId.values()) {\n const references = collectReferenceIds(record);\n for (const referenceId of references) {\n const reverse = store.reverseReferences.get(referenceId) ?? [];\n reverse.push(record.id);\n store.reverseReferences.set(referenceId, reverse);\n }\n }\n}\n\nfunction validateReferences(\n store: KnowledgeStore,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n for (const record of store.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n if (!store.byId.has(referenceId)) {\n diagnostics.push(\n readDiagnostic(\n 'invalid_reference',\n undefined,\n `Unknown reference id \"${referenceId}\" from record \"${record.id}\"`,\n record.id,\n ),\n );\n }\n }\n }\n}\n\nfunction finalizeStore(\n store: KnowledgeStore,\n diagnostics: KnowledgeLoadDiagnostic[],\n) {\n store.diagnostics = diagnostics;\n if (diagnostics.length > 0) {\n throw new KnowledgeStoreLoadError(\n diagnostics.map((diagnostic) => diagnostic.message).join('; '),\n diagnostics,\n );\n }\n\n return store;\n}\n\nexport async function loadKnowledgeStoreFromRoot(\n rootDir: string,\n): Promise<NormalizedKnowledgeStore> {\n if (!existsSync(rootDir)) {\n throw new KnowledgeStoreLoadError(\n `Knowledge root does not exist: ${rootDir}`,\n [\n readDiagnostic(\n 'missing_root',\n rootDir,\n `Knowledge root does not exist: ${rootDir}`,\n ),\n ],\n );\n }\n\n const diagnostics: KnowledgeLoadDiagnostic[] = [];\n const store = emptyStore(rootDir);\n const domainFolders = await discoverDomainFolders(rootDir);\n const sourceFiles: string[] = [];\n\n for (const domainFolder of domainFolders) {\n const domainSlug = basename(domainFolder);\n const domainFile = join(\n domainFolder,\n COLLECTION_DEFINITIONS.domains.storageFile,\n );\n if (!existsSync(domainFile)) {\n diagnostics.push(\n readDiagnostic(\n 'missing_domain_file',\n domainFile,\n `Missing canonical domain file: ${domainFile}`,\n ),\n );\n continue;\n }\n\n const domain = (await readCanonicalFile(\n domainFile,\n domainSchema,\n )) as Domain;\n sourceFiles.push(domainFile);\n validateFolderRecordIds('domains', [domain], domainSlug, diagnostics);\n\n const domainId = getDomainId(domainSlug);\n if (domain.id !== domainId) {\n diagnostics.push(\n readDiagnostic(\n 'invalid_domain_id',\n domainFile,\n `Domain id \"${domain.id}\" must match folder slug \"${domainSlug}\"`,\n domain.id,\n ),\n );\n }\n\n addRecord(store, 'domains', domain, diagnostics);\n\n for (const collection of Object.keys(\n COLLECTION_DEFINITIONS,\n ) as KnowledgeCollectionName[]) {\n if (collection === 'domains') {\n continue;\n }\n\n const fileName = COLLECTION_DEFINITIONS[collection].storageFile;\n const filePath = join(domainFolder, fileName);\n if (!existsSync(filePath)) {\n continue;\n }\n\n const parsed = (await readCanonicalFile(\n filePath,\n COLLECTION_SCHEMAS[collection],\n )) as KnowledgeRecord[];\n sourceFiles.push(filePath);\n validateFolderRecordIds(\n collection,\n parsed as KnowledgeRecord[],\n domainSlug,\n diagnostics,\n );\n\n for (const record of parsed as KnowledgeRecord[]) {\n addRecord(store, collection, record, diagnostics);\n }\n }\n }\n\n store.sourceFiles = sourceFiles.sort((left, right) =>\n left.localeCompare(right),\n );\n buildReverseReferences(store);\n validateReferences(store, diagnostics);\n\n return finalizeStore(store, diagnostics);\n}\n\nexport async function loadKnowledgeStoreFromEnv(\n envValue: string | undefined,\n cwd = process.cwd(),\n): Promise<NormalizedKnowledgeStore | undefined> {\n const rootDir = resolveKnowledgeRoot(envValue, cwd);\n if (!rootDir || !existsSync(rootDir)) {\n return undefined;\n }\n\n return loadKnowledgeStoreFromRoot(rootDir);\n}\n\nexport function getCollectionRecords(\n store: NormalizedKnowledgeStore,\n collection: KnowledgeCollectionName,\n) {\n return store[collection] as KnowledgeRecord[];\n}\n\nexport function asKnowledgeStore(\n store: NormalizedKnowledgeStore,\n): KnowledgeStore {\n return store;\n}\n", "import { resolve } from 'node:path';\n\nexport function resolveKnowledgeRootFromEnv(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return envValue ? resolve(cwd, envValue) : resolve(cwd, 'ez-know');\n}\n", "import { existsSync } from 'node:fs';\nimport { mkdir, readFile, readdir, writeFile } from 'node:fs/promises';\nimport { isAbsolute, join, normalize, resolve, sep } from 'node:path';\nimport { z } from 'zod/v4';\n\nimport { KNOWLEDGE_PATCH_SCHEMA_VERSION } from './constants.js';\nimport {\n resolveKnowledgePatchDirectory,\n resolveKnowledgePatchRoot,\n patchMetadataPath,\n patchOperationsPath,\n} from './paths.js';\nimport {\n addOperationInputSchema,\n createPatchInputSchema,\n knowledgePatchMetadataSchema,\n knowledgePatchOperationSchema,\n knowledgePatchOperationsEnvelopeSchema,\n updatePatchMetadataInputSchema,\n updateOperationInputSchema,\n} from './schemas.js';\nimport type {\n KnowledgePatchMetadata,\n KnowledgePatchMetadataUpdateInput,\n KnowledgePatchOmittedFile,\n KnowledgePatchOperationsEnvelope,\n KnowledgePatchState,\n KnowledgePatchSummary,\n} from './types.js';\nimport { buildOperationId, buildPatchId, nowIso } from './utils.js';\n\nasync function ensurePatchRoot(rootDir: string) {\n await mkdir(rootDir, { recursive: true });\n}\n\nasync function writeJsonFile(filePath: string, value: unknown) {\n await writeFile(filePath, `${JSON.stringify(value, null, 2)}\\n`, 'utf8');\n}\n\nasync function readJsonFile<T>(\n filePath: string,\n schema: z.ZodType<T>,\n): Promise<T> {\n const raw = await readFile(filePath, 'utf8');\n const parsed = JSON.parse(raw) as unknown;\n return schema.parse(parsed);\n}\n\nfunction normalizeRootFolder(rootFolder: string, cwd = process.cwd()) {\n return resolve(cwd, rootFolder);\n}\n\nfunction normalizeRepositoryRelativePath(inputPath: string) {\n const trimmed = inputPath.trim().replaceAll('\\\\', '/');\n if (!trimmed) {\n throw new Error('Omitted file path must not be empty.');\n }\n if (isAbsolute(trimmed)) {\n throw new Error(\n `Omitted file path \"${inputPath}\" must be repository-relative.`,\n );\n }\n\n const normalized = normalize(trimmed).replaceAll(sep, '/');\n if (\n normalized === '.' ||\n normalized === '..' ||\n normalized.startsWith('../')\n ) {\n throw new Error(\n `Omitted file path \"${inputPath}\" must stay within the repository root.`,\n );\n }\n\n return normalized;\n}\n\nfunction normalizeOmittedFiles(\n omittedFiles: KnowledgePatchOmittedFile[] | undefined,\n): KnowledgePatchOmittedFile[] {\n return (omittedFiles ?? []).map((entry) => ({\n path: normalizeRepositoryRelativePath(entry.path),\n reason: entry.reason.trim(),\n }));\n}\n\nexport async function loadPatchStateByDir(\n patchDir: string,\n): Promise<KnowledgePatchState> {\n const patch = await readJsonFile(\n patchMetadataPath(patchDir),\n knowledgePatchMetadataSchema,\n );\n const envelope = await readJsonFile(\n patchOperationsPath(patchDir),\n knowledgePatchOperationsEnvelopeSchema,\n );\n return {\n patch,\n operations: envelope.operations,\n };\n}\n\nexport async function readKnowledgePatch(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n return loadPatchStateByDir(patchDir);\n}\n\nfunction assertDraftPatch(patch: KnowledgePatchMetadata) {\n if (patch.status !== 'draft') {\n throw new Error(`Patch \"${patch.id}\" is closed and cannot be modified.`);\n }\n}\n\nasync function savePatchState(patchDir: string, state: KnowledgePatchState) {\n const envelope: KnowledgePatchOperationsEnvelope = {\n schemaVersion: KNOWLEDGE_PATCH_SCHEMA_VERSION,\n operations: state.operations,\n };\n await writeJsonFile(patchMetadataPath(patchDir), state.patch);\n await writeJsonFile(patchOperationsPath(patchDir), envelope);\n}\n\nexport async function createKnowledgePatch(\n envValue: string | undefined,\n input: z.input<typeof createPatchInputSchema>,\n cwd = process.cwd(),\n) {\n const patchRoot = resolveKnowledgePatchRoot(envValue, cwd);\n await ensurePatchRoot(patchRoot);\n\n const patchInput = createPatchInputSchema.parse(input);\n const patchId = buildPatchId(patchInput.title);\n const timestamp = nowIso();\n const patch: KnowledgePatchMetadata = {\n id: patchId,\n title: patchInput.title,\n description: patchInput.description,\n status: 'draft',\n rootFolder: normalizeRootFolder(patchInput.rootFolder, cwd),\n omittedFiles: normalizeOmittedFiles(patchInput.omittedFiles),\n schemaVersion: KNOWLEDGE_PATCH_SCHEMA_VERSION,\n createdAt: timestamp,\n updatedAt: timestamp,\n };\n const patchDir = join(patchRoot, patchId);\n await mkdir(patchDir, { recursive: true });\n await savePatchState(patchDir, { patch, operations: [] });\n return readKnowledgePatch(envValue, patchId, cwd);\n}\n\nexport async function listKnowledgePatches(\n envValue: string | undefined,\n cwd = process.cwd(),\n): Promise<KnowledgePatchSummary[]> {\n const patchRoot = resolveKnowledgePatchRoot(envValue, cwd);\n if (!existsSync(patchRoot)) {\n return [];\n }\n\n const entries = await readdir(patchRoot, { withFileTypes: true });\n const summaries: KnowledgePatchSummary[] = [];\n for (const entry of entries) {\n if (!entry.isDirectory()) {\n continue;\n }\n\n const patchDir = join(patchRoot, entry.name);\n const state = await loadPatchStateByDir(patchDir);\n summaries.push({\n id: state.patch.id,\n status: state.patch.status,\n title: state.patch.title,\n description: state.patch.description,\n rootFolder: state.patch.rootFolder,\n omittedFiles: state.patch.omittedFiles,\n operationCount: state.operations.length,\n createdAt: state.patch.createdAt,\n updatedAt: state.patch.updatedAt,\n });\n }\n\n summaries.sort((left, right) =>\n left.createdAt === right.createdAt\n ? left.id.localeCompare(right.id)\n : left.createdAt.localeCompare(right.createdAt),\n );\n return summaries;\n}\n\nexport async function addKnowledgePatchOperation(\n envValue: string | undefined,\n patchId: string,\n input: z.input<typeof addOperationInputSchema>,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const operation = knowledgePatchOperationSchema.parse({\n ...input,\n id: input.id ?? buildOperationId(),\n });\n state.operations.push(operation);\n state.patch.updatedAt = nowIso();\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function updateKnowledgePatchMetadata(\n envValue: string | undefined,\n patchId: string,\n input: z.input<typeof updatePatchMetadataInputSchema>,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const metadata = updatePatchMetadataInputSchema.parse(input);\n const nextMetadata: KnowledgePatchMetadataUpdateInput = {\n omittedFiles: normalizeOmittedFiles(metadata.omittedFiles),\n };\n\n if (metadata.rootFolder) {\n nextMetadata.rootFolder = normalizeRootFolder(metadata.rootFolder, cwd);\n }\n\n state.patch = knowledgePatchMetadataSchema.parse({\n ...state.patch,\n ...nextMetadata,\n updatedAt: nowIso(),\n });\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function updateKnowledgePatchOperation(\n envValue: string | undefined,\n patchId: string,\n input: z.input<typeof updateOperationInputSchema>,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const update = updateOperationInputSchema.parse(input);\n const index = state.operations.findIndex(\n (operation) => operation.id === update.operationId,\n );\n if (index === -1) {\n throw new Error(\n `Patch \"${patchId}\" does not contain operation \"${update.operationId}\".`,\n );\n }\n\n state.operations[index] = knowledgePatchOperationSchema.parse({\n ...update.operation,\n id: update.operation.id ?? update.operationId,\n });\n state.patch.updatedAt = nowIso();\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function deleteKnowledgePatchOperation(\n envValue: string | undefined,\n patchId: string,\n operationId: string,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const nextOperations = state.operations.filter(\n (operation) => operation.id !== operationId,\n );\n if (nextOperations.length === state.operations.length) {\n throw new Error(\n `Patch \"${patchId}\" does not contain operation \"${operationId}\".`,\n );\n }\n\n state.operations = nextOperations;\n state.patch.updatedAt = nowIso();\n await savePatchState(patchDir, state);\n return state;\n}\n\nexport async function closeKnowledgePatch(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n const patchDir = resolveKnowledgePatchDirectory(envValue, patchId, cwd);\n const state = await loadPatchStateByDir(patchDir);\n assertDraftPatch(state.patch);\n\n const timestamp = nowIso();\n state.patch.status = 'closed';\n state.patch.updatedAt = timestamp;\n state.patch.closedAt = timestamp;\n await savePatchState(patchDir, state);\n return state;\n}\n", "import { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from '../extraction-registry.js';\nimport type { KnowledgeCollectionName } from '../types.js';\n\nexport const KNOWLEDGE_PATCH_SCHEMA_VERSION = 1;\nexport const KNOWLEDGE_PATCH_FOLDER_NAME = '.patches';\nexport const SUPPORTED_OPERATION_TYPES = Object.keys(\n KNOWLEDGE_EXTRACTION_TYPE_REGISTRY,\n) as [KnowledgeCollectionName, ...KnowledgeCollectionName[]];\n\nexport const supportedOperationTypeSet = new Set<string>(\n SUPPORTED_OPERATION_TYPES,\n);\n", "import { join, resolve } from 'node:path';\n\nimport { KNOWLEDGE_PATCH_FOLDER_NAME } from './constants.js';\nimport { resolveKnowledgeRootFromEnv } from '../root.js';\n\nfunction getKnowledgeRoot(envValue: string | undefined, cwd = process.cwd()) {\n return resolveKnowledgeRootFromEnv(envValue, cwd);\n}\n\nexport function resolveKnowledgePatchRoot(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return join(getKnowledgeRoot(envValue, cwd), KNOWLEDGE_PATCH_FOLDER_NAME);\n}\n\nexport function resolveKnowledgePatchDirectory(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n return join(resolveKnowledgePatchRoot(envValue, cwd), patchId);\n}\n\nexport function resolveKnowledgeRoot(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return getKnowledgeRoot(envValue, cwd);\n}\n\nexport function patchMetadataPath(patchDir: string) {\n return join(patchDir, 'patch.json');\n}\n\nexport function patchOperationsPath(patchDir: string) {\n return join(patchDir, 'operations.json');\n}\n", "import { z } from 'zod/v4';\n\nimport {\n SUPPORTED_OPERATION_TYPES,\n KNOWLEDGE_PATCH_SCHEMA_VERSION,\n supportedOperationTypeSet,\n} from './constants.js';\nimport type { KnowledgeCollectionName } from '../types.js';\n\nconst patchStatusSchema = z.enum(['draft', 'closed']);\n\nconst canonicalOperationTypeSchema = z\n .string()\n .trim()\n .min(1)\n .superRefine((value, ctx) => {\n if (!supportedOperationTypeSet.has(value)) {\n ctx.addIssue({\n code: 'custom',\n message: `Unsupported patch operation type \"${value}\". Supported types: ${SUPPORTED_OPERATION_TYPES.join(\n ', ',\n )}`,\n });\n }\n })\n .transform((value) => value as KnowledgeCollectionName);\n\nexport const knowledgePatchMetadataSchema = z.object({\n id: z.string().min(1),\n title: z.string().trim().min(1),\n description: z.string().trim().min(1).optional(),\n status: patchStatusSchema,\n rootFolder: z.string().trim().min(1),\n omittedFiles: z.array(\n z.object({\n path: z.string().trim().min(1),\n reason: z.string().trim().min(1),\n }),\n ),\n schemaVersion: z.literal(KNOWLEDGE_PATCH_SCHEMA_VERSION),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n closedAt: z.string().datetime({ offset: true }).optional(),\n});\n\nconst operationBaseSchema = z.object({\n id: z.string().min(1),\n type: canonicalOperationTypeSchema,\n domain: z.string().trim().min(1),\n});\n\nexport const knowledgePatchCreateOperationSchema = operationBaseSchema.extend({\n kind: z.literal('create'),\n payload: z.record(z.string(), z.unknown()),\n});\n\nexport const knowledgePatchUpdateOperationSchema = operationBaseSchema.extend({\n kind: z.literal('update'),\n targetId: z.string().min(1),\n payload: z.record(z.string(), z.unknown()),\n});\n\nexport const knowledgePatchDeleteOperationSchema = operationBaseSchema.extend({\n kind: z.literal('delete'),\n targetId: z.string().min(1),\n reason: z.string().trim().min(1),\n});\n\nexport const knowledgePatchOperationSchema = z.discriminatedUnion('kind', [\n knowledgePatchCreateOperationSchema,\n knowledgePatchUpdateOperationSchema,\n knowledgePatchDeleteOperationSchema,\n]);\n\nexport const knowledgePatchOperationsEnvelopeSchema = z.object({\n schemaVersion: z.literal(KNOWLEDGE_PATCH_SCHEMA_VERSION),\n operations: z.array(knowledgePatchOperationSchema),\n});\n\nexport const knowledgePatchDiagnosticSchema = z.object({\n severity: z.enum(['error', 'critical']),\n code: z.string(),\n message: z.string(),\n patchId: z.string().optional(),\n operationId: z.string().optional(),\n targetId: z.string().optional(),\n path: z.array(z.union([z.string(), z.number()])).optional(),\n supportedTypes: z.array(z.string()).optional(),\n});\n\nexport const knowledgePatchValidationResultSchema = z.object({\n valid: z.boolean(),\n fingerprint: z.string().optional(),\n diagnostics: z.array(knowledgePatchDiagnosticSchema),\n operationCount: z.number().int().nonnegative(),\n appliedOperationIds: z.array(z.string()),\n affectedFiles: z.array(z.string()),\n});\n\nexport const knowledgePatchApplyApprovalSchema = z.object({\n approved: z.boolean(),\n validationFingerprint: z.string().min(1),\n});\n\nexport const createPatchInputSchema = z.object({\n title: z.string().trim().min(1),\n description: z.string().trim().min(1).optional(),\n rootFolder: z.string().trim().min(1),\n omittedFiles: z\n .array(\n z.object({\n path: z.string().trim().min(1),\n reason: z.string().trim().min(1),\n }),\n )\n .optional(),\n});\n\nexport const addOperationInputSchema = z.discriminatedUnion('kind', [\n knowledgePatchCreateOperationSchema.omit({ id: true }).extend({\n id: z.string().min(1).optional(),\n }),\n knowledgePatchUpdateOperationSchema.omit({ id: true }).extend({\n id: z.string().min(1).optional(),\n }),\n knowledgePatchDeleteOperationSchema.omit({ id: true }).extend({\n id: z.string().min(1).optional(),\n }),\n]);\n\nexport const updateOperationInputSchema = z.object({\n operationId: z.string().min(1),\n operation: addOperationInputSchema,\n});\n\nexport const updatePatchMetadataInputSchema = z.object({\n rootFolder: z.string().trim().min(1).optional(),\n omittedFiles: z.array(\n z.object({\n path: z.string().trim().min(1),\n reason: z.string().trim().min(1),\n }),\n ),\n});\n\nexport const knowledgePatchToolInputSchema = z.discriminatedUnion('action', [\n z.object({\n action: z.literal('create'),\n patch: createPatchInputSchema,\n }),\n z.object({\n action: z.literal('list'),\n }),\n z.object({\n action: z.literal('get'),\n patchId: z.string().min(1),\n }),\n z.object({\n action: z.literal('add_operation'),\n patchId: z.string().min(1),\n operation: addOperationInputSchema,\n }),\n z.object({\n action: z.literal('update_operation'),\n patchId: z.string().min(1),\n update: updateOperationInputSchema,\n }),\n z.object({\n action: z.literal('update_metadata'),\n patchId: z.string().min(1),\n metadata: updatePatchMetadataInputSchema,\n }),\n z.object({\n action: z.literal('delete_operation'),\n patchId: z.string().min(1),\n operationId: z.string().min(1),\n }),\n z.object({\n action: z.literal('validate'),\n patchId: z.string().min(1),\n }),\n z.object({\n action: z.literal('close'),\n patchId: z.string().min(1),\n }),\n]);\n\nexport const knowledgePatchApplyToolInputSchema = z.object({\n patchId: z.string().min(1),\n approval: knowledgePatchApplyApprovalSchema,\n});\n", "import { createHash, randomUUID } from 'node:crypto';\n\nimport { knowledgePatchDiagnosticSchema } from './schemas.js';\nimport type { KnowledgePatchDiagnostic } from './types.js';\n\nexport function buildDiagnostic(\n diagnostic: KnowledgePatchDiagnostic,\n): KnowledgePatchDiagnostic {\n return knowledgePatchDiagnosticSchema.parse(diagnostic);\n}\n\nexport function nowIso() {\n return new Date().toISOString();\n}\n\nexport function slugifyPatchTitle(title: string) {\n const normalized = title\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n return normalized || 'patch';\n}\n\nexport function buildPatchId(title: string) {\n return `${slugifyPatchTitle(title)}-${randomUUID().slice(0, 8)}`;\n}\n\nexport function buildOperationId() {\n return `op_${randomUUID().slice(0, 10)}`;\n}\n\nexport function sha256(value: string) {\n return createHash('sha256').update(value).digest('hex');\n}\n", "import { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from '../extraction-registry.js';\nimport type {\n BusinessRule,\n Capability,\n Conflict,\n Constraint,\n Domain,\n Entity,\n EntityRelationship,\n Evidence,\n Feature,\n KnowledgeCollectionName,\n KnowledgeRecord,\n NormalizedKnowledgeStore,\n Question,\n Rationale,\n} from '../types.js';\nimport {\n SUPPORTED_OPERATION_TYPES,\n supportedOperationTypeSet,\n} from './constants.js';\nimport { buildDiagnostic } from './utils.js';\nimport type {\n KnowledgePatchDiagnostic,\n KnowledgePatchOperation,\n MutableKnowledgeState,\n SimulationResult,\n} from './types.js';\n\nexport function cloneStoreState(\n store: NormalizedKnowledgeStore,\n): MutableKnowledgeState {\n const byCollection = Object.fromEntries(\n SUPPORTED_OPERATION_TYPES.map((collection) => [\n collection,\n new Map(store.byCollection[collection]),\n ]),\n ) as Record<KnowledgeCollectionName, Map<string, KnowledgeRecord>>;\n\n return {\n byCollection,\n byId: new Map(store.byId),\n };\n}\n\nexport function validateRecordIdForDomain(\n type: KnowledgeCollectionName,\n id: string,\n domain: string,\n) {\n const definition = KNOWLEDGE_EXTRACTION_TYPE_REGISTRY[type];\n if (type === 'domains') {\n const expectedId = `domain.${domain}`;\n return id === expectedId\n ? undefined\n : `Expected domain record id \"${id}\" to equal \"${expectedId}\".`;\n }\n\n const expectedPrefix = `${definition.idConvention.prefix}.${domain}.`;\n return id.startsWith(expectedPrefix)\n ? undefined\n : `Expected record id \"${id}\" to start with \"${expectedPrefix}\".`;\n}\n\nexport function collectReferenceIds(record: KnowledgeRecord): string[] {\n if ('relationship_type' in record) {\n return [\n (record as EntityRelationship).from_entity_id,\n (record as EntityRelationship).to_entity_id,\n ];\n }\n\n if ('business_definition' in record) {\n const entity = record as Entity;\n return [\n ...entity.domain_ids,\n ...entity.relationship_ids,\n ...entity.capability_ids,\n ...entity.feature_ids,\n ...entity.rule_ids,\n ];\n }\n\n if ('behavior_type' in record) {\n const rule = record as BusinessRule;\n return [\n ...(rule.applies_to.domain_ids ?? []),\n ...(rule.applies_to.entity_ids ?? []),\n ...(rule.applies_to.capability_ids ?? []),\n ...(rule.applies_to.feature_ids ?? []),\n ...rule.related_constraint_ids,\n ...rule.rationale_ids,\n ];\n }\n\n if ('constraint_type' in record) {\n const constraint = record as Constraint;\n return [\n ...(constraint.applies_to.domain_ids ?? []),\n ...(constraint.applies_to.entity_ids ?? []),\n ...(constraint.applies_to.capability_ids ?? []),\n ...(constraint.applies_to.feature_ids ?? []),\n ...(constraint.applies_to.business_rule_ids ?? []),\n ];\n }\n\n if ('parent_capability_ids' in record) {\n const capability = record as Capability;\n return [\n ...capability.domain_ids,\n ...capability.entity_ids,\n ...capability.parent_capability_ids,\n ...capability.child_capability_ids,\n ...capability.feature_ids,\n ];\n }\n\n if ('rule_ids' in record && 'constraint_ids' in record) {\n const feature = record as Feature;\n return [\n ...feature.domain_ids,\n ...feature.capability_ids,\n ...feature.entity_ids,\n ...feature.rule_ids,\n ...feature.constraint_ids,\n ];\n }\n\n if (\n 'entity_ids' in record &&\n 'capability_ids' in record &&\n 'why_it_exists' in record &&\n !('business_definition' in record) &&\n !('parent_capability_ids' in record) &&\n !('constraint_ids' in record) &&\n !('rule_ids' in record)\n ) {\n const domain = record as Domain;\n return [...domain.entity_ids, ...domain.capability_ids];\n }\n\n if ('explains' in record) {\n return (record as Rationale).explains;\n }\n\n if ('source_type' in record) {\n return (record as Evidence).supports;\n }\n\n if ('priority' in record) {\n const question = record as Question;\n return [...question.related_ids, ...question.evidence_ids];\n }\n\n const conflict = record as Conflict;\n return [\n ...conflict.related_ids,\n ...conflict.evidence_ids,\n ...conflict.questions,\n ...(conflict.resolved_by_evidence_id\n ? [conflict.resolved_by_evidence_id]\n : []),\n ];\n}\n\nexport function inferDomainFromRecordId(recordId: string) {\n const [, domain] = recordId.split('.');\n return domain;\n}\n\nexport function inferDomainForRecord(record: KnowledgeRecord) {\n return inferDomainFromRecordId(record.id);\n}\n\nexport function parsePatchRecord(\n operation: KnowledgePatchOperation,\n diagnostics: KnowledgePatchDiagnostic[],\n) {\n const definition = KNOWLEDGE_EXTRACTION_TYPE_REGISTRY[operation.type];\n if (operation.kind === 'delete') {\n return undefined;\n }\n\n const parsed = definition.schema.safeParse(operation.payload);\n if (!parsed.success) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_payload',\n message: `Operation \"${operation.id}\" payload is invalid for type \"${operation.type}\".`,\n operationId: operation.id,\n path: ['operations', operation.id, 'payload'],\n }),\n );\n return undefined;\n }\n\n return parsed.data as KnowledgeRecord;\n}\n\nexport function simulateKnowledgePatch(\n store: NormalizedKnowledgeStore,\n operations: KnowledgePatchOperation[],\n patchId: string,\n): SimulationResult {\n const state = cloneStoreState(store);\n const diagnostics: KnowledgePatchDiagnostic[] = [];\n const deleteTargets: string[] = [];\n const appliedOperationIds: string[] = [];\n\n for (const operation of operations) {\n if (!supportedOperationTypeSet.has(operation.type)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_type',\n message: `Unsupported patch operation type \"${operation.type}\".`,\n patchId,\n operationId: operation.id,\n supportedTypes: SUPPORTED_OPERATION_TYPES,\n }),\n );\n continue;\n }\n\n if (operation.kind === 'delete') {\n const existing = state.byCollection[operation.type].get(\n operation.targetId,\n );\n if (!existing) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'missing_target',\n message: `Delete target \"${operation.targetId}\" does not exist in \"${operation.type}\".`,\n patchId,\n operationId: operation.id,\n targetId: operation.targetId,\n }),\n );\n continue;\n }\n\n state.byCollection[operation.type].delete(operation.targetId);\n state.byId.delete(operation.targetId);\n deleteTargets.push(operation.targetId);\n appliedOperationIds.push(operation.id);\n continue;\n }\n\n const parsedRecord = parsePatchRecord(operation, diagnostics);\n if (!parsedRecord) {\n continue;\n }\n\n const idMessage = validateRecordIdForDomain(\n operation.type,\n parsedRecord.id,\n operation.domain,\n );\n if (idMessage) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_id_convention',\n message: idMessage,\n patchId,\n operationId: operation.id,\n targetId: parsedRecord.id,\n }),\n );\n continue;\n }\n\n if (operation.kind === 'create' && state.byId.has(parsedRecord.id)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'duplicate_id',\n message: `Create operation would duplicate existing id \"${parsedRecord.id}\".`,\n patchId,\n operationId: operation.id,\n targetId: parsedRecord.id,\n }),\n );\n continue;\n }\n\n if (operation.kind === 'update') {\n if (parsedRecord.id !== operation.targetId) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'update_target_mismatch',\n message: `Update payload id \"${parsedRecord.id}\" must match target \"${operation.targetId}\".`,\n patchId,\n operationId: operation.id,\n targetId: operation.targetId,\n }),\n );\n continue;\n }\n\n if (!state.byCollection[operation.type].has(operation.targetId)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'missing_target',\n message: `Update target \"${operation.targetId}\" does not exist in \"${operation.type}\".`,\n patchId,\n operationId: operation.id,\n targetId: operation.targetId,\n }),\n );\n continue;\n }\n }\n\n state.byCollection[operation.type].set(parsedRecord.id, parsedRecord);\n state.byId.set(parsedRecord.id, parsedRecord);\n appliedOperationIds.push(operation.id);\n }\n\n for (const record of state.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n if (!state.byId.has(referenceId)) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'invalid_reference',\n message: `Record \"${record.id}\" references unknown id \"${referenceId}\".`,\n patchId,\n targetId: record.id,\n }),\n );\n }\n }\n }\n\n const inboundReferenceMap = new Map<string, string[]>();\n for (const record of state.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n const inbound = inboundReferenceMap.get(referenceId) ?? [];\n inbound.push(record.id);\n inboundReferenceMap.set(referenceId, inbound);\n }\n }\n\n for (const deleteTarget of deleteTargets) {\n const inbound = inboundReferenceMap.get(deleteTarget) ?? [];\n if (inbound.length > 0) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'delete_has_inbound_references',\n message: `Delete target \"${deleteTarget}\" still has inbound references from: ${inbound.join(\n ', ',\n )}`,\n patchId,\n targetId: deleteTarget,\n }),\n );\n }\n }\n\n return {\n state,\n diagnostics,\n appliedOperationIds,\n deleteTargets,\n };\n}\n", "import {\n loadKnowledgeStoreFromEnv,\n loadKnowledgeStoreFromRoot,\n} from './loader.js';\nimport type {\n KnowledgeCollectionName,\n NormalizedKnowledgeStore,\n} from './types.js';\nimport { readKnowledgePatch, listKnowledgePatches } from './patch/storage.js';\nimport {\n collectReferenceIds,\n simulateKnowledgePatch,\n} from './patch/simulation.js';\nimport type {\n KnowledgePatchDiagnostic,\n KnowledgePatchSummary,\n MutableKnowledgeState,\n} from './patch/types.js';\n\nexport interface EffectiveKnowledgeProvenanceEntry {\n patchIds: string[];\n patched: boolean;\n}\n\nexport interface EffectiveKnowledgeStateResult {\n store: NormalizedKnowledgeStore;\n patches: KnowledgePatchSummary[];\n patchIds: string[];\n provenance: Map<string, EffectiveKnowledgeProvenanceEntry>;\n diagnostics: KnowledgePatchDiagnostic[];\n}\n\nexport interface EffectiveKnowledgeStateOptions {\n selectedPatchId?: string;\n includeSelectedPatch?: boolean;\n includeAllStatuses?: boolean;\n}\n\nfunction getCollectionNames(): KnowledgeCollectionName[] {\n return [\n 'domains',\n 'entities',\n 'relationships',\n 'capabilities',\n 'features',\n 'business_rules',\n 'constraints',\n 'rationales',\n 'evidence',\n 'questions',\n 'conflicts',\n ];\n}\n\nfunction toSimulationStore(\n rootDir: string,\n sourceFiles: string[],\n state: MutableKnowledgeState,\n): NormalizedKnowledgeStore {\n const store: NormalizedKnowledgeStore = {\n rootDir,\n sourceFiles,\n domains: [...state.byCollection.domains.values()] as never,\n entities: [...state.byCollection.entities.values()] as never,\n relationships: [...state.byCollection.relationships.values()] as never,\n capabilities: [...state.byCollection.capabilities.values()] as never,\n features: [...state.byCollection.features.values()] as never,\n business_rules: [...state.byCollection.business_rules.values()] as never,\n constraints: [...state.byCollection.constraints.values()] as never,\n rationales: [...state.byCollection.rationales.values()] as never,\n evidence: [...state.byCollection.evidence.values()] as never,\n questions: [...state.byCollection.questions.values()] as never,\n conflicts: [...state.byCollection.conflicts.values()] as never,\n byCollection: state.byCollection,\n byId: state.byId,\n reverseReferences: new Map(),\n diagnostics: [],\n };\n\n for (const record of store.byId.values()) {\n for (const referenceId of collectReferenceIds(record)) {\n const reverse = store.reverseReferences.get(referenceId) ?? [];\n reverse.push(record.id);\n store.reverseReferences.set(referenceId, reverse);\n }\n }\n\n return store;\n}\n\nfunction selectOrderedPatches(\n patches: KnowledgePatchSummary[],\n options: EffectiveKnowledgeStateOptions,\n) {\n const visiblePatches = options.includeAllStatuses\n ? patches\n : patches.filter((patch) => patch.status === 'draft');\n\n if (!options.selectedPatchId) {\n return visiblePatches;\n }\n\n const selectedIndex = visiblePatches.findIndex(\n (patch) => patch.id === options.selectedPatchId,\n );\n if (selectedIndex === -1) {\n throw new Error(`Patch \"${options.selectedPatchId}\" was not found.`);\n }\n\n const endIndex =\n options.includeSelectedPatch === false ? selectedIndex : selectedIndex + 1;\n return visiblePatches.slice(0, endIndex);\n}\n\nexport async function composeEffectiveKnowledgeState(\n store: NormalizedKnowledgeStore,\n envValue: string | undefined,\n options: EffectiveKnowledgeStateOptions = {},\n cwd = process.cwd(),\n): Promise<EffectiveKnowledgeStateResult> {\n const orderedPatches = selectOrderedPatches(\n await listKnowledgePatches(envValue, cwd),\n options,\n );\n\n let currentState = store;\n const provenance = new Map<string, EffectiveKnowledgeProvenanceEntry>();\n const diagnostics: KnowledgePatchDiagnostic[] = [];\n\n for (const patch of orderedPatches) {\n const patchState = await readKnowledgePatch(envValue, patch.id, cwd);\n const simulation = simulateKnowledgePatch(\n currentState,\n patchState.operations,\n patch.id,\n );\n diagnostics.push(...simulation.diagnostics);\n\n for (const operationId of simulation.appliedOperationIds) {\n const operation = patchState.operations.find(\n (entry) => entry.id === operationId,\n );\n if (!operation || operation.kind === 'delete') {\n continue;\n }\n\n const recordId =\n operation.kind === 'update'\n ? operation.targetId\n : (operation.payload as { id: string }).id;\n const existing = provenance.get(recordId);\n const patchIds = new Set(existing?.patchIds ?? []);\n patchIds.add(patch.id);\n provenance.set(recordId, {\n patchIds: [...patchIds],\n patched: true,\n });\n }\n\n currentState = toSimulationStore(\n store.rootDir,\n store.sourceFiles,\n simulation.state,\n );\n }\n\n return {\n store: currentState,\n patches: orderedPatches,\n patchIds: orderedPatches.map((patch) => patch.id),\n provenance,\n diagnostics,\n };\n}\n\nexport async function loadEffectiveKnowledgeStoreFromRoot(\n rootDir: string,\n options: EffectiveKnowledgeStateOptions = {},\n): Promise<EffectiveKnowledgeStateResult> {\n const store = await loadKnowledgeStoreFromRoot(rootDir);\n return composeEffectiveKnowledgeState(store, rootDir, options);\n}\n\nexport async function loadEffectiveKnowledgeStoreFromEnv(\n envValue: string | undefined,\n cwd = process.cwd(),\n options: EffectiveKnowledgeStateOptions = {},\n): Promise<EffectiveKnowledgeStateResult | undefined> {\n const store = await loadKnowledgeStoreFromEnv(envValue, cwd);\n if (!store) {\n return undefined;\n }\n\n return composeEffectiveKnowledgeState(store, envValue, options, cwd);\n}\n", "import {\n GraphQLBoolean,\n GraphQLFloat,\n GraphQLID,\n GraphQLList,\n GraphQLObjectType,\n GraphQLSchema,\n GraphQLString,\n graphql,\n} from 'graphql';\n\nimport type {\n BusinessRule,\n Capability,\n Conflict,\n Constraint,\n Domain,\n Entity,\n EntityRelationship,\n Evidence,\n Feature,\n KnowledgeCollectionName,\n KnowledgeRecord,\n KnowledgeStore,\n Question,\n Rationale,\n} from './types.js';\n\ntype Source = KnowledgeStore | undefined;\n\nfunction stringifyValue(value: unknown) {\n if (value === undefined || value === null) {\n return null;\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n}\n\nconst confidenceType = new GraphQLObjectType({\n name: 'Confidence',\n fields: {\n score: { type: GraphQLFloat },\n level: { type: GraphQLString },\n reason: { type: GraphQLString },\n },\n});\n\nconst locationType = new GraphQLObjectType({\n name: 'EvidenceLocation',\n fields: {\n path: { type: GraphQLString },\n symbol: { type: GraphQLString },\n route: { type: GraphQLString },\n api: { type: GraphQLString },\n query: { type: GraphQLString },\n },\n});\n\nconst evidenceType = new GraphQLObjectType({\n name: 'Evidence',\n fields: () => ({\n id: { type: GraphQLID },\n source_type: { type: GraphQLString },\n description: { type: GraphQLString },\n location: { type: locationType },\n supports: { type: new GraphQLList(GraphQLID) },\n excerpt: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst entityTechnicalRepresentationType = new GraphQLObjectType({\n name: 'EntityTechnicalRepresentation',\n fields: {\n kind: { type: GraphQLString },\n name: { type: GraphQLString },\n location_hint: { type: GraphQLString },\n },\n});\n\nconst entityType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Entity',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n business_definition: { type: GraphQLString },\n description: { type: GraphQLString },\n purpose: { type: GraphQLString },\n aliases: { type: new GraphQLList(GraphQLString) },\n ambiguous_terms: { type: new GraphQLList(GraphQLString) },\n technical_representations: {\n type: new GraphQLList(entityTechnicalRepresentationType),\n },\n domain_ids: { type: new GraphQLList(GraphQLID) },\n state_values: { type: new GraphQLList(GraphQLString) },\n relationship_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n rule_ids: { type: new GraphQLList(GraphQLID) },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'domains', entity.domain_ids),\n },\n relationships: {\n type: new GraphQLList(entityRelationshipType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'relationships', entity.relationship_ids),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'capabilities', entity.capability_ids),\n },\n features: {\n type: new GraphQLList(featureType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'features', entity.feature_ids),\n },\n business_rules: {\n type: new GraphQLList(businessRuleType),\n resolve: (entity: Entity, _args, context: Source) =>\n resolveByIds(context, 'business_rules', entity.rule_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst ruleConditionType = new GraphQLObjectType({\n name: 'RuleCondition',\n fields: {\n subject: { type: GraphQLString },\n field: { type: GraphQLString },\n operator: { type: GraphQLString },\n value: {\n type: GraphQLString,\n resolve: (condition: { value?: unknown }) =>\n stringifyValue(condition.value),\n },\n },\n});\n\nconst ruleTriggerType = new GraphQLObjectType({\n name: 'RuleTrigger',\n fields: {\n actor: { type: GraphQLString },\n action: { type: GraphQLString },\n subject: { type: GraphQLString },\n field: { type: GraphQLString },\n operator: { type: GraphQLString },\n value: {\n type: GraphQLString,\n resolve: (trigger: { value?: unknown }) => stringifyValue(trigger.value),\n },\n },\n});\n\nconst ruleEffectType = new GraphQLObjectType({\n name: 'RuleEffect',\n fields: {\n effect: { type: GraphQLString },\n action: { type: GraphQLString },\n message: { type: GraphQLString },\n target_state: { type: GraphQLString },\n value: {\n type: GraphQLString,\n resolve: (effect: { value?: unknown }) => stringifyValue(effect.value),\n },\n },\n});\n\nconst businessRuleConditionType = new GraphQLObjectType({\n name: 'BusinessRuleCondition',\n fields: {\n given: { type: new GraphQLList(ruleConditionType) },\n when: { type: new GraphQLList(ruleTriggerType) },\n then: { type: new GraphQLList(ruleEffectType) },\n },\n});\n\nconst businessRuleAppliesToType = new GraphQLObjectType({\n name: 'BusinessRuleAppliesTo',\n fields: {\n domain_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n },\n});\n\nconst businessRuleEnforcementType = new GraphQLObjectType({\n name: 'BusinessRuleEnforcement',\n fields: {\n level: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst businessRuleType = new GraphQLObjectType({\n name: 'BusinessRule',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n statement: { type: GraphQLString },\n rule_type: { type: GraphQLString },\n behavior_type: { type: GraphQLString },\n applies_to: { type: businessRuleAppliesToType },\n condition: { type: businessRuleConditionType },\n enforcement: { type: businessRuleEnforcementType },\n related_constraint_ids: { type: new GraphQLList(GraphQLID) },\n rationale_ids: { type: new GraphQLList(GraphQLID) },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst constraintCauseType = new GraphQLObjectType({\n name: 'ConstraintCause',\n fields: {\n source: { type: GraphQLString },\n source_type: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst constraintImpactType = new GraphQLObjectType({\n name: 'ConstraintImpact',\n fields: {\n affected_change_types: { type: new GraphQLList(GraphQLString) },\n severity: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst constraintAppliesToType = new GraphQLObjectType({\n name: 'ConstraintAppliesTo',\n fields: {\n domain_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n business_rule_ids: { type: new GraphQLList(GraphQLID) },\n },\n});\n\nconst constraintWorkaroundType = new GraphQLObjectType({\n name: 'ConstraintWorkaround',\n fields: {\n exists: { type: GraphQLString },\n description: { type: GraphQLString },\n },\n});\n\nconst constraintRemovabilityType = new GraphQLObjectType({\n name: 'ConstraintRemovability',\n fields: {\n can_be_removed_by_refactor: { type: GraphQLString },\n requires: { type: new GraphQLList(GraphQLString) },\n risk: { type: GraphQLString },\n },\n});\n\nconst constraintType = new GraphQLObjectType({\n name: 'Constraint',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n description: { type: GraphQLString },\n constraint_type: { type: GraphQLString },\n cause: { type: constraintCauseType },\n impact: { type: constraintImpactType },\n applies_to: { type: constraintAppliesToType },\n workaround: { type: constraintWorkaroundType },\n removability: { type: constraintRemovabilityType },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst rationaleType = new GraphQLObjectType({\n name: 'Rationale',\n fields: () => ({\n id: { type: GraphQLID },\n statement: { type: GraphQLString },\n explains: { type: new GraphQLList(GraphQLID) },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst questionType = new GraphQLObjectType({\n name: 'Question',\n fields: () => ({\n id: { type: GraphQLID },\n question: { type: GraphQLString },\n category: { type: GraphQLString },\n reason: { type: GraphQLString },\n impact: { type: GraphQLString },\n related_ids: { type: new GraphQLList(GraphQLID) },\n evidence_ids: { type: new GraphQLList(GraphQLID) },\n priority: { type: GraphQLString },\n status: { type: GraphQLString },\n answer: { type: GraphQLString },\n answered_by: { type: GraphQLString },\n answered_at: { type: GraphQLString },\n }),\n});\n\nconst conflictType = new GraphQLObjectType({\n name: 'Conflict',\n fields: () => ({\n id: { type: GraphQLID },\n type: { type: GraphQLString },\n description: { type: GraphQLString },\n related_ids: { type: new GraphQLList(GraphQLID) },\n evidence_ids: { type: new GraphQLList(GraphQLID) },\n status: { type: GraphQLString },\n questions: { type: new GraphQLList(GraphQLID) },\n resolution: { type: GraphQLString },\n resolved_by_evidence_id: { type: GraphQLID },\n }),\n});\n\nconst domainType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Domain',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n purpose: { type: GraphQLString },\n why_it_exists: { type: GraphQLString },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (domain: Domain, _args, context: Source) =>\n resolveByIds(context, 'entities', domain.entity_ids),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (domain: Domain, _args, context: Source) =>\n resolveByIds(context, 'capabilities', domain.capability_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst entityRelationshipType = new GraphQLObjectType({\n name: 'EntityRelationship',\n fields: () => ({\n id: { type: GraphQLID },\n from_entity_id: { type: GraphQLID },\n to_entity_id: { type: GraphQLID },\n relationship_type: { type: GraphQLString },\n description: { type: GraphQLString },\n from_entity: {\n type: entityType,\n resolve: (relationship: EntityRelationship, _args, context: Source) =>\n resolveByIds(context, 'entities', [relationship.from_entity_id])[0] ??\n null,\n },\n to_entity: {\n type: entityType,\n resolve: (relationship: EntityRelationship, _args, context: Source) =>\n resolveByIds(context, 'entities', [relationship.to_entity_id])[0] ??\n null,\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst capabilityType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Capability',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n description: { type: GraphQLString },\n why_it_exists: { type: GraphQLString },\n domain_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n parent_capability_ids: { type: new GraphQLList(GraphQLID) },\n child_capability_ids: { type: new GraphQLList(GraphQLID) },\n feature_ids: { type: new GraphQLList(GraphQLID) },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'domains', capability.domain_ids),\n },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'entities', capability.entity_ids),\n },\n parent_capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'capabilities', capability.parent_capability_ids),\n },\n child_capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'capabilities', capability.child_capability_ids),\n },\n features: {\n type: new GraphQLList(featureType),\n resolve: (capability: Capability, _args, context: Source) =>\n resolveByIds(context, 'features', capability.feature_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nconst featureType: GraphQLObjectType = new GraphQLObjectType({\n name: 'Feature',\n fields: () => ({\n id: { type: GraphQLID },\n name: { type: GraphQLString },\n description: { type: GraphQLString },\n purpose: { type: GraphQLString },\n why_it_exists: { type: GraphQLString },\n domain_ids: { type: new GraphQLList(GraphQLID) },\n capability_ids: { type: new GraphQLList(GraphQLID) },\n entity_ids: { type: new GraphQLList(GraphQLID) },\n rule_ids: { type: new GraphQLList(GraphQLID) },\n constraint_ids: { type: new GraphQLList(GraphQLID) },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'domains', feature.domain_ids),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'capabilities', feature.capability_ids),\n },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'entities', feature.entity_ids),\n },\n business_rules: {\n type: new GraphQLList(businessRuleType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'business_rules', feature.rule_ids),\n },\n constraints: {\n type: new GraphQLList(constraintType),\n resolve: (feature: Feature, _args, context: Source) =>\n resolveByIds(context, 'constraints', feature.constraint_ids),\n },\n certainty: { type: GraphQLString },\n confidence: { type: confidenceType },\n }),\n});\n\nfunction resolveCollection<T extends { id: string }>(\n store: Source,\n collection: KnowledgeCollectionName,\n): T[] {\n if (!store) {\n return [];\n }\n\n return store[collection] as unknown as T[];\n}\n\nfunction resolveByIds<T extends { id: string }>(\n store: Source,\n collection: KnowledgeCollectionName,\n ids: readonly string[] | undefined,\n): T[] {\n if (!store || !ids?.length) {\n return [];\n }\n\n const typedCollection = store.byCollection[collection] as unknown as Map<\n string,\n T\n >;\n return ids\n .map((id) => typedCollection.get(id))\n .filter((item): item is T => item !== undefined);\n}\n\nconst queryType = new GraphQLObjectType({\n name: 'Query',\n fields: () => ({\n store_available: {\n type: GraphQLBoolean,\n resolve: (_source, _args, context: Source) => Boolean(context),\n },\n domains: {\n type: new GraphQLList(domainType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Domain>(context, 'domains'),\n },\n domain: {\n type: domainType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.domains.get(args.id) as Domain | undefined) ??\n null,\n },\n entities: {\n type: new GraphQLList(entityType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Entity>(context, 'entities'),\n },\n entity: {\n type: entityType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.entities.get(args.id) as Entity | undefined) ??\n null,\n },\n relationships: {\n type: new GraphQLList(entityRelationshipType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<EntityRelationship>(context, 'relationships'),\n },\n capabilities: {\n type: new GraphQLList(capabilityType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Capability>(context, 'capabilities'),\n },\n capability: {\n type: capabilityType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.capabilities.get(args.id) as\n | Capability\n | undefined) ?? null,\n },\n features: {\n type: new GraphQLList(featureType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Feature>(context, 'features'),\n },\n feature: {\n type: featureType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.features.get(args.id) as Feature | undefined) ??\n null,\n },\n business_rules: {\n type: new GraphQLList(businessRuleType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<BusinessRule>(context, 'business_rules'),\n },\n business_rule: {\n type: businessRuleType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.business_rules.get(args.id) as\n | BusinessRule\n | undefined) ?? null,\n },\n constraints: {\n type: new GraphQLList(constraintType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Constraint>(context, 'constraints'),\n },\n constraint: {\n type: constraintType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.constraints.get(args.id) as\n | Constraint\n | undefined) ?? null,\n },\n rationales: {\n type: new GraphQLList(rationaleType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Rationale>(context, 'rationales'),\n },\n rationale: {\n type: rationaleType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.rationales.get(args.id) as\n | Rationale\n | undefined) ?? null,\n },\n evidence: {\n type: new GraphQLList(evidenceType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Evidence>(context, 'evidence'),\n },\n question: {\n type: questionType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.questions.get(args.id) as\n | Question\n | undefined) ?? null,\n },\n questions: {\n type: new GraphQLList(questionType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Question>(context, 'questions'),\n },\n conflict: {\n type: conflictType,\n args: {\n id: { type: GraphQLID },\n },\n resolve: (_source, args, context: Source) =>\n (context?.byCollection.conflicts.get(args.id) as\n | Conflict\n | undefined) ?? null,\n },\n conflicts: {\n type: new GraphQLList(conflictType),\n resolve: (_source, _args, context: Source) =>\n resolveCollection<Conflict>(context, 'conflicts'),\n },\n }),\n});\n\nexport const knowledgeGraphSchema = new GraphQLSchema({\n query: queryType,\n});\n\nexport async function executeKnowledgeQuery(\n store: Source,\n query: string,\n variables?: Record<string, unknown>,\n operationName?: string,\n) {\n if (!store) {\n return {\n data: null,\n errors: [\n {\n message:\n 'Knowledge store is not loaded. Set EZ_KNOW_ROOT to the knowledge root to enable querying.',\n },\n ],\n };\n }\n\n return graphql({\n schema: knowledgeGraphSchema,\n source: query,\n contextValue: store,\n variableValues: variables,\n operationName,\n });\n}\n\nexport function buildKnowledgeGraphQLText(\n result: Awaited<ReturnType<typeof executeKnowledgeQuery>>,\n) {\n return JSON.stringify({\n data: result.data,\n errors: result.errors?.map((error) => ({ message: error.message })),\n });\n}\n", "import {\n type GraphQLField,\n type GraphQLObjectType,\n type GraphQLSchema,\n isAbstractType,\n isCompositeType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from 'graphql';\n\nexport const KNOWLEDGE_SCHEMA_RESOURCE_URI = 'ez-know://schema';\nexport const KNOWLEDGE_SCHEMA_LOOKUP_URI = 'ez-know://lookup/{target}';\n\nexport type SchemaFieldArgument = {\n name: string;\n type: string;\n defaultValue: string | null;\n description: string | null;\n};\n\nexport type SchemaFieldSummary = {\n name: string;\n type: string;\n description: string | null;\n arguments: SchemaFieldArgument[];\n traversesTo: string | null;\n};\n\nexport type SchemaTypeSummary = {\n name: string;\n description: string | null;\n fields: SchemaFieldSummary[];\n traversalFields: string[];\n};\n\nexport type KnowledgeSchemaDiscoveryDocument = {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n rootQuery: SchemaTypeSummary;\n objectTypes: SchemaTypeSummary[];\n};\n\nexport type KnowledgeSchemaLookupDocument =\n | {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n lookup: {\n target: 'Query';\n kind: 'root-query';\n };\n rootQuery: SchemaTypeSummary;\n }\n | {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n lookup: {\n target: string;\n kind: 'root-field';\n };\n field: SchemaFieldSummary;\n parentType: string;\n }\n | {\n resource: {\n uri: string;\n title: string;\n description: string;\n };\n source: {\n kind: 'runtime-schema';\n queryType: string;\n };\n lookup: {\n target: string;\n kind: 'object-type';\n };\n type: SchemaTypeSummary;\n rootFields: string[];\n };\n\nfunction unwrapType(type: unknown): { name: string; composite: unknown } {\n if (isNonNullType(type) || isListType(type)) {\n return unwrapType(type.ofType);\n }\n\n if (\n isObjectType(type) ||\n isScalarType(type) ||\n isUnionType(type) ||\n isAbstractType(type)\n ) {\n return { name: type.name, composite: type };\n }\n\n return { name: 'Unknown', composite: type };\n}\n\nfunction describeType(type: unknown): string {\n if (isNonNullType(type)) {\n return `${describeType(type.ofType)}!`;\n }\n\n if (isListType(type)) {\n return `[${describeType(type.ofType)}]`;\n }\n\n if (isObjectType(type) || isScalarType(type) || isUnionType(type)) {\n return type.name;\n }\n\n if (isAbstractType(type)) {\n return type.name;\n }\n\n return 'Unknown';\n}\n\nfunction formatDefaultValue(value: unknown): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n return JSON.stringify(value) ?? String(value);\n}\n\nfunction summarizeField(\n field: GraphQLField<unknown, unknown>,\n): SchemaFieldSummary {\n const traversedType = unwrapType(field.type).composite;\n const traversesTo =\n isCompositeType(traversedType) && !isScalarType(traversedType)\n ? (traversedType as { name: string }).name\n : null;\n\n return {\n name: field.name,\n type: describeType(field.type),\n description: field.description ?? null,\n arguments:\n field.args?.map((argument) => ({\n name: argument.name,\n type: describeType(argument.type),\n description: argument.description ?? null,\n defaultValue: formatDefaultValue(argument.defaultValue),\n })) ?? [],\n traversesTo,\n };\n}\n\nfunction summarizeObjectType(type: GraphQLObjectType): SchemaTypeSummary {\n const fields = Object.values(type.getFields()).map(summarizeField);\n return {\n name: type.name,\n description: type.description ?? null,\n fields,\n traversalFields: fields\n .filter((field) => field.traversesTo !== null)\n .map((field) => field.name),\n };\n}\n\nfunction getObjectTypes(schema: GraphQLSchema) {\n return Object.values(schema.getTypeMap())\n .filter((type): type is GraphQLObjectType => isObjectType(type))\n .filter((type) => !type.name.startsWith('__'))\n .filter((type) => type.name !== schema.getQueryType()?.name);\n}\n\nexport function buildKnowledgeSchemaDiscoveryDocument(\n schema: GraphQLSchema,\n): KnowledgeSchemaDiscoveryDocument {\n const queryType = schema.getQueryType();\n if (!queryType) {\n throw new Error('Knowledge GraphQL schema has no root query type.');\n }\n\n return {\n resource: {\n uri: KNOWLEDGE_SCHEMA_RESOURCE_URI,\n title: 'Knowledge GraphQL Schema',\n description:\n 'Canonical discovery view of the runtime knowledge GraphQL schema.',\n },\n source: {\n kind: 'runtime-schema',\n queryType: queryType.name,\n },\n rootQuery: summarizeObjectType(queryType),\n objectTypes: getObjectTypes(schema).map(summarizeObjectType),\n };\n}\n\nfunction getLookupMetadata(schema: GraphQLSchema, target: string) {\n const queryType = schema.getQueryType();\n if (!queryType) {\n throw new Error('Knowledge GraphQL schema has no root query type.');\n }\n\n if (target === queryType.name) {\n return {\n resource: {\n uri: `ez-know://lookup/${target}`,\n title: `Knowledge schema lookup: ${target}`,\n description:\n 'Focused lookup of the root query fields and their arguments.',\n },\n source: {\n kind: 'runtime-schema' as const,\n queryType: queryType.name,\n },\n lookup: {\n target: queryType.name as 'Query',\n kind: 'root-query' as const,\n },\n rootQuery: summarizeObjectType(queryType),\n };\n }\n\n const rootField = queryType.getFields()[target];\n if (rootField) {\n return {\n resource: {\n uri: `ez-know://lookup/${target}`,\n title: `Knowledge schema lookup: ${target}`,\n description:\n 'Focused lookup of a single root query field and its arguments.',\n },\n source: {\n kind: 'runtime-schema' as const,\n queryType: queryType.name,\n },\n lookup: {\n target,\n kind: 'root-field' as const,\n },\n field: summarizeField(rootField),\n parentType: queryType.name,\n };\n }\n\n const objectType = schema.getType(target);\n if (objectType && isObjectType(objectType)) {\n const typeSummary = summarizeObjectType(objectType);\n const rootFields = Object.values(queryType.getFields())\n .filter((field) => unwrapType(field.type).name === target)\n .map((field) => field.name);\n\n return {\n resource: {\n uri: `ez-know://lookup/${target}`,\n title: `Knowledge schema lookup: ${target}`,\n description:\n 'Focused lookup of a single GraphQL type and its nested traversal fields.',\n },\n source: {\n kind: 'runtime-schema' as const,\n queryType: queryType.name,\n },\n lookup: {\n target,\n kind: 'object-type' as const,\n },\n type: typeSummary,\n rootFields,\n };\n }\n\n throw new Error(\n `Unknown schema lookup target \"${target}\". Use a root field name, a type name, or \"Query\".`,\n );\n}\n\nexport function buildKnowledgeSchemaLookupDocument(\n schema: GraphQLSchema,\n target: string,\n): KnowledgeSchemaLookupDocument {\n return getLookupMetadata(schema, target) as KnowledgeSchemaLookupDocument;\n}\n\nexport function createKnowledgeSchemaResourceText(\n schema: GraphQLSchema,\n): string {\n return JSON.stringify(buildKnowledgeSchemaDiscoveryDocument(schema), null, 2);\n}\n\nexport function createKnowledgeSchemaLookupText(\n schema: GraphQLSchema,\n target: string,\n): string {\n return JSON.stringify(\n buildKnowledgeSchemaLookupDocument(schema, target),\n null,\n 2,\n );\n}\n\nexport function listKnowledgeSchemaTargets(schema: GraphQLSchema) {\n const queryType = schema.getQueryType();\n if (!queryType) {\n throw new Error('Knowledge GraphQL schema has no root query type.');\n }\n\n const objectTypeNames = getObjectTypes(schema).map((type) => type.name);\n const rootFieldNames = Object.keys(queryType.getFields());\n const targetNames = ['Query', ...rootFieldNames, ...objectTypeNames];\n\n return Array.from(new Set(targetNames)).sort((left, right) =>\n left.localeCompare(right),\n );\n}\n", "import {\n buildKnowledgeExtractionGuideDocument,\n buildKnowledgeExtractionSchemaDocument,\n buildKnowledgeExtractionTypeIndexDocument,\n KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI,\n KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI,\n KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n listKnowledgeExtractionResourceTypes,\n} from './extraction-resources.js';\nimport {\n buildKnowledgeSchemaDiscoveryDocument,\n buildKnowledgeSchemaLookupDocument,\n KNOWLEDGE_SCHEMA_LOOKUP_URI,\n KNOWLEDGE_SCHEMA_RESOURCE_URI,\n listKnowledgeSchemaTargets,\n} from './schema-discovery.js';\nimport { knowledgeGraphSchema } from './graphql.js';\n\nexport type KnowledgeResourceMetadata = {\n uri: string;\n title: string;\n description: string;\n mimeType: string;\n};\n\nexport type KnowledgeResourceListEntry = KnowledgeResourceMetadata & {\n name: string;\n};\n\nexport type KnowledgeResourceTemplateListEntry = {\n uriTemplate: string;\n name: string;\n title: string;\n description: string;\n mimeType: string;\n};\n\nexport type KnowledgeResourceContent = {\n uri: string;\n mimeType: string;\n text: string;\n};\n\nexport type KnowledgeResourceReadResult = {\n resource: KnowledgeResourceMetadata;\n content: KnowledgeResourceContent;\n};\n\nexport class KnowledgeResourceNotFoundError extends Error {\n readonly code = 'RESOURCE_NOT_FOUND';\n\n constructor(\n readonly uri: string,\n message = `Unknown ez-know resource URI \"${uri}\".`,\n ) {\n super(message);\n this.name = 'KnowledgeResourceNotFoundError';\n }\n}\n\nexport class KnowledgeResourceUriError extends Error {\n readonly code = 'INVALID_RESOURCE_URI';\n\n constructor(\n readonly uri: string,\n message: string,\n ) {\n super(message);\n this.name = 'KnowledgeResourceUriError';\n }\n}\n\ntype KnowledgeResourceDefinition = KnowledgeResourceListEntry & {\n read: () => Promise<KnowledgeResourceReadResult> | KnowledgeResourceReadResult;\n};\n\ntype KnowledgeResourceTemplateDefinition = KnowledgeResourceTemplateListEntry & {\n list: () => KnowledgeResourceListEntry[];\n read: (\n uri: string,\n ) => Promise<KnowledgeResourceReadResult> | KnowledgeResourceReadResult;\n};\n\nfunction createJsonResourceContent(\n uri: string,\n text: string,\n): KnowledgeResourceContent {\n return {\n uri,\n mimeType: 'application/json',\n text,\n };\n}\n\nfunction createMarkdownResourceContent(\n uri: string,\n text: string,\n): KnowledgeResourceContent {\n return {\n uri,\n mimeType: 'text/markdown',\n text,\n };\n}\n\nfunction createKnowledgeSchemaResourceDefinition(): KnowledgeResourceDefinition {\n return {\n uri: KNOWLEDGE_SCHEMA_RESOURCE_URI,\n name: 'knowledge-schema',\n title: 'Knowledge GraphQL Schema',\n description:\n 'Canonical runtime GraphQL schema discovery payload for the knowledge layer.',\n mimeType: 'application/json',\n read: () => ({\n resource: {\n uri: KNOWLEDGE_SCHEMA_RESOURCE_URI,\n title: 'Knowledge GraphQL Schema',\n description:\n 'Canonical runtime GraphQL schema discovery payload for the knowledge layer.',\n mimeType: 'application/json',\n },\n content: createJsonResourceContent(\n KNOWLEDGE_SCHEMA_RESOURCE_URI,\n createKnowledgeSchemaDiscoveryText(),\n ),\n }),\n };\n}\n\nfunction createKnowledgeExtractionTypesResourceDefinition(): KnowledgeResourceDefinition {\n return {\n uri: KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n name: 'knowledge-extraction-types',\n title: 'Knowledge Extraction Types',\n description:\n 'Canonical registry of knowledge types supported by the extraction workflow.',\n mimeType: 'application/json',\n read: () => ({\n resource: {\n uri: KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n title: 'Knowledge Extraction Types',\n description:\n 'Canonical registry of knowledge types supported by the extraction workflow.',\n mimeType: 'application/json',\n },\n content: createJsonResourceContent(\n KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n JSON.stringify(buildKnowledgeExtractionTypeIndexDocument(), null, 2),\n ),\n }),\n };\n}\n\nfunction createKnowledgeSchemaLookupTemplateDefinition(): KnowledgeResourceTemplateDefinition {\n return {\n uriTemplate: KNOWLEDGE_SCHEMA_LOOKUP_URI,\n name: 'knowledge-schema-lookup',\n title: 'Knowledge Schema Lookup',\n description:\n 'Focused runtime GraphQL schema lookup for a type name, root field, or Query.',\n mimeType: 'application/json',\n list: () =>\n listKnowledgeSchemaTargets(knowledgeGraphSchema).map((target) => ({\n uri: `ez-know://lookup/${target}`,\n name: target,\n title: `Knowledge schema lookup: ${target}`,\n description:\n target === 'Query'\n ? 'Focused lookup of the root query fields.'\n : `Focused lookup of ${target}.`,\n mimeType: 'application/json',\n })),\n read: (uri) => {\n const target = readUriSegment(uri, 'ez-know://lookup/');\n try {\n return {\n resource: {\n uri,\n title: `Knowledge schema lookup: ${target}`,\n description:\n target === 'Query'\n ? 'Focused lookup of the root query fields and their arguments.'\n : `Focused lookup of ${target}.`,\n mimeType: 'application/json',\n },\n content: createJsonResourceContent(\n uri,\n createKnowledgeSchemaLookupText(target),\n ),\n };\n } catch (error) {\n if (error instanceof Error) {\n throw new KnowledgeResourceUriError(uri, error.message);\n }\n\n throw error;\n }\n },\n };\n}\n\nfunction createKnowledgeExtractionSchemaTemplateDefinition(): KnowledgeResourceTemplateDefinition {\n return {\n uriTemplate: KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI,\n name: 'knowledge-extraction-schema',\n title: 'Knowledge Extraction Schema',\n description:\n 'Runtime JSON-schema discovery for a supported knowledge type.',\n mimeType: 'application/json',\n list: () =>\n listKnowledgeExtractionResourceTypes().map((definition) => ({\n uri: `ez-know://extraction/schema/${definition.collection}`,\n name: definition.collection,\n title: `${definition.title} Extraction Schema`,\n description: `Runtime schema discovery for ${definition.title.toLowerCase()}.`,\n mimeType: 'application/json',\n })),\n read: (uri) => {\n const type = readUriSegment(uri, 'ez-know://extraction/schema/');\n try {\n const document = buildKnowledgeExtractionSchemaDocument(type);\n return {\n resource: {\n uri: `ez-know://extraction/schema/${document.type.collection}`,\n title: `${document.type.title} Extraction Schema`,\n description:\n 'Runtime JSON Schema view of the canonical knowledge object model.',\n mimeType: 'application/json',\n },\n content: createJsonResourceContent(\n `ez-know://extraction/schema/${document.type.collection}`,\n JSON.stringify(document, null, 2),\n ),\n };\n } catch (error) {\n if (error instanceof Error) {\n throw new KnowledgeResourceUriError(uri, error.message);\n }\n\n throw error;\n }\n },\n };\n}\n\nfunction createKnowledgeExtractionGuideTemplateDefinition(): KnowledgeResourceTemplateDefinition {\n return {\n uriTemplate: KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI,\n name: 'knowledge-extraction-guide',\n title: 'Knowledge Extraction Guide',\n description:\n 'Checked-in Markdown guidance for a supported knowledge type.',\n mimeType: 'text/markdown',\n list: () =>\n listKnowledgeExtractionResourceTypes().map((definition) => ({\n uri: `ez-know://extraction/guide/${definition.collection}`,\n name: definition.collection,\n title: `${definition.title} Extraction Guide`,\n description: `Checked-in extraction guidance for ${definition.title.toLowerCase()}.`,\n mimeType: 'text/markdown',\n })),\n read: async (uri) => {\n const type = readUriSegment(uri, 'ez-know://extraction/guide/');\n try {\n const document = await buildKnowledgeExtractionGuideDocument(type);\n return {\n resource: {\n uri: `ez-know://extraction/guide/${document.type.collection}`,\n title: `${document.type.title} Extraction Guide`,\n description:\n 'Checked-in Markdown guidance for extracting this knowledge type.',\n mimeType: 'text/markdown',\n },\n content: createMarkdownResourceContent(\n `ez-know://extraction/guide/${document.type.collection}`,\n document.markdown,\n ),\n };\n } catch (error) {\n if (error instanceof Error) {\n throw new KnowledgeResourceUriError(uri, error.message);\n }\n\n throw error;\n }\n },\n };\n}\n\nfunction createKnowledgeSchemaDiscoveryText() {\n return JSON.stringify(buildKnowledgeSchemaDiscoveryDocument(knowledgeGraphSchema), null, 2);\n}\n\nfunction createKnowledgeSchemaLookupText(target: string) {\n return JSON.stringify(\n buildKnowledgeSchemaLookupDocument(knowledgeGraphSchema, target),\n null,\n 2,\n );\n}\n\nfunction readUriSegment(uri: string, prefix: string) {\n if (!uri.startsWith(prefix)) {\n throw new KnowledgeResourceNotFoundError(uri);\n }\n\n const segment = uri.slice(prefix.length);\n if (segment.length === 0 || segment.includes('/')) {\n throw new KnowledgeResourceUriError(\n uri,\n `Unsupported ez-know resource URI \"${uri}\".`,\n );\n }\n\n return segment;\n}\n\nconst KNOWLEDGE_RESOURCE_DEFINITIONS: KnowledgeResourceDefinition[] = [\n createKnowledgeSchemaResourceDefinition(),\n createKnowledgeExtractionTypesResourceDefinition(),\n];\n\nconst KNOWLEDGE_RESOURCE_TEMPLATE_DEFINITIONS: KnowledgeResourceTemplateDefinition[] =\n [\n createKnowledgeSchemaLookupTemplateDefinition(),\n createKnowledgeExtractionSchemaTemplateDefinition(),\n createKnowledgeExtractionGuideTemplateDefinition(),\n ];\n\nexport function listKnowledgeResourceEntries() {\n return KNOWLEDGE_RESOURCE_DEFINITIONS.map(({ read: _read, ...metadata }) => ({\n ...metadata,\n }));\n}\n\nexport function listKnowledgeResourceTemplateEntries() {\n return KNOWLEDGE_RESOURCE_TEMPLATE_DEFINITIONS.map(({ list: _list, read: _read, ...metadata }) => ({\n ...metadata,\n }));\n}\n\nexport function listKnowledgeResourceTemplateResources(\n uriTemplate: string,\n) {\n const template = KNOWLEDGE_RESOURCE_TEMPLATE_DEFINITIONS.find(\n (entry) => entry.uriTemplate === uriTemplate,\n );\n if (!template) {\n throw new KnowledgeResourceNotFoundError(uriTemplate);\n }\n\n return template.list();\n}\n\nexport function getKnowledgeResourceEntry(uri: string) {\n return KNOWLEDGE_RESOURCE_DEFINITIONS.find((entry) => entry.uri === uri);\n}\n\nexport function getKnowledgeResourceTemplateEntry(uriTemplate: string) {\n return KNOWLEDGE_RESOURCE_TEMPLATE_DEFINITIONS.find(\n (entry) => entry.uriTemplate === uriTemplate,\n );\n}\n\nexport async function readKnowledgeResourceDocument(uri: string) {\n const resource = getKnowledgeResourceEntry(uri);\n if (resource) {\n return await resource.read();\n }\n\n if (uri.startsWith('ez-know://lookup/')) {\n return await createKnowledgeSchemaLookupTemplateDefinition().read(uri);\n }\n\n if (uri.startsWith('ez-know://extraction/schema/')) {\n return await createKnowledgeExtractionSchemaTemplateDefinition().read(uri);\n }\n\n if (uri.startsWith('ez-know://extraction/guide/')) {\n return await createKnowledgeExtractionGuideTemplateDefinition().read(uri);\n }\n\n throw new KnowledgeResourceNotFoundError(uri);\n}\n", "import { existsSync } from 'node:fs';\nimport { mkdir, rm, unlink, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\n\nimport {\n KnowledgeStoreLoadError,\n loadKnowledgeStoreFromRoot,\n} from '../loader.js';\nimport {\n resolveKnowledgePatchDirectory,\n resolveKnowledgeRoot,\n} from './paths.js';\nimport { knowledgePatchApplyToolInputSchema } from './schemas.js';\nimport { listKnowledgePatches, loadPatchStateByDir } from './storage.js';\nimport { simulateKnowledgePatch } from './simulation.js';\nimport {\n buildCollectionRecordsForDomain,\n buildCanonicalPathForCollection,\n computeValidationResult,\n} from './validation.js';\nimport type {\n KnowledgePatchApplyResult,\n KnowledgePatchApplyToolInput,\n KnowledgePatchOperation,\n MutableKnowledgeState,\n} from './types.js';\nimport { buildDiagnostic } from './utils.js';\n\nasync function writeCanonicalFilesFromSimulation(\n knowledgeRoot: string,\n operations: KnowledgePatchOperation[],\n simulationState: MutableKnowledgeState,\n) {\n const plannedWrites = new Map<string, string>();\n for (const operation of operations) {\n const filePath = buildCanonicalPathForCollection(\n knowledgeRoot,\n operation.domain,\n operation.type,\n );\n\n const records = buildCollectionRecordsForDomain(\n simulationState,\n operation.type,\n operation.domain,\n );\n\n if (operation.type === 'domains') {\n if (records.length === 0) {\n if (existsSync(filePath)) {\n await unlink(filePath);\n }\n continue;\n }\n\n plannedWrites.set(filePath, `${JSON.stringify(records[0], null, 2)}\\n`);\n continue;\n }\n\n plannedWrites.set(filePath, `${JSON.stringify(records, null, 2)}\\n`);\n }\n\n for (const filePath of plannedWrites.keys()) {\n await mkdir(dirname(filePath), { recursive: true });\n }\n\n for (const [filePath, content] of plannedWrites.entries()) {\n await writeFile(filePath, content, 'utf8');\n }\n}\n\nexport async function applyKnowledgePatch(\n envValue: string | undefined,\n input: KnowledgePatchApplyToolInput,\n cwd = process.cwd(),\n): Promise<KnowledgePatchApplyResult> {\n const parsedInput = knowledgePatchApplyToolInputSchema.parse(input);\n const knowledgeRoot = resolveKnowledgeRoot(envValue, cwd);\n const patchDir = resolveKnowledgePatchDirectory(\n envValue,\n parsedInput.patchId,\n cwd,\n );\n const patchState = await loadPatchStateByDir(patchDir);\n\n const validation = await computeValidationResult(\n knowledgeRoot,\n patchState.patch.id,\n patchState.patch,\n patchState.operations,\n );\n\n const diagnostics = [...validation.diagnostics];\n const pendingPatches = (await listKnowledgePatches(envValue, cwd)).filter(\n (patch) => patch.status === 'draft',\n );\n const firstPendingPatchId = pendingPatches[0]?.id;\n if (\n firstPendingPatchId !== undefined &&\n firstPendingPatchId !== patchState.patch.id\n ) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'apply_out_of_order',\n message: `Patch \"${patchState.patch.id}\" cannot be applied while earlier pending patch \"${firstPendingPatchId}\" still exists.`,\n patchId: patchState.patch.id,\n }),\n );\n }\n\n if (!parsedInput.approval.approved) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'approval_required',\n message: 'Patch apply requires explicit approval.',\n patchId: patchState.patch.id,\n }),\n );\n }\n\n if (\n (firstPendingPatchId !== undefined &&\n firstPendingPatchId !== patchState.patch.id) ||\n !parsedInput.approval.approved ||\n !validation.valid ||\n parsedInput.approval.validationFingerprint !== validation.fingerprint\n ) {\n if (\n validation.valid &&\n parsedInput.approval.validationFingerprint !== validation.fingerprint\n ) {\n diagnostics.push(\n buildDiagnostic({\n severity: 'error',\n code: 'stale_validation_fingerprint',\n message:\n 'Patch validation fingerprint is stale. Revalidate before apply.',\n patchId: patchState.patch.id,\n }),\n );\n }\n\n return {\n patchId: patchState.patch.id,\n applied: false,\n validation,\n diagnostics,\n deletedPatch: false,\n };\n }\n\n const store = await loadKnowledgeStoreFromRoot(knowledgeRoot);\n const simulation = simulateKnowledgePatch(\n store,\n patchState.operations,\n patchState.patch.id,\n );\n if (simulation.diagnostics.length > 0) {\n return {\n patchId: patchState.patch.id,\n applied: false,\n validation: {\n ...validation,\n valid: false,\n diagnostics: simulation.diagnostics,\n },\n diagnostics: simulation.diagnostics,\n deletedPatch: false,\n };\n }\n\n await writeCanonicalFilesFromSimulation(\n knowledgeRoot,\n patchState.operations,\n simulation.state,\n );\n\n try {\n await loadKnowledgeStoreFromRoot(knowledgeRoot);\n } catch (error) {\n const reloadDiagnostics =\n error instanceof KnowledgeStoreLoadError\n ? error.diagnostics.map((diagnostic) =>\n buildDiagnostic({\n severity: 'critical',\n code: diagnostic.kind,\n message: diagnostic.message,\n path: diagnostic.path ? [diagnostic.path] : undefined,\n targetId: diagnostic.id,\n }),\n )\n : [\n buildDiagnostic({\n severity: 'critical',\n code: 'reload_failed',\n message: 'Canonical knowledge store reload failed after apply.',\n patchId: patchState.patch.id,\n }),\n ];\n\n return {\n patchId: patchState.patch.id,\n applied: false,\n validation,\n diagnostics: reloadDiagnostics,\n deletedPatch: false,\n };\n }\n\n await rm(patchDir, { recursive: true, force: true });\n return {\n patchId: patchState.patch.id,\n applied: true,\n validation,\n diagnostics: [],\n deletedPatch: true,\n };\n}\n", "import { readFile, stat } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nimport { KNOWLEDGE_EXTRACTION_TYPE_REGISTRY } from '../extraction-registry.js';\nimport { loadEffectiveKnowledgeStoreFromRoot } from '../effective-state.js';\nimport type { KnowledgeCollectionName } from '../types.js';\nimport { KNOWLEDGE_PATCH_SCHEMA_VERSION } from './constants.js';\nimport { resolveKnowledgeRoot } from './paths.js';\nimport { knowledgePatchValidationResultSchema } from './schemas.js';\nimport { readKnowledgePatch } from './storage.js';\nimport { inferDomainForRecord, simulateKnowledgePatch } from './simulation.js';\nimport type {\n KnowledgePatchMetadata,\n KnowledgePatchOperation,\n MutableKnowledgeState,\n} from './types.js';\nimport { sha256 } from './utils.js';\n\nasync function buildSourceFingerprintInput(sourceFiles: string[]) {\n const entries = await Promise.all(\n sourceFiles.map(async (filePath) => {\n const [fileStat, content] = await Promise.all([\n stat(filePath),\n readFile(filePath, 'utf8'),\n ]);\n return {\n path: filePath,\n size: fileStat.size,\n mtimeMs: fileStat.mtimeMs,\n contentHash: sha256(content),\n };\n }),\n );\n\n entries.sort((left, right) => left.path.localeCompare(right.path));\n return entries;\n}\n\nexport function buildCanonicalPathForCollection(\n rootDir: string,\n domain: string,\n type: KnowledgeCollectionName,\n) {\n return join(\n rootDir,\n domain,\n KNOWLEDGE_EXTRACTION_TYPE_REGISTRY[type].storageFile,\n );\n}\n\nexport function buildAffectedFileList(\n knowledgeRoot: string,\n operations: KnowledgePatchOperation[],\n) {\n const affected = new Set<string>();\n for (const operation of operations) {\n affected.add(\n buildCanonicalPathForCollection(\n knowledgeRoot,\n operation.domain,\n operation.type,\n ),\n );\n }\n\n return [...affected].sort((left, right) => left.localeCompare(right));\n}\n\nexport function buildCollectionRecordsForDomain(\n state: MutableKnowledgeState,\n type: KnowledgeCollectionName,\n domain: string,\n) {\n const records = [...state.byCollection[type].values()].filter(\n (record) => inferDomainForRecord(record) === domain,\n );\n records.sort((left, right) => left.id.localeCompare(right.id));\n return records;\n}\n\nexport async function computeValidationResult(\n knowledgeRoot: string,\n patchId: string,\n patch: KnowledgePatchMetadata,\n operations: KnowledgePatchOperation[],\n) {\n const effectiveBase = await loadEffectiveKnowledgeStoreFromRoot(\n knowledgeRoot,\n {\n selectedPatchId: patchId,\n includeSelectedPatch: false,\n },\n );\n const simulation = simulateKnowledgePatch(\n effectiveBase.store,\n operations,\n patchId,\n );\n const affectedFiles = buildAffectedFileList(knowledgeRoot, operations);\n const diagnostics = [\n ...effectiveBase.diagnostics,\n ...simulation.diagnostics,\n ];\n if (diagnostics.length > 0) {\n return knowledgePatchValidationResultSchema.parse({\n valid: false,\n diagnostics,\n operationCount: operations.length,\n appliedOperationIds: simulation.appliedOperationIds,\n affectedFiles,\n });\n }\n\n const sourceFingerprint = await buildSourceFingerprintInput(\n effectiveBase.store.sourceFiles,\n );\n const fingerprint = sha256(\n JSON.stringify({\n schemaVersion: KNOWLEDGE_PATCH_SCHEMA_VERSION,\n patch: {\n id: patch.id,\n status: patch.status,\n updatedAt: patch.updatedAt,\n },\n operations,\n sourceFingerprint,\n }),\n );\n\n return knowledgePatchValidationResultSchema.parse({\n valid: true,\n fingerprint,\n diagnostics,\n operationCount: operations.length,\n appliedOperationIds: simulation.appliedOperationIds,\n affectedFiles,\n });\n}\n\nexport async function validateKnowledgePatch(\n envValue: string | undefined,\n patchId: string,\n cwd = process.cwd(),\n) {\n const knowledgeRoot = resolveKnowledgeRoot(envValue, cwd);\n const state = await readKnowledgePatch(envValue, patchId, cwd);\n return computeValidationResult(\n knowledgeRoot,\n patchId,\n state.patch,\n state.operations,\n );\n}\n", "import { readdir } from 'node:fs/promises';\nimport { isAbsolute, relative, resolve, sep } from 'node:path';\nimport { z } from 'zod/v4';\n\nimport { loadEffectiveKnowledgeStoreFromRoot } from '../effective-state.js';\nimport { KNOWLEDGE_PATCH_FOLDER_NAME } from './constants.js';\nimport { resolveKnowledgeRoot } from './paths.js';\nimport { readKnowledgePatch } from './storage.js';\n\nexport const compareScopeWithEvidenceInputSchema = z.object({\n patchId: z.string().min(1),\n rootFolder: z.string().trim().min(1).optional(),\n});\n\nexport const compareScopeWithEvidenceResultSchema = z.object({\n patchId: z.string().min(1),\n rootFolder: z.string().min(1),\n scopeFiles: z.array(z.string()),\n coveredFiles: z.array(z.string()),\n omittedFiles: z.array(\n z.object({\n path: z.string(),\n reason: z.string(),\n }),\n ),\n uncoveredFiles: z.array(z.string()),\n outOfRootEvidenceFiles: z.array(z.string()),\n message: z.string(),\n});\n\nfunction toPosixPath(value: string) {\n return value.replaceAll(sep, '/');\n}\n\nfunction normalizeAuditedRoot(rootFolder: string) {\n return resolve(rootFolder);\n}\n\nfunction isPathWithinRoot(rootFolder: string, filePath: string) {\n const relativePath = toPosixPath(relative(rootFolder, filePath));\n return Boolean(\n relativePath &&\n relativePath !== '..' &&\n !relativePath.startsWith('../'),\n );\n}\n\nfunction normalizePathWithinRoot(\n rootFolder: string,\n filePath: string,\n outputRoot = rootFolder,\n) {\n let candidate: string;\n if (isAbsolute(filePath)) {\n candidate = resolve(filePath);\n } else {\n const repoRelativeCandidate = resolve(outputRoot, filePath);\n candidate = isPathWithinRoot(rootFolder, repoRelativeCandidate)\n ? repoRelativeCandidate\n : resolve(rootFolder, filePath);\n }\n const relativePath = toPosixPath(relative(outputRoot, candidate));\n\n if (\n !relativePath ||\n relativePath === '..' ||\n relativePath.startsWith('../')\n ) {\n return null;\n }\n\n return relativePath;\n}\n\nasync function collectScopeFiles(\n currentDir: string,\n auditedRoot: string,\n patchStorageRoot: string,\n outputRoot: string,\n): Promise<string[]> {\n if (currentDir === patchStorageRoot) {\n return [];\n }\n\n const entries = await readdir(currentDir, { withFileTypes: true });\n const files: string[] = [];\n\n for (const entry of entries) {\n const entryPath = resolve(currentDir, entry.name);\n\n if (entry.isDirectory()) {\n files.push(\n ...(await collectScopeFiles(\n entryPath,\n auditedRoot,\n patchStorageRoot,\n outputRoot,\n )),\n );\n continue;\n }\n\n if (!entry.isFile()) {\n continue;\n }\n\n const normalized = normalizePathWithinRoot(auditedRoot, entryPath, outputRoot);\n if (normalized) {\n files.push(normalized);\n }\n }\n\n return files;\n}\n\nexport type CompareScopeWithEvidenceInput = z.infer<\n typeof compareScopeWithEvidenceInputSchema\n>;\nexport type CompareScopeWithEvidenceResult = z.infer<\n typeof compareScopeWithEvidenceResultSchema\n>;\n\nexport async function compareScopeWithEvidence(\n envValue: string | undefined,\n input: CompareScopeWithEvidenceInput,\n cwd = process.cwd(),\n): Promise<CompareScopeWithEvidenceResult> {\n const parsedInput = compareScopeWithEvidenceInputSchema.parse(input);\n const patchState = await readKnowledgePatch(envValue, parsedInput.patchId, cwd);\n const auditedRoot = normalizeAuditedRoot(\n parsedInput.rootFolder ?? patchState.patch.rootFolder,\n );\n const repositoryRoot = resolve(cwd);\n const effectiveState = await loadEffectiveKnowledgeStoreFromRoot(\n resolveKnowledgeRoot(envValue, cwd),\n {\n selectedPatchId: parsedInput.patchId,\n },\n );\n const effectivePatchIds = new Set(effectiveState.patchIds);\n\n const coveredFiles = new Set<string>();\n const outOfRootEvidenceFiles = new Set<string>();\n\n for (const evidence of effectiveState.store.evidence) {\n const provenance = effectiveState.provenance.get(evidence.id);\n if (\n !provenance?.patchIds.some((patchId) => effectivePatchIds.has(patchId))\n ) {\n continue;\n }\n\n const sourcePath = evidence.location?.path;\n if (!sourcePath) {\n continue;\n }\n\n const normalized = normalizePathWithinRoot(\n auditedRoot,\n sourcePath,\n repositoryRoot,\n );\n if (normalized) {\n coveredFiles.add(normalized);\n continue;\n }\n\n outOfRootEvidenceFiles.add(sourcePath);\n }\n\n const omittedFiles = patchState.patch.omittedFiles.map((entry) => ({\n path: entry.path,\n reason: entry.reason,\n }));\n const omittedFileSet = new Set(omittedFiles.map((entry) => entry.path));\n const patchStorageRoot = resolve(auditedRoot, KNOWLEDGE_PATCH_FOLDER_NAME);\n const scopeFiles = (await collectScopeFiles(\n auditedRoot,\n auditedRoot,\n patchStorageRoot,\n repositoryRoot,\n )).sort((left, right) => left.localeCompare(right));\n\n const uncoveredFiles = scopeFiles.filter(\n (filePath) => !coveredFiles.has(filePath) && !omittedFileSet.has(filePath),\n );\n const sortedCoveredFiles = [...coveredFiles].sort((left, right) =>\n left.localeCompare(right),\n );\n const sortedOutOfRootEvidenceFiles = [...outOfRootEvidenceFiles].sort(\n (left, right) => left.localeCompare(right),\n );\n\n const message =\n uncoveredFiles.length > 0\n ? `Recheck ${uncoveredFiles.length} uncovered file(s): add evidence-backed knowledge or mark them omitted with a reason.`\n : 'Scope audit complete. No uncovered files remain.';\n\n return compareScopeWithEvidenceResultSchema.parse({\n patchId: parsedInput.patchId,\n rootFolder: auditedRoot,\n scopeFiles,\n coveredFiles: sortedCoveredFiles,\n omittedFiles,\n uncoveredFiles,\n outOfRootEvidenceFiles: sortedOutOfRootEvidenceFiles,\n message,\n });\n}\n", "import { listKnowledgeExtractionTypes } from '../extraction-registry.js';\n\nimport { applyKnowledgePatch } from './apply.js';\nimport {\n knowledgePatchApplyApprovalSchema,\n knowledgePatchApplyToolInputSchema,\n knowledgePatchCreateOperationSchema,\n knowledgePatchDeleteOperationSchema,\n knowledgePatchDiagnosticSchema,\n knowledgePatchMetadataSchema,\n knowledgePatchOperationSchema,\n knowledgePatchOperationsEnvelopeSchema,\n knowledgePatchToolInputSchema,\n knowledgePatchUpdateOperationSchema,\n knowledgePatchValidationResultSchema,\n} from './schemas.js';\nimport {\n addKnowledgePatchOperation,\n closeKnowledgePatch,\n createKnowledgePatch,\n deleteKnowledgePatchOperation,\n listKnowledgePatches,\n readKnowledgePatch,\n updateKnowledgePatchMetadata,\n updateKnowledgePatchOperation,\n} from './storage.js';\nimport type { KnowledgePatchToolInput } from './types.js';\nimport {\n resolveKnowledgePatchDirectory,\n resolveKnowledgePatchRoot,\n} from './paths.js';\nimport { validateKnowledgePatch } from './validation.js';\n\nexport * from './apply.js';\nexport * from './paths.js';\nexport * from './schemas.js';\nexport * from './scope-audit.js';\nexport * from './storage.js';\nexport * from './types.js';\nexport * from './validation.js';\n\nexport async function executeKnowledgePatchAction(\n envValue: string | undefined,\n input: KnowledgePatchToolInput,\n cwd = process.cwd(),\n) {\n switch (input.action) {\n case 'create':\n return createKnowledgePatch(envValue, input.patch, cwd);\n case 'list':\n return listKnowledgePatches(envValue, cwd);\n case 'get':\n return readKnowledgePatch(envValue, input.patchId, cwd);\n case 'add_operation':\n return addKnowledgePatchOperation(\n envValue,\n input.patchId,\n input.operation,\n cwd,\n );\n case 'update_operation':\n return updateKnowledgePatchOperation(\n envValue,\n input.patchId,\n input.update,\n cwd,\n );\n case 'update_metadata':\n return updateKnowledgePatchMetadata(\n envValue,\n input.patchId,\n input.metadata,\n cwd,\n );\n case 'delete_operation':\n return deleteKnowledgePatchOperation(\n envValue,\n input.patchId,\n input.operationId,\n cwd,\n );\n case 'validate':\n return validateKnowledgePatch(envValue, input.patchId, cwd);\n case 'close':\n return closeKnowledgePatch(envValue, input.patchId, cwd);\n }\n}\n\nexport function buildKnowledgePatchToolText(result: unknown) {\n return JSON.stringify(result, null, 2);\n}\n\nexport function listSupportedKnowledgePatchTypes() {\n return listKnowledgeExtractionTypes().map((type) => type.collection);\n}\n\nvoid applyKnowledgePatch;\nvoid closeKnowledgePatch;\nvoid createKnowledgePatch;\nvoid deleteKnowledgePatchOperation;\nvoid knowledgePatchApplyApprovalSchema;\nvoid knowledgePatchApplyToolInputSchema;\nvoid knowledgePatchCreateOperationSchema;\nvoid knowledgePatchDeleteOperationSchema;\nvoid knowledgePatchDiagnosticSchema;\nvoid knowledgePatchMetadataSchema;\nvoid knowledgePatchOperationSchema;\nvoid knowledgePatchOperationsEnvelopeSchema;\nvoid knowledgePatchToolInputSchema;\nvoid knowledgePatchUpdateOperationSchema;\nvoid knowledgePatchValidationResultSchema;\nvoid listKnowledgePatches;\nvoid readKnowledgePatch;\nvoid resolveKnowledgePatchDirectory;\nvoid resolveKnowledgePatchRoot;\nvoid updateKnowledgePatchMetadata;\nvoid updateKnowledgePatchOperation;\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport { ResourceTemplate } from '@modelcontextprotocol/server';\nimport {\n getKnowledgeResourceEntry,\n listKnowledgeExtractionResourceTypes,\n listKnowledgeResourceTemplateResources,\n readKnowledgeResourceDocument,\n KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI,\n KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI,\n KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n} from '@ez-know/core';\n\nfunction listExtractionTypeNames() {\n return listKnowledgeExtractionResourceTypes().flatMap((definition) => [\n definition.collection,\n ...definition.aliases,\n ]);\n}\n\nexport function registerKnowledgeExtractionResources(server: McpServer) {\n const resource = getKnowledgeResourceEntry(KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI);\n if (!resource) {\n throw new Error('Knowledge extraction resource metadata is missing.');\n }\n\n server.registerResource(\n resource.name,\n KNOWLEDGE_EXTRACTION_TYPES_RESOURCE_URI,\n {\n title: resource.title,\n description: resource.description,\n mimeType: resource.mimeType,\n },\n async (uri) => ({\n contents: [(await readKnowledgeResourceDocument(uri.href)).content],\n }),\n );\n\n server.registerResource(\n 'knowledge-extraction-schema',\n new ResourceTemplate(KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI, {\n list: async () => ({\n resources: listKnowledgeResourceTemplateResources(\n KNOWLEDGE_EXTRACTION_SCHEMA_RESOURCE_URI,\n ),\n }),\n complete: {\n type: async (value) =>\n listExtractionTypeNames().filter((name) =>\n name.toLowerCase().startsWith(value.toLowerCase()),\n ),\n },\n }),\n {\n title: 'Knowledge Extraction Schema',\n description:\n 'Runtime JSON-schema discovery for a supported knowledge type.',\n mimeType: 'application/json',\n },\n async (uri) => ({\n contents: [(await readKnowledgeResourceDocument(uri.href)).content],\n }),\n );\n\n server.registerResource(\n 'knowledge-extraction-guide',\n new ResourceTemplate(KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI, {\n list: async () => ({\n resources: listKnowledgeResourceTemplateResources(\n KNOWLEDGE_EXTRACTION_GUIDE_RESOURCE_URI,\n ),\n }),\n complete: {\n type: async (value) =>\n listExtractionTypeNames().filter((name) =>\n name.toLowerCase().startsWith(value.toLowerCase()),\n ),\n },\n }),\n {\n title: 'Knowledge Extraction Guide',\n description:\n 'Checked-in Markdown guidance for a supported knowledge type.',\n mimeType: 'text/markdown',\n },\n async (uri) => ({\n contents: [(await readKnowledgeResourceDocument(uri.href)).content],\n }),\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport {\n buildKnowledgePatchToolText,\n compareScopeWithEvidence,\n compareScopeWithEvidenceInputSchema,\n} from '@ez-know/core';\n\nexport function registerCompareScopeWithEvidenceTool(server: McpServer) {\n server.registerTool(\n 'compare_scope_with_evidence',\n {\n title: 'Compare Scope With Evidence',\n description:\n 'Compares a patch evidence footprint against the audited repository root and reports uncovered files that still need review.',\n inputSchema: compareScopeWithEvidenceInputSchema,\n },\n async (input) => {\n const parsedInput = compareScopeWithEvidenceInputSchema.parse(input);\n const result = await compareScopeWithEvidence(\n process.env.EZ_KNOW_ROOT,\n parsedInput,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgePatchToolText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport * as z from 'zod/v4';\nimport {\n buildKnowledgeGraphQLText,\n executeKnowledgeQuery,\n type NormalizedKnowledgeStore,\n} from '@ez-know/core';\n\ntype GraphQLContext = NormalizedKnowledgeStore | undefined;\n\nexport function registerKnowledgeGraphTool(\n server: McpServer,\n getStore: () => Promise<GraphQLContext>,\n) {\n server.registerTool(\n 'knowledge_graph_query',\n {\n title: 'Knowledge Graph Query',\n description:\n 'Executes a GraphQL query against the loaded knowledge store.',\n inputSchema: z.object({\n query: z.string(),\n variables: z.record(z.string(), z.unknown()).optional(),\n operationName: z.string().optional(),\n }),\n },\n async ({ query, variables, operationName }) => {\n const result = await executeKnowledgeQuery(\n await getStore(),\n query,\n variables,\n operationName,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgeGraphQLText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport * as z from 'zod/v4';\nimport {\n KnowledgeResourceNotFoundError,\n KnowledgeResourceUriError,\n listKnowledgeResourceEntries,\n listKnowledgeResourceTemplateEntries,\n readKnowledgeResourceDocument,\n} from '@ez-know/core';\n\ntype LegacyResourceToolResult = {\n content: [\n {\n type: 'text';\n text: string;\n },\n ];\n};\n\nfunction createTextToolResult(payload: unknown): LegacyResourceToolResult {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(payload, null, 2),\n },\n ],\n };\n}\n\nfunction serializeResourceError(error: unknown, uri: string) {\n if (\n error instanceof KnowledgeResourceNotFoundError ||\n error instanceof KnowledgeResourceUriError\n ) {\n return {\n error: {\n code: error.code,\n message: error.message,\n uri: error.uri,\n },\n };\n }\n\n if (error instanceof Error) {\n return {\n error: {\n code: 'RESOURCE_READ_FAILED',\n message: error.message,\n uri,\n },\n };\n }\n\n return {\n error: {\n code: 'RESOURCE_READ_FAILED',\n message: 'Unknown resource read failure.',\n uri,\n },\n };\n}\n\nexport function isLegacyResourceToolsEnabled(\n value = process.env.EZ_KNOW_LEGACY_RESOURCES,\n) {\n if (value === undefined) {\n return false;\n }\n\n const normalized = value.trim().toLowerCase();\n if (normalized.length === 0) {\n return false;\n }\n\n return !['0', 'false', 'off', 'no'].includes(normalized);\n}\n\nexport function registerLegacyResourceTools(server: McpServer) {\n server.registerTool(\n 'list_mcp_resources',\n {\n title: 'Legacy MCP Resource List',\n description:\n 'Lists the ez-know resources exposed through the legacy tool fallback.',\n inputSchema: z.object({}),\n },\n async () =>\n createTextToolResult({\n resources: listKnowledgeResourceEntries(),\n }),\n );\n\n server.registerTool(\n 'list_mcp_resource_templates',\n {\n title: 'Legacy MCP Resource Templates',\n description:\n 'Lists the ez-know resource templates exposed through the legacy tool fallback.',\n inputSchema: z.object({}),\n },\n async () =>\n createTextToolResult({\n resourceTemplates: listKnowledgeResourceTemplateEntries(),\n }),\n );\n\n server.registerTool(\n 'read_mcp_resource',\n {\n title: 'Legacy MCP Resource Read',\n description:\n 'Reads a single ez-know resource by URI through the legacy tool fallback.',\n inputSchema: z.object({\n uri: z.string().min(1),\n }),\n },\n async (input) => {\n const parsedInput = z.object({ uri: z.string().min(1) }).parse(input);\n\n try {\n const result = await readKnowledgeResourceDocument(parsedInput.uri);\n return createTextToolResult({\n resource: result.resource,\n contents: [result.content],\n });\n } catch (error) {\n return createTextToolResult(\n serializeResourceError(error, parsedInput.uri),\n );\n }\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport {\n applyKnowledgePatch,\n buildKnowledgePatchToolText,\n knowledgePatchApplyToolInputSchema,\n} from '@ez-know/core';\n\nexport function registerKnowledgePatchApplyTool(server: McpServer) {\n server.registerTool(\n 'knowledge_patch_apply',\n {\n title: 'Knowledge Patch Apply',\n description:\n 'Applies a validated knowledge patch to canonical files after explicit approval.',\n inputSchema: knowledgePatchApplyToolInputSchema,\n },\n async (input) => {\n const parsedInput = knowledgePatchApplyToolInputSchema.parse(input);\n const result = await applyKnowledgePatch(\n process.env.EZ_KNOW_ROOT,\n parsedInput,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgePatchToolText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport {\n buildKnowledgePatchToolText,\n executeKnowledgePatchAction,\n knowledgePatchToolInputSchema,\n} from '@ez-know/core';\n\nexport function registerKnowledgePatchTool(server: McpServer) {\n server.registerTool(\n 'knowledge_patch',\n {\n title: 'Knowledge Patch',\n description:\n 'Manages draft knowledge patches without mutating canonical knowledge files.',\n inputSchema: knowledgePatchToolInputSchema,\n },\n async (input) => {\n const parsedInput = knowledgePatchToolInputSchema.parse(input);\n const result = await executeKnowledgePatchAction(\n process.env.EZ_KNOW_ROOT,\n parsedInput,\n );\n\n return {\n content: [\n {\n type: 'text',\n text: buildKnowledgePatchToolText(result),\n },\n ],\n };\n },\n );\n}\n", "import type { McpServer } from '@modelcontextprotocol/server';\nimport { ResourceTemplate } from '@modelcontextprotocol/server';\nimport {\n getKnowledgeResourceEntry,\n knowledgeGraphSchema,\n listKnowledgeResourceTemplateResources,\n listKnowledgeSchemaTargets,\n readKnowledgeResourceDocument,\n KNOWLEDGE_SCHEMA_LOOKUP_URI,\n KNOWLEDGE_SCHEMA_RESOURCE_URI,\n} from '@ez-know/core';\n\nexport function registerKnowledgeSchemaResources(server: McpServer) {\n const resource = getKnowledgeResourceEntry(KNOWLEDGE_SCHEMA_RESOURCE_URI);\n if (!resource) {\n throw new Error('Knowledge schema resource metadata is missing.');\n }\n\n server.registerResource(\n resource.name,\n KNOWLEDGE_SCHEMA_RESOURCE_URI,\n {\n title: resource.title,\n description: resource.description,\n mimeType: resource.mimeType,\n },\n async (uri) => ({\n contents: [(await readKnowledgeResourceDocument(uri.href)).content],\n }),\n );\n\n server.registerResource(\n 'knowledge-schema-lookup',\n new ResourceTemplate(KNOWLEDGE_SCHEMA_LOOKUP_URI, {\n list: async () => ({\n resources: listKnowledgeResourceTemplateResources(\n KNOWLEDGE_SCHEMA_LOOKUP_URI,\n ),\n }),\n complete: {\n target: async (value) =>\n listKnowledgeSchemaTargets(knowledgeGraphSchema).filter((target) =>\n target.toLowerCase().startsWith(value.toLowerCase()),\n ),\n },\n }),\n {\n title: 'Knowledge Schema Lookup',\n description:\n 'Focused runtime GraphQL schema lookup for a type name, root field, or Query.',\n mimeType: 'application/json',\n },\n async (uri) => ({\n contents: [(await readKnowledgeResourceDocument(uri.href)).content],\n }),\n );\n}\n", "import { access } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nimport fastifyStatic from '@fastify/static';\nimport Fastify, { type FastifyInstance } from 'fastify';\nimport type { NormalizedKnowledgeStore } from '@ez-know/core';\nimport { registerRestRoutes } from './routes.js';\n\nexport interface RestAppOptions {\n staticRoot?: string;\n}\n\nexport async function buildRestApp(\n store: NormalizedKnowledgeStore | undefined,\n options: RestAppOptions = {},\n): Promise<FastifyInstance> {\n const app = Fastify({\n logger: false,\n });\n\n await registerRestRoutes(app, store);\n\n if (options.staticRoot) {\n try {\n const staticRoot = resolve(options.staticRoot);\n\n await access(staticRoot);\n await app.register(fastifyStatic, {\n root: staticRoot,\n prefix: '/',\n });\n } catch {\n // The package can still run the API without bundled frontend assets.\n }\n }\n\n await app.ready();\n\n return app;\n}\n", "import type { KnowledgeCollectionName } from '@ez-know/core';\n\nexport const REST_SERVICE_NAME = 'ez-know-rest';\nexport const REST_API_PREFIX = '/api';\nexport const REST_V1_PREFIX = '/api/v1';\nexport const REST_OPENAPI_PATH = '/api/openapi.json';\nexport const REST_DOCS_PATH = '/api/docs';\nexport const REST_HEALTH_PATH = '/api/health';\nexport const REST_PATCHES_ROUTE = 'patches';\nexport const REST_PATCH_PREVIEW_ROUTE = 'patches/:patchId/preview';\nexport const REST_PATCH_PREVIEW_PATH = 'patches/{patchId}/preview';\n\nexport interface RestCollectionRoute {\n route: string;\n collection: KnowledgeCollectionName;\n label: string;\n}\n\nexport const REST_COLLECTIONS = [\n { route: 'domains', collection: 'domains', label: 'Domains' },\n { route: 'entities', collection: 'entities', label: 'Entities' },\n {\n route: 'relationships',\n collection: 'relationships',\n label: 'Relationships',\n },\n {\n route: 'capabilities',\n collection: 'capabilities',\n label: 'Capabilities',\n },\n { route: 'features', collection: 'features', label: 'Features' },\n {\n route: 'business-rules',\n collection: 'business_rules',\n label: 'Business rules',\n },\n { route: 'constraints', collection: 'constraints', label: 'Constraints' },\n { route: 'rationales', collection: 'rationales', label: 'Rationales' },\n { route: 'evidence', collection: 'evidence', label: 'Evidence' },\n { route: 'questions', collection: 'questions', label: 'Questions' },\n { route: 'conflicts', collection: 'conflicts', label: 'Conflicts' },\n] as const satisfies readonly RestCollectionRoute[];\n\nexport type RestCollectionRouteName =\n (typeof REST_COLLECTIONS)[number]['route'];\n\nexport const REST_COLLECTION_ROUTE_LOOKUP = new Map<\n RestCollectionRouteName,\n RestCollectionRoute\n>(\n REST_COLLECTIONS.map((definition) => [definition.route, definition] as const),\n);\n\nexport function isRestCollectionRouteName(\n value: string,\n): value is RestCollectionRouteName {\n return REST_COLLECTION_ROUTE_LOOKUP.has(value as RestCollectionRouteName);\n}\n", "import { REST_OPENAPI_PATH } from './constants.js';\n\nexport function buildSwaggerUiHtml(openApiPath = REST_OPENAPI_PATH) {\n return `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>ez-know REST API</title>\n <link\n rel=\"stylesheet\"\n href=\"https://unpkg.com/swagger-ui-dist@5/swagger-ui.css\"\n />\n <style>\n html,\n body {\n margin: 0;\n padding: 0;\n background: #0f172a;\n }\n\n #swagger-ui {\n background: #fff;\n }\n </style>\n </head>\n <body>\n <div id=\"swagger-ui\"></div>\n <script src=\"https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js\" crossorigin=\"anonymous\"></script>\n <script>\n window.ui = SwaggerUIBundle({\n url: '${openApiPath}',\n dom_id: '#swagger-ui',\n deepLinking: true,\n presets: [SwaggerUIBundle.presets.apis],\n });\n </script>\n </body>\n</html>`;\n}\n", "import {\n extendZodWithOpenApi,\n OpenAPIRegistry,\n OpenApiGeneratorV3,\n} from '@asteasolutions/zod-to-openapi';\nimport { z } from 'zod/v4';\n\nimport {\n REST_COLLECTIONS,\n REST_DOCS_PATH,\n REST_HEALTH_PATH,\n REST_PATCHES_ROUTE,\n REST_PATCH_PREVIEW_PATH,\n REST_OPENAPI_PATH,\n REST_V1_PREFIX,\n} from './constants.js';\nimport {\n getRestCollectionSchemaDefinition,\n REST_CERTAINTY_SCHEMA,\n REST_CONFIDENCE_SCHEMA,\n} from './schema-registry.js';\n\nextendZodWithOpenApi(z);\n\nconst openApiRegistry = new OpenAPIRegistry();\n\nconst restErrorResponseSchema = openApiRegistry.register(\n 'RestErrorResponse',\n z\n .object({\n error: z.object({\n code: z.string(),\n message: z.string(),\n }),\n })\n .openapi({\n description: 'Standard REST error envelope.',\n }),\n);\n\nconst restHealthResponseSchema = openApiRegistry.register(\n 'RestHealthResponse',\n z\n .object({\n service: z.string(),\n status: z.literal('ok'),\n storeAvailable: z.boolean(),\n })\n .openapi({\n description: 'Service health payload.',\n }),\n);\n\nconst restPatchSummarySchema = openApiRegistry.register(\n 'RestPatchSummary',\n z\n .object({\n id: z.string(),\n status: z.string(),\n title: z.string(),\n description: z.string().optional(),\n rootFolder: z.string(),\n omittedFiles: z.array(\n z.object({\n path: z.string(),\n reason: z.string(),\n }),\n ),\n operationCount: z.number().int().min(0),\n createdAt: z.string(),\n updatedAt: z.string(),\n })\n .openapi({\n description: 'Patch inventory summary.',\n }),\n);\n\nconst restPatchProvenanceEntrySchema = openApiRegistry.register(\n 'RestPatchProvenanceEntry',\n z\n .object({\n patchIds: z.array(z.string()),\n patched: z.boolean(),\n })\n .openapi({\n description: 'Patch provenance for a previewed record.',\n }),\n);\n\nconst restPatchFacetItemSchema = openApiRegistry.register(\n 'RestPatchFacetItem',\n z\n .object({\n id: z.string(),\n label: z.string(),\n patched: z.boolean(),\n provenancePatchIds: z.array(z.string()),\n })\n .openapi({\n description: 'Patch-aware facet option.',\n }),\n);\n\nconst confidenceRef = openApiRegistry.register(\n 'Confidence',\n REST_CONFIDENCE_SCHEMA,\n);\nconst certaintyRef = openApiRegistry.register(\n 'Certainty',\n REST_CERTAINTY_SCHEMA,\n);\n\nconst restOpenApiDocumentSchema = openApiRegistry.register(\n 'RestOpenApiDocument',\n z.record(z.string(), z.unknown()),\n);\n\nconst previewCollectionResponseSchemas = new Map<string, any>();\n\nfor (const collection of REST_COLLECTIONS) {\n const schemaDefinition = getRestCollectionSchemaDefinition(\n collection.collection,\n );\n const schemaShape = (\n schemaDefinition.itemSchema as { shape?: Record<string, unknown> }\n ).shape;\n\n const itemSchemaSource =\n schemaShape && 'certainty' in schemaShape && 'confidence' in schemaShape\n ? schemaDefinition.itemSchema.extend({\n certainty: certaintyRef,\n confidence: confidenceRef,\n })\n : schemaShape && 'confidence' in schemaShape\n ? schemaDefinition.itemSchema.extend({\n confidence: confidenceRef,\n })\n : schemaDefinition.itemSchema;\n\n const itemSchema = openApiRegistry.register(\n schemaDefinition.itemName,\n itemSchemaSource,\n );\n\n const previewItemSchema = openApiRegistry.register(\n `${schemaDefinition.itemName}PreviewRecord`,\n itemSchemaSource.extend({\n patched: z.boolean(),\n provenancePatchIds: z.array(z.string()),\n }),\n );\n\n const collectionResponseSchema = openApiRegistry.register(\n schemaDefinition.collectionResponseName,\n z\n .object({\n items: z.array(itemSchema),\n count: z.number().int().min(0),\n })\n .openapi({\n description: `${schemaDefinition.itemName} collection response.`,\n }),\n );\n\n const previewCollectionResponseSchema = openApiRegistry.register(\n `${schemaDefinition.itemName}PreviewCollectionResponse`,\n z\n .object({\n items: z.array(previewItemSchema),\n count: z.number().int().min(0),\n })\n .openapi({\n description: `${schemaDefinition.itemName} preview collection response.`,\n }),\n );\n previewCollectionResponseSchemas.set(\n collection.collection,\n previewCollectionResponseSchema,\n );\n\n const itemResponseSchema = openApiRegistry.register(\n schemaDefinition.itemResponseName,\n z\n .object({\n item: itemSchema,\n })\n .openapi({\n description: `${schemaDefinition.itemName} item response.`,\n }),\n );\n\n openApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${collection.route}`,\n summary: `List ${collection.label.toLowerCase()}`,\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: collectionResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n 503: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n });\n\n openApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${collection.route}/{id}`,\n summary: `Get ${collection.label.toLowerCase()} by id`,\n request: {\n params: z.object({\n id: z.string(),\n }),\n },\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: itemResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n 503: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n });\n}\n\nconst restPatchInventoryResponseSchema = openApiRegistry.register(\n 'RestPatchInventoryResponse',\n z\n .object({\n items: z.array(restPatchSummarySchema),\n count: z.number().int().min(0),\n })\n .openapi({\n description: 'Patch inventory response.',\n }),\n);\n\nconst restPatchPreviewResponseSchema = openApiRegistry.register(\n 'RestPatchPreviewResponse',\n z\n .object({\n selectedPatchId: z.string(),\n prefixPatchIds: z.array(z.string()),\n patches: z.array(restPatchSummarySchema),\n provenance: z.record(z.string(), restPatchProvenanceEntrySchema),\n facets: z\n .object({\n domains: z.array(restPatchFacetItemSchema),\n entities: z.array(restPatchFacetItemSchema),\n })\n .strict(),\n collections: z\n .object({\n domains: previewCollectionResponseSchemas.get('domains')!,\n entities: previewCollectionResponseSchemas.get('entities')!,\n relationships: previewCollectionResponseSchemas.get('relationships')!,\n capabilities: previewCollectionResponseSchemas.get('capabilities')!,\n features: previewCollectionResponseSchemas.get('features')!,\n business_rules:\n previewCollectionResponseSchemas.get('business_rules')!,\n constraints: previewCollectionResponseSchemas.get('constraints')!,\n rationales: previewCollectionResponseSchemas.get('rationales')!,\n evidence: previewCollectionResponseSchemas.get('evidence')!,\n questions: previewCollectionResponseSchemas.get('questions')!,\n conflicts: previewCollectionResponseSchemas.get('conflicts')!,\n })\n .strict(),\n })\n .openapi({\n description: 'Patch-aware preview snapshot response.',\n }),\n);\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${REST_PATCHES_ROUTE}`,\n summary: 'List patch inventory',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restPatchInventoryResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: `${REST_V1_PREFIX}/${REST_PATCH_PREVIEW_PATH}`,\n summary: 'Preview a patch prefix',\n request: {\n params: z.object({\n patchId: z.string(),\n }),\n },\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restPatchPreviewResponseSchema,\n },\n },\n },\n 404: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n 503: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restErrorResponseSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: REST_HEALTH_PATH,\n summary: 'Service health',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restHealthResponseSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: REST_OPENAPI_PATH,\n summary: 'OpenAPI document',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'application/json': {\n schema: restOpenApiDocumentSchema,\n },\n },\n },\n },\n});\n\nopenApiRegistry.registerPath({\n method: 'get',\n path: REST_DOCS_PATH,\n summary: 'Swagger UI',\n responses: {\n 200: {\n description: 'Default Response',\n content: {\n 'text/html': {\n schema: z.string(),\n },\n },\n },\n },\n});\n\nexport function buildRestOpenApiDocument() {\n return new OpenApiGeneratorV3(openApiRegistry.definitions).generateDocument({\n openapi: '3.1.0',\n info: {\n title: 'ez-know REST API',\n version: '0.1.0',\n description:\n 'Read-only HTTP interface for loaded ez-know knowledge collections.',\n },\n servers: [{ url: '/' }],\n });\n}\n\nexport const REST_OPENAPI_DOCUMENT = buildRestOpenApiDocument();\n", "import type { ZodTypeAny } from 'zod/v4';\nimport {\n businessRuleSchema,\n capabilitySchema,\n certaintySchema,\n confidenceSchema,\n conflictSchema,\n constraintSchema,\n domainSchema,\n entitySchema,\n evidenceSchema,\n featureSchema,\n questionSchema,\n rationaleSchema,\n relationshipSchema,\n type KnowledgeCollectionName,\n} from '@ez-know/core';\n\nexport interface RestCollectionSchemaDefinition {\n itemName: string;\n itemSchema: ZodTypeAny;\n collectionResponseName: string;\n itemResponseName: string;\n}\n\nexport const REST_COLLECTION_SCHEMA_REGISTRY = {\n domains: {\n itemName: 'Domain',\n itemSchema: domainSchema,\n collectionResponseName: 'DomainCollectionResponse',\n itemResponseName: 'DomainItemResponse',\n },\n entities: {\n itemName: 'Entity',\n itemSchema: entitySchema,\n collectionResponseName: 'EntityCollectionResponse',\n itemResponseName: 'EntityItemResponse',\n },\n relationships: {\n itemName: 'EntityRelationship',\n itemSchema: relationshipSchema,\n collectionResponseName: 'EntityRelationshipCollectionResponse',\n itemResponseName: 'EntityRelationshipItemResponse',\n },\n capabilities: {\n itemName: 'Capability',\n itemSchema: capabilitySchema,\n collectionResponseName: 'CapabilityCollectionResponse',\n itemResponseName: 'CapabilityItemResponse',\n },\n features: {\n itemName: 'Feature',\n itemSchema: featureSchema,\n collectionResponseName: 'FeatureCollectionResponse',\n itemResponseName: 'FeatureItemResponse',\n },\n business_rules: {\n itemName: 'BusinessRule',\n itemSchema: businessRuleSchema,\n collectionResponseName: 'BusinessRuleCollectionResponse',\n itemResponseName: 'BusinessRuleItemResponse',\n },\n constraints: {\n itemName: 'Constraint',\n itemSchema: constraintSchema,\n collectionResponseName: 'ConstraintCollectionResponse',\n itemResponseName: 'ConstraintItemResponse',\n },\n rationales: {\n itemName: 'Rationale',\n itemSchema: rationaleSchema,\n collectionResponseName: 'RationaleCollectionResponse',\n itemResponseName: 'RationaleItemResponse',\n },\n evidence: {\n itemName: 'Evidence',\n itemSchema: evidenceSchema,\n collectionResponseName: 'EvidenceCollectionResponse',\n itemResponseName: 'EvidenceItemResponse',\n },\n questions: {\n itemName: 'Question',\n itemSchema: questionSchema,\n collectionResponseName: 'QuestionCollectionResponse',\n itemResponseName: 'QuestionItemResponse',\n },\n conflicts: {\n itemName: 'Conflict',\n itemSchema: conflictSchema,\n collectionResponseName: 'ConflictCollectionResponse',\n itemResponseName: 'ConflictItemResponse',\n },\n} as const satisfies Record<\n KnowledgeCollectionName,\n RestCollectionSchemaDefinition\n>;\n\nexport function getRestCollectionSchemaDefinition(\n collection: KnowledgeCollectionName,\n) {\n return REST_COLLECTION_SCHEMA_REGISTRY[collection];\n}\n\nexport function getRestCollectionItemSchema(\n collection: KnowledgeCollectionName,\n) {\n return REST_COLLECTION_SCHEMA_REGISTRY[collection].itemSchema;\n}\n\nexport const REST_CONFIDENCE_SCHEMA = confidenceSchema;\nexport const REST_CERTAINTY_SCHEMA = certaintySchema;\n", "import {\n loadEffectiveKnowledgeStoreFromRoot,\n listKnowledgePatches,\n type KnowledgeCollectionName,\n type KnowledgeRecord,\n type KnowledgePatchSummary,\n} from '@ez-know/core';\n\nexport interface RestPatchProvenanceEntry {\n patchIds: string[];\n patched: boolean;\n}\n\nexport type RestPreviewRecord<T = KnowledgeRecord> = T & {\n patched: boolean;\n provenancePatchIds: string[];\n};\n\nexport interface RestPatchFacetItem {\n id: string;\n label: string;\n patched: boolean;\n provenancePatchIds: string[];\n}\n\nexport interface RestPatchFacets {\n domains: RestPatchFacetItem[];\n entities: RestPatchFacetItem[];\n}\n\nexport interface RestPreviewCollection<T = KnowledgeRecord> {\n items: RestPreviewRecord<T>[];\n count: number;\n}\n\nexport interface RestPatchPreviewCollections {\n domains: RestPreviewCollection;\n entities: RestPreviewCollection;\n relationships: RestPreviewCollection;\n capabilities: RestPreviewCollection;\n features: RestPreviewCollection;\n business_rules: RestPreviewCollection;\n constraints: RestPreviewCollection;\n rationales: RestPreviewCollection;\n evidence: RestPreviewCollection;\n questions: RestPreviewCollection;\n conflicts: RestPreviewCollection;\n}\n\nexport interface RestPatchPreviewResponse {\n selectedPatchId: string;\n prefixPatchIds: string[];\n patches: KnowledgePatchSummary[];\n provenance: Record<string, RestPatchProvenanceEntry>;\n facets: RestPatchFacets;\n collections: RestPatchPreviewCollections;\n}\n\nfunction buildPreviewRecord<T extends KnowledgeRecord>(\n record: T,\n provenance: RestPatchProvenanceEntry | undefined,\n): RestPreviewRecord<T> {\n return {\n ...structuredClone(record),\n patched: Boolean(provenance?.patched),\n provenancePatchIds: provenance?.patchIds ?? [],\n };\n}\n\nfunction buildFacetItem(\n record: KnowledgeRecord & {\n name?: string;\n question?: string;\n description?: string;\n },\n provenance: RestPatchProvenanceEntry | undefined,\n): RestPatchFacetItem {\n const label: string =\n 'name' in record && typeof record.name === 'string'\n ? record.name\n : 'question' in record && typeof record.question === 'string'\n ? record.question\n : (record.description ?? '');\n\n return {\n id: record.id,\n label,\n patched: Boolean(provenance?.patched),\n provenancePatchIds: provenance?.patchIds ?? [],\n };\n}\n\nfunction buildCollectionPreview<T extends KnowledgeRecord>(\n records: T[],\n provenance: Map<string, RestPatchProvenanceEntry>,\n): RestPreviewCollection<T> {\n const items = records.map((record) =>\n buildPreviewRecord(record, provenance.get(record.id)),\n );\n return {\n items,\n count: items.length,\n };\n}\n\nexport async function buildPatchInventory(\n envValue: string | undefined,\n cwd = process.cwd(),\n) {\n return listKnowledgePatches(envValue, cwd);\n}\n\nfunction getCollectionNames(): KnowledgeCollectionName[] {\n return [\n 'domains',\n 'entities',\n 'relationships',\n 'capabilities',\n 'features',\n 'business_rules',\n 'constraints',\n 'rationales',\n 'evidence',\n 'questions',\n 'conflicts',\n ];\n}\n\nfunction emptyPreviewCollections(): RestPatchPreviewCollections {\n const emptyCollection: RestPreviewCollection = { items: [], count: 0 };\n return {\n domains: structuredClone(emptyCollection),\n entities: structuredClone(emptyCollection),\n relationships: structuredClone(emptyCollection),\n capabilities: structuredClone(emptyCollection),\n features: structuredClone(emptyCollection),\n business_rules: structuredClone(emptyCollection),\n constraints: structuredClone(emptyCollection),\n rationales: structuredClone(emptyCollection),\n evidence: structuredClone(emptyCollection),\n questions: structuredClone(emptyCollection),\n conflicts: structuredClone(emptyCollection),\n };\n}\n\nexport async function buildPatchPreview(\n selectedPatchId: string,\n knowledgeRoot: string,\n): Promise<RestPatchPreviewResponse> {\n const patches = await listKnowledgePatches(knowledgeRoot);\n const selectedIndex = patches.findIndex(\n (patch) => patch.id === selectedPatchId,\n );\n if (selectedIndex === -1) {\n throw new Error(`Patch \"${selectedPatchId}\" was not found.`);\n }\n\n const prefixPatches = patches.slice(0, selectedIndex + 1);\n const effectiveState = await loadEffectiveKnowledgeStoreFromRoot(\n knowledgeRoot,\n { selectedPatchId },\n );\n const currentState = effectiveState.store;\n const provenanceMap = new Map<string, RestPatchProvenanceEntry>(\n effectiveState.provenance.entries(),\n );\n\n const collections = emptyPreviewCollections();\n const provenanceObject = Object.fromEntries(provenanceMap.entries());\n\n for (const collection of getCollectionNames()) {\n const records = currentState[collection] as KnowledgeRecord[];\n const previewCollection = buildCollectionPreview(records, provenanceMap);\n collections[collection] = previewCollection as never;\n }\n\n const domainItems = currentState.domains.map((record) =>\n buildFacetItem(record, provenanceMap.get(record.id)),\n );\n const entityItems = currentState.entities.map((record) =>\n buildFacetItem(record, provenanceMap.get(record.id)),\n );\n\n return {\n selectedPatchId,\n prefixPatchIds: effectiveState.patchIds,\n patches: prefixPatches,\n provenance: provenanceObject,\n facets: {\n domains: domainItems,\n entities: entityItems,\n },\n collections,\n };\n}\n", "import type { NormalizedKnowledgeStore } from '@ez-know/core';\n\nexport interface RestServiceHealthPayload {\n service: string;\n status: 'ok';\n storeAvailable: boolean;\n}\n\nexport interface RestErrorPayload {\n error: {\n code: string;\n message: string;\n };\n}\n\nexport interface RestCollectionPayload<T = unknown> {\n items: T[];\n count: number;\n}\n\nexport interface RestItemPayload<T = unknown> {\n item: T;\n}\n\nexport function buildHealthPayload(\n serviceName: string,\n store: NormalizedKnowledgeStore | undefined,\n): RestServiceHealthPayload {\n return {\n service: serviceName,\n status: 'ok',\n storeAvailable: store !== undefined,\n };\n}\n\nexport function buildErrorPayload(\n code: string,\n message: string,\n): RestErrorPayload {\n return {\n error: {\n code,\n message,\n },\n };\n}\n\nexport function buildCollectionPayload<T>(\n items: T[],\n): RestCollectionPayload<T> {\n return {\n items,\n count: items.length,\n };\n}\n\nexport function buildItemPayload<T>(item: T): RestItemPayload<T> {\n return {\n item,\n };\n}\n", "export const restObjectSchema = {\n type: 'object',\n required: ['id'],\n properties: {\n id: {\n type: 'string',\n },\n },\n additionalProperties: true,\n} as const;\n\nexport const restErrorResponseSchema = {\n type: 'object',\n required: ['error'],\n properties: {\n error: {\n type: 'object',\n required: ['code', 'message'],\n properties: {\n code: { type: 'string' },\n message: { type: 'string' },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restHealthResponseSchema = {\n type: 'object',\n required: ['service', 'status', 'storeAvailable'],\n properties: {\n service: { type: 'string' },\n status: { type: 'string', const: 'ok' },\n storeAvailable: { type: 'boolean' },\n },\n additionalProperties: false,\n} as const;\n\nexport const restCollectionResponseSchema = {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: restObjectSchema,\n },\n count: {\n type: 'integer',\n minimum: 0,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchSummarySchema = {\n type: 'object',\n required: [\n 'id',\n 'status',\n 'title',\n 'rootFolder',\n 'omittedFiles',\n 'operationCount',\n 'createdAt',\n 'updatedAt',\n ],\n properties: {\n id: { type: 'string' },\n status: { type: 'string' },\n title: { type: 'string' },\n description: { type: 'string' },\n rootFolder: { type: 'string' },\n omittedFiles: {\n type: 'array',\n items: {\n type: 'object',\n required: ['path', 'reason'],\n properties: {\n path: { type: 'string' },\n reason: { type: 'string' },\n },\n additionalProperties: false,\n },\n },\n operationCount: { type: 'integer', minimum: 0 },\n createdAt: { type: 'string' },\n updatedAt: { type: 'string' },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchProvenanceEntrySchema = {\n type: 'object',\n required: ['patchIds', 'patched'],\n properties: {\n patchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n patched: { type: 'boolean' },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchFacetItemSchema = {\n type: 'object',\n required: ['id', 'label', 'patched', 'provenancePatchIds'],\n properties: {\n id: { type: 'string' },\n label: { type: 'string' },\n patched: { type: 'boolean' },\n provenancePatchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchPreviewRecordSchema = {\n type: 'object',\n required: ['patched', 'provenancePatchIds'],\n properties: {\n patched: { type: 'boolean' },\n provenancePatchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n },\n additionalProperties: true,\n} as const;\n\nexport const restPatchPreviewCollectionSchema = {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: restPatchPreviewRecordSchema,\n },\n count: {\n type: 'integer',\n minimum: 0,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchInventoryResponseSchema = {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: restPatchSummarySchema,\n },\n count: {\n type: 'integer',\n minimum: 0,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restPatchPreviewResponseSchema = {\n type: 'object',\n required: [\n 'selectedPatchId',\n 'prefixPatchIds',\n 'patches',\n 'provenance',\n 'facets',\n 'collections',\n ],\n properties: {\n selectedPatchId: { type: 'string' },\n prefixPatchIds: {\n type: 'array',\n items: { type: 'string' },\n },\n patches: {\n type: 'array',\n items: restPatchSummarySchema,\n },\n provenance: {\n type: 'object',\n additionalProperties: restPatchProvenanceEntrySchema,\n },\n facets: {\n type: 'object',\n required: ['domains', 'entities'],\n properties: {\n domains: {\n type: 'array',\n items: restPatchFacetItemSchema,\n },\n entities: {\n type: 'array',\n items: restPatchFacetItemSchema,\n },\n },\n additionalProperties: false,\n },\n collections: {\n type: 'object',\n required: [\n 'domains',\n 'entities',\n 'relationships',\n 'capabilities',\n 'features',\n 'business_rules',\n 'constraints',\n 'rationales',\n 'evidence',\n 'questions',\n 'conflicts',\n ],\n properties: {\n domains: restPatchPreviewCollectionSchema,\n entities: restPatchPreviewCollectionSchema,\n relationships: restPatchPreviewCollectionSchema,\n capabilities: restPatchPreviewCollectionSchema,\n features: restPatchPreviewCollectionSchema,\n business_rules: restPatchPreviewCollectionSchema,\n constraints: restPatchPreviewCollectionSchema,\n rationales: restPatchPreviewCollectionSchema,\n evidence: restPatchPreviewCollectionSchema,\n questions: restPatchPreviewCollectionSchema,\n conflicts: restPatchPreviewCollectionSchema,\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n} as const;\n\nexport const restItemResponseSchema = {\n type: 'object',\n required: ['item'],\n properties: {\n item: restObjectSchema,\n },\n additionalProperties: false,\n} as const;\n\nexport const restOpenApiDocumentSchema = {\n type: 'object',\n additionalProperties: true,\n} as const;\n", "import type { FastifyInstance } from 'fastify';\nimport type { NormalizedKnowledgeStore } from '@ez-know/core';\nimport {\n loadEffectiveKnowledgeStoreFromRoot,\n type KnowledgeCollectionName,\n} from '@ez-know/core';\nimport {\n REST_COLLECTIONS,\n REST_DOCS_PATH,\n REST_HEALTH_PATH,\n REST_PATCHES_ROUTE,\n REST_PATCH_PREVIEW_ROUTE,\n REST_OPENAPI_PATH,\n REST_SERVICE_NAME,\n REST_V1_PREFIX,\n} from './constants.js';\nimport { buildSwaggerUiHtml } from './docs.js';\nimport { REST_OPENAPI_DOCUMENT } from './openapi.js';\nimport { buildPatchInventory, buildPatchPreview } from './preview.js';\nimport {\n buildCollectionPayload,\n buildErrorPayload,\n buildHealthPayload,\n buildItemPayload,\n} from './payloads.js';\nimport {\n restCollectionResponseSchema,\n restErrorResponseSchema,\n restHealthResponseSchema,\n restPatchInventoryResponseSchema,\n restPatchPreviewResponseSchema,\n restItemResponseSchema,\n restOpenApiDocumentSchema,\n} from './schemas.js';\n\ntype RestStore = NormalizedKnowledgeStore | undefined;\n\nfunction getCollectionRecords(\n store: NormalizedKnowledgeStore,\n collection: KnowledgeCollectionName,\n) {\n return store[collection] as unknown[];\n}\n\nfunction getCollectionRecordById(\n store: NormalizedKnowledgeStore,\n collection: KnowledgeCollectionName,\n id: string,\n) {\n return store.byCollection[collection].get(id);\n}\n\nfunction buildItemParamsSchema() {\n return {\n type: 'object',\n required: ['id'],\n properties: {\n id: { type: 'string' },\n },\n additionalProperties: false,\n } as const;\n}\n\nfunction getPatchRoot(store: RestStore) {\n return store?.rootDir ?? process.env.EZ_KNOW_ROOT;\n}\n\nasync function loadEffectiveRestStore(store: RestStore) {\n if (!store) {\n return undefined;\n }\n\n const effectiveState = await loadEffectiveKnowledgeStoreFromRoot(\n store.rootDir,\n );\n return effectiveState.store;\n}\n\nfunction registerCollectionRoutes(\n app: FastifyInstance,\n store: RestStore,\n collection: (typeof REST_COLLECTIONS)[number],\n) {\n app.get(\n `${REST_V1_PREFIX}/${collection.route}`,\n {\n schema: {\n response: {\n 200: restCollectionResponseSchema,\n 404: restErrorResponseSchema,\n 503: restErrorResponseSchema,\n },\n },\n },\n async (_request, reply) => {\n const effectiveStore = await loadEffectiveRestStore(store);\n if (!effectiveStore) {\n reply.code(503);\n return buildErrorPayload(\n 'missing_store',\n 'Knowledge store is unavailable.',\n );\n }\n\n return buildCollectionPayload(\n getCollectionRecords(effectiveStore, collection.collection),\n );\n },\n );\n\n app.get<{ Params: { id: string } }>(\n `${REST_V1_PREFIX}/${collection.route}/:id`,\n {\n schema: {\n params: buildItemParamsSchema(),\n response: {\n 200: restItemResponseSchema,\n 404: restErrorResponseSchema,\n 503: restErrorResponseSchema,\n },\n },\n },\n async (request, reply) => {\n const effectiveStore = await loadEffectiveRestStore(store);\n if (!effectiveStore) {\n reply.code(503);\n return buildErrorPayload(\n 'missing_store',\n 'Knowledge store is unavailable.',\n );\n }\n\n const item = getCollectionRecordById(\n effectiveStore,\n collection.collection,\n request.params.id,\n );\n if (!item) {\n reply.code(404);\n return buildErrorPayload(\n 'unknown_item',\n `No item with id \"${request.params.id}\" exists in ${collection.collection}.`,\n );\n }\n\n return buildItemPayload(item);\n },\n );\n}\n\nexport async function registerRestRoutes(\n app: FastifyInstance,\n store: RestStore,\n) {\n app.get(\n REST_HEALTH_PATH,\n {\n schema: {\n response: {\n 200: restHealthResponseSchema,\n },\n },\n },\n async () => buildHealthPayload(REST_SERVICE_NAME, store),\n );\n\n app.get(\n REST_OPENAPI_PATH,\n {\n schema: {\n response: {\n 200: restOpenApiDocumentSchema,\n },\n },\n },\n async () => REST_OPENAPI_DOCUMENT,\n );\n\n app.get(\n REST_DOCS_PATH,\n {\n schema: {\n response: {\n 200: {\n type: 'string',\n },\n },\n },\n },\n async (_request, reply) => {\n reply.type('text/html; charset=utf-8');\n return buildSwaggerUiHtml(REST_OPENAPI_PATH);\n },\n );\n\n app.get(\n `${REST_V1_PREFIX}/${REST_PATCHES_ROUTE}`,\n {\n schema: {\n response: {\n 200: restPatchInventoryResponseSchema,\n 404: restErrorResponseSchema,\n },\n },\n },\n async () =>\n buildCollectionPayload(await buildPatchInventory(getPatchRoot(store))),\n );\n\n app.get<{ Params: { patchId: string } }>(\n `${REST_V1_PREFIX}/${REST_PATCH_PREVIEW_ROUTE}`,\n {\n schema: {\n params: {\n type: 'object',\n required: ['patchId'],\n properties: {\n patchId: { type: 'string' },\n },\n additionalProperties: false,\n },\n response: {\n 200: restPatchPreviewResponseSchema,\n 404: restErrorResponseSchema,\n 503: restErrorResponseSchema,\n },\n },\n },\n async (request, reply) => {\n if (!store) {\n reply.code(503);\n return buildErrorPayload(\n 'missing_store',\n 'Knowledge store is unavailable.',\n );\n }\n\n try {\n return await buildPatchPreview(request.params.patchId, store.rootDir);\n } catch (error) {\n reply.code(404);\n return buildErrorPayload(\n 'unknown_patch',\n error instanceof Error ? error.message : 'Patch not found.',\n );\n }\n },\n );\n\n for (const collection of REST_COLLECTIONS) {\n registerCollectionRoutes(app, store, collection);\n }\n}\n", "import type { FastifyInstance } from 'fastify';\nimport { loadKnowledgeStoreFromEnv } from '@ez-know/core';\nimport { buildRestApp } from './app.js';\n\nexport interface StartRestServerOptions {\n host?: string;\n port?: number;\n staticRoot?: string;\n}\n\nfunction parsePort(value: string | undefined, fallback: number) {\n if (!value) {\n return fallback;\n }\n\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(`Invalid REST port: ${value}`);\n }\n\n return parsed;\n}\n\nexport async function startRestServer(\n options: StartRestServerOptions = {},\n): Promise<FastifyInstance> {\n const host = options.host ?? process.env.EZ_KNOW_REST_HOST ?? '127.0.0.1';\n const port =\n options.port ??\n parsePort(process.env.EZ_KNOW_REST_PORT ?? process.env.PORT, 3000);\n const knowledgeStore = await loadKnowledgeStoreFromEnv(\n process.env.EZ_KNOW_ROOT,\n );\n const app = await buildRestApp(knowledgeStore, {\n staticRoot: options.staticRoot,\n });\n\n await app.listen({ port, host });\n console.log(`ez-know REST service listening on http://${host}:${port}`);\n\n return app;\n}\n", "import { access, cp, readdir, stat } from 'node:fs/promises';\nimport { constants as fsConstants } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\n\nexport interface InitDependencies {\n stdout: (message: string) => void;\n stderr: (message: string) => void;\n promptSkillsFolderPath: () => Promise<string | undefined>;\n}\n\nexport function resolveBundledReferenceSkillsRoot() {\n const distReferenceRoot = fileURLToPath(new URL('./reference', import.meta.url));\n return distReferenceRoot;\n}\n\nasync function resolveExistingReferenceSkillsRoot() {\n const distReferenceRoot = resolveBundledReferenceSkillsRoot();\n try {\n const distRootStats = await stat(distReferenceRoot);\n if (distRootStats.isDirectory()) {\n return distReferenceRoot;\n }\n } catch {\n // Fall back to source checkout layout below.\n }\n\n return fileURLToPath(new URL('../packages/core/src/reference', import.meta.url));\n}\n\nexport async function promptForSkillsFolderPath(\n stdout: (message: string) => void,\n): Promise<string | undefined> {\n const { createInterface } = await import('node:readline/promises');\n const stdin = process.stdin;\n const prompt = createInterface({\n input: stdin,\n output: process.stdout,\n });\n\n try {\n while (true) {\n const answer = await prompt.question(\n \"Enter the agent's skills folder path: \",\n );\n const trimmedAnswer = answer.trim();\n if (trimmedAnswer.length > 0) {\n return trimmedAnswer;\n }\n\n stdout('Skills folder path cannot be empty.\\n');\n }\n } finally {\n prompt.close();\n }\n}\n\nexport async function validateSkillsFolderPath(targetRoot: string) {\n try {\n const targetStats = await stat(targetRoot);\n if (!targetStats.isDirectory()) {\n return {\n ok: false as const,\n message: `Target skills folder is not a directory: ${targetRoot}`,\n };\n }\n\n await access(targetRoot, fsConstants.W_OK);\n return {\n ok: true as const,\n targetRoot,\n };\n } catch {\n return {\n ok: false as const,\n message: `Target skills folder is unavailable or not writable: ${targetRoot}`,\n };\n }\n}\n\nexport async function installBundledReferenceSkills(targetRoot: string) {\n const referenceRoot = await resolveExistingReferenceSkillsRoot();\n const entries = await stat(referenceRoot);\n if (!entries.isDirectory()) {\n throw new Error(`Bundled reference skills root is not a directory: ${referenceRoot}`);\n }\n\n const sourceEntries = await readdir(referenceRoot, { withFileTypes: true });\n\n for (const entry of sourceEntries) {\n const sourcePath = `${referenceRoot}/${entry.name}`;\n const targetPath = `${targetRoot}/${entry.name}`;\n await cp(sourcePath, targetPath, {\n force: true,\n recursive: true,\n });\n }\n\n return {\n referenceRoot,\n targetRoot,\n };\n}\n\nexport async function runInitCommand(\n dependencies: InitDependencies,\n): Promise<number> {\n const maybeTargetRoot = await dependencies.promptSkillsFolderPath();\n if (!maybeTargetRoot) {\n dependencies.stderr('Init cancelled: no skills folder path provided.\\n');\n return 1;\n }\n\n const validation = await validateSkillsFolderPath(maybeTargetRoot);\n if (!validation.ok) {\n dependencies.stderr(`${validation.message}\\n`);\n return 1;\n }\n\n try {\n const result = await installBundledReferenceSkills(validation.targetRoot);\n dependencies.stdout(\n `Installed bundled reference skills into ${result.targetRoot}.\\n`,\n );\n return 0;\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Unknown init failure';\n dependencies.stderr(`Failed to install bundled reference skills: ${message}\\n`);\n return 1;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["existsSync", "fileURLToPath", "z", "z", "readFile", "z", "z", "readdir", "readFile", "record", "existsSync", "readFile", "join", "resolve", "join", "join", "resolveKnowledgeRoot", "z", "z", "readFile", "resolve", "join", "existsSync", "collectReferenceIds", "record", "record", "collectReferenceIds", "queryType", "queryType", "existsSync", "mkdir", "writeFile", "readFile", "join", "readFile", "join", "record", "resolveKnowledgeRoot", "existsSync", "mkdir", "writeFile", "resolveKnowledgeRoot", "readdir", "isAbsolute", "resolve", "sep", "z", "z", "sep", "resolve", "isAbsolute", "readdir", "resolveKnowledgeRoot", "z", "z", "ResourceTemplate", "ResourceTemplate", "resolve", "extendZodWithOpenApi", "z", "extendZodWithOpenApi", "z", "record", "restErrorResponseSchema", "restHealthResponseSchema", "restPatchSummarySchema", "restPatchProvenanceEntrySchema", "restPatchFacetItemSchema", "restPatchInventoryResponseSchema", "restPatchPreviewResponseSchema", "restOpenApiDocumentSchema", "restErrorResponseSchema", "restHealthResponseSchema", "restOpenApiDocumentSchema", "restPatchInventoryResponseSchema", "restPatchPreviewResponseSchema", "resolve", "access", "readdir", "stat", "fileURLToPath", "existsSync"]
|
|
7
7
|
}
|