@rubytech/create-maxy 1.0.698 → 1.0.699

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy",
3
- "version": "1.0.698",
3
+ "version": "1.0.699",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy": "./dist/index.js"
@@ -259,8 +259,8 @@ ON EACH [k.summary, k.content];
259
259
 
260
260
  // ----------------------------------------------------------
261
261
  // Conversation node — persistent conversation sessions
262
- // One Conversation per sessionKey. Scoped to an account via
263
- // (Conversation)-[:BELONGS_TO]->(LocalBusiness).
262
+ // One Conversation per sessionKey. Account scope is encoded by the
263
+ // `accountId` property on the node itself — every read filters by it.
264
264
  // Public conversations carry a visitorId (browser cookie) and
265
265
  // agentSlug for session resume across page reloads and server restarts.
266
266
  // Task 621 — carries a `summary` string denormalised from the first
@@ -463,8 +463,9 @@ FOR (sr:StepResult) ON (sr.runId);
463
463
 
464
464
  // ----------------------------------------------------------
465
465
  // UserProfile node — structured knowledge about the business owner
466
- // Platform-native (no Schema.org equivalent). One per account.
467
- // Linked via (UserProfile)-[:BELONGS_TO]->(LocalBusiness).
466
+ // Platform-native (no Schema.org equivalent). One per (accountId, userId).
467
+ // Linked via (AdminUser)-[:HAS_PROFILE]->(UserProfile). Account scope is
468
+ // encoded by the `accountId` property on the node itself.
468
469
  //
469
470
  // Created automatically on first admin session start via MERGE.
470
471
  // Properties populated progressively through conversation and
@@ -717,3 +718,31 @@ FOR (n:Trashed) ON (n.accountId);
717
718
 
718
719
  CREATE INDEX trashed_at IF NOT EXISTS
719
720
  FOR (n:Trashed) ON (n.trashedAt);
721
+
722
+ // ----------------------------------------------------------
723
+ // Person.linkedinUrl — natural key for LinkedIn-origin Persons.
724
+ // Indexed (not uniquely constrained) so a Person can appear
725
+ // first from another source (email-first) and later have its
726
+ // linkedinUrl filled in without collision. Schema-base requires
727
+ // `email or telephone` on :Person, but LinkedIn basic exports
728
+ // rarely emit either for connections; `linkedinUrl` is the
729
+ // reliable dedup key for the linkedin-import skill.
730
+ // ----------------------------------------------------------
731
+ CREATE INDEX person_linkedin_url IF NOT EXISTS
732
+ FOR (p:Person) ON (p.linkedinUrl);
733
+
734
+ // ----------------------------------------------------------
735
+ // Credential — schema:EducationalOccupationalCredential.
736
+ // Professional certifications (e.g. LinkedIn's Certifications.csv,
737
+ // or credentials entered through memory-write). Natural key is
738
+ // the triple (accountId, name, authority) — a credential is
739
+ // identified by what it is and who issued it, within a tenant.
740
+ // No existing Maxy label covers this semantics, so a new label
741
+ // is warranted (unlike articles → :CreativeWork, recommendations
742
+ // → :Review, skills → :DefinedTerm, which all reuse existing labels).
743
+ // ----------------------------------------------------------
744
+ CREATE CONSTRAINT credential_unique IF NOT EXISTS
745
+ FOR (c:Credential) REQUIRE (c.accountId, c.name, c.authority) IS UNIQUE;
746
+
747
+ CREATE INDEX credential_account IF NOT EXISTS
748
+ FOR (c:Credential) ON (c.accountId);