@semiont/core 0.2.1 → 0.2.2-build.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/index.d.ts +1367 -27
  2. package/dist/index.js +1455 -78
  3. package/dist/index.js.map +1 -1
  4. package/package.json +18 -8
  5. package/dist/annotation-history-utils.d.ts +0 -42
  6. package/dist/annotation-history-utils.d.ts.map +0 -1
  7. package/dist/annotation-history-utils.js +0 -258
  8. package/dist/annotation-history-utils.js.map +0 -1
  9. package/dist/annotation-types.d.ts +0 -15
  10. package/dist/annotation-types.d.ts.map +0 -1
  11. package/dist/annotation-types.js +0 -6
  12. package/dist/annotation-types.js.map +0 -1
  13. package/dist/annotation-utils.d.ts +0 -18
  14. package/dist/annotation-utils.d.ts.map +0 -1
  15. package/dist/annotation-utils.js +0 -70
  16. package/dist/annotation-utils.js.map +0 -1
  17. package/dist/auth-types.d.ts +0 -8
  18. package/dist/auth-types.d.ts.map +0 -1
  19. package/dist/auth-types.js +0 -6
  20. package/dist/auth-types.js.map +0 -1
  21. package/dist/config/config-validator.d.ts +0 -25
  22. package/dist/config/config-validator.d.ts.map +0 -1
  23. package/dist/config/config-validator.js +0 -112
  24. package/dist/config/config-validator.js.map +0 -1
  25. package/dist/config/config.schema.json +0 -678
  26. package/dist/config/config.types.d.ts +0 -574
  27. package/dist/config/config.types.d.ts.map +0 -1
  28. package/dist/config/config.types.js +0 -4
  29. package/dist/config/config.types.js.map +0 -1
  30. package/dist/config/configuration-error.d.ts +0 -17
  31. package/dist/config/configuration-error.d.ts.map +0 -1
  32. package/dist/config/configuration-error.js +0 -36
  33. package/dist/config/configuration-error.js.map +0 -1
  34. package/dist/config/environment-loader.d.ts +0 -98
  35. package/dist/config/environment-loader.d.ts.map +0 -1
  36. package/dist/config/environment-loader.js +0 -229
  37. package/dist/config/environment-loader.js.map +0 -1
  38. package/dist/config/environment-validator.d.ts +0 -22
  39. package/dist/config/environment-validator.d.ts.map +0 -1
  40. package/dist/config/environment-validator.js +0 -50
  41. package/dist/config/environment-validator.js.map +0 -1
  42. package/dist/config/platform-types.d.ts +0 -26
  43. package/dist/config/platform-types.d.ts.map +0 -1
  44. package/dist/config/platform-types.js +0 -28
  45. package/dist/config/platform-types.js.map +0 -1
  46. package/dist/config/project-discovery.d.ts +0 -35
  47. package/dist/config/project-discovery.d.ts.map +0 -1
  48. package/dist/config/project-discovery.js +0 -99
  49. package/dist/config/project-discovery.js.map +0 -1
  50. package/dist/creation-methods.d.ts +0 -19
  51. package/dist/creation-methods.d.ts.map +0 -1
  52. package/dist/creation-methods.js +0 -18
  53. package/dist/creation-methods.js.map +0 -1
  54. package/dist/crypto.d.ts +0 -32
  55. package/dist/crypto.d.ts.map +0 -1
  56. package/dist/crypto.js +0 -52
  57. package/dist/crypto.js.map +0 -1
  58. package/dist/did-utils.d.ts +0 -51
  59. package/dist/did-utils.d.ts.map +0 -1
  60. package/dist/did-utils.js +0 -62
  61. package/dist/did-utils.js.map +0 -1
  62. package/dist/errors.d.ts +0 -51
  63. package/dist/errors.d.ts.map +0 -1
  64. package/dist/errors.js +0 -89
  65. package/dist/errors.js.map +0 -1
  66. package/dist/events.d.ts +0 -223
  67. package/dist/events.d.ts.map +0 -1
  68. package/dist/events.js +0 -45
  69. package/dist/events.js.map +0 -1
  70. package/dist/graph.d.ts +0 -31
  71. package/dist/graph.d.ts.map +0 -1
  72. package/dist/graph.js +0 -6
  73. package/dist/graph.js.map +0 -1
  74. package/dist/http-client.d.ts +0 -32
  75. package/dist/http-client.d.ts.map +0 -1
  76. package/dist/http-client.js +0 -56
  77. package/dist/http-client.js.map +0 -1
  78. package/dist/identifiers.d.ts +0 -24
  79. package/dist/identifiers.d.ts.map +0 -1
  80. package/dist/identifiers.js +0 -40
  81. package/dist/identifiers.js.map +0 -1
  82. package/dist/index.d.ts.map +0 -1
  83. package/dist/resource-types.d.ts +0 -15
  84. package/dist/resource-types.d.ts.map +0 -1
  85. package/dist/resource-types.js +0 -6
  86. package/dist/resource-types.js.map +0 -1
  87. package/dist/type-guards.d.ts +0 -44
  88. package/dist/type-guards.d.ts.map +0 -1
  89. package/dist/type-guards.js +0 -76
  90. package/dist/type-guards.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,8DAA8D;AAC9D,+DAA+D;AAC/D,2DAA2D;AAC3D,2DAA2D;AAE3D,mBAAmB;AACnB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAKzB,6CAMuB;AALrB,yGAAA,UAAU,OAAA;AACV,2GAAA,YAAY,OAAA;AACZ,qGAAA,MAAM,OAAA;AACN,2GAAA,YAAY,OAAA;AACZ,6GAAA,cAAc,OAAA;AAsChB,mCAKkB;AAJhB,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AACb,+GAAA,qBAAqB,OAAA;AACrB,sGAAA,YAAY,OAAA;AAGd,wCAAwC;AACxC,uDAAkE;AAAzD,kHAAA,cAAc,OAAA;AAAE,gHAAA,YAAY,OAAA;AAWrC,oBAAoB;AACpB,gDAA8B;AAC9B,2CAAyB;AACzB,2CAAyB;AACzB,gDAA8B;AAC9B,6DAA2C;AAC3C,8CAA4B;AAE5B,wBAAwB;AACxB,kEASqC;AARnC,2HAAA,qBAAqB,OAAA;AACrB,8HAAA,wBAAwB,OAAA;AACxB,8HAAA,wBAAwB,OAAA;AAO1B,wEAKwC;AAJtC,2HAAA,kBAAkB,OAAA;AAClB,yHAAA,gBAAgB,OAAA;AAChB,4HAAA,mBAAmB,OAAA;AAGrB,oEAAkE;AAAzD,yHAAA,kBAAkB,OAAA;AAC3B,gEAKoC;AAJlC,oHAAA,eAAe,OAAA;AACf,kHAAA,aAAa,OAAA;AACb,wHAAA,mBAAmB,OAAA;AACnB,yHAAA,oBAAoB,OAAA;AAEtB,0DAIiC;AAF/B,qHAAA,mBAAmB,OAAA;AACnB,qHAAA,mBAAmB,OAAA;AAkBrB,2BAA2B;AAC3B,8DAKmC;AAJjC,yHAAA,qBAAqB,OAAA;AACrB,6HAAA,yBAAyB,OAAA;AACzB,sHAAA,kBAAkB,OAAA;AAIpB,sBAAsB;AACT,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAC7B,QAAA,WAAW,GAAG,OAAO,CAAC"}
1
+ {"version":3,"sources":["../src/creation-methods.ts","../src/identifiers.ts","../src/events.ts","../src/annotation-utils.ts","../src/type-guards.ts","../src/crypto.ts","../src/errors.ts","../src/http-client.ts","../src/annotation-history-utils.ts","../src/did-utils.ts","../src/config/configuration-error.ts","../src/config/project-discovery.ts","../src/config/config.schema.json","../src/config/config-validator.ts","../src/config/environment-loader.ts","../src/config/environment-validator.ts","../src/config/platform-types.ts","../src/index.ts"],"names":["userId","username","annotationId","fs","path","path2"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Resource creation methods - How resources are created in the system\n */\n\n/**\n * Enumeration of all possible resource creation methods\n */\nexport const CREATION_METHODS = {\n API: 'api',\n UPLOAD: 'upload',\n UI: 'ui',\n REFERENCE: 'reference',\n CLONE: 'clone',\n GENERATED: 'generated',\n} as const;\n\n/**\n * Type for resource creation methods\n */\nexport type CreationMethod = typeof CREATION_METHODS[keyof typeof CREATION_METHODS];","/**\n * Branded identifier types for compile-time type safety.\n *\n * These types prevent mixing up resource IDs, annotation IDs, and user IDs\n * at compile time while having zero runtime overhead.\n *\n * URI types (ResourceUri, AnnotationUri) are in @semiont/api-client\n * since they deal with HTTP URIs returned by the API.\n */\n\n// Branded type definitions for IDs only\nexport type ResourceId = string & { readonly __brand: 'ResourceId' };\nexport type AnnotationId = string & { readonly __brand: 'AnnotationId' };\nexport type UserId = string & { readonly __brand: 'UserId' };\n\n// Type guards with runtime validation\nexport function isResourceId(value: string): value is ResourceId {\n return !value.includes('/');\n}\n\nexport function isAnnotationId(value: string): value is AnnotationId {\n return !value.includes('/');\n}\n\n// Factory functions with runtime validation\nexport function resourceId(id: string): ResourceId {\n if (id.includes('/')) {\n throw new TypeError(`Expected ResourceId, got URI: ${id}`);\n }\n return id as ResourceId;\n}\n\nexport function annotationId(id: string): AnnotationId {\n if (id.includes('/')) {\n throw new TypeError(`Expected AnnotationId, got URI: ${id}`);\n }\n return id as AnnotationId;\n}\n\nexport function userId(id: string): UserId {\n return id as UserId;\n}\n","/**\n * Resource Event Types\n *\n * Event-sourced architecture for resource state management\n * Events are stored in an append-only log (JSONL format)\n *\n * Federation-ready design:\n * - resourceId uses content hashes (doc-sha256:...)\n * - userId uses DID format (did:web:org.com:users:alice)\n * - prevEventHash creates tamper-evident chains\n * - Optional signatures for cross-org verification\n */\n\nimport type { CreationMethod } from './creation-methods';\nimport type { components, AnnotationUri, JobId } from '@semiont/api-client';\nimport type { ResourceId, AnnotationId, UserId } from './identifiers';\n\n// Import OpenAPI types\ntype Annotation = components['schemas']['Annotation'];\ntype ContentFormat = components['schemas']['ContentFormat'];\n\nexport interface BaseEvent {\n id: string; // Unique event ID (UUID)\n timestamp: string; // ISO 8601 timestamp (for humans, NOT for ordering)\n resourceId?: ResourceId; // Optional - present for resource-scoped events, absent for system events\n // Use isSystemEvent() / isResourceScopedEvent() type guards for routing\n userId: UserId; // DID format: did:web:org.com:users:alice (federation-ready)\n version: number; // Event schema version\n}\n\n// Resource lifecycle events\nexport interface ResourceCreatedEvent extends BaseEvent {\n type: 'resource.created';\n payload: {\n name: string;\n format: ContentFormat; // MIME type (validated enum)\n contentChecksum: string; // SHA-256 of content (should match resourceId)\n contentByteSize?: number; // Size of content in bytes\n creationMethod: CreationMethod; // How the resource was created\n entityTypes?: string[];\n\n // First-class fields (promoted from metadata)\n language?: string; // Language/locale code (e.g., 'en', 'es', 'fr')\n isDraft?: boolean; // Draft status for generated resources\n generatedFrom?: string; // Annotation/Reference ID that triggered generation\n generationPrompt?: string; // Prompt used for AI generation (events-only, not on Resource)\n };\n}\n\nexport interface ResourceClonedEvent extends BaseEvent {\n type: 'resource.cloned';\n payload: {\n name: string;\n format: ContentFormat; // MIME type (validated enum)\n contentChecksum: string; // SHA-256 of new content\n contentByteSize?: number; // Size of content in bytes\n parentResourceId: string; // Content hash of parent resource\n creationMethod: CreationMethod; // How the resource was created\n entityTypes?: string[];\n\n // First-class fields (promoted from metadata)\n language?: string; // Language/locale code (e.g., 'en', 'es', 'fr')\n };\n}\n\nexport interface ResourceArchivedEvent extends BaseEvent {\n type: 'resource.archived';\n payload: {\n reason?: string;\n };\n}\n\nexport interface ResourceUnarchivedEvent extends BaseEvent {\n type: 'resource.unarchived';\n payload: Record<string, never>; // Empty payload\n}\n\n// Unified annotation events\n// Single principle: An annotation is an annotation. The motivation field tells you what kind it is.\nexport interface AnnotationAddedEvent extends BaseEvent {\n type: 'annotation.added';\n payload: {\n annotation: Omit<Annotation, 'creator' | 'created'>; // W3C Annotation (creator/created come from event metadata)\n };\n}\n\nexport interface AnnotationRemovedEvent extends BaseEvent {\n type: 'annotation.removed';\n payload: {\n annotationId: AnnotationId; // Branded type for compile-time safety\n };\n}\n\n// Body operation types for fine-grained annotation body modifications\nexport type BodyItem =\n | { type: 'TextualBody'; value: string; purpose: 'tagging' | 'commenting' | 'describing' | 'classifying'; format?: string; language?: string }\n | { type: 'SpecificResource'; source: string; purpose: 'linking' };\n\nexport type BodyOperation =\n | { op: 'add'; item: BodyItem }\n | { op: 'remove'; item: BodyItem }\n | { op: 'replace'; oldItem: BodyItem; newItem: BodyItem };\n\nexport interface AnnotationBodyUpdatedEvent extends BaseEvent {\n type: 'annotation.body.updated';\n payload: {\n annotationId: AnnotationId; // Branded type for compile-time safety\n operations: BodyOperation[];\n };\n}\n\n// Job progress events (resource-level)\n// Emitted by background workers for real-time progress updates\nexport interface JobStartedEvent extends BaseEvent {\n type: 'job.started';\n resourceId: ResourceId; // Required - job is scoped to a resource\n payload: {\n jobId: JobId;\n jobType: 'detection' | 'generation' | 'highlight-detection' | 'assessment-detection' | 'comment-detection' | 'tag-detection';\n totalSteps?: number; // Optional - total number of steps if known\n };\n}\n\nexport interface JobProgressEvent extends BaseEvent {\n type: 'job.progress';\n resourceId: ResourceId; // Required - job is scoped to a resource\n payload: {\n jobId: JobId;\n jobType: 'detection' | 'generation' | 'highlight-detection' | 'assessment-detection' | 'comment-detection' | 'tag-detection';\n percentage: number; // 0-100\n currentStep?: string; // Human-readable current step (e.g., \"Scanning for Person\")\n processedSteps?: number; // Number of steps completed\n totalSteps?: number; // Total number of steps\n foundCount?: number; // For detection: number of entities found so far\n message?: string; // Optional status message\n progress?: any; // For new job types: full progress object\n };\n}\n\nexport interface JobCompletedEvent extends BaseEvent {\n type: 'job.completed';\n resourceId: ResourceId; // Required - job is scoped to a resource\n payload: {\n jobId: JobId;\n jobType: 'detection' | 'generation' | 'highlight-detection' | 'assessment-detection' | 'comment-detection' | 'tag-detection';\n totalSteps?: number; // Total steps completed\n foundCount?: number; // For detection: total entities found\n resultResourceId?: ResourceId; // For generation: ID of generated resource (branded type)\n annotationUri?: AnnotationUri; // For generation: URI of annotation that triggered generation\n message?: string; // Optional completion message\n result?: any; // For new job types: full result object\n };\n}\n\nexport interface JobFailedEvent extends BaseEvent {\n type: 'job.failed';\n resourceId: ResourceId; // Required - job is scoped to a resource\n payload: {\n jobId: JobId;\n jobType: 'detection' | 'generation' | 'highlight-detection' | 'assessment-detection' | 'comment-detection' | 'tag-detection';\n error: string; // Error message\n details?: string; // Optional detailed error information\n };\n}\n\n// Entity tag events (resource-level)\nexport interface EntityTagAddedEvent extends BaseEvent {\n type: 'entitytag.added';\n resourceId: ResourceId; // Required - resource-scoped event\n payload: {\n entityType: string;\n };\n}\n\nexport interface EntityTagRemovedEvent extends BaseEvent {\n type: 'entitytag.removed';\n resourceId: ResourceId; // Required - resource-scoped event\n payload: {\n entityType: string;\n };\n}\n\n// Entity type events (global collection)\nexport interface EntityTypeAddedEvent extends BaseEvent {\n type: 'entitytype.added';\n resourceId?: undefined; // System-level event - no resource scope\n payload: {\n entityType: string; // The entity type being added to global collection\n };\n}\n\n// Union type of all events\nexport type ResourceEvent =\n | ResourceCreatedEvent\n | ResourceClonedEvent\n | ResourceArchivedEvent\n | ResourceUnarchivedEvent\n | AnnotationAddedEvent\n | AnnotationRemovedEvent\n | AnnotationBodyUpdatedEvent\n | JobStartedEvent // Job progress\n | JobProgressEvent // Job progress\n | JobCompletedEvent // Job progress\n | JobFailedEvent // Job progress\n | EntityTagAddedEvent // Resource-level\n | EntityTagRemovedEvent // Resource-level\n | EntityTypeAddedEvent; // Global collection\n\n// Extract just the event type strings from the union\nexport type ResourceEventType = ResourceEvent['type'];\n\n// System-level events (no resource scope)\nexport type SystemEvent = EntityTypeAddedEvent;\n\n// Resource-scoped events (require resourceId)\nexport type ResourceScopedEvent = Exclude<ResourceEvent, SystemEvent>;\n\n// Type guards\nexport function isResourceEvent(event: any): event is ResourceEvent {\n return event &&\n typeof event.id === 'string' &&\n typeof event.timestamp === 'string' &&\n (event.resourceId === undefined || typeof event.resourceId === 'string') && // resourceId now optional\n typeof event.type === 'string' &&\n event.type.includes('.');\n}\n\n/**\n * Type guard: Check if event is system-level (no resourceId)\n * System events affect global state, not individual resources\n */\nexport function isSystemEvent(event: ResourceEvent): event is SystemEvent {\n return event.type === 'entitytype.added';\n}\n\n/**\n * Type guard: Check if event is resource-scoped (has resourceId)\n * Resource events affect a specific resource's state\n */\nexport function isResourceScopedEvent(event: ResourceEvent): event is ResourceScopedEvent {\n return !isSystemEvent(event);\n}\n\nexport function getEventType<T extends ResourceEvent>(\n event: ResourceEvent\n): T['type'] {\n return event.type as T['type'];\n}\n\n// Event metadata for querying and indexing\nexport interface EventMetadata {\n sequenceNumber: number; // Position in the event log (source of truth for ordering)\n streamPosition: number; // Byte position in JSONL file\n timestamp: string; // When stored (for humans, not ordering)\n prevEventHash?: string; // SHA-256 of previous event (chain integrity, null for first event)\n checksum?: string; // SHA-256 of this event for integrity\n}\n\n// Optional signature for federation\nexport interface EventSignature {\n algorithm: 'ed25519'; // Signature algorithm\n publicKey: string; // User's public key (base64)\n signature: string; // Event signature (base64)\n keyId?: string; // Key identifier for rotation\n}\n\n// Event with metadata (as stored)\nexport interface StoredEvent<T extends ResourceEvent = ResourceEvent> {\n event: T;\n metadata: EventMetadata;\n signature?: EventSignature; // Optional, for federation (unused in MVP)\n}\n\n// Query filters for event retrieval\nexport interface EventQuery {\n resourceId?: ResourceId;\n userId?: string;\n eventTypes?: ResourceEvent['type'][];\n fromTimestamp?: string;\n toTimestamp?: string;\n fromSequence?: number;\n limit?: number;\n}\n\n// Annotation collections for a resource (view storage projection)\n// Annotations are NOT part of the resource - they reference the resource\nexport interface ResourceAnnotations {\n resourceId: ResourceId; // Which resource these annotations belong to (branded type)\n annotations: Annotation[]; // All annotations (highlights, references, assessments, etc.)\n version: number; // Event count for this resource's annotation stream\n updatedAt: string; // Last annotation event timestamp\n}","/**\n * Backend-specific annotation utility functions\n */\n\nimport type { components } from '@semiont/api-client';\nimport type { BodyItem } from './events';\n\ntype Annotation = components['schemas']['Annotation'];\n\n/**\n * Check if two body items match (for remove/replace operations)\n * Matches by type, value/source, and purpose fields\n */\nexport function bodyItemsMatch(item1: BodyItem, item2: BodyItem): boolean {\n // Type must match\n if (item1.type !== item2.type) {\n return false;\n }\n\n // Purpose must match\n if (item1.purpose !== item2.purpose) {\n return false;\n }\n\n // For TextualBody, match by value\n if (item1.type === 'TextualBody' && item2.type === 'TextualBody') {\n return item1.value === item2.value;\n }\n\n // For SpecificResource, match by source\n if (item1.type === 'SpecificResource' && item2.type === 'SpecificResource') {\n return item1.source === item2.source;\n }\n\n return false;\n}\n\n/**\n * Find a body item in an array\n * Returns the index of the first matching item, or -1 if not found\n */\nexport function findBodyItem(body: Annotation['body'], targetItem: BodyItem): number {\n if (!Array.isArray(body)) {\n return -1;\n }\n\n for (let i = 0; i < body.length; i++) {\n const item = body[i];\n\n // Check if this is a valid body item that can be matched\n if (\n typeof item === 'object' &&\n item !== null &&\n 'type' in item &&\n 'purpose' in item\n ) {\n const itemType = (item as { type: unknown }).type;\n const itemPurpose = (item as { purpose: unknown }).purpose;\n\n // Type and purpose must match\n if (itemType !== targetItem.type || itemPurpose !== targetItem.purpose) {\n continue;\n }\n\n // For TextualBody, match by value\n if (targetItem.type === 'TextualBody' && 'value' in item) {\n const itemValue = (item as { value: unknown }).value;\n if (itemValue === targetItem.value) {\n return i;\n }\n }\n\n // For SpecificResource, match by source\n if (targetItem.type === 'SpecificResource' && 'source' in item) {\n const itemSource = (item as { source: unknown }).source;\n if (itemSource === targetItem.source) {\n return i;\n }\n }\n }\n }\n\n return -1;\n}\n","/**\n * Common type guard utilities\n */\n\n/**\n * Check if value is a string\n */\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\n/**\n * Check if value is a number (not NaN)\n */\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number' && !isNaN(value);\n}\n\n/**\n * Check if value is an object (not null, not array)\n */\nexport function isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Check if value is an array\n */\nexport function isArray(value: unknown): value is unknown[] {\n return Array.isArray(value);\n}\n\n/**\n * Check if value is a boolean\n */\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\n/**\n * Check if value is a function\n */\nexport function isFunction(value: unknown): value is Function {\n return typeof value === 'function';\n}\n\n/**\n * Check if value is null\n */\nexport function isNull(value: unknown): value is null {\n return value === null;\n}\n\n/**\n * Check if value is undefined\n */\nexport function isUndefined(value: unknown): value is undefined {\n return value === undefined;\n}\n\n/**\n * Check if value is null or undefined\n */\nexport function isNullish(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Check if value is defined (not null or undefined)\n */\nexport function isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}","/**\n * Cryptographic utilities\n */\n\nimport { createHash, randomBytes } from 'crypto';\n\n/**\n * Calculate SHA-256 checksum of content\n * @param content The content to hash\n * @returns Hex-encoded SHA-256 hash\n */\nexport function calculateChecksum(content: string | Buffer): string {\n const hash = createHash('sha256');\n hash.update(content);\n return hash.digest('hex');\n}\n\n/**\n * Verify content against a checksum\n * @param content The content to verify\n * @param checksum The expected checksum\n * @returns True if content matches checksum\n */\nexport function verifyChecksum(content: string | Buffer, checksum: string): boolean {\n return calculateChecksum(content) === checksum;\n}\n\n/**\n * Generate a random ID (12 character hex string)\n * Similar to MongoDB ObjectId but simpler\n */\nexport function generateId(): string {\n return randomBytes(6).toString('hex');\n}\n\n/**\n * Generate a UUID v4-like ID (without dashes)\n */\nexport function generateUuid(): string {\n return randomBytes(16).toString('hex');\n}\n\n/**\n * Generate a secure random token\n * @param bytes Number of random bytes (default 32)\n * @returns Base64 encoded random token\n */\nexport function generateToken(bytes: number = 32): string {\n return randomBytes(bytes).toString('base64url');\n}","/**\n * Common error classes\n */\n\n/**\n * Base error class for Semiont applications\n */\nexport class SemiontError extends Error {\n constructor(\n message: string,\n public code: string,\n public details?: Record<string, any>\n ) {\n super(message);\n this.name = 'SemiontError';\n Error.captureStackTrace(this, this.constructor);\n }\n}\n\n/**\n * Error thrown when validation fails\n */\nexport class ValidationError extends SemiontError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, 'VALIDATION_ERROR', details);\n this.name = 'ValidationError';\n }\n}\n\n/**\n * Error thrown by scripts\n */\nexport class ScriptError extends SemiontError {\n constructor(message: string, code: string = 'SCRIPT_ERROR', details?: Record<string, any>) {\n super(message, code, details);\n this.name = 'ScriptError';\n }\n}\n\n/**\n * Error thrown when a resource is not found\n */\nexport class NotFoundError extends SemiontError {\n constructor(resource: string, id?: string) {\n const message = id ? `${resource} with id '${id}' not found` : `${resource} not found`;\n super(message, 'NOT_FOUND', { resource, id });\n this.name = 'NotFoundError';\n }\n}\n\n/**\n * Error thrown when user is not authorized\n */\nexport class UnauthorizedError extends SemiontError {\n constructor(message: string = 'Unauthorized', details?: Record<string, any>) {\n super(message, 'UNAUTHORIZED', details);\n this.name = 'UnauthorizedError';\n }\n}\n\n/**\n * Error thrown when operation would conflict with existing data\n */\nexport class ConflictError extends SemiontError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, 'CONFLICT', details);\n this.name = 'ConflictError';\n }\n}\n\n/**\n * API Error class for handling HTTP errors\n * Used by API clients to represent failed HTTP requests\n */\nexport class APIError extends Error {\n constructor(\n public status: number,\n public data: any,\n message?: string\n ) {\n super(message || `API Error: ${status}`);\n this.name = 'APIError';\n Error.captureStackTrace(this, this.constructor);\n }\n}","/**\n * HTTP Client Utilities\n *\n * Reusable fetch wrapper for making authenticated HTTP requests.\n * Used by both frontend (via TanStack Query) and backend (direct calls).\n */\n\nimport { APIError } from './errors';\n\n/**\n * Configuration for HTTP client\n */\nexport interface HttpClientConfig {\n baseUrl: string;\n token?: string;\n}\n\n/**\n * Fetch helper with authentication and error handling\n *\n * @param endpoint - API endpoint (e.g., '/api/resources')\n * @param options - Standard fetch options\n * @param token - Optional authentication token\n * @returns Typed response data\n * @throws APIError on HTTP errors\n */\nexport async function fetchAPI<T>(\n endpoint: string,\n options: RequestInit = {},\n token?: string,\n baseUrl: string = ''\n): Promise<T> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...((options.headers || {}) as Record<string, string>),\n };\n\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n const url = baseUrl ? `${baseUrl}${endpoint}` : endpoint;\n\n const response = await fetch(url, {\n ...options,\n headers,\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({})) as any;\n throw new APIError(response.status, errorData, errorData.message);\n }\n\n // Handle 204 No Content responses\n if (response.status === 204 || response.headers.get('content-length') === '0') {\n return {} as T;\n }\n\n return response.json() as Promise<T>;\n}\n\n/**\n * Create a configured fetch function with a base URL\n * Useful for creating client-specific fetch instances\n *\n * @param baseUrl - Base URL for all requests (e.g., 'http://localhost:4000')\n * @returns Configured fetch function\n */\nexport function createFetchAPI(baseUrl: string) {\n return function <T>(\n endpoint: string,\n options: RequestInit = {},\n token?: string\n ): Promise<T> {\n return fetchAPI<T>(endpoint, options, token, baseUrl);\n };\n}\n","/**\n * Utility functions for AnnotationHistory component\n * Extracted to reduce component complexity and improve testability\n *\n * NOTE: This file contains UI-specific logic and should eventually move to the frontend package.\n * It has been updated to work with unified annotation events (annotation.added/removed/body.updated)\n * instead of separate highlight/reference/assessment events.\n */\n\nimport type {\n StoredEvent,\n ResourceEventType,\n ResourceCreatedEvent,\n ResourceClonedEvent,\n AnnotationAddedEvent,\n AnnotationRemovedEvent,\n AnnotationBodyUpdatedEvent,\n EntityTagAddedEvent,\n EntityTagRemovedEvent,\n} from './events';\nimport type { CreationMethod } from './creation-methods';\nimport type { components } from '@semiont/api-client';\nimport { getAnnotationExactText, getEntityTypes } from '@semiont/api-client';\nimport type { AnnotationId } from './identifiers';\n\n// Import OpenAPI types\ntype Annotation = components['schemas']['Annotation'];\ntype Motivation = components['schemas']['Motivation'];\n\ntype TranslateFn = (key: string, params?: Record<string, string | number>) => string;\n\n// Format event type for display\nexport function formatEventType(type: ResourceEventType, t: TranslateFn): string {\n // Using a switch for exhaustive checking - TypeScript will error if we miss a case\n switch (type) {\n case 'resource.created':\n return t('resourceCreated');\n case 'resource.cloned':\n return t('resourceCloned');\n case 'resource.archived':\n return t('resourceArchived');\n case 'resource.unarchived':\n return t('resourceUnarchived');\n case 'annotation.added':\n return t('annotationAdded');\n case 'annotation.removed':\n return t('annotationRemoved');\n case 'annotation.body.updated':\n return t('annotationBodyUpdated');\n case 'entitytag.added':\n return t('entitytagAdded');\n case 'entitytag.removed':\n return t('entitytagRemoved');\n case 'entitytype.added':\n return t('entitytypeAdded');\n case 'job.started':\n return t('jobStarted');\n case 'job.progress':\n return t('jobProgress');\n case 'job.completed':\n return t('jobCompleted');\n case 'job.failed':\n return t('jobFailed');\n default:\n // Exhaustive check: if we get here, we missed a case\n const _exhaustiveCheck: never = type;\n return _exhaustiveCheck;\n }\n}\n\n// Get emoji for annotation based on motivation\nfunction getMotivationEmoji(motivation: Motivation): string {\n switch (motivation) {\n case 'highlighting':\n return '🟡';\n case 'linking':\n return '🔵';\n case 'assessing':\n return '🔴';\n case 'bookmarking':\n return '🔖';\n case 'commenting':\n return '💬';\n case 'tagging':\n return '🏷️';\n default:\n return '📝';\n }\n}\n\n// Get emoji for event type\nexport function getEventEmoji(type: ResourceEventType, event?: StoredEvent): string {\n // Using a switch for exhaustive checking - TypeScript will error if we miss a case\n switch (type) {\n case 'resource.created':\n case 'resource.cloned':\n case 'resource.archived':\n case 'resource.unarchived':\n return '📄';\n case 'annotation.added':\n if (event) {\n const payload = event.event.payload as AnnotationAddedEvent['payload'];\n return getMotivationEmoji(payload.annotation.motivation);\n }\n return '📝';\n case 'annotation.removed':\n return '🗑️';\n case 'annotation.body.updated':\n return '✏️';\n case 'entitytag.added':\n case 'entitytag.removed':\n return '🏷️';\n case 'entitytype.added':\n return '🏷️'; // Same emoji as entitytag (global entity type collection)\n case 'job.started':\n return '▶️';\n case 'job.progress':\n return '⏳';\n case 'job.completed':\n return '✅';\n case 'job.failed':\n return '❌';\n default:\n // Exhaustive check: if we get here, we missed a case\n const _exhaustiveCheck: never = type;\n return _exhaustiveCheck;\n }\n}\n\n// Format relative time\nexport function formatRelativeTime(timestamp: string, t: TranslateFn): string {\n const date = new Date(timestamp);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMins < 1) return t('justNow');\n if (diffMins < 60) return t('minutesAgo', { count: diffMins });\n if (diffHours < 24) return t('hoursAgo', { count: diffHours });\n if (diffDays < 7) return t('daysAgo', { count: diffDays });\n\n return date.toLocaleDateString();\n}\n\n// Helper to truncate text for display\nfunction truncateText(text: string, maxLength = 50): string {\n const trimmed = text.trim();\n return trimmed.length > maxLength ? trimmed.substring(0, maxLength) + '...' : trimmed;\n}\n\n// Extract display content from event payload\nexport function getEventDisplayContent(\n event: StoredEvent,\n _references: Annotation[], // underscore prefix to indicate intentionally unused for now\n _highlights: Annotation[], // underscore prefix to indicate intentionally unused for now\n allEvents: StoredEvent[]\n): { exact: string; isQuoted: boolean; isTag: boolean } | null {\n const eventData = event.event;\n\n // Use type discriminators instead of runtime typeof checks\n switch (eventData.type) {\n case 'resource.created':\n case 'resource.cloned': {\n const payload = eventData.payload as ResourceCreatedEvent['payload'] | ResourceClonedEvent['payload'];\n return { exact: payload.name, isQuoted: false, isTag: false };\n }\n\n case 'annotation.body.updated': {\n const payload = eventData.payload as AnnotationBodyUpdatedEvent['payload'];\n\n // Find the original annotation.added event to get the text\n const addedEvent = allEvents.find(e =>\n e.event.type === 'annotation.added' &&\n (e.event.payload as AnnotationAddedEvent['payload']).annotation.id === payload.annotationId\n );\n\n if (addedEvent) {\n const addedPayload = addedEvent.event.payload as AnnotationAddedEvent['payload'];\n return { exact: truncateText(getAnnotationExactText(addedPayload.annotation)), isQuoted: true, isTag: false };\n }\n return null;\n }\n\n case 'annotation.removed': {\n const payload = eventData.payload as AnnotationRemovedEvent['payload'];\n\n // Find the original annotation.added event\n const addedEvent = allEvents.find(e =>\n e.event.type === 'annotation.added' &&\n (e.event.payload as AnnotationAddedEvent['payload']).annotation.id === payload.annotationId\n );\n\n if (addedEvent) {\n const addedPayload = addedEvent.event.payload as AnnotationAddedEvent['payload'];\n return { exact: truncateText(getAnnotationExactText(addedPayload.annotation)), isQuoted: true, isTag: false };\n }\n return null;\n }\n\n case 'annotation.added': {\n const payload = eventData.payload as AnnotationAddedEvent['payload'];\n return { exact: truncateText(getAnnotationExactText(payload.annotation)), isQuoted: true, isTag: false };\n }\n\n case 'entitytag.added':\n case 'entitytag.removed': {\n const payload = eventData.payload as EntityTagAddedEvent['payload'] | EntityTagRemovedEvent['payload'];\n return { exact: payload.entityType, isQuoted: false, isTag: true };\n }\n\n default:\n return null;\n }\n}\n\n// Extract entity types from event payload\nexport function getEventEntityTypes(event: StoredEvent): string[] {\n const eventData = event.event;\n\n if (eventData.type === 'annotation.added') {\n const payload = eventData.payload as AnnotationAddedEvent['payload'];\n // Extract entity types from W3C annotation\n return getEntityTypes(payload.annotation);\n }\n\n return [];\n}\n\n// Format user ID for display\nfunction formatUserId(userId: string): string {\n // If it's a DID format (did:web:org.com:users:alice), format as alice@org.com\n if (userId.startsWith('did:web:')) {\n const parts = userId.split(':');\n // Format: did:web:org.com:users:alice\n // parts: ['did', 'web', 'org.com', 'users', 'alice']\n if (parts.length >= 5) {\n const domain = parts[2]; // org.com\n const username = parts[parts.length - 1]; // alice\n return `${username}@${domain}`;\n }\n // Fallback if format is unexpected\n const username = parts[parts.length - 1];\n return username || userId.substring(0, 8);\n }\n\n // Otherwise show first 8 characters of UUID\n return userId.substring(0, 8);\n}\n\n// Resource creation details - discriminated by event type\ntype ResourceCreatedDetails = {\n type: 'created';\n userId: string;\n method: CreationMethod;\n};\n\ntype ResourceClonedDetails = {\n type: 'cloned';\n userId: string;\n method: CreationMethod;\n sourceDocId: string;\n};\n\nexport type ResourceCreationDetails = ResourceCreatedDetails | ResourceClonedDetails;\n\n// Extract additional metadata for resource creation events\nexport function getResourceCreationDetails(event: StoredEvent): ResourceCreationDetails | null {\n const eventData = event.event;\n\n if (eventData.type === 'resource.created') {\n const payload = eventData.payload as ResourceCreatedEvent['payload'];\n\n return {\n type: 'created',\n userId: formatUserId(eventData.userId),\n method: payload.creationMethod,\n };\n }\n\n if (eventData.type === 'resource.cloned') {\n const payload = eventData.payload as ResourceClonedEvent['payload'];\n\n return {\n type: 'cloned',\n userId: formatUserId(eventData.userId),\n method: payload.creationMethod,\n sourceDocId: payload.parentResourceId,\n };\n }\n\n return null;\n}\n\n// Extract annotation ID from event payload\nexport function getAnnotationIdFromEvent(event: StoredEvent): string | null {\n const eventData = event.event;\n\n switch (eventData.type) {\n case 'annotation.added': {\n const payload = eventData.payload as AnnotationAddedEvent['payload'];\n return payload.annotation.id;\n }\n case 'annotation.removed':\n case 'annotation.body.updated': {\n const payload = eventData.payload as AnnotationRemovedEvent['payload'] | AnnotationBodyUpdatedEvent['payload'];\n return payload.annotationId;\n }\n\n default:\n return null;\n }\n}\n\n// Check if event relates to the hovered annotation\nexport function isEventRelatedToAnnotation(event: StoredEvent, annotationId: AnnotationId): boolean {\n const eventAnnotationId = getAnnotationIdFromEvent(event);\n return eventAnnotationId === annotationId;\n}\n","/**\n * DID (Decentralized Identifier) and W3C Agent utilities\n *\n * Provides utilities for working with DID:WEB identifiers and converting\n * between user representations and W3C Web Annotation Agent objects.\n */\n\nimport type { components } from '@semiont/api-client';\n\ntype Agent = components['schemas']['Agent'];\n\n/**\n * Convert a user object to a DID:WEB identifier\n *\n * Format: did:web:domain.com:users:userId\n * Example: did:web:example.com:users:abc123\n *\n * This is used for W3C Web Annotation compliance and federation readiness.\n *\n * @param user - User object with id and domain\n * @returns DID:WEB identifier string\n */\nexport function userToDid(user: { id: string; domain: string }): string {\n return `did:web:${user.domain}:users:${user.id}`;\n}\n\n/**\n * Convert a user object to a W3C Agent object with DID:WEB identifier\n *\n * Creates a full Agent object for W3C Web Annotation compliance.\n * Includes DID:WEB identifier, type, and name.\n *\n * @param user - User object with id, domain, name, and email\n * @returns W3C Agent object\n */\nexport function userToAgent(user: {\n id: string;\n domain: string;\n name: string | null;\n email: string;\n}): Agent {\n return {\n type: 'Person' as const,\n id: userToDid(user),\n name: user.name || user.email,\n };\n}\n\n/**\n * Convert a DID string to a minimal W3C Agent object\n *\n * Used when reconstructing annotations from events where only the DID is available.\n * Creates a minimal Agent with just the required fields (id, type).\n * Name is derived from the DID for display purposes.\n *\n * @param did - DID:WEB identifier string\n * @returns Minimal W3C Agent object\n */\nexport function didToAgent(did: string): Agent {\n // Extract user ID from DID format: did:web:domain.com:users:userId\n const parts = did.split(':');\n const userId = parts[parts.length - 1] || 'unknown';\n\n return {\n type: 'Person' as const,\n id: did,\n name: userId, // Use user ID as name since we don't have full user data\n };\n}\n","/**\n * Configuration Error Class\n * \n * Custom error class for configuration validation and loading errors.\n * Provides structured error information with helpful suggestions.\n */\n\nexport class ConfigurationError extends Error {\n public override readonly cause?: Error;\n\n constructor(\n message: string,\n public environment?: string,\n public suggestion?: string,\n cause?: Error\n ) {\n super(message);\n this.name = 'ConfigurationError';\n this.cause = cause;\n }\n \n /**\n * Format the error nicely for CLI output\n */\n override toString(): string {\n let output = `❌ ${this.message}`;\n if (this.environment) {\n output += `\\n Environment: ${this.environment}`;\n }\n if (this.suggestion) {\n output += `\\n 💡 Suggestion: ${this.suggestion}`;\n }\n return output;\n }\n}","/**\n * Project Discovery Module\n * \n * Responsible for finding the Semiont project root directory.\n * Looks for semiont.json or environments directory to identify a valid project.\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { ConfigurationError } from './configuration-error';\n\n/**\n * Find project root - returns SEMIONT_ROOT environment variable\n *\n * @returns The absolute path to the project root\n * @throws ConfigurationError if SEMIONT_ROOT is not set or invalid\n */\nexport function findProjectRoot(): string {\n const root = process.env.SEMIONT_ROOT;\n\n if (!root) {\n throw new ConfigurationError(\n 'SEMIONT_ROOT environment variable is not set',\n undefined,\n 'Set SEMIONT_ROOT to your project directory, or use the semiont CLI which sets it automatically'\n );\n }\n\n if (!fs.existsSync(root)) {\n throw new ConfigurationError(\n `SEMIONT_ROOT points to non-existent directory: ${root}`,\n undefined,\n 'Check that SEMIONT_ROOT environment variable is set correctly'\n );\n }\n\n // Verify it's a valid project root\n if (!isProjectRoot(root)) {\n throw new ConfigurationError(\n `SEMIONT_ROOT does not point to a valid Semiont project: ${root}`,\n undefined,\n 'Ensure SEMIONT_ROOT points to a directory containing semiont.json or environments/'\n );\n }\n\n return root;\n}\n\n/**\n * Check if a path looks like a Semiont project root\n * \n * @param projectPath - Path to check\n * @returns True if path contains semiont.json or environments directory\n */\nexport function isProjectRoot(projectPath: string): boolean {\n return fs.existsSync(path.join(projectPath, 'semiont.json')) ||\n fs.existsSync(path.join(projectPath, 'environments'));\n}\n\n/**\n * Get the path to the environments directory\n * \n * @param projectRoot - Project root directory (optional, will find if not provided)\n * @returns Path to environments directory\n */\nexport function getEnvironmentsPath(projectRoot?: string): string {\n const root = projectRoot || findProjectRoot();\n return path.join(root, 'environments');\n}\n\n/**\n * Get the path to semiont.json\n * \n * @param projectRoot - Project root directory (optional, will find if not provided)\n * @returns Path to semiont.json\n */\nexport function getSemiontConfigPath(projectRoot?: string): string {\n const root = projectRoot || findProjectRoot();\n return path.join(root, 'semiont.json');\n}","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://semiont.org/schemas/config.json\",\n \"definitions\": {\n \"PlatformType\": {\n \"type\": \"string\",\n \"enum\": [\"posix\", \"container\", \"aws\", \"external\"]\n },\n \"ServicePlatformConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"$ref\": \"#/definitions/PlatformType\" }\n },\n \"required\": [\"type\"]\n },\n \"ResourceRequirements\": {\n \"type\": \"object\",\n \"properties\": {\n \"cpu\": { \"type\": \"string\" },\n \"memory\": { \"type\": \"string\" },\n \"gpu\": { \"type\": \"integer\" },\n \"gpus\": { \"type\": \"integer\" },\n \"replicas\": { \"type\": \"integer\" },\n \"ephemeralStorage\": { \"type\": \"string\" },\n \"memoryReservation\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"SecurityRequirements\": {\n \"type\": \"object\",\n \"properties\": {\n \"readOnlyRootFilesystem\": { \"type\": \"boolean\" },\n \"runAsNonRoot\": { \"type\": \"boolean\" },\n \"runAsUser\": { \"type\": \"integer\" },\n \"runAsGroup\": { \"type\": \"integer\" },\n \"capabilities\": {\n \"oneOf\": [\n { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n {\n \"type\": \"object\",\n \"properties\": {\n \"add\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"drop\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }\n }\n }\n ]\n },\n \"privileged\": { \"type\": \"boolean\" },\n \"allowPrivilegeEscalation\": { \"type\": \"boolean\" }\n },\n \"additionalProperties\": false\n },\n \"BuildRequirements\": {\n \"type\": \"object\",\n \"properties\": {\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" }\n },\n \"additionalProperties\": false\n },\n \"BackendServiceConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": { \"$ref\": \"#/definitions/ServicePlatformConfig\" },\n \"devMode\": { \"type\": \"boolean\" },\n \"command\": { \"type\": \"string\" },\n \"port\": { \"type\": \"integer\" },\n \"publicURL\": { \"type\": \"string\" },\n \"corsOrigin\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\" },\n \"cpu\": { \"type\": \"string\" },\n \"memory\": { \"type\": \"string\" },\n \"semiontRepo\": { \"type\": \"string\" },\n \"databaseUrl\": { \"type\": \"string\" },\n \"projectRoot\": { \"type\": \"string\" },\n \"timeout\": { \"type\": \"integer\" },\n \"wait\": { \"type\": \"integer\" },\n \"logsEndpoint\": { \"type\": \"string\" },\n \"tag\": { \"type\": \"string\" },\n \"resources\": { \"$ref\": \"#/definitions/ResourceRequirements\" },\n \"security\": { \"$ref\": \"#/definitions/SecurityRequirements\" },\n \"build\": {\n \"oneOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#/definitions/BuildRequirements\" }\n ]\n },\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" },\n \"secrets\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"labels\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"annotations\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"dependencies\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"externalDependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"healthCheck\": { \"type\": \"string\" }\n }\n }\n ]\n }\n },\n \"redisUrl\": { \"type\": \"string\" },\n \"environment\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"env\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } }\n },\n \"required\": [\"platform\", \"port\", \"publicURL\", \"corsOrigin\"],\n \"additionalProperties\": false\n },\n \"FrontendServiceConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": { \"$ref\": \"#/definitions/ServicePlatformConfig\" },\n \"devMode\": { \"type\": \"boolean\" },\n \"command\": { \"type\": \"string\" },\n \"port\": { \"type\": \"integer\" },\n \"url\": { \"type\": \"string\" },\n \"siteName\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\" },\n \"semiontRepo\": { \"type\": \"string\" },\n \"projectRoot\": { \"type\": \"string\" },\n \"databaseUrl\": { \"type\": \"string\" },\n \"timeout\": { \"type\": \"integer\" },\n \"wait\": { \"type\": \"integer\" },\n \"logsEndpoint\": { \"type\": \"string\" },\n \"tag\": { \"type\": \"string\" },\n \"resources\": { \"$ref\": \"#/definitions/ResourceRequirements\" },\n \"security\": { \"$ref\": \"#/definitions/SecurityRequirements\" },\n \"build\": {\n \"oneOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#/definitions/BuildRequirements\" }\n ]\n },\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" },\n \"secrets\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"labels\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"annotations\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"dependencies\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"externalDependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"healthCheck\": { \"type\": \"string\" }\n }\n }\n ]\n }\n },\n \"environment\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"env\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } }\n },\n \"required\": [\"platform\", \"port\", \"url\", \"siteName\"],\n \"additionalProperties\": false\n },\n \"DatabaseServiceConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": { \"$ref\": \"#/definitions/ServicePlatformConfig\" },\n \"type\": { \"type\": \"string\" },\n \"name\": { \"type\": \"string\" },\n \"host\": { \"type\": \"string\" },\n \"port\": { \"type\": \"integer\" },\n \"environment\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"env\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"description\": { \"type\": \"string\" },\n \"command\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\" },\n \"user\": { \"type\": \"string\" },\n \"username\": { \"type\": \"string\" },\n \"password\": { \"type\": \"string\" },\n \"database\": { \"type\": \"string\" },\n \"storageSize\": { \"type\": \"string\" },\n \"timeout\": { \"type\": \"integer\" },\n \"wait\": { \"type\": \"integer\" },\n \"logsEndpoint\": { \"type\": \"string\" },\n \"tag\": { \"type\": \"string\" },\n \"resources\": { \"$ref\": \"#/definitions/ResourceRequirements\" },\n \"security\": { \"$ref\": \"#/definitions/SecurityRequirements\" },\n \"build\": {\n \"oneOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#/definitions/BuildRequirements\" }\n ]\n },\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" },\n \"secrets\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"labels\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"annotations\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"dependencies\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"externalDependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"healthCheck\": { \"type\": \"string\" }\n }\n }\n ]\n }\n }\n },\n \"required\": [\"platform\", \"type\", \"host\", \"port\"],\n \"additionalProperties\": false\n },\n \"GraphDatabaseType\": {\n \"type\": \"string\",\n \"enum\": [\"neo4j\", \"janusgraph\", \"neptune\", \"memory\"]\n },\n \"GraphServiceConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": { \"$ref\": \"#/definitions/ServicePlatformConfig\" },\n \"type\": { \"$ref\": \"#/definitions/GraphDatabaseType\" },\n \"name\": { \"type\": \"string\" },\n \"uri\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"username\": { \"type\": \"string\" },\n \"password\": { \"type\": \"string\" },\n \"database\": { \"type\": \"string\" },\n \"host\": { \"type\": \"string\" },\n \"port\": { \"type\": \"integer\" },\n \"storage\": { \"type\": \"string\" },\n \"index\": { \"type\": \"string\" },\n \"endpoint\": { \"type\": \"string\" },\n \"region\": { \"type\": \"string\" },\n \"command\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\" },\n \"janusgraphVersion\": { \"type\": \"string\" },\n \"javaOptions\": { \"type\": \"string\" },\n \"heapSize\": { \"type\": \"string\" },\n \"pageCacheSize\": { \"type\": \"string\" },\n \"noAuth\": { \"type\": \"boolean\" },\n \"dataPath\": { \"type\": \"string\" },\n \"timeout\": { \"type\": \"integer\" },\n \"wait\": { \"type\": \"integer\" },\n \"logsEndpoint\": { \"type\": \"string\" },\n \"tag\": { \"type\": \"string\" },\n \"resources\": { \"$ref\": \"#/definitions/ResourceRequirements\" },\n \"security\": { \"$ref\": \"#/definitions/SecurityRequirements\" },\n \"build\": {\n \"oneOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#/definitions/BuildRequirements\" }\n ]\n },\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" },\n \"secrets\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"labels\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"annotations\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"dependencies\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"externalDependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"healthCheck\": { \"type\": \"string\" }\n }\n }\n ]\n }\n },\n \"environment\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"env\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } }\n },\n \"required\": [\"platform\", \"type\", \"uri\", \"username\", \"password\", \"database\"],\n \"additionalProperties\": false\n },\n \"FilesystemServiceConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": { \"$ref\": \"#/definitions/ServicePlatformConfig\" },\n \"path\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"command\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\" },\n \"port\": { \"type\": \"integer\" },\n \"timeout\": { \"type\": \"integer\" },\n \"wait\": { \"type\": \"integer\" },\n \"logsEndpoint\": { \"type\": \"string\" },\n \"tag\": { \"type\": \"string\" },\n \"resources\": { \"$ref\": \"#/definitions/ResourceRequirements\" },\n \"security\": { \"$ref\": \"#/definitions/SecurityRequirements\" },\n \"build\": {\n \"oneOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#/definitions/BuildRequirements\" }\n ]\n },\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" },\n \"secrets\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"labels\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"annotations\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"dependencies\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"externalDependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"healthCheck\": { \"type\": \"string\" }\n }\n }\n ]\n }\n },\n \"environment\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"env\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } }\n },\n \"required\": [\"platform\", \"path\"],\n \"additionalProperties\": false\n },\n \"InferenceServiceConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": { \"$ref\": \"#/definitions/ServicePlatformConfig\" },\n \"type\": { \"type\": \"string\" },\n \"model\": { \"type\": \"string\" },\n \"maxTokens\": { \"type\": \"integer\" },\n \"endpoint\": { \"type\": \"string\" },\n \"baseURL\": { \"type\": \"string\" },\n \"apiKey\": { \"type\": \"string\" },\n \"command\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\" },\n \"port\": { \"type\": \"integer\" },\n \"organization\": { \"type\": \"string\" },\n \"timeout\": { \"type\": \"integer\" },\n \"wait\": { \"type\": \"integer\" },\n \"logsEndpoint\": { \"type\": \"string\" },\n \"tag\": { \"type\": \"string\" },\n \"resources\": { \"$ref\": \"#/definitions/ResourceRequirements\" },\n \"security\": { \"$ref\": \"#/definitions/SecurityRequirements\" },\n \"build\": {\n \"oneOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#/definitions/BuildRequirements\" }\n ]\n },\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" },\n \"secrets\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"labels\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"annotations\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"dependencies\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"externalDependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"healthCheck\": { \"type\": \"string\" }\n }\n }\n ]\n }\n },\n \"environment\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"env\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } }\n },\n \"required\": [\"platform\", \"type\", \"apiKey\"],\n \"additionalProperties\": false\n },\n \"McpServiceConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": { \"$ref\": \"#/definitions/ServicePlatformConfig\" },\n \"command\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\" },\n \"port\": { \"type\": \"integer\" },\n \"dependsOn\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"timeout\": { \"type\": \"integer\" },\n \"wait\": { \"type\": \"integer\" },\n \"logsEndpoint\": { \"type\": \"string\" },\n \"tag\": { \"type\": \"string\" },\n \"resources\": { \"$ref\": \"#/definitions/ResourceRequirements\" },\n \"security\": { \"$ref\": \"#/definitions/SecurityRequirements\" },\n \"build\": {\n \"oneOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#/definitions/BuildRequirements\" }\n ]\n },\n \"dockerfile\": { \"type\": \"string\" },\n \"buildContext\": { \"type\": \"string\" },\n \"buildArgs\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"buildTarget\": { \"type\": \"string\" },\n \"prebuilt\": { \"type\": \"boolean\" },\n \"noCache\": { \"type\": \"boolean\" },\n \"secrets\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"labels\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"annotations\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"dependencies\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n \"externalDependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"healthCheck\": { \"type\": \"string\" }\n }\n }\n ]\n }\n },\n \"environment\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },\n \"env\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } }\n },\n \"required\": [\"platform\"],\n \"additionalProperties\": false\n },\n \"ServicesConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"backend\": { \"$ref\": \"#/definitions/BackendServiceConfig\" },\n \"frontend\": { \"$ref\": \"#/definitions/FrontendServiceConfig\" },\n \"database\": { \"$ref\": \"#/definitions/DatabaseServiceConfig\" },\n \"graph\": { \"$ref\": \"#/definitions/GraphServiceConfig\" },\n \"filesystem\": { \"$ref\": \"#/definitions/FilesystemServiceConfig\" },\n \"inference\": { \"$ref\": \"#/definitions/InferenceServiceConfig\" },\n \"mcp\": { \"$ref\": \"#/definitions/McpServiceConfig\" }\n },\n \"additionalProperties\": true\n },\n \"SiteConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"siteName\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Display name for the site\"\n },\n \"domain\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Primary domain for the site\"\n },\n \"adminEmail\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"Administrator email address\"\n },\n \"supportEmail\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"Support email address (optional)\"\n },\n \"oauthAllowedDomains\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"description\": \"Email domains allowed for OAuth authentication\"\n }\n },\n \"required\": [\"domain\"],\n \"additionalProperties\": false\n },\n \"AppConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"features\": {\n \"type\": \"object\",\n \"properties\": {\n \"enableAnalytics\": { \"type\": \"boolean\" },\n \"enableMaintenanceMode\": { \"type\": \"boolean\" },\n \"enableDebugLogging\": { \"type\": \"boolean\" }\n },\n \"additionalProperties\": false\n },\n \"security\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionTimeout\": {\n \"type\": \"integer\",\n \"minimum\": 60,\n \"description\": \"Session timeout in seconds\"\n },\n \"maxLoginAttempts\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Maximum failed login attempts before lockout\"\n },\n \"corsAllowedOrigins\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"enableLocalAuth\": {\n \"type\": \"boolean\",\n \"description\": \"Enable local username/password authentication\"\n },\n \"jwtSecret\": {\n \"type\": \"string\",\n \"minLength\": 32,\n \"description\": \"JWT signing secret (base64 encoded, 32+ bytes)\"\n }\n },\n \"additionalProperties\": false\n },\n \"performance\": {\n \"type\": \"object\",\n \"properties\": {\n \"enableCaching\": { \"type\": \"boolean\" },\n \"cacheTimeout\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Cache timeout in seconds\"\n },\n \"maxRequestSize\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(kb|mb|gb)$\",\n \"description\": \"Maximum request size (e.g., '10mb')\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"EnvironmentConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"_comment\": {\n \"type\": \"string\",\n \"description\": \"Optional comment for documentation\"\n },\n \"_metadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"environment\": { \"type\": \"string\" },\n \"projectRoot\": { \"type\": \"string\" }\n },\n \"required\": [\"environment\", \"projectRoot\"]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Environment name\"\n },\n \"platform\": {\n \"type\": \"object\",\n \"properties\": {\n \"default\": { \"$ref\": \"#/definitions/PlatformType\" }\n }\n },\n \"services\": {\n \"$ref\": \"#/definitions/ServicesConfig\"\n },\n \"site\": {\n \"$ref\": \"#/definitions/SiteConfig\"\n },\n \"app\": {\n \"$ref\": \"#/definitions/AppConfig\"\n },\n \"env\": {\n \"type\": \"object\",\n \"properties\": {\n \"NODE_ENV\": {\n \"type\": \"string\",\n \"enum\": [\"development\", \"production\", \"test\"]\n }\n },\n \"additionalProperties\": true\n },\n \"deployment\": {\n \"type\": \"object\",\n \"properties\": {\n \"imageTagStrategy\": {\n \"type\": \"string\",\n \"enum\": [\"mutable\", \"immutable\", \"git-hash\"]\n }\n }\n }\n },\n \"required\": [\"services\"],\n \"additionalProperties\": false\n },\n \"SemiontConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$\",\n \"description\": \"Config file version (semver)\"\n },\n \"project\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Project name\"\n },\n \"site\": {\n \"$ref\": \"#/definitions/SiteConfig\"\n },\n \"app\": {\n \"$ref\": \"#/definitions/AppConfig\"\n },\n \"services\": {\n \"$ref\": \"#/definitions/ServicesConfig\"\n }\n },\n \"required\": [\"version\", \"project\", \"site\"],\n \"additionalProperties\": false\n }\n }\n}\n","/**\n * Config Schema Validator\n *\n * Validates configuration data against JSON Schema using Ajv (JSON Schema validator).\n * Provides runtime validation for semiont.json and environment config files.\n */\n\nimport Ajv, { type ErrorObject } from 'ajv';\nimport addFormats from 'ajv-formats';\nimport configSchema from './config.schema.json' with { type: 'json' };\n\n// Initialize Ajv with config-compatible settings\nconst ajv = new Ajv({\n allErrors: true, // Return all errors, not just the first one\n coerceTypes: true, // Coerce types (e.g., \"123\" -> 123)\n removeAdditional: false, // Don't remove additional properties\n useDefaults: true, // Apply default values from schema\n strict: false\n});\n\n// Add format validators (email, uri, date-time, etc.)\naddFormats(ajv);\n\n// Load schema\najv.addSchema(configSchema, 'config');\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ErrorObject[] | null;\n errorMessage?: string;\n}\n\n/**\n * Validate semiont.json config\n */\nexport function validateSemiontConfig(data: unknown): ValidationResult {\n const validate = ajv.getSchema('config#/definitions/SemiontConfig');\n if (!validate) {\n throw new Error('SemiontConfig schema not found');\n }\n\n const valid = validate(data);\n\n if (!valid) {\n return {\n valid: false,\n errors: validate.errors || null,\n errorMessage: formatErrors(validate.errors || [])\n };\n }\n\n return { valid: true, errors: null };\n}\n\n/**\n * Validate environment config (environments/*.json)\n */\nexport function validateEnvironmentConfig(data: unknown): ValidationResult {\n const validate = ajv.getSchema('config#/definitions/EnvironmentConfig');\n if (!validate) {\n throw new Error('EnvironmentConfig schema not found');\n }\n\n const valid = validate(data);\n\n if (!valid) {\n return {\n valid: false,\n errors: validate.errors || null,\n errorMessage: formatErrors(validate.errors || [])\n };\n }\n\n return { valid: true, errors: null };\n}\n\n/**\n * Validate site config\n */\nexport function validateSiteConfig(data: unknown): ValidationResult {\n const validate = ajv.getSchema('config#/definitions/SiteConfig');\n if (!validate) {\n throw new Error('SiteConfig schema not found');\n }\n\n const valid = validate(data);\n\n if (!valid) {\n return {\n valid: false,\n errors: validate.errors || null,\n errorMessage: formatErrors(validate.errors || [])\n };\n }\n\n return { valid: true, errors: null };\n}\n\n/**\n * Format validation errors into human-readable message\n */\nfunction formatErrors(errors: ErrorObject[]): string {\n if (errors.length === 0) return 'Validation failed';\n\n const messages = errors.map(err => {\n const path = err.instancePath || 'root';\n const message = err.message || 'validation error';\n\n if (err.keyword === 'required' && 'missingProperty' in err.params) {\n return `Missing required property: ${err.params.missingProperty}`;\n }\n\n if (err.keyword === 'type' && 'type' in err.params) {\n return `${path}: ${message} (expected ${err.params.type})`;\n }\n\n if (err.keyword === 'enum' && 'allowedValues' in err.params) {\n return `${path}: must be one of [${(err.params.allowedValues as string[]).join(', ')}]`;\n }\n\n if (err.keyword === 'format') {\n return `${path}: invalid format (${message})`;\n }\n\n if (err.keyword === 'minLength' || err.keyword === 'minItems') {\n return `${path}: ${message}`;\n }\n\n return `${path}: ${message}`;\n });\n\n return messages.join('; ');\n}\n","/**\n * Environment Loader Module\n * \n * Responsible for loading and merging environment configurations.\n * Handles semiont.json base config and environment-specific overrides.\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { ConfigurationError } from './configuration-error';\nimport { findProjectRoot } from './project-discovery';\nimport { PlatformType } from './platform-types';\nimport { isObject } from '../index';\nimport { validateEnvironmentConfig } from './config-validator';\nimport type {\n EnvironmentConfig,\n SiteConfig,\n AppConfig,\n SemiontConfig,\n ServicesConfig,\n BackendServiceConfig,\n FrontendServiceConfig,\n DatabaseServiceConfig,\n GraphServiceConfig,\n FilesystemServiceConfig,\n InferenceServiceConfig,\n ServicePlatformConfig\n} from './config.types';\n\n/**\n * Re-export generated types from JSON Schema\n * These types are automatically generated from config.schema.json\n */\nexport type {\n EnvironmentConfig,\n SiteConfig,\n AppConfig,\n SemiontConfig,\n PlatformType,\n ServicesConfig,\n BackendServiceConfig,\n FrontendServiceConfig,\n DatabaseServiceConfig,\n GraphServiceConfig,\n FilesystemServiceConfig,\n InferenceServiceConfig,\n ServicePlatformConfig\n};\n\n/**\n * Generic service configuration\n * Platform-specific fields should be accessed through platform-specific interfaces\n */\nexport interface ServiceConfig {\n platform?: {\n type: PlatformType;\n };\n // Generic fields that apply across platforms\n port?: number;\n name?: string;\n // Platform-specific fields are loosely typed here\n // Platforms should validate and type these properly\n [key: string]: any;\n}\n\nexport interface AWSConfig {\n region: string;\n accountId: string;\n certificateArn?: string;\n hostedZoneId?: string;\n rootDomain?: string;\n stacks?: {\n data?: string;\n app?: string;\n };\n database?: {\n name?: string;\n instanceClass?: string;\n allocatedStorage?: number;\n backupRetentionDays?: number;\n multiAZ?: boolean;\n };\n ecs?: {\n desiredCount?: number;\n minCapacity?: number;\n maxCapacity?: number;\n };\n monitoring?: {\n enableDetailedMonitoring?: boolean;\n logRetentionDays?: number;\n };\n}\n\n/**\n * Deep merge utility for configuration objects\n */\nfunction deepMerge(target: any, ...sources: any[]): any {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n deepMerge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return deepMerge(target, ...sources);\n}\n\n\n/**\n * Recursively resolve environment variable placeholders in configuration\n * Replaces ${VAR_NAME} with the value from process.env\n *\n * @param obj - Configuration object to process\n * @returns Configuration with resolved environment variables\n */\nfunction resolveEnvVars(obj: any): any {\n if (typeof obj === 'string') {\n // Replace ${VAR_NAME} with actual environment variable value\n return obj.replace(/\\$\\{([^}]+)\\}/g, (match, varName) => {\n return process.env[varName] || match;\n });\n }\n\n if (Array.isArray(obj)) {\n return obj.map(item => resolveEnvVars(item));\n }\n\n if (obj && typeof obj === 'object') {\n const resolved: any = {};\n for (const key in obj) {\n resolved[key] = resolveEnvVars(obj[key]);\n }\n return resolved;\n }\n\n return obj;\n}\n\n/**\n * Load environment configuration\n * Merges semiont.json with environment-specific config\n *\n * @param projectRoot - Absolute path to project directory containing semiont.json\n * @param environment - Environment name (must match a file in environments/)\n * @returns Merged environment configuration\n * @throws ConfigurationError if files are missing or invalid\n */\nexport function loadEnvironmentConfig(projectRoot: string, environment: string): EnvironmentConfig {\n try {\n // Load base semiont.json\n const baseConfigPath = path.join(projectRoot, 'semiont.json');\n let baseConfig: any = {};\n if (fs.existsSync(baseConfigPath)) {\n const baseContent = fs.readFileSync(baseConfigPath, 'utf-8');\n baseConfig = JSON.parse(baseContent);\n }\n\n // Load environment-specific config\n const envPath = path.join(projectRoot, 'environments', `${environment}.json`);\n\n if (!fs.existsSync(envPath)) {\n throw new ConfigurationError(\n `Environment configuration missing: ${envPath}`,\n environment,\n `Create the configuration file or use: semiont init`\n );\n }\n \n const envContent = fs.readFileSync(envPath, 'utf-8');\n const envConfig = JSON.parse(envContent);\n \n // Merge configurations: base defaults -> environment config\n const merged = deepMerge(\n {},\n { site: baseConfig.site }, // Site config from semiont.json\n baseConfig.defaults || {}, // Default config from semiont.json\n envConfig // Environment-specific overrides\n );\n\n // Resolve environment variables in the merged configuration\n const resolved = resolveEnvVars(merged);\n\n // Ensure services exists (even if empty)\n if (!resolved.services) {\n resolved.services = {};\n }\n\n // Validate NODE_ENV if specified\n if (resolved.env?.NODE_ENV) {\n const validNodeEnv = ['development', 'production', 'test'];\n if (!validNodeEnv.includes(resolved.env.NODE_ENV)) {\n throw new ConfigurationError(\n `Invalid NODE_ENV value: ${resolved.env.NODE_ENV}`,\n environment,\n `NODE_ENV must be one of: ${validNodeEnv.join(', ')}`\n );\n }\n }\n\n // Add metadata about where this config came from\n const configWithMetadata = {\n ...resolved,\n _metadata: {\n environment,\n projectRoot\n }\n };\n\n // Validate with AJV\n const validationResult = validateEnvironmentConfig(configWithMetadata);\n\n if (!validationResult.valid) {\n throw new ConfigurationError(\n `Invalid environment configuration: ${validationResult.errorMessage}`,\n environment,\n `Fix the validation errors in your environments/${environment}.json file`\n );\n }\n\n return configWithMetadata as EnvironmentConfig;\n } catch (error) {\n if (error instanceof ConfigurationError) {\n throw error; // Re-throw our custom errors\n }\n \n if (error instanceof SyntaxError && error.message.includes('JSON')) {\n throw new ConfigurationError(\n `Invalid JSON syntax in configuration file`,\n environment,\n `Check for missing commas, quotes, or brackets. Use a JSON validator to verify syntax.`\n );\n }\n \n const message = error instanceof Error ? error.message : String(error);\n throw new ConfigurationError(\n `Failed to load environment configuration: ${message}`,\n environment,\n `Check the configuration files exist and are valid JSON`\n );\n }\n}\n\n/**\n * Get NODE_ENV value from environment config\n *\n * @param config - Environment configuration\n * @returns NODE_ENV value (defaults to 'development' if not specified)\n */\nexport function getNodeEnvForEnvironment(config: EnvironmentConfig): 'development' | 'production' | 'test' {\n const nodeEnv = config.env?.NODE_ENV;\n\n // Default to 'development' if not specified\n return nodeEnv || 'development';\n}\n\n/**\n * Get available environments by scanning environments directory\n * \n * @returns Array of environment names\n */\nexport function getAvailableEnvironments(): string[] {\n try {\n const projectRoot = findProjectRoot();\n const configDir = path.join(projectRoot, 'environments');\n \n if (!fs.existsSync(configDir)) {\n return [];\n }\n \n return fs.readdirSync(configDir)\n .filter(file => file.endsWith('.json'))\n .map(file => path.basename(file, '.json'))\n .sort();\n } catch (error) {\n return [];\n }\n}\n\n/**\n * Check if an environment exists\n * \n * @param environment - Environment name to check\n * @returns True if environment exists\n */\nexport function isValidEnvironment(environment: string): boolean {\n return getAvailableEnvironments().includes(environment);\n}\n\n/**\n * Type guard to check if config has AWS settings\n * \n * @param config - Environment configuration\n * @returns True if AWS configuration is present\n */\nexport function hasAWSConfig(config: EnvironmentConfig): config is EnvironmentConfig & { aws: AWSConfig } {\n return !!(config as any).aws && !!(config as any).aws.region;\n}\n\n/**\n * Display configuration for debugging\n * \n * @param config - Configuration to display\n */\nexport function displayConfiguration(config: EnvironmentConfig): void {\n console.log('Environment Configuration:');\n console.log(JSON.stringify(config, null, 2));\n}","/**\n * Environment validation utilities\n */\n\nimport { getAvailableEnvironments } from './environment-loader';\n\nexport type Environment = string; // Allow any environment name discovered from filesystem\n\n/**\n * Type guard to check if a string is a valid Environment\n */\nexport function isValidEnvironment(value: string | undefined): value is Environment {\n if (!value) return false;\n // Use dynamic check from filesystem to support custom environments like 'production'\n return getAvailableEnvironments().includes(value);\n}\n\n/**\n * Parse environment string to Environment type\n * @param value - The environment string to parse\n * @returns Valid Environment type\n * @throws Error if environment is invalid or not provided\n */\nexport function parseEnvironment(value: string | undefined): Environment {\n if (!value) {\n throw new Error('Environment is required');\n }\n if (!isValidEnvironment(value)) {\n const availableEnvs = getAvailableEnvironments();\n throw new Error(`Invalid environment: ${value}. Available environments: ${availableEnvs.join(', ')}`);\n }\n return value;\n}\n\n/**\n * Validate and return environment or throw error\n * @param value - The environment string to validate\n * @throws Error if environment is invalid\n */\nexport function validateEnvironment(value: string | undefined): Environment {\n if (!value) {\n throw new Error('Environment is required');\n }\n if (!isValidEnvironment(value)) {\n const availableEnvs = getAvailableEnvironments();\n throw new Error(`Invalid environment: ${value}. Available environments: ${availableEnvs.join(', ')}`);\n }\n return value;\n}","/**\n * Platform Types Module\n *\n * Re-exports PlatformType from schema-generated types.\n * Platforms represent WHERE services run (infrastructure targets).\n */\n\nimport { PlatformType as SchemaPlatformType } from './config.types';\n\n/**\n * Platform type literals from JSON Schema\n * These represent the infrastructure targets where services can be deployed\n */\nexport type PlatformType = SchemaPlatformType;\n\n/**\n * Type guard to check if a string is a valid platform type\n *\n * @param value - Value to check\n * @returns True if value is a valid PlatformType\n */\nexport function isValidPlatformType(value: string): value is PlatformType {\n return ['aws', 'container', 'posix', 'external'].includes(value);\n}\n\n/**\n * Get all valid platform types\n *\n * @returns Array of all platform types\n */\nexport function getAllPlatformTypes(): PlatformType[] {\n return ['aws', 'container', 'posix', 'external'];\n}","/**\n * @semiont/core\n *\n * Core domain logic and utilities for the Semiont semantic knowledge platform.\n * For OpenAPI types, import directly from @semiont/api-client.\n */\n\n// NOTE: OpenAPI types are NOT re-exported from @semiont/core.\n// Import types directly from @semiont/api-client where needed:\n// import type { components } from '@semiont/api-client';\n// type Annotation = components['schemas']['Annotation'];\n\n// Creation methods\nexport { CREATION_METHODS } from './creation-methods';\nexport type { CreationMethod } from './creation-methods';\n\n// Identifier types (only IDs - URIs are in @semiont/api-client)\nexport type { ResourceId, AnnotationId, UserId } from './identifiers';\nexport {\n resourceId,\n annotationId,\n userId,\n isResourceId,\n isAnnotationId,\n} from './identifiers';\n\n// Graph types\nexport type {\n GraphConnection,\n GraphPath,\n EntityTypeStats,\n} from './graph';\n\n// Event types\nexport type {\n BaseEvent,\n ResourceEvent,\n ResourceEventType,\n SystemEvent,\n ResourceScopedEvent,\n ResourceCreatedEvent,\n ResourceClonedEvent,\n ResourceArchivedEvent,\n ResourceUnarchivedEvent,\n AnnotationAddedEvent,\n AnnotationRemovedEvent,\n AnnotationBodyUpdatedEvent,\n JobStartedEvent,\n JobProgressEvent,\n JobCompletedEvent,\n JobFailedEvent,\n BodyOperation,\n BodyItem,\n EntityTagAddedEvent,\n EntityTagRemovedEvent,\n EventMetadata,\n EventSignature,\n StoredEvent,\n EventQuery,\n ResourceAnnotations,\n} from './events';\nexport {\n isResourceEvent,\n isSystemEvent,\n isResourceScopedEvent,\n getEventType,\n} from './events';\n\n// Backend-specific annotation utilities\nexport { bodyItemsMatch, findBodyItem } from './annotation-utils';\n\n// Resource types\nexport type { UpdateResourceInput, ResourceFilter } from './resource-types';\n\n// Annotation types\nexport type { AnnotationCategory, CreateAnnotationInternal } from './annotation-types';\n\n// Auth types\nexport type { GoogleAuthRequest } from './auth-types';\n\n// Utility functions\nexport * from './type-guards';\nexport * from './crypto';\nexport * from './errors';\nexport * from './http-client';\nexport * from './annotation-history-utils';\nexport * from './did-utils';\n\n// Configuration loading\nexport {\n loadEnvironmentConfig,\n getAvailableEnvironments,\n getNodeEnvForEnvironment,\n type EnvironmentConfig,\n type ServiceConfig,\n type AWSConfig,\n type SiteConfig,\n type AppConfig,\n} from './config/environment-loader';\nexport {\n isValidEnvironment,\n parseEnvironment,\n validateEnvironment,\n type Environment,\n} from './config/environment-validator';\nexport { ConfigurationError } from './config/configuration-error';\nexport {\n findProjectRoot,\n isProjectRoot,\n getEnvironmentsPath,\n getSemiontConfigPath,\n} from './config/project-discovery';\nexport {\n type PlatformType,\n isValidPlatformType,\n getAllPlatformTypes,\n} from './config/platform-types';\n\n// Schema-generated configuration types\nexport type {\n BackendServiceConfig,\n FrontendServiceConfig,\n DatabaseServiceConfig,\n GraphServiceConfig,\n FilesystemServiceConfig,\n InferenceServiceConfig,\n McpServiceConfig,\n ServicesConfig,\n SemiontConfig,\n GraphDatabaseType,\n ServicePlatformConfig\n} from './config/config.types';\n\n// Configuration validation\nexport {\n validateSemiontConfig,\n validateEnvironmentConfig,\n validateSiteConfig,\n type ValidationResult,\n} from './config/config-validator';\n\n// Version information\nexport const CORE_TYPES_VERSION = '0.1.0';\nexport const SDK_VERSION = '0.1.0';\n"]}
package/package.json CHANGED
@@ -1,9 +1,19 @@
1
1
  {
2
2
  "name": "@semiont/core",
3
- "version": "0.2.1",
3
+ "version": "0.2.2-build.12",
4
4
  "description": "Core domain types for Semiont - Document, Annotation, and Graph models",
5
+ "type": "module",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "engines": {
15
+ "node": ">=20.18.1"
16
+ },
7
17
  "files": [
8
18
  "dist",
9
19
  "README.md",
@@ -20,11 +30,10 @@
20
30
  "scripts": {
21
31
  "generate:types": "tsx scripts/generate-types.ts",
22
32
  "prebuild": "npm run generate:types",
23
- "build": "tsc",
24
- "build:clean": "rm -rf dist *.tsbuildinfo && tsc",
25
- "watch": "tsc --watch",
26
- "clean": "rm -rf dist *.tsbuildinfo",
27
- "type-check": "tsc --noEmit"
33
+ "typecheck": "tsc --noEmit",
34
+ "build": "npm run typecheck && tsup",
35
+ "watch": "tsup --watch",
36
+ "clean": "rm -rf dist *.tsbuildinfo"
28
37
  },
29
38
  "keywords": [
30
39
  "types",
@@ -37,9 +46,10 @@
37
46
  "author": "Semiont Team",
38
47
  "license": "Apache-2.0",
39
48
  "devDependencies": {
40
- "typescript": "^5.6.3",
41
49
  "json-schema-to-typescript": "^15.0.2",
42
- "tsx": "^4.19.2"
50
+ "tsup": "^8.5.1",
51
+ "tsx": "^4.19.2",
52
+ "typescript": "^5.6.3"
43
53
  },
44
54
  "dependencies": {
45
55
  "@semiont/api-client": "*",
@@ -1,42 +0,0 @@
1
- /**
2
- * Utility functions for AnnotationHistory component
3
- * Extracted to reduce component complexity and improve testability
4
- *
5
- * NOTE: This file contains UI-specific logic and should eventually move to the frontend package.
6
- * It has been updated to work with unified annotation events (annotation.added/removed/body.updated)
7
- * instead of separate highlight/reference/assessment events.
8
- */
9
- import type { StoredEvent, ResourceEventType } from './events';
10
- import type { CreationMethod } from './creation-methods';
11
- import type { components } from '@semiont/api-client';
12
- import type { AnnotationId } from './identifiers';
13
- type Annotation = components['schemas']['Annotation'];
14
- type TranslateFn = (key: string, params?: Record<string, string | number>) => string;
15
- export declare function formatEventType(type: ResourceEventType, t: TranslateFn): string;
16
- export declare function getEventEmoji(type: ResourceEventType, event?: StoredEvent): string;
17
- export declare function formatRelativeTime(timestamp: string, t: TranslateFn): string;
18
- export declare function getEventDisplayContent(event: StoredEvent, _references: Annotation[], // underscore prefix to indicate intentionally unused for now
19
- _highlights: Annotation[], // underscore prefix to indicate intentionally unused for now
20
- allEvents: StoredEvent[]): {
21
- exact: string;
22
- isQuoted: boolean;
23
- isTag: boolean;
24
- } | null;
25
- export declare function getEventEntityTypes(event: StoredEvent): string[];
26
- type ResourceCreatedDetails = {
27
- type: 'created';
28
- userId: string;
29
- method: CreationMethod;
30
- };
31
- type ResourceClonedDetails = {
32
- type: 'cloned';
33
- userId: string;
34
- method: CreationMethod;
35
- sourceDocId: string;
36
- };
37
- export type ResourceCreationDetails = ResourceCreatedDetails | ResourceClonedDetails;
38
- export declare function getResourceCreationDetails(event: StoredEvent): ResourceCreationDetails | null;
39
- export declare function getAnnotationIdFromEvent(event: StoredEvent): string | null;
40
- export declare function isEventRelatedToAnnotation(event: StoredEvent, annotationId: AnnotationId): boolean;
41
- export {};
42
- //# sourceMappingURL=annotation-history-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotation-history-utils.d.ts","sourceRoot":"","sources":["../src/annotation-history-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAQlB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,KAAK,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAGtD,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC;AAGrF,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,WAAW,GAAG,MAAM,CAoC/E;AAuBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAoClF;AAGD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,GAAG,MAAM,CAc5E;AASD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,UAAU,EAAE,EAAE,6DAA6D;AACxF,WAAW,EAAE,UAAU,EAAE,EAAE,6DAA6D;AACxF,SAAS,EAAE,WAAW,EAAE,GACvB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAyD7D;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CAUhE;AAwBD,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAGrF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,GAAG,IAAI,CAyB7F;AAGD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAiB1E;AAGD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAGlG"}