@happyvertical/smrt-core 0.41.0 → 0.42.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.
Files changed (96) hide show
  1. package/AGENTS.md +1 -1
  2. package/agents/schema-paths.md +79 -8
  3. package/dist/change-feed.d.ts.map +1 -1
  4. package/dist/change-feed.js +2 -2
  5. package/dist/change-feed.js.map +1 -1
  6. package/dist/change-signals.d.ts.map +1 -1
  7. package/dist/change-signals.js +8 -1
  8. package/dist/change-signals.js.map +1 -1
  9. package/dist/class.d.ts.map +1 -1
  10. package/dist/class.js +10 -9
  11. package/dist/class.js.map +1 -1
  12. package/dist/collection.d.ts.map +1 -1
  13. package/dist/collection.js +2 -2
  14. package/dist/collection.js.map +1 -1
  15. package/dist/dispatch/collections/Dispatches.d.ts.map +1 -1
  16. package/dist/dispatch/collections/Dispatches.js +5 -5
  17. package/dist/dispatch/collections/Dispatches.js.map +1 -1
  18. package/dist/dispatch/models/Dispatch.d.ts +1 -1
  19. package/dist/dispatch/models/Dispatch.d.ts.map +1 -1
  20. package/dist/dispatch/models/Dispatch.js +3 -2
  21. package/dist/dispatch/models/Dispatch.js.map +1 -1
  22. package/dist/dispatch/models/DispatchSubscription.d.ts +1 -1
  23. package/dist/dispatch/models/DispatchSubscription.d.ts.map +1 -1
  24. package/dist/dispatch/models/DispatchSubscription.js +2 -1
  25. package/dist/dispatch/models/DispatchSubscription.js.map +1 -1
  26. package/dist/embeddings/storage.d.ts.map +1 -1
  27. package/dist/embeddings/storage.js +2 -1
  28. package/dist/embeddings/storage.js.map +1 -1
  29. package/dist/learning/memory.d.ts.map +1 -1
  30. package/dist/learning/memory.js +5 -4
  31. package/dist/learning/memory.js.map +1 -1
  32. package/dist/manifest/static-manifest.js +1 -1
  33. package/dist/manifest/static-manifest.js.map +1 -1
  34. package/dist/manifest/store.js +1 -1
  35. package/dist/manifest.json +1 -1
  36. package/dist/migrations/differ.js +2 -2
  37. package/dist/migrations/differ.js.map +1 -1
  38. package/dist/migrations/index.d.ts +1 -0
  39. package/dist/migrations/index.d.ts.map +1 -1
  40. package/dist/migrations/index.js +2 -1
  41. package/dist/migrations/integer-width.d.ts +99 -0
  42. package/dist/migrations/integer-width.d.ts.map +1 -0
  43. package/dist/migrations/integer-width.js +237 -0
  44. package/dist/migrations/integer-width.js.map +1 -0
  45. package/dist/migrations/minor-units.d.ts +2 -2
  46. package/dist/migrations/minor-units.d.ts.map +1 -1
  47. package/dist/migrations/minor-units.js +16 -14
  48. package/dist/migrations/minor-units.js.map +1 -1
  49. package/dist/migrations/tracker.d.ts.map +1 -1
  50. package/dist/migrations/tracker.js +28 -20
  51. package/dist/migrations/tracker.js.map +1 -1
  52. package/dist/migrations.js +2 -1
  53. package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -1
  54. package/dist/schema/ddl/duckdb-strategy.js +1 -0
  55. package/dist/schema/ddl/duckdb-strategy.js.map +1 -1
  56. package/dist/schema/ddl/postgres-strategy.d.ts.map +1 -1
  57. package/dist/schema/ddl/postgres-strategy.js +2 -0
  58. package/dist/schema/ddl/postgres-strategy.js.map +1 -1
  59. package/dist/schema/generator.d.ts +1 -33
  60. package/dist/schema/generator.d.ts.map +1 -1
  61. package/dist/schema/generator.js +1 -150
  62. package/dist/schema/generator.js.map +1 -1
  63. package/dist/schema/index.d.ts +1 -2
  64. package/dist/schema/index.d.ts.map +1 -1
  65. package/dist/schema/index.js +1 -2
  66. package/dist/schema/live-parity.d.ts +3 -1
  67. package/dist/schema/live-parity.d.ts.map +1 -1
  68. package/dist/schema/live-parity.js +19 -0
  69. package/dist/schema/live-parity.js.map +1 -1
  70. package/dist/schema/types.d.ts +17 -10
  71. package/dist/schema/types.d.ts.map +1 -1
  72. package/dist/schema.js +1 -2
  73. package/dist/smrt-knowledge.json +7 -7
  74. package/dist/system/retention.d.ts.map +1 -1
  75. package/dist/system/retention.js +3 -3
  76. package/dist/system/retention.js.map +1 -1
  77. package/dist/system/schema.d.ts +2 -1
  78. package/dist/system/schema.d.ts.map +1 -1
  79. package/dist/system/schema.js +4 -2
  80. package/dist/system/schema.js.map +1 -1
  81. package/dist/utils/safe-integer.d.ts +19 -0
  82. package/dist/utils/safe-integer.d.ts.map +1 -0
  83. package/dist/utils/safe-integer.js +31 -0
  84. package/dist/utils/safe-integer.js.map +1 -0
  85. package/dist/utils.d.ts +2 -1
  86. package/dist/utils.d.ts.map +1 -1
  87. package/dist/utils.js +6 -3
  88. package/dist/utils.js.map +1 -1
  89. package/dist/vite-plugin/index.d.ts.map +1 -1
  90. package/dist/vite-plugin/index.js +0 -53
  91. package/dist/vite-plugin/index.js.map +1 -1
  92. package/package.json +4 -4
  93. package/dist/schema/override-system.d.ts +0 -43
  94. package/dist/schema/override-system.d.ts.map +0 -1
  95. package/dist/schema/override-system.js +0 -205
  96. package/dist/schema/override-system.js.map +0 -1
@@ -1,205 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- //#region src/schema/override-system.ts
3
- /**
4
- * Schema override system for SMRT objects
5
- * Allows packages and applications to extend base schemas
6
- */
7
- var SchemaOverrideSystem = class SchemaOverrideSystem {
8
- /**
9
- * Apply schema override to base schema
10
- */
11
- static applyOverride(baseSchema, override) {
12
- const overriddenSchema = {
13
- ...baseSchema,
14
- version: SchemaOverrideSystem.generateOverrideVersion(baseSchema, override),
15
- packageName: override.packageName
16
- };
17
- if (override.addColumns) overriddenSchema.columns = {
18
- ...overriddenSchema.columns,
19
- ...override.addColumns
20
- };
21
- if (override.removeColumns) for (const columnName of override.removeColumns) delete overriddenSchema.columns[columnName];
22
- if (override.addIndexes) overriddenSchema.indexes = [...overriddenSchema.indexes, ...override.addIndexes];
23
- if (override.removeIndexes) overriddenSchema.indexes = overriddenSchema.indexes.filter((index) => !override.removeIndexes?.includes(index.name));
24
- if (override.addTriggers) overriddenSchema.triggers = [...overriddenSchema.triggers, ...override.addTriggers];
25
- if (override.removeTriggers) overriddenSchema.triggers = overriddenSchema.triggers.filter((trigger) => !override.removeTriggers?.includes(trigger.name));
26
- overriddenSchema.foreignKeys = SchemaOverrideSystem.extractForeignKeys(overriddenSchema.columns);
27
- overriddenSchema.dependencies = SchemaOverrideSystem.extractDependencies(overriddenSchema);
28
- return overriddenSchema;
29
- }
30
- /**
31
- * Create a schema override for extending a base schema
32
- */
33
- static createOverride(tableName, packageName, extensions) {
34
- return {
35
- tableName,
36
- packageName,
37
- ...extensions
38
- };
39
- }
40
- /**
41
- * Merge multiple schema overrides
42
- */
43
- static mergeOverrides(baseSchema, overrides) {
44
- let currentSchema = baseSchema;
45
- for (const override of overrides) if (override.tableName === baseSchema.tableName) currentSchema = SchemaOverrideSystem.applyOverride(currentSchema, override);
46
- return currentSchema;
47
- }
48
- /**
49
- * Create praeco-specific content schema override
50
- */
51
- static createPraecoContentOverride() {
52
- return SchemaOverrideSystem.createOverride("contents", "praeco", {
53
- addColumns: {
54
- council_id: {
55
- type: "TEXT",
56
- foreignKey: {
57
- table: "councils",
58
- column: "id",
59
- onDelete: "CASCADE",
60
- onUpdate: "CASCADE"
61
- },
62
- description: "Reference to council this content belongs to"
63
- },
64
- meeting_id: {
65
- type: "TEXT",
66
- foreignKey: {
67
- table: "meetings",
68
- column: "id",
69
- onDelete: "CASCADE",
70
- onUpdate: "CASCADE"
71
- },
72
- description: "Reference to meeting this content relates to"
73
- },
74
- content_type: {
75
- type: "TEXT",
76
- notNull: true,
77
- defaultValue: "'document'",
78
- description: "Type of content: document, agenda, minutes, etc."
79
- },
80
- source_url: {
81
- type: "TEXT",
82
- description: "Original URL where content was found"
83
- },
84
- extraction_metadata: {
85
- type: "JSON",
86
- description: "Metadata about content extraction process"
87
- },
88
- analysis_results: {
89
- type: "JSON",
90
- description: "AI analysis results for content"
91
- },
92
- priority_score: {
93
- type: "INTEGER",
94
- defaultValue: "0",
95
- description: "Priority score for content processing"
96
- }
97
- },
98
- addIndexes: [
99
- {
100
- name: "idx_contents_council_id",
101
- columns: ["council_id"],
102
- description: "Index for council-based content queries"
103
- },
104
- {
105
- name: "idx_contents_meeting_id",
106
- columns: ["meeting_id"],
107
- description: "Index for meeting-based content queries"
108
- },
109
- {
110
- name: "idx_contents_type_priority",
111
- columns: ["content_type", "priority_score"],
112
- description: "Compound index for content type and priority queries"
113
- }
114
- ]
115
- });
116
- }
117
- /**
118
- * Create praeco-specific meeting schema override
119
- */
120
- static createPraecoMeetingOverride() {
121
- return SchemaOverrideSystem.createOverride("meetings", "praeco", {
122
- addColumns: {
123
- agenda_url: {
124
- type: "TEXT",
125
- description: "URL to meeting agenda document"
126
- },
127
- minutes_url: {
128
- type: "TEXT",
129
- description: "URL to meeting minutes document"
130
- },
131
- video_url: {
132
- type: "TEXT",
133
- description: "URL to meeting video recording"
134
- },
135
- meeting_status: {
136
- type: "TEXT",
137
- notNull: true,
138
- defaultValue: "'scheduled'",
139
- description: "Status: scheduled, in_progress, completed, cancelled"
140
- },
141
- ai_summary: {
142
- type: "JSON",
143
- description: "AI-generated summary of meeting content"
144
- },
145
- key_decisions: {
146
- type: "JSON",
147
- description: "Key decisions made in the meeting"
148
- },
149
- action_items: {
150
- type: "JSON",
151
- description: "Action items from the meeting"
152
- }
153
- },
154
- addIndexes: [{
155
- name: "idx_meetings_status_date",
156
- columns: ["meeting_status", "date"],
157
- description: "Index for status and date-based meeting queries"
158
- }]
159
- });
160
- }
161
- /**
162
- * Generate version for overridden schema
163
- */
164
- static generateOverrideVersion(baseSchema, override) {
165
- const overrideContent = JSON.stringify({
166
- baseVersion: baseSchema.version,
167
- override: {
168
- addColumns: override.addColumns,
169
- removeColumns: override.removeColumns,
170
- addIndexes: override.addIndexes,
171
- removeIndexes: override.removeIndexes,
172
- addTriggers: override.addTriggers,
173
- removeTriggers: override.removeTriggers
174
- },
175
- packageName: override.packageName
176
- });
177
- return createHash("sha256").update(overrideContent).digest("hex").substring(0, 8);
178
- }
179
- /**
180
- * Extract foreign keys from columns
181
- */
182
- static extractForeignKeys(columns) {
183
- const foreignKeys = [];
184
- for (const [columnName, columnDef] of Object.entries(columns)) if (columnDef.foreignKey) foreignKeys.push({
185
- column: columnName,
186
- referencesTable: columnDef.foreignKey.table,
187
- referencesColumn: columnDef.foreignKey.column,
188
- onDelete: columnDef.foreignKey.onDelete,
189
- onUpdate: columnDef.foreignKey.onUpdate
190
- });
191
- return foreignKeys;
192
- }
193
- /**
194
- * Extract dependencies from schema
195
- */
196
- static extractDependencies(schema) {
197
- const dependencies = /* @__PURE__ */ new Set();
198
- for (const fk of schema.foreignKeys) dependencies.add(fk.referencesTable);
199
- return Array.from(dependencies);
200
- }
201
- };
202
- //#endregion
203
- export { SchemaOverrideSystem };
204
-
205
- //# sourceMappingURL=override-system.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"override-system.js","names":[],"sources":["../../src/schema/override-system.ts"],"sourcesContent":["/**\n * Schema override system for SMRT objects\n * Allows packages and applications to extend base schemas\n */\n\nimport { createHash } from 'node:crypto';\nimport type {\n ColumnDefinition,\n ForeignKeyDefinition,\n IndexDefinition,\n SchemaDefinition,\n SchemaOverride,\n TriggerDefinition,\n} from './types.js';\n\nexport class SchemaOverrideSystem {\n /**\n * Apply schema override to base schema\n */\n static applyOverride(\n baseSchema: SchemaDefinition,\n override: SchemaOverride,\n ): SchemaDefinition {\n const overriddenSchema: SchemaDefinition = {\n ...baseSchema,\n version: SchemaOverrideSystem.generateOverrideVersion(\n baseSchema,\n override,\n ),\n packageName: override.packageName,\n };\n\n // Apply column additions\n if (override.addColumns) {\n overriddenSchema.columns = {\n ...overriddenSchema.columns,\n ...override.addColumns,\n };\n }\n\n // Apply column removals\n if (override.removeColumns) {\n for (const columnName of override.removeColumns) {\n delete overriddenSchema.columns[columnName];\n }\n }\n\n // Apply index additions\n if (override.addIndexes) {\n overriddenSchema.indexes = [\n ...overriddenSchema.indexes,\n ...override.addIndexes,\n ];\n }\n\n // Apply index removals\n if (override.removeIndexes) {\n overriddenSchema.indexes = overriddenSchema.indexes.filter(\n (index) => !override.removeIndexes?.includes(index.name),\n );\n }\n\n // Apply trigger additions\n if (override.addTriggers) {\n overriddenSchema.triggers = [\n ...overriddenSchema.triggers,\n ...override.addTriggers,\n ];\n }\n\n // Apply trigger removals\n if (override.removeTriggers) {\n overriddenSchema.triggers = overriddenSchema.triggers.filter(\n (trigger) => !override.removeTriggers?.includes(trigger.name),\n );\n }\n\n // Update foreign keys and dependencies\n overriddenSchema.foreignKeys = SchemaOverrideSystem.extractForeignKeys(\n overriddenSchema.columns,\n );\n overriddenSchema.dependencies =\n SchemaOverrideSystem.extractDependencies(overriddenSchema);\n\n return overriddenSchema;\n }\n\n /**\n * Create a schema override for extending a base schema\n */\n static createOverride(\n tableName: string,\n packageName: string,\n extensions: {\n addColumns?: Record<string, ColumnDefinition>;\n removeColumns?: string[];\n addIndexes?: IndexDefinition[];\n removeIndexes?: string[];\n addTriggers?: TriggerDefinition[];\n removeTriggers?: string[];\n },\n ): SchemaOverride {\n return {\n tableName,\n packageName,\n ...extensions,\n };\n }\n\n /**\n * Merge multiple schema overrides\n */\n static mergeOverrides(\n baseSchema: SchemaDefinition,\n overrides: SchemaOverride[],\n ): SchemaDefinition {\n let currentSchema = baseSchema;\n\n for (const override of overrides) {\n if (override.tableName === baseSchema.tableName) {\n currentSchema = SchemaOverrideSystem.applyOverride(\n currentSchema,\n override,\n );\n }\n }\n\n return currentSchema;\n }\n\n /**\n * Create praeco-specific content schema override\n */\n static createPraecoContentOverride(): SchemaOverride {\n return SchemaOverrideSystem.createOverride('contents', 'praeco', {\n addColumns: {\n council_id: {\n type: 'TEXT',\n foreignKey: {\n table: 'councils',\n column: 'id',\n onDelete: 'CASCADE',\n onUpdate: 'CASCADE',\n },\n description: 'Reference to council this content belongs to',\n },\n meeting_id: {\n type: 'TEXT',\n foreignKey: {\n table: 'meetings',\n column: 'id',\n onDelete: 'CASCADE',\n onUpdate: 'CASCADE',\n },\n description: 'Reference to meeting this content relates to',\n },\n content_type: {\n type: 'TEXT',\n notNull: true,\n defaultValue: \"'document'\",\n description: 'Type of content: document, agenda, minutes, etc.',\n },\n source_url: {\n type: 'TEXT',\n description: 'Original URL where content was found',\n },\n extraction_metadata: {\n type: 'JSON',\n description: 'Metadata about content extraction process',\n },\n analysis_results: {\n type: 'JSON',\n description: 'AI analysis results for content',\n },\n priority_score: {\n type: 'INTEGER',\n defaultValue: '0',\n description: 'Priority score for content processing',\n },\n },\n addIndexes: [\n {\n name: 'idx_contents_council_id',\n columns: ['council_id'],\n description: 'Index for council-based content queries',\n },\n {\n name: 'idx_contents_meeting_id',\n columns: ['meeting_id'],\n description: 'Index for meeting-based content queries',\n },\n {\n name: 'idx_contents_type_priority',\n columns: ['content_type', 'priority_score'],\n description: 'Compound index for content type and priority queries',\n },\n ],\n });\n }\n\n /**\n * Create praeco-specific meeting schema override\n */\n static createPraecoMeetingOverride(): SchemaOverride {\n return SchemaOverrideSystem.createOverride('meetings', 'praeco', {\n addColumns: {\n agenda_url: {\n type: 'TEXT',\n description: 'URL to meeting agenda document',\n },\n minutes_url: {\n type: 'TEXT',\n description: 'URL to meeting minutes document',\n },\n video_url: {\n type: 'TEXT',\n description: 'URL to meeting video recording',\n },\n meeting_status: {\n type: 'TEXT',\n notNull: true,\n defaultValue: \"'scheduled'\",\n description: 'Status: scheduled, in_progress, completed, cancelled',\n },\n ai_summary: {\n type: 'JSON',\n description: 'AI-generated summary of meeting content',\n },\n key_decisions: {\n type: 'JSON',\n description: 'Key decisions made in the meeting',\n },\n action_items: {\n type: 'JSON',\n description: 'Action items from the meeting',\n },\n },\n addIndexes: [\n {\n name: 'idx_meetings_status_date',\n columns: ['meeting_status', 'date'],\n description: 'Index for status and date-based meeting queries',\n },\n ],\n });\n }\n\n /**\n * Generate version for overridden schema\n */\n private static generateOverrideVersion(\n baseSchema: SchemaDefinition,\n override: SchemaOverride,\n ): string {\n const overrideContent = JSON.stringify({\n baseVersion: baseSchema.version,\n override: {\n addColumns: override.addColumns,\n removeColumns: override.removeColumns,\n addIndexes: override.addIndexes,\n removeIndexes: override.removeIndexes,\n addTriggers: override.addTriggers,\n removeTriggers: override.removeTriggers,\n },\n packageName: override.packageName,\n });\n\n return createHash('sha256')\n .update(overrideContent)\n .digest('hex')\n .substring(0, 8);\n }\n\n /**\n * Extract foreign keys from columns\n */\n private static extractForeignKeys(\n columns: Record<string, ColumnDefinition>,\n ): ForeignKeyDefinition[] {\n const foreignKeys: ForeignKeyDefinition[] = [];\n\n for (const [columnName, columnDef] of Object.entries(columns)) {\n if (columnDef.foreignKey) {\n foreignKeys.push({\n column: columnName,\n referencesTable: columnDef.foreignKey.table,\n referencesColumn: columnDef.foreignKey.column,\n onDelete: columnDef.foreignKey.onDelete,\n onUpdate: columnDef.foreignKey.onUpdate,\n });\n }\n }\n\n return foreignKeys;\n }\n\n /**\n * Extract dependencies from schema\n */\n private static extractDependencies(schema: SchemaDefinition): string[] {\n const dependencies = new Set<string>();\n\n // Add dependencies from foreign keys\n for (const fk of schema.foreignKeys) {\n dependencies.add(fk.referencesTable);\n }\n\n return Array.from(dependencies);\n }\n}\n"],"mappings":"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"}