@happyvertical/smrt-core 0.51.39 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -0
- package/agents/schema-paths.md +79 -0
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +2 -1
- package/dist/cascade.js.map +1 -1
- package/dist/collection.d.ts +10 -1
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +14 -4
- package/dist/collection.js.map +1 -1
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/manifest/static-manifest.d.ts.map +1 -1
- package/dist/manifest/static-manifest.js +9 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +9 -1
- package/dist/migrations/differ.d.ts +56 -0
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +152 -27
- package/dist/migrations/differ.js.map +1 -1
- package/dist/migrations/null-equal-indexes.js +1 -1
- package/dist/migrations/orchestrate.d.ts +7 -0
- package/dist/migrations/orchestrate.d.ts.map +1 -1
- package/dist/migrations/orchestrate.js +4 -2
- package/dist/migrations/orchestrate.js.map +1 -1
- package/dist/migrations/tracker.d.ts +29 -1
- package/dist/migrations/tracker.d.ts.map +1 -1
- package/dist/migrations/tracker.js +92 -7
- package/dist/migrations/tracker.js.map +1 -1
- package/dist/object.d.ts +128 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +333 -44
- package/dist/object.js.map +1 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js +7 -5
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry.d.ts +68 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +119 -8
- package/dist/registry.js.map +1 -1
- package/dist/scanner/index.d.ts +1 -1
- package/dist/scanner/index.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.d.ts +3 -2
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +12 -8
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/scanner/types.d.ts +21 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/scanner/types.js.map +1 -1
- package/dist/schema/conflict-target.d.ts +68 -11
- package/dist/schema/conflict-target.d.ts.map +1 -1
- package/dist/schema/conflict-target.js +68 -12
- package/dist/schema/conflict-target.js.map +1 -1
- package/dist/schema/foreign-key-ddl.d.ts +17 -1
- package/dist/schema/foreign-key-ddl.d.ts.map +1 -1
- package/dist/schema/foreign-key-ddl.js +29 -3
- package/dist/schema/foreign-key-ddl.js.map +1 -1
- package/dist/schema/foreign-key-policy.d.ts +8 -0
- package/dist/schema/foreign-key-policy.d.ts.map +1 -1
- package/dist/schema/foreign-key-policy.js +2 -1
- package/dist/schema/foreign-key-policy.js.map +1 -1
- package/dist/schema/generator.d.ts +7 -0
- package/dist/schema/generator.d.ts.map +1 -1
- package/dist/schema/generator.js +18 -10
- package/dist/schema/generator.js.map +1 -1
- package/dist/schema/text-cast-probe.d.ts +50 -1
- package/dist/schema/text-cast-probe.d.ts.map +1 -1
- package/dist/schema/text-cast-probe.js +46 -11
- package/dist/schema/text-cast-probe.js.map +1 -1
- package/dist/schema/types.d.ts +6 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +12 -7
- package/package.json +10 -10
package/dist/scanner/index.d.ts
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
* import { OxcScanner, ManifestAdapter } from '@happyvertical/smrt-scanner';
|
|
9
9
|
*/
|
|
10
10
|
export { generateManifest, ManifestGenerator } from './manifest-generator.js';
|
|
11
|
-
export type { AgentAdminRouteManifest, AgentComponentDeclaration, AgentFeature, AgentManifest, AgentMenuItem, AgentPermission, AgentUISlotManifest, FieldDefinition, MethodDefinition, ScanOptions, ScanResult, SmartObjectDefinition, SmartObjectManifest, } from './types.js';
|
|
11
|
+
export type { AgentAdminRouteManifest, AgentComponentDeclaration, AgentCreateEntryManifest, AgentFeature, AgentManifest, AgentMenuItem, AgentPermission, AgentUISlotManifest, FieldDefinition, MethodDefinition, ScanOptions, ScanResult, SmartObjectDefinition, SmartObjectManifest, } from './types.js';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EACV,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EACV,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -98,8 +98,9 @@ export declare class ManifestGenerator {
|
|
|
98
98
|
/**
|
|
99
99
|
* Materialize the tenant-aware default conflict target (#2360).
|
|
100
100
|
*
|
|
101
|
-
* A tenant-
|
|
102
|
-
*
|
|
101
|
+
* A tenant-owned class — tenant-scoped, or carrying an undeclared
|
|
102
|
+
* `tenantId` field (`resolveOwnershipTenantColumn()`) — that declares no
|
|
103
|
+
* `@smrt({ conflictColumns })` keys on `[tenant column, ...natural key]` — `(tenant_id, slug, context)` for
|
|
103
104
|
* a class-per-table object, `(tenant_id, slug, context, _meta_type)` for a
|
|
104
105
|
* single-table hierarchy — so two tenants can each own the same slug and
|
|
105
106
|
* neither `save()` adopts the other's row. Writing the resolved key into
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-generator.d.ts","sourceRoot":"","sources":["../../src/scanner/manifest-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"manifest-generator.d.ts","sourceRoot":"","sources":["../../src/scanner/manifest-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defaultConflictColumns, resolveOwnershipTenantColumn, resolveTenantColumn } from "../schema/conflict-target.js";
|
|
1
2
|
import { resolveForeignKeyDeleteAction } from "../schema/foreign-key-policy.js";
|
|
2
3
|
import { classnameToTablename, toSnakeCase } from "../utils/naming.js";
|
|
3
4
|
import "./types.js";
|
|
@@ -5,7 +6,6 @@ import { createQualifiedName } from "../utils/qualified-names.js";
|
|
|
5
6
|
import { generateToolManifest } from "../tools/tool-generator.js";
|
|
6
7
|
import { createManifestClassNamePredicate, resolveApiMethodExposure, resolveCustomActionMetadata, resolveEffectiveActionMetadata } from "../generators/custom-action.js";
|
|
7
8
|
import { VERBOSE_ENABLED } from "../registry/shared-state.js";
|
|
8
|
-
import { defaultConflictColumns, resolveTenantColumn } from "../schema/conflict-target.js";
|
|
9
9
|
import { SchemaGenerator } from "../schema/generator.js";
|
|
10
10
|
import { isTestFile } from "./test-file-patterns.js";
|
|
11
11
|
import { loadExternalManifestSync, lookupInManifest } from "../manifest/manifest-loader.js";
|
|
@@ -464,8 +464,9 @@ var ManifestGenerator = class {
|
|
|
464
464
|
/**
|
|
465
465
|
* Materialize the tenant-aware default conflict target (#2360).
|
|
466
466
|
*
|
|
467
|
-
* A tenant-
|
|
468
|
-
*
|
|
467
|
+
* A tenant-owned class — tenant-scoped, or carrying an undeclared
|
|
468
|
+
* `tenantId` field (`resolveOwnershipTenantColumn()`) — that declares no
|
|
469
|
+
* `@smrt({ conflictColumns })` keys on `[tenant column, ...natural key]` — `(tenant_id, slug, context)` for
|
|
469
470
|
* a class-per-table object, `(tenant_id, slug, context, _meta_type)` for a
|
|
470
471
|
* single-table hierarchy — so two tenants can each own the same slug and
|
|
471
472
|
* neither `save()` adopts the other's row. Writing the resolved key into
|
|
@@ -489,9 +490,7 @@ var ManifestGenerator = class {
|
|
|
489
490
|
if (obj.decoratorConfig.report) continue;
|
|
490
491
|
if (this.isSTIChildClass(obj, manifest)) continue;
|
|
491
492
|
const tenantScoped = obj.decoratorConfig.tenantScoped;
|
|
492
|
-
|
|
493
|
-
const { tenantConfig } = this.normalizeTenantScopedConfig(tenantScoped);
|
|
494
|
-
const tenantColumn = resolveTenantColumn(tenantConfig.field, (fieldName) => Boolean(obj.fields[fieldName]), toSnakeCase);
|
|
493
|
+
const tenantColumn = resolveOwnershipTenantColumn(tenantScoped ? resolveTenantColumn(this.normalizeTenantScopedConfig(tenantScoped).tenantConfig.field, (fieldName) => Boolean(obj.fields[fieldName]), toSnakeCase) : void 0, (column) => Object.keys(obj.fields).some((fieldName) => toSnakeCase(fieldName) === column));
|
|
495
494
|
if (!tenantColumn) continue;
|
|
496
495
|
obj.decoratorConfig.conflictColumns = defaultConflictColumns(obj.decoratorConfig.tableStrategy === "sti" ? "sti" : "cti", tenantColumn);
|
|
497
496
|
}
|
|
@@ -547,7 +546,8 @@ var ManifestGenerator = class {
|
|
|
547
546
|
const { action } = resolveForeignKeyDeleteAction({
|
|
548
547
|
declared: field._meta?.onDelete,
|
|
549
548
|
isConflictColumn: conflictColumns.has(columnName),
|
|
550
|
-
isTenantIdField: false
|
|
549
|
+
isTenantIdField: false,
|
|
550
|
+
columnName
|
|
551
551
|
});
|
|
552
552
|
for (const sourceSchema of sourceSchemas) {
|
|
553
553
|
const sourceColumn = sourceSchema.columns[columnName];
|
|
@@ -660,11 +660,13 @@ var ManifestGenerator = class {
|
|
|
660
660
|
if (!sqlType && !referenceKind) continue;
|
|
661
661
|
const columnName = toSnakeCase(fieldName);
|
|
662
662
|
if (!obj.schema.columns[columnName]) continue;
|
|
663
|
-
|
|
663
|
+
const column = {
|
|
664
664
|
...obj.schema.columns[columnName],
|
|
665
665
|
...sqlType ? { type: String(sqlType).toUpperCase() } : {},
|
|
666
666
|
...referenceKind ? { referenceKind } : {}
|
|
667
667
|
};
|
|
668
|
+
if (String(column.type).toUpperCase() === "UUID" && column.default === "") delete column.default;
|
|
669
|
+
obj.schema.columns[columnName] = column;
|
|
668
670
|
}
|
|
669
671
|
}
|
|
670
672
|
getReferenceKind(field) {
|
|
@@ -1615,6 +1617,7 @@ ${fields}
|
|
|
1615
1617
|
}
|
|
1616
1618
|
}
|
|
1617
1619
|
const adminRoutes = obj.staticProperties?.adminRoutes ?? [];
|
|
1620
|
+
const createEntries = obj.staticProperties?.createEntries ?? [];
|
|
1618
1621
|
const signalSubscriptions = obj.staticProperties?.signalSubscriptions ?? [];
|
|
1619
1622
|
obj.agent = {
|
|
1620
1623
|
name: obj.className,
|
|
@@ -1624,6 +1627,7 @@ ${fields}
|
|
|
1624
1627
|
description: agentConfig.description,
|
|
1625
1628
|
uiSlots,
|
|
1626
1629
|
...adminRoutes.length > 0 ? { adminRoutes } : {},
|
|
1630
|
+
...createEntries.length > 0 ? { createEntries } : {},
|
|
1627
1631
|
...signalSubscriptions.length > 0 ? { signalSubscriptions } : {},
|
|
1628
1632
|
permissions,
|
|
1629
1633
|
features,
|