@happyvertical/smrt-profiles 0.39.17 → 0.40.1

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 CHANGED
@@ -112,7 +112,11 @@ import { smrtProfilesGenerateBioPrompt } from '@happyvertical/smrt-profiles';
112
112
  existing email match through this helper; User/session provisioning still
113
113
  rejects unsafe linked Profiles before creating authentication state. Use
114
114
  `UserCollection.getOrCreateFromOidc()` for owner-aware verified-email reuse and
115
- its supported transaction-bound resolver hook.
115
+ its supported transaction-bound hooks. A pre-provisioned owned Person remains
116
+ fail-closed unless the application explicitly uses `authorizeProfileOwner`
117
+ to select both the canonical Profile and its existing approved sole owner;
118
+ the users package revalidates those IDs, emails, and identity authority in
119
+ the provisioning transaction.
116
120
  - **Email storage and identity matching differ**: `Profile.email` has an
117
121
  exact-value DB constraint. Identity boundaries query readonly indexed
118
122
  `Profile.emailKey`, derived by the shared TypeScript
package/README.md CHANGED
@@ -175,7 +175,12 @@ errors, and permitted row creation; the Profiles and Users suites execute its
175
175
  applicable rows directly. In particular, Profile-only exact reuse preserves an
176
176
  established legacy link because it creates no User/session authentication state,
177
177
  while `UserCollection.getOrCreateFromOidc()` remains owner-aware and fail-closed.
178
- Use the Users API for verified-email reuse and application reconciliation.
178
+ Use the Users API for verified-email reuse and application reconciliation. Its
179
+ `authorizeProfileOwner` option is the only supported exception for a new
180
+ issuer/subject targeting a pre-provisioned owned Person: the users package
181
+ atomically verifies the canonical Profile, sole approved owner, matching User
182
+ email, and non-rebindable identity. Without that explicit application
183
+ authorization, the owned Profile still returns `profile_owned`.
179
184
 
180
185
  `Profile` and `ProfileCollection` both expose `getAssets()`, `addAsset()`, and
181
186
  `removeAsset()` helpers backed by `profile_assets`. Typical relationships are