@happyvertical/smrt-core 0.54.2 → 0.54.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +6 -1
- package/README.md +8 -0
- package/agents/change-feed.md +7 -12
- package/agents/generators.md +13 -0
- package/agents/object-runtime.md +8 -0
- package/agents/schema-paths.md +14 -0
- package/dist/audit-context.d.ts +4 -0
- package/dist/audit-context.d.ts.map +1 -0
- package/dist/audit-context.js +16 -0
- package/dist/audit-context.js.map +1 -0
- package/dist/audit.d.ts +34 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +63 -0
- package/dist/audit.js.map +1 -0
- package/dist/browser.d.ts +2 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -3
- package/dist/cascade.d.ts +1 -1
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +10 -7
- package/dist/cascade.js.map +1 -1
- package/dist/change-feed.js +1 -1
- package/dist/collection.d.ts +9 -2
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +59 -4
- package/dist/collection.js.map +1 -1
- package/dist/embedded-write-queue.d.ts +2 -0
- package/dist/embedded-write-queue.d.ts.map +1 -1
- package/dist/embedded-write-queue.js +12 -5
- package/dist/embedded-write-queue.js.map +1 -1
- package/dist/generators/changes-route.js +1 -1
- package/dist/generators/mcp-runtime-template.d.ts +2 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -1
- package/dist/generators/mcp-runtime-template.js +18 -16
- package/dist/generators/mcp-runtime-template.js.map +1 -1
- package/dist/generators/mcp-tool-name.d.ts +6 -0
- package/dist/generators/mcp-tool-name.d.ts.map +1 -1
- package/dist/generators/mcp-tool-name.js.map +1 -1
- package/dist/generators/mcp.d.ts +34 -1
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +148 -110
- package/dist/generators/mcp.js.map +1 -1
- package/dist/generators/rest.d.ts.map +1 -1
- package/dist/generators/rest.js +16 -7
- package/dist/generators/rest.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -7
- package/dist/junction.d.ts +29 -10
- package/dist/junction.d.ts.map +1 -1
- package/dist/junction.js +31 -12
- package/dist/junction.js.map +1 -1
- package/dist/knowledge.js +1 -1
- package/dist/knowledge.js.map +1 -1
- package/dist/manifest/manifest-loader.d.ts.map +1 -1
- package/dist/manifest/manifest-loader.js +1 -1
- package/dist/manifest/manifest-loader.js.map +1 -1
- package/dist/manifest/static-manifest.d.ts.map +1 -1
- package/dist/manifest/static-manifest.js +106 -9
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.d.ts +8 -0
- package/dist/manifest/store.d.ts.map +1 -1
- package/dist/manifest/store.js +12 -2
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +119 -9
- package/dist/migrations/differ.d.ts +3 -3
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +8 -4
- package/dist/migrations/differ.js.map +1 -1
- package/dist/object.d.ts +1 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +19 -7
- package/dist/object.js.map +1 -1
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +75 -10
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/collection-resolution.d.ts +2 -2
- package/dist/registry/collection-resolution.d.ts.map +1 -1
- package/dist/registry/collection-resolution.js +2 -1
- package/dist/registry/collection-resolution.js.map +1 -1
- package/dist/registry/collision-policy.d.ts +8 -0
- package/dist/registry/collision-policy.d.ts.map +1 -1
- package/dist/registry/collision-policy.js +2 -2
- package/dist/registry/collision-policy.js.map +1 -1
- package/dist/registry/framework-base-classes.d.ts.map +1 -1
- package/dist/registry/framework-base-classes.js +2 -1
- package/dist/registry/framework-base-classes.js.map +1 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js +33 -4
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry/shared-state.d.ts +6 -0
- package/dist/registry/shared-state.d.ts.map +1 -1
- package/dist/registry/shared-state.js +12 -1
- package/dist/registry/shared-state.js.map +1 -1
- package/dist/registry/types.d.ts +7 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry.d.ts +7 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +25 -3
- package/dist/registry.js.map +1 -1
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +5 -1
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/scanner/types.d.ts +8 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/scanner/types.js.map +1 -1
- package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -1
- package/dist/schema/ddl/duckdb-strategy.js +1 -0
- package/dist/schema/ddl/duckdb-strategy.js.map +1 -1
- package/dist/schema/ddl/null-equal-index.d.ts.map +1 -1
- package/dist/schema/ddl/null-equal-index.js +4 -2
- package/dist/schema/ddl/null-equal-index.js.map +1 -1
- package/dist/schema/generator.d.ts +3 -0
- package/dist/schema/generator.d.ts.map +1 -1
- package/dist/schema/generator.js +38 -0
- package/dist/schema/generator.js.map +1 -1
- package/dist/smrt-knowledge.json +74 -20
- package/dist/sync/apply.d.ts +2 -0
- package/dist/sync/apply.d.ts.map +1 -1
- package/dist/sync/apply.js +7 -3
- package/dist/sync/apply.js.map +1 -1
- package/dist/utils/scanner-module.d.ts +9 -0
- package/dist/utils/scanner-module.d.ts.map +1 -1
- package/dist/vite-plugin/index.d.ts +14 -0
- package/dist/vite-plugin/index.d.ts.map +1 -1
- package/dist/vite-plugin/index.js +58 -18
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/package-stamp.d.ts +41 -0
- package/dist/vite-plugin/package-stamp.d.ts.map +1 -0
- package/dist/vite-plugin/package-stamp.js +33 -0
- package/dist/vite-plugin/package-stamp.js.map +1 -0
- package/dist/vite-plugin/sveltekit-generator.js +5 -3
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/dist/vite-plugin/sync-apply-route.d.ts.map +1 -1
- package/dist/vite-plugin/sync-apply-route.js +10 -0
- package/dist/vite-plugin/sync-apply-route.js.map +1 -1
- package/dist/vite-plugin.js +2 -2
- package/package.json +10 -10
package/dist/registry.js
CHANGED
|
@@ -3,6 +3,8 @@ import { defaultConflictColumns, resolveOwnershipTenantColumn, resolveTenantColu
|
|
|
3
3
|
import { classnameToTablename, toSnakeCase } from "./utils/naming.js";
|
|
4
4
|
import { buildCascadePlan } from "./cascade.js";
|
|
5
5
|
import { applyOneToManyChildAccessors } from "./child-accessors.js";
|
|
6
|
+
import "./utils.js";
|
|
7
|
+
import { SmrtCollection } from "./collection.js";
|
|
6
8
|
import { applyPendingDecoratorRegistrations } from "./decorators/compatibility.js";
|
|
7
9
|
import { bumpRegistryGeneration, getRegistryGeneration } from "./registry/generation.js";
|
|
8
10
|
import { createQualifiedName, isQualifiedName, parseQualifiedName, readPreviousQualifiedNames } from "./utils/qualified-names.js";
|
|
@@ -18,7 +20,6 @@ import { findClass, findClassesByName, getAllClasses, getCanonicalClassName, get
|
|
|
18
20
|
import { getAllFields, getAllMethods, getInheritanceChain, mergeFieldConfigs } from "./registry/inheritance-resolver.js";
|
|
19
21
|
import { resolveCollectionCacheConfig } from "./registry/cache-config.js";
|
|
20
22
|
import { compileValidators } from "./registry/validator.js";
|
|
21
|
-
import "./utils.js";
|
|
22
23
|
import { isFrameworkBaseClass } from "./registry/framework-base-classes.js";
|
|
23
24
|
import { createFieldFromManifest, manifestFieldDiffers, mergeManifestField } from "./registry/manifest-field-merge.js";
|
|
24
25
|
import { applyRuntimeOverrides, clearRuntimeOverrides, getRuntimeOverride, registerRuntimeOverride } from "./registry/runtime-overrides.js";
|
|
@@ -29,7 +30,6 @@ import { getEmbeddingClasses, getEmbeddingConfig, getProjectEmbeddingConfig, has
|
|
|
29
30
|
import { getDependencyGraph, getRelationshipMap, resolveRelationshipTarget } from "./registry/relationship-graph.js";
|
|
30
31
|
import { SMRT_COLLECTION_BASE_NAMES, isSmrtCollectionExtendsName } from "./registry/collection-resolution.js";
|
|
31
32
|
import { getAllSchemas, getAllSchemasAsDefinitions, getSchema, getSchemaDDL, getTableName } from "./registry/schema-builder.js";
|
|
32
|
-
import { SmrtCollection } from "./collection.js";
|
|
33
33
|
import { createLogger } from "@happyvertical/logger";
|
|
34
34
|
//#region src/registry.ts
|
|
35
35
|
/**
|
|
@@ -2193,6 +2193,7 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
2193
2193
|
const tableStrategy = ObjectRegistry.getTableStrategy(className);
|
|
2194
2194
|
const ownerName = tableStrategy === "sti" ? ObjectRegistry.getSTIBase(className) : null;
|
|
2195
2195
|
const owner = ownerName && ownerName !== className ? ObjectRegistry.findClass(ownerName) ?? registered : registered;
|
|
2196
|
+
if (registered !== owner && registered.config?.conflictColumns?.length) return registered.config.conflictColumns;
|
|
2196
2197
|
if (owner.config?.conflictColumns) return owner.config.conflictColumns;
|
|
2197
2198
|
if (owner.config?.report) {
|
|
2198
2199
|
const reportConflictColumns = Array.from(owner.fields.entries()).filter(([, field]) => {
|
|
@@ -2206,6 +2207,21 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
2206
2207
|
if (primaryKeyColumns.length > 0) return primaryKeyColumns;
|
|
2207
2208
|
return defaultConflictColumns(tableStrategy, ObjectRegistry.getOwnershipTenantColumn(className));
|
|
2208
2209
|
}
|
|
2210
|
+
/** Subtypes with their own partial unique conflict index. */
|
|
2211
|
+
static getSTIConflictOverrides(className) {
|
|
2212
|
+
if (ObjectRegistry.getTableStrategy(className) !== "sti") return [];
|
|
2213
|
+
const root = ObjectRegistry.getSTIBase(className);
|
|
2214
|
+
if (!root) return [];
|
|
2215
|
+
return ObjectRegistry.getDescendants(root).filter((name) => Boolean(ObjectRegistry.findClass(name)?.config?.conflictColumns?.length)).sort();
|
|
2216
|
+
}
|
|
2217
|
+
/** SQL predicate shared by partial conflict indexes and atomic insert targets. */
|
|
2218
|
+
static getConflictPredicate(className) {
|
|
2219
|
+
const overrides = ObjectRegistry.getSTIConflictOverrides(className);
|
|
2220
|
+
const qualified = ObjectRegistry.findClass(className)?.qualifiedName ?? className;
|
|
2221
|
+
const quote = (value) => "'" + value.replaceAll("'", "''") + "'";
|
|
2222
|
+
if (overrides.includes(qualified)) return `_meta_type = ${quote(qualified)}`;
|
|
2223
|
+
return overrides.length ? overrides.map((name) => `_meta_type <> ${quote(name)}`).join(" AND ") : void 0;
|
|
2224
|
+
}
|
|
2209
2225
|
/**
|
|
2210
2226
|
* The column that owns a table's rows for natural-key identity: the
|
|
2211
2227
|
* declared tenant column ({@link ObjectRegistry.getTenantColumn}), else
|
|
@@ -2254,7 +2270,7 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
2254
2270
|
* package's `registerTenantScopedClass('Team', { field: 'organizationId' })`
|
|
2255
2271
|
* is the canonical producer.
|
|
2256
2272
|
*
|
|
2257
|
-
* Core reads these
|
|
2273
|
+
* Core reads these to protect ownership on save and record audit ownership
|
|
2258
2274
|
* ({@link ObjectRegistry.getOwnershipColumns}); they never change the
|
|
2259
2275
|
* conflict target or the schema, which are build-time contracts a runtime
|
|
2260
2276
|
* registration cannot alter without breaking `ON CONFLICT` binding. The
|
|
@@ -2287,6 +2303,12 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
2287
2303
|
const declared = ObjectRegistry.getTenantColumn(className);
|
|
2288
2304
|
if (declared) columns.add(declared);
|
|
2289
2305
|
for (const [name, field] of ObjectRegistry.getFields(className)) if (field.__tenancy?.isTenantIdField || field._meta?.__tenancy?.isTenantIdField) columns.add(toSnakeCase(name));
|
|
2306
|
+
for (const column of ObjectRegistry.getRuntimeOwnershipColumns(className)) columns.add(column);
|
|
2307
|
+
return columns;
|
|
2308
|
+
}
|
|
2309
|
+
/** Runtime ownership sources only; fresh, qualified and independent of schema/conflict targets. */
|
|
2310
|
+
static getRuntimeOwnershipColumns(className) {
|
|
2311
|
+
const columns = /* @__PURE__ */ new Set();
|
|
2290
2312
|
const qualifiedName = ObjectRegistry.findClass(className)?.qualifiedName ?? className;
|
|
2291
2313
|
for (const source of ObjectRegistry.ownershipColumnSources) for (const column of source(qualifiedName) ?? []) if (column) columns.add(column);
|
|
2292
2314
|
return columns;
|