@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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../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/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/core/src/knowledge/schema-discovery.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/knowledge-patch-apply.ts", "../packages/mcp/src/tools/knowledge-patch.ts", "../packages/mcp/src/resources/knowledge-schema.ts", "../src/server.ts"],
4
- "sourcesContent": ["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 { startMcpServer } from '@ez-know/mcp';\n\nawait startMcpServer();\n"],
5
- "mappings": "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",
6
- "names": ["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", "queryType", "z", "ResourceTemplate", "createJsonResourceContent", "ResourceTemplate"]
3
+ "sources": ["../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", "../src/server.ts"],
4
+ "sourcesContent": ["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 { startMcpServer } from '@ez-know/mcp';\n\nawait startMcpServer();\n"],
5
+ "mappings": "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",
6
+ "names": ["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"]
7
7
  }