@happyvertical/smrt-cli 0.56.1 → 0.57.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 (33) hide show
  1. package/AGENTS.md +1 -1
  2. package/agents/commerce-money-upgrade.md +49 -0
  3. package/dist/{AuditLogCollection-WDHL-_AF-x25-BNOH.js → AuditLogCollection-WDHL-_AF-BeF0-WOm.js} +1 -1
  4. package/dist/{OidcIdentity-BUblgQLs-HnNEVZJE.js → OidcIdentity-BUblgQLs-2SX7ODeV.js} +2 -2
  5. package/dist/{OidcIdentityCollection-ClOyaHeF-B6ywCED-.js → OidcIdentityCollection-ClOyaHeF-T7hWKrdm.js} +1 -1
  6. package/dist/{ProfileAssetCollection-CRMcjLJ--Dtcl0Z7Y.js → ProfileAssetCollection-CRMcjLJ--BG3sV1ZT.js} +3 -3
  7. package/dist/{ProfileCollection-C4INKh7Y-CnRSIu8K.js → ProfileCollection-C4INKh7Y-C4r3lkdr.js} +17 -17
  8. package/dist/{ProfileLinkCollection-DFfZRsgv-DoNRyhzW.js → ProfileLinkCollection-DFfZRsgv-ByRZpcLF.js} +2 -2
  9. package/dist/{ProfileMetadataCollection-BIYKy4Y3-CIcxshqJ.js → ProfileMetadataCollection-BIYKy4Y3-CfMdP5nK.js} +1 -1
  10. package/dist/{ProfileMetafieldCollection-Buz7gzag-Qp89uhvS.js → ProfileMetafieldCollection-Buz7gzag-C4AXpyhm.js} +1 -1
  11. package/dist/{ProfileRelationshipCollection-C4g_QLI4-CpdzgFU_.js → ProfileRelationshipCollection-C4g_QLI4-BvSiqB4J.js} +1 -1
  12. package/dist/{ProfileTypeCollection-B7kwi1mU-B_Qzmn0A.js → ProfileTypeCollection-B7kwi1mU-BpRipEQ3.js} +2 -2
  13. package/dist/cli-generator.d.ts.map +1 -1
  14. package/dist/commands/db-status.d.ts.map +1 -1
  15. package/dist/commands/db-upgrade-commerce-money.d.ts +23 -0
  16. package/dist/commands/db-upgrade-commerce-money.d.ts.map +1 -0
  17. package/dist/commands/utilities.d.ts.map +1 -1
  18. package/dist/{commands-C33Y1BAd.js → commands-D2y3p_Bn.js} +215 -247
  19. package/dist/dist-Cz0fd3jS.js +21 -0
  20. package/dist/{dist-DEgeX-y-.js → dist-D3wV_qqp.js} +107 -6
  21. package/dist/{dist-CinSOkIj.js → dist-DAKDqxeH.js} +4 -4
  22. package/dist/dist-DEpgvg2W.js +4687 -0
  23. package/dist/{dist-BulInGkA.js → dist-DsVQcZ6G.js} +26 -9
  24. package/dist/index.js +12 -12
  25. package/dist/loaders/git-loader.d.ts.map +1 -1
  26. package/dist/{oidcProvisioningPrimitives-DNP9EZlU-DRKMXFiq.js → oidcProvisioningPrimitives-DNP9EZlU-C9hYFUey.js} +3 -3
  27. package/dist/{resolveIdentity-CkyqvctR-lxunfjyo.js → resolveIdentity-CkyqvctR-DdiQlufB.js} +14 -14
  28. package/package.json +10 -10
  29. package/agents/commerce-money-migration.md +0 -48
  30. package/dist/commands/db-commerce-money.d.ts +0 -5
  31. package/dist/commands/db-commerce-money.d.ts.map +0 -1
  32. package/dist/dist-BDluiNWl.js +0 -21
  33. package/dist/dist-Dog5zD4-.js +0 -4620
@@ -47,7 +47,7 @@ var TenantIsolationError = class extends Error {
47
47
  }
48
48
  };
49
49
  //#endregion
50
- //#region ../tenancy/dist/chunks/testing-rrKS4_-u.js
50
+ //#region ../tenancy/dist/chunks/testing-Cx_KIEyw.js
51
51
  var logger$1 = createLogger({ level: "info" });
52
52
  var DEFAULT_CONFIG = {
53
53
  mode: "required",
@@ -231,12 +231,16 @@ function warnOnRegistrationMismatch(selector) {
231
231
  logger$1.warn(`[smrt-tenancy] ${finding.message}`);
232
232
  }
233
233
  }
234
- var KEY = /* @__PURE__ */ Symbol.for("smrt:tenant-global-read-scope");
235
- var root = globalThis;
236
- root[KEY] ??= new AsyncLocalStorage();
237
- var storage = root[KEY];
234
+ var enabled = false;
235
+ function isTenancyEnabled() {
236
+ return enabled;
237
+ }
238
+ var KEY$1 = /* @__PURE__ */ Symbol.for("smrt:tenant-global-read-scope");
239
+ var root$1 = globalThis;
240
+ root$1[KEY$1] ??= new AsyncLocalStorage();
241
+ var storage$1 = root$1[KEY$1];
238
242
  function runTenantGlobalReadScope(tenantId, callback) {
239
- return storage.run(tenantId, callback);
243
+ return storage$1.run(tenantId, callback);
240
244
  }
241
245
  function assertTenantReadAllowed(tenantId, label) {
242
246
  const tenantContext = getCurrentTenant();
@@ -263,10 +267,23 @@ async function queryWithGlobals(collection, tenantId, label) {
263
267
  const params = [...metaTypes, tenantId];
264
268
  return await collection.query(`SELECT * FROM ${collection.tableName} ${where}`, params, { allowRawOnTenantScoped: true });
265
269
  }
270
+ var KEY = /* @__PURE__ */ Symbol.for("smrt:tenant-hierarchy-read-scope");
271
+ var root = globalThis;
272
+ root[KEY] ??= new AsyncLocalStorage();
273
+ var storage = root[KEY];
274
+ async function runTenantHierarchyReadScope(scope, callback) {
275
+ if (!isTenancyEnabled()) throw new Error("Tenant hierarchy read scope requires enableTenancy()");
276
+ if (!scope.actorTenantId || !scope.actorUserId || scope.collections.length === 0 || scope.tenantIds.length === 0 || scope.collections.some((collection) => !collection) || scope.tenantIds.some((tenantId) => !tenantId) || storage.getStore()) throw new Error("Invalid or nested tenant hierarchy read scope");
277
+ return await storage.run({
278
+ ...scope,
279
+ collections: [...new Set(scope.collections)],
280
+ tenantIds: [...new Set(scope.tenantIds)]
281
+ }, callback);
282
+ }
266
283
  createLogger({ level: "info" });
267
284
  //#endregion
268
285
  //#region ../tenancy/dist/index.js
269
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-tenancy","packageVersion":"0.56.1","objects":{"@happyvertical/smrt-tenancy:BillingRelationship":{"name":"billingrelationship","className":"BillingRelationship","qualifiedName":"@happyvertical/smrt-tenancy:BillingRelationship","collection":"billingrelationships","filePath":"/home/runner/work/smrt/smrt/packages/tenancy/src/billing-relationship.ts","packageName":"@happyvertical/smrt-tenancy","fields":{"childTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"resellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"billingOwnerMode":{"type":"text","required":false,"default":"self","enum":["self","reseller"]}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_relationships","conflictColumns":["child_tenant_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingRelationship","collectionExportName":"BillingRelationshipCollection","validationRules":[{"field":"childTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"resellerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"child_tenant_id\\" UUID NOT NULL,\\n \\"reseller_tenant_id\\" UUID NOT NULL,\\n \\"billing_owner_mode\\" TEXT DEFAULT 'self'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"child_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"reseller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_owner_mode":{"type":"TEXT","notNull":false,"unique":false,"default":"self"}},"indexes":[{"name":"_smrt_billing_relationships_child_tenant_id_idx","columns":["child_tenant_id"],"unique":true},{"name":"_smrt_billing_relationships_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_relationships_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_relationships_reseller_tenant_id_idx","columns":["reseller_tenant_id"]}],"version":"4d7f410a"},"importPath":"@happyvertical/smrt-tenancy"},"@happyvertical/smrt-tenancy:BillingRelationshipCollection":{"name":"billingrelationshipcollection","className":"BillingRelationshipCollection","qualifiedName":"@happyvertical/smrt-tenancy:BillingRelationshipCollection","collection":"billingrelationships","filePath":"/home/runner/work/smrt/smrt/packages/tenancy/src/billing-relationship.ts","packageName":"@happyvertical/smrt-tenancy","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_relationships","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingRelationship","exportName":"BillingRelationshipCollection","collectionExportName":"BillingRelationshipCollectionCollection","schema":{"tableName":"_smrt_billing_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"child_tenant_id\\" UUID NOT NULL,\\n \\"reseller_tenant_id\\" UUID NOT NULL,\\n \\"billing_owner_mode\\" TEXT DEFAULT 'self'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"child_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"reseller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_owner_mode":{"type":"TEXT","notNull":false,"unique":false,"default":"self"}},"indexes":[{"name":"_smrt_billing_relationships_child_tenant_id_idx","columns":["child_tenant_id"],"unique":true},{"name":"_smrt_billing_relationships_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_relationships_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_relationships_reseller_tenant_id_idx","columns":["reseller_tenant_id"]}],"version":"4d7f410a"},"importPath":"@happyvertical/smrt-tenancy"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core"],"browser":{"status":"server-only","issues":["#3624"],"reason":"node:async_hooks"},"stampsConstructors":true}`));
286
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-tenancy","packageVersion":"0.57.0","objects":{"@happyvertical/smrt-tenancy:BillingRelationship":{"name":"billingrelationship","className":"BillingRelationship","qualifiedName":"@happyvertical/smrt-tenancy:BillingRelationship","collection":"billingrelationships","filePath":"/home/runner/work/smrt/smrt/packages/tenancy/src/billing-relationship.ts","packageName":"@happyvertical/smrt-tenancy","fields":{"childTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"resellerTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant","_meta":{"required":true}},"billingOwnerMode":{"type":"text","required":false,"default":"self","enum":["self","reseller"]}},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_relationships","conflictColumns":["child_tenant_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"BillingRelationship","collectionExportName":"BillingRelationshipCollection","validationRules":[{"field":"childTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"resellerTenantId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"_smrt_billing_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"child_tenant_id\\" UUID NOT NULL,\\n \\"reseller_tenant_id\\" UUID NOT NULL,\\n \\"billing_owner_mode\\" TEXT DEFAULT 'self'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"child_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"reseller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_owner_mode":{"type":"TEXT","notNull":false,"unique":false,"default":"self"}},"indexes":[{"name":"_smrt_billing_relationships_child_tenant_id_idx","columns":["child_tenant_id"],"unique":true},{"name":"_smrt_billing_relationships_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_relationships_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_relationships_reseller_tenant_id_idx","columns":["reseller_tenant_id"]}],"version":"4d7f410a"},"importPath":"@happyvertical/smrt-tenancy"},"@happyvertical/smrt-tenancy:BillingRelationshipCollection":{"name":"billingrelationshipcollection","className":"BillingRelationshipCollection","qualifiedName":"@happyvertical/smrt-tenancy:BillingRelationshipCollection","collection":"billingrelationships","filePath":"/home/runner/work/smrt/smrt/packages/tenancy/src/billing-relationship.ts","packageName":"@happyvertical/smrt-tenancy","fields":{},"methods":{},"decoratorConfig":{"tableName":"_smrt_billing_relationships","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"BillingRelationship","exportName":"BillingRelationshipCollection","collectionExportName":"BillingRelationshipCollectionCollection","schema":{"tableName":"_smrt_billing_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_billing_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"child_tenant_id\\" UUID NOT NULL,\\n \\"reseller_tenant_id\\" UUID NOT NULL,\\n \\"billing_owner_mode\\" TEXT DEFAULT 'self'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"child_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"reseller_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"billing_owner_mode":{"type":"TEXT","notNull":false,"unique":false,"default":"self"}},"indexes":[{"name":"_smrt_billing_relationships_child_tenant_id_idx","columns":["child_tenant_id"],"unique":true},{"name":"_smrt_billing_relationships_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_billing_relationships_created_at_idx","columns":["created_at"]},{"name":"_smrt_billing_relationships_reseller_tenant_id_idx","columns":["reseller_tenant_id"]}],"version":"4d7f410a"},"importPath":"@happyvertical/smrt-tenancy"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core"],"browser":{"status":"server-only","issues":["#3624"],"reason":"node:async_hooks"},"stampsConstructors":true}`));
270
287
  var __defProp$2 = Object.defineProperty;
271
288
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
272
289
  var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$2(obj, key, {
@@ -381,7 +398,7 @@ var __exportAll = (all, no_symbols) => {
381
398
  if (!no_symbols) __defProp$1(target, Symbol.toStringTag, { value: "Module" });
382
399
  return target;
383
400
  };
384
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-prompts","packageVersion":"0.56.1","objects":{"@happyvertical/smrt-prompts:PromptOverrideCollection":{"name":"promptoverridecollection","className":"PromptOverrideCollection","qualifiedName":"@happyvertical/smrt-prompts:PromptOverrideCollection","collection":"promptoverrides","filePath":"/home/runner/work/smrt/smrt/packages/prompts/src/collections/PromptOverrideCollection.ts","packageName":"@happyvertical/smrt-prompts","fields":{},"methods":{"getAppOverride":{"name":"getAppOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<PromptOverride | null>","isStatic":false,"isPublic":true},"getTenantOverride":{"name":"getTenantOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"tenantId","type":"string","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<PromptOverride | null>","isStatic":false,"isPublic":true},"getResolutionLayers":{"name":"getResolutionLayers","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"tenantId","type":"string | null","optional":true,"unionBranches":[{"type":"string"},{"type":"null"}]},{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"getOverrideMapForKeys":{"name":"getOverrideMapForKeys","async":true,"parameters":[{"name":"keys","type":"string[]","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false}],"returnType":"Promise<Map<string, PromptOverride>>","isStatic":false,"isPublic":true},"findByScope":{"name":"findByScope","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false}],"returnType":"Promise<PromptOverride | null>","isStatic":false,"isPublic":true},"setTemplateOverride":{"name":"setTemplateOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false},{"name":"template","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]}],"returnType":"Promise<PromptOverride>","isStatic":false,"isPublic":true},"removeOverride":{"name":"removeOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_prompt_overrides","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"PromptOverride","exportName":"PromptOverrideCollection","collectionExportName":"PromptOverrideCollectionCollection","schema":{"tableName":"_smrt_prompt_overrides","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_prompt_overrides\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"key\\" TEXT NOT NULL DEFAULT '',\\n \\"tenant_id\\" UUID,\\n \\"template\\" TEXT,\\n \\"profile\\" TEXT,\\n \\"model\\" TEXT,\\n \\"params\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"key":{"type":"TEXT","notNull":true,"unique":false,"default":""},"tenant_id":{"type":"UUID","notNull":false,"unique":false},"template":{"type":"TEXT","notNull":false,"unique":false},"profile":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"params":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_prompt_overrides_key_context_idx","columns":["key","context"],"unique":true},{"name":"_smrt_prompt_overrides_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_prompt_overrides_created_at_idx","columns":["created_at"]}],"version":"38f505e7"},"importPath":"@happyvertical/smrt-prompts"},"@happyvertical/smrt-prompts:PromptOverride":{"name":"promptoverride","className":"PromptOverride","qualifiedName":"@happyvertical/smrt-prompts:PromptOverride","collection":"promptoverrides","filePath":"/home/runner/work/smrt/smrt/packages/prompts/src/models/PromptOverride.ts","packageName":"@happyvertical/smrt-prompts","fields":{"key":{"type":"text","required":true,"default":"","_meta":{"required":true}},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true}},"template":{"type":"text","required":false,"_meta":{"nullable":true}},"profile":{"type":"text","required":false,"_meta":{"nullable":true}},"model":{"type":"text","required":false,"_meta":{"nullable":true}},"params":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"getParams":{"name":"getParams","async":false,"parameters":[],"returnType":"PromptParams","isStatic":false,"isPublic":true},"setParams":{"name":"setParams","async":false,"parameters":[{"name":"params","type":"PromptParams | null","optional":false,"unionBranches":[{"type":"PromptParams"},{"type":"null"}]}],"returnType":"void","isStatic":false,"isPublic":true},"toPromptLayer":{"name":"toPromptLayer","async":false,"parameters":[],"returnType":"PromptLayer","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_prompt_overrides","conflictColumns":["key","context"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"PromptOverride","collectionExportName":"PromptOverrideCollection","validationRules":[{"field":"key","rule":"required","fieldType":"text"}],"schema":{"tableName":"_smrt_prompt_overrides","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_prompt_overrides\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"key\\" TEXT NOT NULL DEFAULT '',\\n \\"tenant_id\\" UUID,\\n \\"template\\" TEXT,\\n \\"profile\\" TEXT,\\n \\"model\\" TEXT,\\n \\"params\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"key":{"type":"TEXT","notNull":true,"unique":false,"default":""},"tenant_id":{"type":"UUID","notNull":false,"unique":false},"template":{"type":"TEXT","notNull":false,"unique":false},"profile":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"params":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_prompt_overrides_key_context_idx","columns":["key","context"],"unique":true},{"name":"_smrt_prompt_overrides_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_prompt_overrides_created_at_idx","columns":["created_at"]}],"version":"38f505e7"},"importPath":"@happyvertical/smrt-prompts"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3624"],"via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
401
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-prompts","packageVersion":"0.57.0","objects":{"@happyvertical/smrt-prompts:PromptOverrideCollection":{"name":"promptoverridecollection","className":"PromptOverrideCollection","qualifiedName":"@happyvertical/smrt-prompts:PromptOverrideCollection","collection":"promptoverrides","filePath":"/home/runner/work/smrt/smrt/packages/prompts/src/collections/PromptOverrideCollection.ts","packageName":"@happyvertical/smrt-prompts","fields":{},"methods":{"getAppOverride":{"name":"getAppOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<PromptOverride | null>","isStatic":false,"isPublic":true},"getTenantOverride":{"name":"getTenantOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"tenantId","type":"string","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<PromptOverride | null>","isStatic":false,"isPublic":true},"getResolutionLayers":{"name":"getResolutionLayers","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"tenantId","type":"string | null","optional":true,"unionBranches":[{"type":"string"},{"type":"null"}]},{"name":"options","type":"object","optional":true,"memberTypes":["string"]}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"getOverrideMapForKeys":{"name":"getOverrideMapForKeys","async":true,"parameters":[{"name":"keys","type":"string[]","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false}],"returnType":"Promise<Map<string, PromptOverride>>","isStatic":false,"isPublic":true},"findByScope":{"name":"findByScope","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false}],"returnType":"Promise<PromptOverride | null>","isStatic":false,"isPublic":true},"setTemplateOverride":{"name":"setTemplateOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false},{"name":"template","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]}],"returnType":"Promise<PromptOverride>","isStatic":false,"isPublic":true},"removeOverride":{"name":"removeOverride","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"scopeType","type":"PromptOverrideScopeType","optional":false},{"name":"scopeId","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_prompt_overrides","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"PromptOverride","exportName":"PromptOverrideCollection","collectionExportName":"PromptOverrideCollectionCollection","schema":{"tableName":"_smrt_prompt_overrides","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_prompt_overrides\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"key\\" TEXT NOT NULL DEFAULT '',\\n \\"tenant_id\\" UUID,\\n \\"template\\" TEXT,\\n \\"profile\\" TEXT,\\n \\"model\\" TEXT,\\n \\"params\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"key":{"type":"TEXT","notNull":true,"unique":false,"default":""},"tenant_id":{"type":"UUID","notNull":false,"unique":false},"template":{"type":"TEXT","notNull":false,"unique":false},"profile":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"params":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_prompt_overrides_key_context_idx","columns":["key","context"],"unique":true},{"name":"_smrt_prompt_overrides_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_prompt_overrides_created_at_idx","columns":["created_at"]}],"version":"38f505e7"},"importPath":"@happyvertical/smrt-prompts"},"@happyvertical/smrt-prompts:PromptOverride":{"name":"promptoverride","className":"PromptOverride","qualifiedName":"@happyvertical/smrt-prompts:PromptOverride","collection":"promptoverrides","filePath":"/home/runner/work/smrt/smrt/packages/prompts/src/models/PromptOverride.ts","packageName":"@happyvertical/smrt-prompts","fields":{"key":{"type":"text","required":true,"default":"","_meta":{"required":true}},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true}},"template":{"type":"text","required":false,"_meta":{"nullable":true}},"profile":{"type":"text","required":false,"_meta":{"nullable":true}},"model":{"type":"text","required":false,"_meta":{"nullable":true}},"params":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"getParams":{"name":"getParams","async":false,"parameters":[],"returnType":"PromptParams","isStatic":false,"isPublic":true},"setParams":{"name":"setParams","async":false,"parameters":[{"name":"params","type":"PromptParams | null","optional":false,"unionBranches":[{"type":"PromptParams"},{"type":"null"}]}],"returnType":"void","isStatic":false,"isPublic":true},"toPromptLayer":{"name":"toPromptLayer","async":false,"parameters":[],"returnType":"PromptLayer","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_prompt_overrides","conflictColumns":["key","context"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"PromptOverride","collectionExportName":"PromptOverrideCollection","validationRules":[{"field":"key","rule":"required","fieldType":"text"}],"schema":{"tableName":"_smrt_prompt_overrides","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_prompt_overrides\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"key\\" TEXT NOT NULL DEFAULT '',\\n \\"tenant_id\\" UUID,\\n \\"template\\" TEXT,\\n \\"profile\\" TEXT,\\n \\"model\\" TEXT,\\n \\"params\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"key":{"type":"TEXT","notNull":true,"unique":false,"default":""},"tenant_id":{"type":"UUID","notNull":false,"unique":false},"template":{"type":"TEXT","notNull":false,"unique":false},"profile":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"params":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_prompt_overrides_key_context_idx","columns":["key","context"],"unique":true},{"name":"_smrt_prompt_overrides_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_prompt_overrides_created_at_idx","columns":["created_at"]}],"version":"38f505e7"},"importPath":"@happyvertical/smrt-prompts"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3624"],"via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
385
402
  var PROMPT_CACHE_TTL_MS = 3e4;
386
403
  var promptCache = /* @__PURE__ */ new Map();
387
404
  var cacheGenerations = /* @__PURE__ */ new Map();
@@ -1038,4 +1055,4 @@ async function resolvePrompt(key, options = {}) {
1038
1055
  };
1039
1056
  }
1040
1057
  //#endregion
1041
- export { queryGlobal as a, getTenantId as c, tenantId as i, isSystemContext as l, resolvePrompt as n, queryWithGlobals as o, TenantScoped as r, withTenantGlobalRead as s, definePrompt as t, withSystemContext as u };
1058
+ export { queryGlobal as a, withTenantGlobalRead as c, isSystemContext as d, withSystemContext as f, tenantId as i, getCurrentTenant as l, resolvePrompt as n, queryWithGlobals as o, TenantScoped as r, runTenantHierarchyReadScope as s, definePrompt as t, getTenantId as u };
package/dist/index.js CHANGED
@@ -51,77 +51,77 @@ var _cookbookCommands = null;
51
51
  var _kitchenCommands = null;
52
52
  async function getGnodeCommands() {
53
53
  if (!_gnodeCommands) {
54
- const { gnodeCommands } = await import("./commands-C33Y1BAd.js");
54
+ const { gnodeCommands } = await import("./commands-D2y3p_Bn.js");
55
55
  _gnodeCommands = gnodeCommands;
56
56
  }
57
57
  return _gnodeCommands;
58
58
  }
59
59
  async function getGitCommands() {
60
60
  if (!_gitCommands) {
61
- const { gitCommands } = await import("./commands-C33Y1BAd.js");
61
+ const { gitCommands } = await import("./commands-D2y3p_Bn.js");
62
62
  _gitCommands = gitCommands;
63
63
  }
64
64
  return _gitCommands;
65
65
  }
66
66
  async function getGenerateCommands() {
67
67
  if (!_generateCommands) {
68
- const { generateCommands } = await import("./commands-C33Y1BAd.js");
68
+ const { generateCommands } = await import("./commands-D2y3p_Bn.js");
69
69
  _generateCommands = generateCommands;
70
70
  }
71
71
  return _generateCommands;
72
72
  }
73
73
  async function getInitCommands() {
74
74
  if (!_initCommands) {
75
- const { initCommands } = await import("./commands-C33Y1BAd.js");
75
+ const { initCommands } = await import("./commands-D2y3p_Bn.js");
76
76
  _initCommands = initCommands;
77
77
  }
78
78
  return _initCommands;
79
79
  }
80
80
  async function getUtilityCommands() {
81
81
  if (!_utilityCommands) {
82
- const { utilityCommands } = await import("./commands-C33Y1BAd.js");
82
+ const { utilityCommands } = await import("./commands-D2y3p_Bn.js");
83
83
  _utilityCommands = utilityCommands;
84
84
  }
85
85
  return _utilityCommands;
86
86
  }
87
87
  async function getDispatchCommands() {
88
88
  if (!_dispatchCommands) {
89
- const { dispatchCommands } = await import("./commands-C33Y1BAd.js");
89
+ const { dispatchCommands } = await import("./commands-D2y3p_Bn.js");
90
90
  _dispatchCommands = dispatchCommands;
91
91
  }
92
92
  return _dispatchCommands;
93
93
  }
94
94
  async function getDocsCommands() {
95
95
  if (!_docsCommands) {
96
- const { docsCommands } = await import("./commands-C33Y1BAd.js");
96
+ const { docsCommands } = await import("./commands-D2y3p_Bn.js");
97
97
  _docsCommands = docsCommands;
98
98
  }
99
99
  return _docsCommands;
100
100
  }
101
101
  async function getPlaygroundCommands() {
102
102
  if (!_playgroundCommands) {
103
- const { playgroundCommands } = await import("./commands-C33Y1BAd.js");
103
+ const { playgroundCommands } = await import("./commands-D2y3p_Bn.js");
104
104
  _playgroundCommands = playgroundCommands;
105
105
  }
106
106
  return _playgroundCommands;
107
107
  }
108
108
  async function getCookbookCommands() {
109
109
  if (!_cookbookCommands) {
110
- const { cookbookCommands } = await import("./commands-C33Y1BAd.js");
110
+ const { cookbookCommands } = await import("./commands-D2y3p_Bn.js");
111
111
  _cookbookCommands = cookbookCommands;
112
112
  }
113
113
  return _cookbookCommands;
114
114
  }
115
115
  async function getKitchenCommands() {
116
116
  if (!_kitchenCommands) {
117
- const { kitchenCommands } = await import("./commands-C33Y1BAd.js");
117
+ const { kitchenCommands } = await import("./commands-D2y3p_Bn.js");
118
118
  _kitchenCommands = kitchenCommands;
119
119
  }
120
120
  return _kitchenCommands;
121
121
  }
122
122
  async function getWorkbenchCommands() {
123
123
  if (!_workbenchCommands) {
124
- const { workbenchCommands } = await import("./commands-C33Y1BAd.js");
124
+ const { workbenchCommands } = await import("./commands-D2y3p_Bn.js");
125
125
  _workbenchCommands = workbenchCommands;
126
126
  }
127
127
  return _workbenchCommands;
@@ -726,7 +726,7 @@ var CLIGenerator = class {
726
726
  });
727
727
  if (config.abstract) return commands;
728
728
  const methods = await ObjectRegistry.getAllMethods(objectName);
729
- const hasCustomMethodsInInclude = included?.some((item) => !isCrudOperation(item));
729
+ const hasCustomMethodsInInclude = included?.some((item) => !isCrudOperation(item)) || Array.isArray(included) && ObjectRegistry.isCollectionClass(objectName);
730
730
  const reservedCommandNames = new Set(commands.flatMap((command) => [command.name, ...command.aliases ?? []]));
731
731
  for (const [methodName, methodDef] of methods) {
732
732
  const shouldIncludeMethod = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"git-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/git-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA8T3D;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAsE7E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAOhE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAKf"}
1
+ {"version":3,"file":"git-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/git-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAyU3D;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAgF7E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAOhE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
2
  import { n as __exportAll$1 } from "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
3
- import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-HnNEVZJE.js";
4
- import { a as ProfileCollection, f as saveOidcRaceArbiter, i as Profile } from "./ProfileCollection-C4INKh7Y-CnRSIu8K.js";
5
- import { t as ProfileTypeCollection } from "./ProfileTypeCollection-B7kwi1mU-B_Qzmn0A.js";
3
+ import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-2SX7ODeV.js";
4
+ import { a as ProfileCollection, f as saveOidcRaceArbiter, i as Profile } from "./ProfileCollection-C4INKh7Y-C4r3lkdr.js";
5
+ import { t as ProfileTypeCollection } from "./ProfileTypeCollection-B7kwi1mU-BpRipEQ3.js";
6
6
  import { smrt } from "@happyvertical/smrt-core";
7
7
  //#region ../profiles/dist/chunks/oidcProvisioningPrimitives-DNP9EZlU.js
8
8
  var oidcProvisioningPrimitives_DNP9EZlU_exports = /* @__PURE__ */ __exportAll({
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { u as withSystemContext } from "./dist-BulInGkA.js";
2
+ import { f as withSystemContext } from "./dist-DsVQcZ6G.js";
3
3
  import { n as __exportAll$1, t as NostrIdentity, u as verifyAuthEvent } from "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
4
4
  import { t as ApiKey } from "./ApiKey-CVmlf3V6-BAeHuH48.js";
5
- import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-HnNEVZJE.js";
6
- import { c as coordinateOidcProvisioning, l as isOidcProvisioningRaceConflict, u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-CnRSIu8K.js";
7
- import { a as insertOidcProvisioningIdentity, i as createOidcProvisioningPerson } from "./oidcProvisioningPrimitives-DNP9EZlU-DRKMXFiq.js";
5
+ import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-2SX7ODeV.js";
6
+ import { c as coordinateOidcProvisioning, l as isOidcProvisioningRaceConflict, u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-C4r3lkdr.js";
7
+ import { a as insertOidcProvisioningIdentity, i as createOidcProvisioningPerson } from "./oidcProvisioningPrimitives-DNP9EZlU-C9hYFUey.js";
8
8
  import { resolveDatabase } from "@happyvertical/smrt-core";
9
9
  //#region ../profiles/dist/chunks/resolveIdentity-CkyqvctR.js
10
10
  var resolveIdentity_CkyqvctR_exports = /* @__PURE__ */ __exportAll({
@@ -72,13 +72,13 @@ async function resolveIdentity(context) {
72
72
  };
73
73
  }
74
74
  async function findProfileByExternalId(provider, externalId, options) {
75
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B6ywCED-.js").then((n) => n.r).then((n) => n.r);
75
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-T7hWKrdm.js").then((n) => n.r).then((n) => n.r);
76
76
  const identities = await (await OidcIdentityCollection.create(options)).findByProvider(provider);
77
77
  for (const identity of identities) if (identity.subject === externalId || identity.email?.includes(externalId)) {
78
78
  const profile = await identity.getProfile();
79
79
  if (profile) return profile;
80
80
  }
81
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CnRSIu8K.js").then((n) => n.o).then((n) => n.r);
81
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-C4r3lkdr.js").then((n) => n.o).then((n) => n.r);
82
82
  const profiles = await (await ProfileCollection.create(options)).list({
83
83
  where: { email: `${externalId}@users.noreply.github.com` },
84
84
  limit: 1
@@ -99,7 +99,7 @@ async function reuseExistingOidcIdentityForProfile(profileId, claims, provider,
99
99
  createConcurrencyError: (cause) => new Error("Concurrent exact OIDC identity reuse did not converge.", cause === void 0 ? void 0 : { cause }),
100
100
  rebindRootResult: rebindOidcProfileResult,
101
101
  provision: (tx) => withSystemContext(async () => {
102
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B6ywCED-.js").then((n) => n.r).then((n) => n.r);
102
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-T7hWKrdm.js").then((n) => n.r).then((n) => n.r);
103
103
  const identity = await (await OidcIdentityCollection.create({ db: tx })).findBySubject(normalizedClaims.iss, normalizedClaims.sub);
104
104
  if (!identity) throw new Error("OidcIdentity.findOrCreate() no longer creates authentication links; use UserCollection.getOrCreateFromOidc() or createProfileFromOidc().");
105
105
  if (identity.profileId !== profileId) throw new Error(`OIDC identity ${normalizedClaims.iss} subject ${normalizedClaims.sub} belongs to a different Profile.`);
@@ -133,7 +133,7 @@ async function coordinateProfileOidcProvisioning(claims, provider, options) {
133
133
  });
134
134
  }
135
135
  async function provisionOidcProfile(claims, provider, options) {
136
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B6ywCED-.js").then((n) => n.r).then((n) => n.r);
136
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-T7hWKrdm.js").then((n) => n.r).then((n) => n.r);
137
137
  const existingIdentity = await (await OidcIdentityCollection.create(options)).findBySubject(claims.iss, claims.sub);
138
138
  if (existingIdentity) {
139
139
  const profile2 = await existingIdentity.getProfile();
@@ -148,7 +148,7 @@ async function provisionOidcProfile(claims, provider, options) {
148
148
  created: false
149
149
  };
150
150
  }
151
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CnRSIu8K.js").then((n) => n.o).then((n) => n.r);
151
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-C4r3lkdr.js").then((n) => n.o).then((n) => n.r);
152
152
  const profileCollection = await ProfileCollection.create(options);
153
153
  if (claims.email) {
154
154
  if (await profileCollection.findUniqueGlobalPersonByEmail(claims.email)) {
@@ -175,8 +175,8 @@ async function provisionOidcProfile(claims, provider, options) {
175
175
  };
176
176
  }
177
177
  async function rebindOidcProfileResult(result, rootDb) {
178
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-B6ywCED-.js").then((n) => n.r).then((n) => n.r);
179
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CnRSIu8K.js").then((n) => n.o).then((n) => n.r);
178
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-T7hWKrdm.js").then((n) => n.r).then((n) => n.r);
179
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-C4r3lkdr.js").then((n) => n.o).then((n) => n.r);
180
180
  const profileId = requireOidcProfileId(result.profile.id);
181
181
  const identityId = requireOidcProfileId(result.oidcIdentity.id);
182
182
  const [profile, oidcIdentity] = await withSystemContext(async () => {
@@ -225,11 +225,11 @@ async function createProfileFromNostr(email, nostrData, options) {
225
225
  created: false
226
226
  };
227
227
  }
228
- const { Person } = await import("./oidcProvisioningPrimitives-DNP9EZlU-DRKMXFiq.js").then((n) => n.o).then((n) => n.o);
229
- const { ProfileTypeCollection } = await import("./ProfileTypeCollection-B7kwi1mU-B_Qzmn0A.js").then((n) => n.n).then((n) => n.n);
228
+ const { Person } = await import("./oidcProvisioningPrimitives-DNP9EZlU-C9hYFUey.js").then((n) => n.o).then((n) => n.o);
229
+ const { ProfileTypeCollection } = await import("./ProfileTypeCollection-B7kwi1mU-BpRipEQ3.js").then((n) => n.n).then((n) => n.n);
230
230
  let personType = await (await ProfileTypeCollection.create(options)).getBySlug("person");
231
231
  if (!personType) {
232
- const { ProfileType } = await import("./ProfileCollection-C4INKh7Y-CnRSIu8K.js").then((n) => n.o).then((n) => n.h);
232
+ const { ProfileType } = await import("./ProfileCollection-C4INKh7Y-C4r3lkdr.js").then((n) => n.o).then((n) => n.h);
233
233
  personType = new ProfileType({
234
234
  ...options,
235
235
  slug: "person",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-cli",
3
- "version": "0.56.1",
3
+ "version": "0.57.0",
4
4
  "description": "Developer CLI for SMRT framework - introspection, testing, and project management",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -33,15 +33,15 @@
33
33
  "@happyvertical/ai": "^0.103.7",
34
34
  "@happyvertical/files": "^0.103.7",
35
35
  "@happyvertical/logger": "^0.103.7",
36
- "@happyvertical/smrt-agents": "0.56.1",
37
- "@happyvertical/smrt-app-runtime": "0.56.1",
38
- "@happyvertical/smrt-config": "0.56.1",
39
- "@happyvertical/smrt-core": "0.56.1",
40
- "@happyvertical/smrt-dev-mcp": "0.56.1",
41
- "@happyvertical/smrt-ledgers": "0.56.1",
42
- "@happyvertical/smrt-playground": "0.56.1",
43
- "@happyvertical/smrt-types": "0.56.1",
44
- "@happyvertical/smrt-users": "0.56.1",
36
+ "@happyvertical/smrt-agents": "0.57.0",
37
+ "@happyvertical/smrt-app-runtime": "0.57.0",
38
+ "@happyvertical/smrt-config": "0.57.0",
39
+ "@happyvertical/smrt-core": "0.57.0",
40
+ "@happyvertical/smrt-dev-mcp": "0.57.0",
41
+ "@happyvertical/smrt-ledgers": "0.57.0",
42
+ "@happyvertical/smrt-playground": "0.57.0",
43
+ "@happyvertical/smrt-types": "0.57.0",
44
+ "@happyvertical/smrt-users": "0.57.0",
45
45
  "@happyvertical/sql": "^0.103.7",
46
46
  "@happyvertical/utils": "^0.103.7",
47
47
  "@modelcontextprotocol/server": "2.0.0",
@@ -1,48 +0,0 @@
1
- # Commerce money migration commands
2
-
3
- Run the normal schema migration before these data commands. The Commerce data
4
- migration never creates tables or columns at runtime.
5
-
6
- 1. Generate review artifacts without changing the database:
7
-
8
- ```sh
9
- smrt db:preflight-commerce-money \
10
- --tenant-id <tenant-id> \
11
- --json-path ./commerce-money.json \
12
- --csv-path ./commerce-money.csv
13
- ```
14
-
15
- Omit `--tenant-id` only for a system-wide read-only report. The two output
16
- paths are optional, but must be supplied together. Review every reason code,
17
- repair `UNRECONCILED` documents before continuing, and assign the required
18
- fallback tax accounts.
19
-
20
- 2. Migrate one tenant after review:
21
-
22
- ```sh
23
- smrt db:migrate-commerce-money --tenant-id <tenant-id>
24
- ```
25
-
26
- The command prints its migration owner UUID before it claims the tenant.
27
- Preserve that value. If the process is interrupted, repeat the command with
28
- `--migration-id <uuid>`; a different owner is refused. Add
29
- `--accept-draft-changes` only after approving the draft deltas from preflight.
30
-
31
- 3. Roll back during the supported rollback window:
32
-
33
- ```sh
34
- smrt db:rollback-commerce-money \
35
- --tenant-id <tenant-id> \
36
- --migration-id <uuid>
37
- ```
38
-
39
- Rollback restores the durable pre-images only when every current document
40
- still matches its recorded post-image. Any later document, line, payment,
41
- credit, or accounting-sync change blocks the whole rollback before a restore.
42
-
43
- All commands use the configured database and redact credentials from failures.
44
- The migrate and rollback commands share the same tenant runtime barrier as
45
- Commerce reads and writes; do not alter the tenant marker directly.
46
-
47
- The data invariants and header-identity exception are documented in
48
- `@happyvertical/smrt-commerce/agents/line-amount-migration.md`.
@@ -1,5 +0,0 @@
1
- import type { CLICommand } from '../cli-generator.js';
2
- export declare const dbPreflightCommerceMoneyCommand: CLICommand;
3
- export declare const dbMigrateCommerceMoneyCommand: CLICommand;
4
- export declare const dbRollbackCommerceMoneyCommand: CLICommand;
5
- //# sourceMappingURL=db-commerce-money.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db-commerce-money.d.ts","sourceRoot":"","sources":["../../src/commands/db-commerce-money.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA4JtD,eAAO,MAAM,+BAA+B,EAAE,UAgD7C,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,UAoD3C,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,UA4C5C,CAAC"}
@@ -1,21 +0,0 @@
1
- import "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
2
- import "./ApiKey-CVmlf3V6-BAeHuH48.js";
3
- import "./ApiKeyCollection-CiiDNFdD-CMGF3_ul.js";
4
- import "./AuditLogCollection-WDHL-_AF-x25-BNOH.js";
5
- import "./NostrIdentityCollection-CctlECpX-fkAPnK02.js";
6
- import "./OidcIdentity-BUblgQLs-HnNEVZJE.js";
7
- import "./OidcIdentityCollection-ClOyaHeF-B6ywCED-.js";
8
- import "./ProfileAssetCollection-CRMcjLJ--Dtcl0Z7Y.js";
9
- import { a as ProfileCollection } from "./ProfileCollection-C4INKh7Y-CnRSIu8K.js";
10
- import "./ProfileLinkCollection-DFfZRsgv-DoNRyhzW.js";
11
- import "./ProfileMetadataCollection-BIYKy4Y3-CIcxshqJ.js";
12
- import "./ProfileMetafieldCollection-Buz7gzag-Qp89uhvS.js";
13
- import "./ProfileRelationshipCollection-C4g_QLI4-CpdzgFU_.js";
14
- import "./ProfileRelationshipTermCollection-C9J7mC7P-ChIFqjCg.js";
15
- import "./ProfileRelationshipType-U7IwF6Wf-DNavf24e.js";
16
- import "./ProfileRelationshipTypeCollection-_n22WqTb-DiZUWvev.js";
17
- import "./ProfileTypeCollection-B7kwi1mU-B_Qzmn0A.js";
18
- import "./oidcProvisioningPrimitives-DNP9EZlU-DRKMXFiq.js";
19
- import "./resolveIdentity-CkyqvctR-lxunfjyo.js";
20
- import "./dist-Dog5zD4-.js";
21
- export { ProfileCollection };