@enfyra/mcp-server 0.1.17 → 0.1.19

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.
@@ -547,10 +547,11 @@ update_record({
547
547
  useWhen: 'Use when creating or changing persisted data models.',
548
548
  examples: [
549
549
  {
550
- name: 'Design a learning platform schema without SQL-type or FK retries',
550
+ name: 'Design an app schema without SQL-type or FK retries',
551
551
  code: `// 1. Create independent lookup/entity tables first.
552
+ // Replace the app_* names with the current domain's natural names.
552
553
  create_table({
553
- name: "learning_category",
554
+ name: "app_lookup",
554
555
  globalRulesAckKey: "<globalRulesAckKey from get_enfyra_required_knowledge>",
555
556
  columns: JSON.stringify([
556
557
  { name: "name", type: "varchar", isNullable: false },
@@ -561,38 +562,38 @@ create_table({
561
562
  })
562
563
 
563
564
  create_table({
564
- name: "learning_course",
565
+ name: "app_primary_record",
565
566
  globalRulesAckKey: "<globalRulesAckKey from get_enfyra_required_knowledge>",
566
567
  columns: JSON.stringify([
567
- { name: "title", type: "varchar", isNullable: false },
568
- { name: "summary", type: "text", isNullable: true },
569
- { name: "price", type: "float", isNullable: false, defaultValue: "0" },
568
+ { name: "title", type: "varchar", isNullable: false }, // short display text
569
+ { name: "summary", type: "text", isNullable: true }, // long prose
570
+ { name: "amount", type: "float", isNullable: false, defaultValue: "0" },
570
571
  { name: "status", type: "varchar", isNullable: false, defaultValue: "draft" },
571
- { name: "metadata", type: "simple-json", isNullable: true }
572
+ { name: "metadata", type: "simple-json", isNullable: true } // structured snapshot only when useful
572
573
  ]),
573
574
  relations: JSON.stringify([
574
- { propertyName: "category", type: "many-to-one", targetTable: "learning_category", isNullable: true, onDelete: "SET NULL" },
575
- { propertyName: "instructor", type: "many-to-one", targetTable: "enfyra_user", isNullable: false, onDelete: "CASCADE" }
575
+ { propertyName: "lookup", type: "many-to-one", targetTable: "app_lookup", isNullable: true, onDelete: "SET NULL" },
576
+ { propertyName: "owner", type: "many-to-one", targetTable: "enfyra_user", isNullable: false, onDelete: "CASCADE" }
576
577
  ]),
577
578
  indexes: JSON.stringify([
578
579
  ["status", "createdAt"],
579
- ["category", "status"]
580
+ ["lookup", "status"]
580
581
  ])
581
582
  })
582
583
 
583
- // 2. For enrollment, uniqueness is data integrity; do not duplicate those fields in indexes.
584
+ // 2. For association/state tables, uniqueness is data integrity; do not duplicate those fields in indexes.
584
585
  create_table({
585
- name: "learning_enrollment",
586
+ name: "app_participation",
586
587
  globalRulesAckKey: "<globalRulesAckKey from get_enfyra_required_knowledge>",
587
588
  columns: JSON.stringify([
588
589
  { name: "status", type: "varchar", isNullable: false, defaultValue: "active" },
589
- { name: "progressPercent", type: "float", isNullable: false, defaultValue: "0" }
590
+ { name: "score", type: "float", isNullable: false, defaultValue: "0" }
590
591
  ]),
591
592
  relations: JSON.stringify([
592
- { propertyName: "course", type: "many-to-one", targetTable: "learning_course", isNullable: false, onDelete: "CASCADE" },
593
- { propertyName: "student", type: "many-to-one", targetTable: "enfyra_user", isNullable: false, onDelete: "CASCADE" }
593
+ { propertyName: "record", type: "many-to-one", targetTable: "app_primary_record", isNullable: false, onDelete: "CASCADE" },
594
+ { propertyName: "actor", type: "many-to-one", targetTable: "enfyra_user", isNullable: false, onDelete: "CASCADE" }
594
595
  ]),
595
- uniques: JSON.stringify([["course", "student"]]),
596
+ uniques: JSON.stringify([["record", "actor"]]),
596
597
  indexes: JSON.stringify([
597
598
  ["status", "createdAt"]
598
599
  ])
@@ -600,21 +601,22 @@ create_table({
600
601
 
601
602
  // 3. Insert relation data through propertyName, not hidden FK columns.
602
603
  create_record({
603
- tableName: "learning_course",
604
+ tableName: "app_primary_record",
604
605
  data: JSON.stringify({
605
- title: "Intro to Enfyra",
606
- price: 29.99,
607
- status: "published",
608
- category: "<learning_category_id>",
609
- instructor: "<enfyra_user_id>"
606
+ title: "<display title>",
607
+ amount: 29.99,
608
+ status: "active",
609
+ lookup: "<app_lookup_id>",
610
+ owner: "<enfyra_user_id>"
610
611
  })
611
612
  })`,
612
613
  notes: [
613
- 'Learning platform is illustrative: transfer the same sequence to marketplace, CRM, LMS, support, or inventory domains.',
614
+ 'This is a modeling pattern, not a domain template. Rename app_lookup/app_primary_record/app_participation and relation names to the current domain vocabulary.',
615
+ 'Map lookup to categories/tags/plans/status groups, primary_record to the main business entity, owner/actor to enfyra_user, and participation to joins/state/progress/membership when the domain needs it.',
614
616
  'Use live column types from enfyra_column.type. Prefer float for decimal-like money/ratings unless live metadata explicitly supports decimal; prefer text/richtext for long prose; prefer simple-json for structured snapshots only when listed by metadata.',
615
- 'Do not create categoryId, instructorId, student_id, or courseIds scalar fields for normalized relationships. Use relations and later write relation propertyName values such as category, instructor, course, and student.',
616
- 'A unique pair such as course+student already creates the indexed unique lookup; keep those fields out of indexes and index only other hot filters such as status+createdAt.',
617
- 'If a reverse collection is needed later, add inversePropertyName only for a real parent detail/deep/count/sort use case, such as course.enrollments for an admin course detail page.',
617
+ 'Do not create lookupId, owner_id, actorId, or recordIds scalar fields for normalized relationships. Use relations and later write relation propertyName values such as lookup, owner, record, and actor.',
618
+ 'A unique pair such as record+actor already creates the indexed unique lookup; keep those fields out of indexes and index only other hot filters such as status+createdAt.',
619
+ 'If a reverse collection is needed later, add inversePropertyName only for a real parent detail/deep/count/sort use case.',
618
620
  ],
619
621
  },
620
622
  {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-examples.js","sourceRoot":"","sources":["../../src/lib/mcp-examples.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,gNAAgN;IAChN,mLAAmL;IACnL,oJAAoJ;IACpJ,uOAAuO;IACvO,iPAAiP;CAClP,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,cAAc,EAAE;QACd,KAAK,EAAE,+CAA+C;QACtD,OAAO,EAAE,uNAAuN;QAChO,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,wCAAwC;gBAC9C,IAAI,EAAE;;;;;;;;;;;;GAYX;gBACK,KAAK,EAAE;oBACL,oFAAoF;oBACpF,wEAAwE;oBACxE,2DAA2D;iBAC5D;aACF;YACD;gBACE,IAAI,EAAE,sCAAsC;gBAC5C,IAAI,EAAE;;;;;;;;;;;;;;;0BAeY;gBAClB,KAAK,EAAE;oBACL,mCAAmC;oBACnC,2JAA2J;iBAC5J;aACF;YACD;gBACE,IAAI,EAAE,0CAA0C;gBAChD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BZ;gBACM,KAAK,EAAE;oBACL,0FAA0F;oBAC1F,iFAAiF;oBACjF,8HAA8H;oBAC9H,kDAAkD;iBACnD;aACF;YACD;gBACE,IAAI,EAAE,uCAAuC;gBAC7C,IAAI,EAAE;;;;;;;;;6CAS+B;gBACrC,KAAK,EAAE;oBACL,4DAA4D;oBAC5D,uEAAuE;iBACxE;aACF;YACD;gBACE,IAAI,EAAE,+CAA+C;gBACrD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EX;gBACK,KAAK,EAAE;oBACL,gIAAgI;oBAChI,gHAAgH;oBAChH,2FAA2F;oBAC3F,0IAA0I;oBAC1I,uEAAuE;iBACxE;aACF;YACD;gBACE,IAAI,EAAE,iDAAiD;gBACvD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEZ;gBACM,KAAK,EAAE;oBACL,qGAAqG;oBACrG,oHAAoH;oBACpH,8FAA8F;oBAC9F,qHAAqH;iBACtH;aACF;YACD;gBACE,IAAI,EAAE,iDAAiD;gBACvD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA+EE;gBACR,KAAK,EAAE;oBACL,kGAAkG;oBAClG,gHAAgH;oBAChH,8GAA8G;oBAC9G,sHAAsH;oBACtH,uEAAuE;iBACxE;aACF;YACD;gBACE,IAAI,EAAE,8CAA8C;gBACpD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDZ;gBACM,KAAK,EAAE;oBACL,gEAAgE;oBAChE,gHAAgH;oBAChH,4FAA4F;oBAC5F,kDAAkD;iBACnD;aACF;YACD;gBACE,IAAI,EAAE,6BAA6B;gBACnC,IAAI,EAAE;;;;;;;;;;kDAUoC;gBAC1C,KAAK,EAAE;oBACL,gFAAgF;oBAChF,2FAA2F;oBAC3F,sHAAsH;oBACtH,+FAA+F;iBAChG;aACF;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE;;;;sCAIwB;gBAC9B,KAAK,EAAE;oBACL,4DAA4D;oBAC5D,gFAAgF;oBAChF,+GAA+G;oBAC/G,yHAAyH;iBAC1H;aACF;SACF;KACF;IACD,aAAa,EAAE;QACb,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,iFAAiF;QAC1F,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,6BAA6B;gBACnC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;GAsBX;gBACK,KAAK,EAAE;oBACL,kGAAkG;oBAClG,4IAA4I;oBAC5I,0IAA0I;oBAC1I,6EAA6E;oBAC7E,iJAAiJ;iBAClJ;aACF;YACD;gBACE,IAAI,EAAE,qCAAqC;gBAC3C,IAAI,EAAE;;;;2CAI6B;gBACnC,KAAK,EAAE;oBACL,+GAA+G;oBAC/G,0IAA0I;oBAC1I,iDAAiD;iBAClD;aACF;YACD;gBACE,IAAI,EAAE,wCAAwC;gBAC9C,IAAI,EAAE;;;;;;;;;;;;;;;;;GAiBX;gBACK,KAAK,EAAE;oBACL,uCAAuC;oBACvC,wDAAwD;oBACxD,mEAAmE;iBACpE;aACF;SACF;KACF;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,kDAAkD;QACzD,OAAO,EAAE,sDAAsD;QAC/D,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,kEAAkE;gBACxE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DX;gBACK,KAAK,EAAE;oBACL,wHAAwH;oBACxH,6PAA6P;oBAC7P,4NAA4N;oBAC5N,6KAA6K;oBAC7K,sLAAsL;iBACvL;aACF;YACD;gBACE,IAAI,EAAE,kCAAkC;gBACxC,IAAI,EAAE;;;;;;;;GAQX;gBACK,KAAK,EAAE;oBACL,qLAAqL;oBACrL,gEAAgE;oBAChE,qIAAqI;oBACrI,2EAA2E;iBAC5E;aACF;YACD;gBACE,IAAI,EAAE,0CAA0C;gBAChD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BX;gBACK,KAAK,EAAE;oBACL,4JAA4J;oBAC5J,oCAAoC;oBACpC,wIAAwI;oBACxI,uHAAuH;oBACvH,0MAA0M;oBAC1M,mKAAmK;oBACnK,+DAA+D;iBAChE;aACF;YACD;gBACE,IAAI,EAAE,2DAA2D;gBACjE,IAAI,EAAE;;;;;;;;;GASX;gBACK,KAAK,EAAE;oBACL,8HAA8H;oBAC9H,gMAAgM;oBAChM,4JAA4J;oBAC5J,wHAAwH;oBACxH,uGAAuG;iBACxG;aACF;YACD;gBACE,IAAI,EAAE,6DAA6D;gBACnE,IAAI,EAAE;;;;;;;;GAQX;gBACK,KAAK,EAAE;oBACL,mHAAmH;oBACnH,oHAAoH;oBACpH,qHAAqH;iBACtH;aACF;YACD;gBACE,IAAI,EAAE,2CAA2C;gBACjD,IAAI,EAAE;;;;;;;;;;;;;;;;GAgBX;gBACK,KAAK,EAAE;oBACL,mFAAmF;oBACnF,uJAAuJ;oBACvJ,0HAA0H;oBAC1H,4EAA4E;iBAC7E;aACF;YACD;gBACE,IAAI,EAAE,2CAA2C;gBACjD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BX;gBACK,KAAK,EAAE;oBACL,iFAAiF;oBACjF,iMAAiM;oBACjM,wHAAwH;oBACxH,sFAAsF;iBACvF;aACF;YACD;gBACE,IAAI,EAAE,uCAAuC;gBAC7C,IAAI,EAAE;;;;;;;;;;;;;;;GAeX;gBACK,KAAK,EAAE;oBACL,gIAAgI;oBAChI,qIAAqI;oBACrI,yEAAyE;oBACzE,4EAA4E;iBAC7E;aACF;SACF;KACF;IACD,cAAc,EAAE;QACd,KAAK,EAAE,+DAA+D;QACtE,OAAO,EAAE,+HAA+H;QACxI,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,8CAA8C;gBACpD,IAAI,EAAE;;;;;GAKX;gBACK,KAAK,EAAE;oBACL,wHAAwH;oBACxH,kGAAkG;oBAClG,kDAAkD;oBAClD,uHAAuH;iBACxH;aACF;YACD;gBACE,IAAI,EAAE,6CAA6C;gBACnD,IAAI,EAAE;;;;GAIX;gBACK,KAAK,EAAE;oBACL,yGAAyG;oBACzG,kGAAkG;oBAClG,mFAAmF;oBACnF,yHAAyH;oBACzH,kHAAkH;iBACnH;aACF;YACD;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,IAAI,EAAE;;;;;;;yEAO2D;gBACjE,KAAK,EAAE;oBACL,8CAA8C;oBAC9C,oFAAoF;oBACpF,oHAAoH;iBACrH;aACF;YACD;gBACE,IAAI,EAAE,gCAAgC;gBACtC,IAAI,EAAE;;;;;;;;;GASX;gBACK,KAAK,EAAE;oBACL,wEAAwE;oBACxE,yDAAyD;oBACzD,2CAA2C;iBAC5C;aACF;YACD;gBACE,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE;;;;;;;;;;GAUX;gBACK,KAAK,EAAE;oBACL,8FAA8F;oBAC9F,+HAA+H;oBAC/H,sHAAsH;oBACtH,2EAA2E;iBAC5E;aACF;YACD;gBACE,IAAI,EAAE,gCAAgC;gBACtC,IAAI,EAAE;;;;;;;;;;;;;;;;;;GAkBX;gBACK,KAAK,EAAE;oBACL,+IAA+I;oBAC/I,0IAA0I;oBAC1I,4EAA4E;oBAC5E,kIAAkI;iBACnI;aACF;YACD;gBACE,IAAI,EAAE,6BAA6B;gBACnC,IAAI,EAAE;;;;;;;;;;;;;GAaX;gBACK,KAAK,EAAE;oBACL,uGAAuG;oBACvG,yHAAyH;oBACzH,wFAAwF;oBACxF,+EAA+E;oBAC/E,8LAA8L;oBAC9L,+HAA+H;oBAC/H,4CAA4C;oBAC5C,uEAAuE;oBACvE,kFAAkF;iBACnF;aACF;YACD;gBACE,IAAI,EAAE,+CAA+C;gBACrD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;iCAsBmB;gBACzB,KAAK,EAAE;oBACL,sJAAsJ;oBACtJ,wFAAwF;oBACxF,gIAAgI;oBAChI,qHAAqH;oBACrH,kIAAkI;oBAClI,4FAA4F;oBAC5F,2IAA2I;iBAC5I;aACF;YACD;gBACE,IAAI,EAAE,wCAAwC;gBAC9C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;GAuBX;gBACK,KAAK,EAAE;oBACL,sEAAsE;oBACtE,0DAA0D;oBAC1D,0GAA0G;oBAC1G,kDAAkD;iBACnD;aACF;SACF;KACF;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,2DAA2D;QAClE,OAAO,EAAE,+DAA+D;QACxE,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,mDAAmD;gBACzD,IAAI,EAAE;;;;;;;;;;GAUX;gBACK,KAAK,EAAE;oBACL,+DAA+D;oBAC/D,4JAA4J;oBAC5J,4GAA4G;oBAC5G,wFAAwF;iBACzF;aACF;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,IAAI,EAAE;;;;;;;;;;;;;;;;;;gCAkBkB;gBACxB,KAAK,EAAE;oBACL,uDAAuD;oBACvD,qCAAqC;oBACrC,kDAAkD;iBACnD;aACF;YACD;gBACE,IAAI,EAAE,2BAA2B;gBACjC,IAAI,EAAE;;;;;;;;;UASJ;gBACF,KAAK,EAAE;oBACL,+DAA+D;oBAC/D,kDAAkD;oBAClD,sLAAsL;iBACvL;aACF;YACD;gBACE,IAAI,EAAE,kCAAkC;gBACxC,IAAI,EAAE;;;;;;;;;;;;;GAaX;gBACK,KAAK,EAAE;oBACL,iEAAiE;oBACjE,+GAA+G;oBAC/G,gFAAgF;oBAChF,gHAAgH;oBAChH,yGAAyG;oBACzG,gDAAgD;iBACjD;aACF;YACD;gBACE,IAAI,EAAE,gDAAgD;gBACtD,IAAI,EAAE;;;;;;;;;;GAUX;gBACK,KAAK,EAAE;oBACL,gGAAgG;oBAChG,gHAAgH;oBAChH,0EAA0E;iBAC3E;aACF;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,IAAI,EAAE;;;;;;;;;;;;;;;;;;GAkBX;gBACK,KAAK,EAAE;oBACL,4GAA4G;oBAC5G,+CAA+C;oBAC/C,6DAA6D;iBAC9D;aACF;SACF;KACF;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,qEAAqE;QAC5E,OAAO,EAAE,wEAAwE;QACjF,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,4CAA4C;gBAClD,IAAI,EAAE;;;;;;;;;;;GAWX;gBACK,KAAK,EAAE;oBACL,wKAAwK;oBACxK,4KAA4K;oBAC5K,wHAAwH;oBACxH,qDAAqD;iBACtD;aACF;YACD;gBACE,IAAI,EAAE,+BAA+B;gBACrC,IAAI,EAAE;;;GAGX;gBACK,KAAK,EAAE;oBACL,iIAAiI;oBACjI,6FAA6F;oBAC7F,wDAAwD;iBACzD;aACF;YACD;gBACE,IAAI,EAAE,qCAAqC;gBAC3C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;GAsBX;gBACK,KAAK,EAAE;oBACL,sFAAsF;oBACtF,oDAAoD;oBACpD,kGAAkG;iBACnG;aACF;YACD;gBACE,IAAI,EAAE,gCAAgC;gBACtC,IAAI,EAAE;;;;;;;;;;;;;GAaX;gBACK,KAAK,EAAE;oBACL,oGAAoG;oBACpG,uGAAuG;oBACvG,mGAAmG;iBACpG;aACF;YACD;gBACE,IAAI,EAAE,4CAA4C;gBAClD,IAAI,EAAE;;;;;;;;;;;;;GAaX;gBACK,KAAK,EAAE;oBACL,0FAA0F;oBAC1F,mFAAmF;oBACnF,8EAA8E;iBAC/E;aACF;YACD;gBACE,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE;;;;;;GAMX;gBACK,KAAK,EAAE;oBACL,2DAA2D;oBAC3D,2EAA2E;oBAC3E,iFAAiF;iBAClF;aACF;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,IAAI,EAAE;;;;;;;;;GASX;gBACK,KAAK,EAAE;oBACL,+CAA+C;oBAC/C,kDAAkD;iBACnD;aACF;YACD;gBACE,IAAI,EAAE,2CAA2C;gBACjD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAyDJ;gBACF,KAAK,EAAE;oBACL,uDAAuD;oBACvD,4KAA4K;oBAC5K,6FAA6F;oBAC7F,kHAAkH;oBAClH,gMAAgM;oBAChM,6GAA6G;iBAC9G;aACF;SACF;KACF;IACD,SAAS,EAAE;QACT,KAAK,EAAE,2DAA2D;QAClE,OAAO,EAAE,sCAAsC;QAC/C,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,8CAA8C;gBACpD,IAAI,EAAE;;;;;;GAMX;gBACK,KAAK,EAAE;oBACL,mCAAmC;oBACnC,kFAAkF;oBAClF,6DAA6D;iBAC9D;aACF;YACD;gBACE,IAAI,EAAE,4CAA4C;gBAClD,IAAI,EAAE;;;;;;kDAMoC;gBAC1C,KAAK,EAAE;oBACL,kDAAkD;oBAClD,oFAAoF;iBACrF;aACF;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE;;;;;;;;;;;;;;iDAcmC;gBACzC,KAAK,EAAE;oBACL,+CAA+C;oBAC/C,uGAAuG;oBACvG,wDAAwD;oBACxD,uFAAuF;iBACxF;aACF;YACD;gBACE,IAAI,EAAE,wDAAwD;gBAC9D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAiCe;gBACrB,KAAK,EAAE;oBACL,mFAAmF;oBACnF,wJAAwJ;oBACxJ,0DAA0D;oBAC1D,0KAA0K;iBAC3K;aACF;SACF;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,wDAAwD;QACjE,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,sCAAsC;gBAC5C,IAAI,EAAE;;;;;EAKZ;gBACM,KAAK,EAAE;oBACL,yDAAyD;oBACzD,0DAA0D;iBAC3D;aACF;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE;mCACqB;gBAC3B,KAAK,EAAE;oBACL,8CAA8C;oBAC9C,8CAA8C;iBAC/C;aACF;YACD;gBACE,IAAI,EAAE,kDAAkD;gBACxD,IAAI,EAAE;;;;;;;;;EASZ;gBACM,KAAK,EAAE;oBACL,iGAAiG;oBACjG,gEAAgE;oBAChE,mGAAmG;oBACnG,kJAAkJ;iBACnJ;aACF;YACD;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,IAAI,EAAE;;;;EAIZ;gBACM,KAAK,EAAE;oBACL,uDAAuD;oBACvD,sCAAsC;iBACvC;aACF;YACD;gBACE,IAAI,EAAE,wCAAwC;gBAC9C,IAAI,EAAE;;;;;;;kDAOoC;gBAC1C,KAAK,EAAE;oBACL,0DAA0D;oBAC1D,uGAAuG;iBACxG;aACF;SACF;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,6CAA6C;QACpD,OAAO,EAAE,wDAAwD;QACjE,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,4BAA4B;gBAClC,IAAI,EAAE;;;;;;;;;6BASe;gBACrB,KAAK,EAAE;oBACL,gDAAgD;oBAChD,4EAA4E;iBAC7E;aACF;YACD;gBACE,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE;;;;;;;;;;;aAWD;gBACL,KAAK,EAAE;oBACL,0DAA0D;oBAC1D,gIAAgI;oBAChI,6IAA6I;oBAC7I,yGAAyG;oBACzG,qFAAqF;iBACtF;aACF;SACF;KACF;IACD,UAAU,EAAE;QACV,KAAK,EAAE,kCAAkC;QACzC,OAAO,EAAE,iJAAiJ;QAC1J,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,qCAAqC;gBAC3C,IAAI,EAAE;;;;;;;;;;;;GAYX;gBACK,KAAK,EAAE;oBACL,sEAAsE;oBACtE,uHAAuH;oBACvH,4EAA4E;oBAC5E,2CAA2C;oBAC3C,mFAAmF;iBACpF;aACF;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBX;gBACK,KAAK,EAAE;oBACL,uKAAuK;oBACvK,uDAAuD;oBACvD,mCAAmC;oBACnC,+EAA+E;oBAC/E,uGAAuG;oBACvG,0SAA0S;oBAC1S,gMAAgM;oBAChM,qKAAqK;oBACrK,6HAA6H;oBAC7H,wJAAwJ;oBACxJ,8IAA8I;oBAC9I,kIAAkI;oBAClI,mJAAmJ;oBACnJ,qKAAqK;oBACrK,qIAAqI;oBACrI,6KAA6K;oBAC7K,wLAAwL;iBACzL;aACF;YACD;gBACE,IAAI,EAAE,sCAAsC;gBAC5C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDX;gBACK,KAAK,EAAE;oBACL,2JAA2J;oBAC3J,qHAAqH;oBACrH,8EAA8E;oBAC9E,+IAA+I;oBAC/I,kHAAkH;oBAClH,+IAA+I;oBAC/I,0JAA0J;oBAC1J,2IAA2I;oBAC3I,wLAAwL;iBACzL;aACF;YACD;gBACE,IAAI,EAAE,4DAA4D;gBAClE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFX;gBACK,KAAK,EAAE;oBACL,wIAAwI;oBACxI,wIAAwI;oBACxI,+JAA+J;oBAC/J,wJAAwJ;oBACxJ,iJAAiJ;oBACjJ,mLAAmL;oBACnL,wIAAwI;oBACxI,0JAA0J;oBAC1J,6IAA6I;oBAC7I,4GAA4G;oBAC5G,8JAA8J;iBAC/J;aACF;YACD;gBACE,IAAI,EAAE,yDAAyD;gBAC/D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8IX;gBACK,KAAK,EAAE;oBACL,4IAA4I;oBAC5I,gLAAgL;oBAChL,oJAAoJ;oBACpJ,qLAAqL;oBACrL,iOAAiO;oBACjO,oMAAoM;oBACpM,+IAA+I;iBAChJ;aACF;YACD;gBACE,IAAI,EAAE,2CAA2C;gBACjD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA+BJ;gBACF,KAAK,EAAE;oBACL,+HAA+H;oBAC/H,uKAAuK;oBACvK,6IAA6I;oBAC7I,0JAA0J;oBAC1J,8IAA8I;oBAC9I,mIAAmI;oBACnI,qHAAqH;iBACtH;aACF;YACD;gBACE,IAAI,EAAE,wCAAwC;gBAC9C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA0CJ;gBACF,KAAK,EAAE;oBACL,6FAA6F;oBAC7F,8JAA8J;oBAC9J,oIAAoI;oBACpI,sGAAsG;oBACtG,uGAAuG;oBACvG,kIAAkI;oBAClI,qGAAqG;iBACtG;aACF;YACD;gBACE,IAAI,EAAE,8EAA8E;gBACpF,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;wGAoB0F;gBAChG,KAAK,EAAE;oBACL,oFAAoF;oBACpF,2FAA2F;oBAC3F,2GAA2G;oBAC3G,mDAAmD;iBACpD;aACF;YACD;gBACE,IAAI,EAAE,2CAA2C;gBACjD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;oGAuBsF;gBAC5F,KAAK,EAAE;oBACL,8DAA8D;oBAC9D,8IAA8I;oBAC9I,+HAA+H;oBAC/H,sFAAsF;oBACtF,4CAA4C;oBAC5C,4IAA4I;oBAC5I,6GAA6G;oBAC7G,sJAAsJ;oBACtJ,8HAA8H;oBAC9H,sFAAsF;oBACtF,qFAAqF;iBACtF;aACF;YACD;gBACE,IAAI,EAAE,+BAA+B;gBACrC,IAAI,EAAE;;;;;;;;;;;;;;YAcF;gBACJ,KAAK,EAAE;oBACL,6CAA6C;oBAC7C,2EAA2E;oBAC3E,wGAAwG;oBACxG,gFAAgF;iBACjF;aACF;YACD;gBACE,IAAI,EAAE,yCAAyC;gBAC/C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;YAoBF;gBACJ,KAAK,EAAE;oBACL,gJAAgJ;oBAChJ,uJAAuJ;oBACvJ,+IAA+I;oBAC/I,8FAA8F;oBAC9F,iHAAiH;oBACjH,kFAAkF;iBACnF;aACF;YACD;gBACE,IAAI,EAAE,uCAAuC;gBAC7C,IAAI,EAAE;;;;;;;;UAQJ;gBACF,KAAK,EAAE;oBACL,wEAAwE;oBACxE,uGAAuG;iBACxG;aACF;YACD;gBACE,IAAI,EAAE,gDAAgD;gBACtD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;YAmBF;gBACJ,KAAK,EAAE;oBACL,6DAA6D;oBAC7D,+DAA+D;oBAC/D,yEAAyE;oBACzE,iGAAiG;iBAClG;aACF;YACD;gBACE,IAAI,EAAE,6CAA6C;gBACnD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAwCJ;gBACF,KAAK,EAAE;oBACL,kDAAkD;oBAClD,4CAA4C;oBAC5C,mEAAmE;oBACnE,2KAA2K;oBAC3K,sJAAsJ;oBACtJ,6IAA6I;iBAC9I;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,GAAG;QACH,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAQ;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,cAAc,EAAE,uBAAuB;YACvC,UAAU,EAAE,qBAAqB,EAAE;YACnC,IAAI,EAAE,6FAA6F;SACpG,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,6BAA6B,QAAQ,GAAG;YAC/C,UAAU,EAAE,qBAAqB,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,cAAc,EAAE,uBAAuB;QACvC,GAAG,KAAK;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mcp-examples.js","sourceRoot":"","sources":["../../src/lib/mcp-examples.ts"],"names":[],"mappings":"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"}
@@ -22,13 +22,13 @@ export function buildMcpServerInstructions(apiBaseUrl) {
22
22
  '',
23
23
  '### Work Flow',
24
24
  '- For a quick target/base sanity check, call `get_enfyra_api_context`; do not call broad discovery just to confirm which instance this MCP is connected to.',
25
- '- When the task intent is clear but the right tool path is not, call `discover_enfyra_workflows` with the intent, risk, and optional surface. Use `detail: "plan"` before writes to get firstTools, required acknowledgements, verify tools, and avoidTools.',
25
+ '- When the task intent is clear but the right tool path is not, call `discover_enfyra_workflows` with the intent, risk, and optional surface. Use `detail: "plan"` before writes and follow `primaryPath` in order; do not choose from the flat tool list first.',
26
26
  '- Discover before deciding. For architecture/capability questions call `discover_enfyra_system`; for DB/pk/runtime/cache context call `discover_runtime_context`; for filters/deep/sort/relation query shape call `discover_query_capabilities`. Run broad discovery tools sequentially, not in parallel.',
27
27
  '- Inspect narrowly. Use `inspect_table`, `inspect_route`, `inspect_feature`, and DB-backed runtime zone tools for the table/route/feature/surface being changed instead of loading broad metadata.',
28
- '- For DB-backed runtime artifacts not visible in repo search, use `search_runtime_zone`: `mode: "search"` first, then `mode: "inspect"` with `nextInspect.input`. Key zones: `admin_ui`, `api_runtime`, `flow_runtime`, `websocket_runtime`, `graphql_runtime`, `schema_data`, `package_runtime`, `storage_file`, `auth_security`.',
28
+ '- For DB-backed runtime artifacts, use `search_runtime_zone`: search first, then inspect with `nextInspect.input`. Zones: `admin_ui`, `api_runtime`, `flow_runtime`, `websocket_runtime`, `graphql_runtime`, `schema_data`, `package_runtime`, `storage_file`, `auth_security`.',
29
29
  '- Load examples only when needed. Use `get_enfyra_examples` by category. Before extension UI, call `get_extension_theme_contract`; call `get_theme_class_reference` for exact eapp/Nuxt UI theme classes.',
30
30
  '- For server scripts, call `discover_script_contexts` before writing or reviewing handler/hook/flow/websocket/GraphQL logic.',
31
- '- Before mutating metadata, schema, routes, permissions, menus, packages, cache state, dynamic code, or extension UI, call `get_enfyra_required_knowledge`, read the global rules, and pass `globalRulesAckKey` into write tools. Dynamic server code also requires `dynamicCodeAckKey`; extension code also requires `extensionAckKey`.',
31
+ '- Before mutating metadata, schema, routes, permissions, menus, packages, cache state, dynamic code, or extension UI, call `get_enfyra_required_knowledge` and pass `globalRulesAckKey`. Dynamic code also needs `dynamicCodeAckKey`; extension code needs `extensionAckKey`.',
32
32
  '- With non-root API tokens, call `get_permission_profile` before relying on admin helper tools or when debugging 403s. MCP admin helpers require ordinary route permissions for static admin routes such as `/admin/script/validate`, `/admin/test/run`, `/admin/flow/trigger/:id`, and `/admin/reload/*`.',
33
33
  '- Prefer the most specific business operation tool over raw metadata CRUD. `discover_enfyra_workflows` provides the current operation-tool map and negative-routing avoidTools.',
34
34
  '- Before saving standalone dynamic script code, call `validate_dynamic_script` unless the chosen write tool already validates the code. For extension edits, prefer `update_extension_code`, `extension_workflow`, or `ensure_*_extension`; these validate and save atomically. Use `validate_extension_code` only for validation-only checks.',
@@ -41,12 +41,13 @@ export function buildMcpServerInstructions(apiBaseUrl) {
41
41
  '- `query_table`, `get_all_routes`, and `get_all_tables` require explicit intent: pass `limit` for bounded reads or `all: true` for a complete list. Do not invent arbitrary limits such as 30 or 50.',
42
42
  '- Read tools are minimal by default. Pass explicit `fields`; use metadata inspection before guessing field/relation names. Field exclusion mode exists: `fields=-compiledCode`, and `fields=id,-compiledCode` still means all readable fields except `compiledCode`.',
43
43
  '- Mutations return ids/status by default. Re-read with `find_one_record` or `query_table` and explicit `fields` when the saved row matters.',
44
+ '- `create_record` is one JSON object with live-metadata preflight. For multi-row seeding, use `create_records`; it preflights the array, then posts sequentially.',
44
45
  '- Dynamic repository reads use `filter`, not `where`: `@REPOS.table.find({ filter: {...} })`, `@REPOS.secure.table.find({ filter: {...} })`, `#table.find({ filter: {...} })`, and `exists(filter)`.',
45
46
  '- Dynamic repositories have two trust paths. Use secure `@REPOS.main` or `@REPOS.secure.<table>` for user-facing data. `@REPOS.<table>` is trusted/internal and can see hidden fields; never return raw trusted rows to users.',
46
47
  '- Secure repository choice is not a substitute for authorization. Handlers and hooks still need route access, owner/tenant filters, and explicit checks before returning or mutating records.',
47
48
  '- Filters, sort helpers, counts, and aggregates over unpublished fields/private relations are sensitive data surfaces; do not expose them in user-facing endpoints.',
48
49
  '- Use `enfyra_user` as the user table. Model record links as real relations using relation `propertyName` values, not physical FK fields like `userId`, `conversationId`, `senderId`, or `memberId` in generated DB code.',
49
- '- Schema column types come from live `enfyra_column.type`; before large schema generation, read required knowledge and `get_enfyra_examples({ category: "schema-relations" })`. Do not invent SQL dialect types such as `json`, `jsonb`, `longtext`, or `decimal` unless live metadata lists them.',
50
+ '- Before schema/app generation, call `get_schema_design_context`; it returns live column types, table/column/relation input attributes, constraint shape, and creation order. Do not invent SQL dialect types unless liveColumnTypes lists them.',
50
51
  '- Relation design must stay minimal. Create the owning relation needed for writes/filters first; add `inversePropertyName` only when a concrete response, UI, deep query, aggregate sort/count, or parent-to-child traversal will use that reverse field. For schema work, explicitly review existing relations and mention which inverses are intentionally present or intentionally omitted.',
51
52
  '- Do not call internal/no-route system tables such as `enfyra_column` or `enfyra_session` through generic CRUD. Use table/column/relation tools and route-backed tables discovered from metadata.',
52
53
  '- Custom API paths use `api_endpoint_workflow` when a handler is needed and the model should follow returned nextSteps. Use lower-level `create_route` without `mainTableId` only when intentionally creating a route shell; `create_table` is only for new persisted data.',
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-instructions.js","sourceRoot":"","sources":["../../src/lib/mcp-instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,UAAU;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO;QACL,cAAc,EAAE,GAAG,IAAI,UAAU;QACjC,gBAAgB,EAAE,GAAG,IAAI,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,UAAU;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE1E,OAAO;QACL,eAAe;QACf,EAAE;QACF,gCAAgC,IAAI,KAAK;QACzC,wBAAwB,cAAc,YAAY,gBAAgB,KAAK;QACvE,EAAE;QACF,eAAe;QACf,6JAA6J;QAC7J,8PAA8P;QAC9P,2SAA2S;QAC3S,oMAAoM;QACpM,oUAAoU;QACpU,2MAA2M;QAC3M,8HAA8H;QAC9H,0UAA0U;QAC1U,4SAA4S;QAC5S,iLAAiL;QACjL,gVAAgV;QAChV,oKAAoK;QACpK,+LAA+L;QAC/L,wJAAwJ;QACxJ,EAAE;QACF,oBAAoB;QACpB,4KAA4K;QAC5K,sMAAsM;QACtM,sQAAsQ;QACtQ,6IAA6I;QAC7I,sMAAsM;QACtM,gOAAgO;QAChO,+LAA+L;QAC/L,qKAAqK;QACrK,2NAA2N;QAC3N,oSAAoS;QACpS,gYAAgY;QAChY,mMAAmM;QACnM,6QAA6Q;QAC7Q,iRAAiR;QACjR,6bAA6b;QAC7b,sOAAsO;QACtO,kIAAkI;QAClI,4GAA4G;QAC5G,oPAAoP;QACpP,6RAA6R;QAC7R,yKAAyK;QACzK,yMAAyM;QACzM,EAAE;QACF,6BAA6B;QAC7B,4NAA4N;QAC5N,uMAAuM;QACvM,sMAAsM;QACtM,EAAE;QACF,4BAA4B;QAC5B,6WAA6W;QAC7W,+PAA+P;QAC/P,EAAE;QACF,yBAAyB;QACzB,kNAAkN;QAClN,idAAid;QACjd,6VAA6V;QAC7V,EAAE;QACF,uIAAuI;KACxI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"mcp-instructions.js","sourceRoot":"","sources":["../../src/lib/mcp-instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,UAAU;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO;QACL,cAAc,EAAE,GAAG,IAAI,UAAU;QACjC,gBAAgB,EAAE,GAAG,IAAI,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,UAAU;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE1E,OAAO;QACL,eAAe;QACf,EAAE;QACF,gCAAgC,IAAI,KAAK;QACzC,wBAAwB,cAAc,YAAY,gBAAgB,KAAK;QACvE,EAAE;QACF,eAAe;QACf,6JAA6J;QAC7J,kQAAkQ;QAClQ,2SAA2S;QAC3S,oMAAoM;QACpM,iRAAiR;QACjR,2MAA2M;QAC3M,8HAA8H;QAC9H,+QAA+Q;QAC/Q,4SAA4S;QAC5S,iLAAiL;QACjL,gVAAgV;QAChV,oKAAoK;QACpK,+LAA+L;QAC/L,wJAAwJ;QACxJ,EAAE;QACF,oBAAoB;QACpB,4KAA4K;QAC5K,sMAAsM;QACtM,sQAAsQ;QACtQ,6IAA6I;QAC7I,mKAAmK;QACnK,sMAAsM;QACtM,gOAAgO;QAChO,+LAA+L;QAC/L,qKAAqK;QACrK,2NAA2N;QAC3N,kPAAkP;QAClP,gYAAgY;QAChY,mMAAmM;QACnM,6QAA6Q;QAC7Q,iRAAiR;QACjR,6bAA6b;QAC7b,sOAAsO;QACtO,kIAAkI;QAClI,4GAA4G;QAC5G,oPAAoP;QACpP,6RAA6R;QAC7R,yKAAyK;QACzK,yMAAyM;QACzM,EAAE;QACF,6BAA6B;QAC7B,4NAA4N;QAC5N,uMAAuM;QACvM,sMAAsM;QACtM,EAAE;QACF,4BAA4B;QAC5B,6WAA6W;QAC7W,+PAA+P;QAC/P,EAAE;QACF,yBAAyB;QACzB,kNAAkN;QAClN,idAAid;QACjd,6VAA6V;QAC7V,EAAE;QACF,uIAAuI;KACxI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export declare function parseRecordData(data: any): any;
2
+ export declare function parseRecordBatchData(data: any): any[];
2
3
  export declare function getAllowedMutationFields(table: any): Set<any>;
3
4
  export declare function validatePayloadFields(table: any, payload: any): void;
4
5
  export declare function rejectUnsafeScriptPayload(tableName: any, payload: any): void;
@@ -31,3 +32,13 @@ export declare function prepareRecordMutation({ fetchAPI, apiUrl, tables, tableN
31
32
  reason?: undefined;
32
33
  };
33
34
  }>;
35
+ export declare function prepareRecordBatchMutation({ fetchAPI, apiUrl, tables, tableName, records }: {
36
+ fetchAPI: any;
37
+ apiUrl: any;
38
+ tables: any;
39
+ tableName: any;
40
+ records: any;
41
+ }): Promise<{
42
+ table: any;
43
+ records: any[];
44
+ }>;
@@ -30,10 +30,25 @@ const FORBIDDEN_RELATION_DEFINITION_KEYS = new Set([
30
30
  export function parseRecordData(data) {
31
31
  const parsed = typeof data === 'string' ? JSON.parse(data) : data;
32
32
  if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
33
- throw new Error('Record data must be a JSON object string.');
33
+ throw new Error('Record data must be a single JSON object string. For multiple records, use create_records with a JSON array; create_record intentionally rejects arrays so one-record writes stay explicit.');
34
34
  }
35
35
  return parsed;
36
36
  }
37
+ export function parseRecordBatchData(data) {
38
+ const parsed = typeof data === 'string' ? JSON.parse(data) : data;
39
+ if (!Array.isArray(parsed)) {
40
+ throw new Error('Batch record data must be a JSON array string. For one record, use create_record with a single JSON object.');
41
+ }
42
+ if (parsed.length === 0) {
43
+ throw new Error('Batch record data must include at least one record.');
44
+ }
45
+ parsed.forEach((record, index) => {
46
+ if (!record || typeof record !== 'object' || Array.isArray(record)) {
47
+ throw new Error(`Batch record at index ${index} must be a JSON object.`);
48
+ }
49
+ });
50
+ return parsed;
51
+ }
37
52
  export function getAllowedMutationFields(table) {
38
53
  const columns = (table?.columns || []).map((column) => column.name).filter(Boolean);
39
54
  const relations = (table?.relations || []).map((relation) => relation.propertyName).filter(Boolean);
@@ -59,10 +74,12 @@ export function validatePayloadFields(table, payload) {
59
74
  })
60
75
  .filter(Boolean);
61
76
  throw new Error(`Payload contains fields not present in metadata for ${table.name}: ${unknown.join(', ')}. ` +
62
- `Use metadata-backed columns and relation propertyName values only. Known fields: ${[...allowed].sort().join(', ')}. ` +
77
+ `This MCP already validated the payload against live metadata before sending it to Enfyra, so do not retry the same shape. ` +
78
+ `Use only these metadata-backed columns and relation propertyName values: ${[...allowed].sort().join(', ')}. ` +
63
79
  (relationHints.length
64
80
  ? `Relation hint(s): ${relationHints.join('; ')}. `
65
81
  : '') +
82
+ `Call inspect_table({ tableName: "${table.name}" }) if you need full column types, enum options, or relation targets. ` +
66
83
  'If this value links to another record, create/use an Enfyra relation and mutate the relation propertyName; Enfyra hides derived FK columns from app schema/forms.');
67
84
  }
68
85
  }
@@ -120,4 +137,31 @@ export async function prepareRecordMutation({ fetchAPI, apiUrl, tables, tableNam
120
137
  scriptValidation,
121
138
  };
122
139
  }
140
+ export async function prepareRecordBatchMutation({ fetchAPI, apiUrl, tables, tableName, records }) {
141
+ const parsedRecords = parseRecordBatchData(records);
142
+ const table = tables.find((item) => item?.name === tableName || item?.alias === tableName);
143
+ if (!table)
144
+ throw new Error(`Unknown table "${tableName}"`);
145
+ const preparedRecords = [];
146
+ for (const [index, payload] of parsedRecords.entries()) {
147
+ try {
148
+ validatePayloadFields(table, payload);
149
+ rejectUnsafeScriptPayload(table.name, payload);
150
+ rejectUnsafeRelationDefinitionPayload(table.name, payload);
151
+ const scriptValidation = await validateScriptSourceIfPresent(fetchAPI, apiUrl, table.name, payload);
152
+ preparedRecords.push({
153
+ index,
154
+ payload,
155
+ scriptValidation,
156
+ });
157
+ }
158
+ catch (error) {
159
+ throw new Error(`Record batch preflight failed at index ${index}: ${error?.message || String(error)}`);
160
+ }
161
+ }
162
+ return {
163
+ table,
164
+ records: preparedRecords,
165
+ };
166
+ }
123
167
  //# sourceMappingURL=mutation-guards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-guards.js","sourceRoot":"","sources":["../../src/lib/mutation-guards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation-guards.js","sourceRoot":"","sources":["../../src/lib/mutation-guards.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const GLOBAL_RULES_ACK_KEY = "EFYRA::GLOBAL-RULES::RUNTIME-ZONES::SCHEMA-DESIGN::20260703D";
1
+ export declare const GLOBAL_RULES_ACK_KEY = "EFYRA::GLOBAL-RULES::RUNTIME-ZONES::SCHEMA-DESIGN-CONTEXT::RECORD-BATCH::20260703F";
2
2
  export declare const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = "EFYRA::SECURE-REPO-CONTRACT::R9x-kelp-42Q::NO-RAW-TRUSTED";
3
3
  export declare const EXTENSION_KNOWLEDGE_ACK_KEY = "EFYRA::EXTENSION-THEME-CONTRACT::VIOLET-IS-NOT-A-PLAN::7mQ";
4
4
  export declare function globalRulesAckParam(z: any): any;
@@ -1,7 +1,7 @@
1
- export const GLOBAL_RULES_ACK_KEY = 'EFYRA::GLOBAL-RULES::RUNTIME-ZONES::SCHEMA-DESIGN::20260703D';
1
+ export const GLOBAL_RULES_ACK_KEY = 'EFYRA::GLOBAL-RULES::RUNTIME-ZONES::SCHEMA-DESIGN-CONTEXT::RECORD-BATCH::20260703F';
2
2
  export const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = 'EFYRA::SECURE-REPO-CONTRACT::R9x-kelp-42Q::NO-RAW-TRUSTED';
3
3
  export const EXTENSION_KNOWLEDGE_ACK_KEY = 'EFYRA::EXTENSION-THEME-CONTRACT::VIOLET-IS-NOT-A-PLAN::7mQ';
4
- const REQUIRED_KNOWLEDGE_VERSION = '2026-07-03.global-rules-v4-schema-design';
4
+ const REQUIRED_KNOWLEDGE_VERSION = '2026-07-03.global-rules-v6-record-batch';
5
5
  export function globalRulesAckParam(z) {
6
6
  return z.string().describe('Required global-rules acknowledgement key from get_enfyra_required_knowledge. Call that tool, read the global Enfyra MCP rules, then pass globalRulesAckKey exactly.');
7
7
  }
@@ -98,12 +98,14 @@ export function buildRequiredKnowledgePayload() {
98
98
  {
99
99
  id: 'schema-constraints',
100
100
  rules: [
101
- 'Before creating a multi-table app, call get_enfyra_examples with category=schema-relations and inspect live metadata for existing user/system tables.',
101
+ 'Before creating a multi-table app, call get_schema_design_context first. Use its liveColumnTypes, createTableInput, columnDefinitionInput, relationDefinitionInput, and recommendedSequence instead of guessing metadata attributes.',
102
+ 'Then call get_enfyra_examples with category=schema-relations only for reasoning patterns, not for domain-specific table names.',
102
103
  'Create entity tables with scalar columns first, then add relations once target tables exist. create_table can include relations only when the target table already exists.',
103
104
  'Use live Enfyra column types, not SQL dialect names. Common safe choices: varchar for short text, text/richtext for long prose, float for price/amount/rating/decimal-like values, int/bigint for counts, boolean, date/datetime/timestamp, enum, simple-json for structured objects/arrays when listed by live metadata, and code for source fields.',
104
105
  'Do not use json/jsonb/longtext/decimal unless the live enfyra_column.type enum lists them. The MCP schema tools normalize common aliases where possible and return schemaNormalization.',
105
106
  'Use Enfyra relations instead of scalar FK/id columns for normalized links. Do not create fields such as userId, course_id, categoryIds, authorId, or JSON arrays of related ids unless the user explicitly asks for denormalized snapshots.',
106
107
  'When inserting/updating records with relations, use relation propertyName values in the body, not hidden physical FK columns. Inspect the table to learn propertyName values.',
108
+ 'For record writes, create_record accepts one JSON object only. Use create_records for multi-row seeding; it validates every item against live metadata before posting each record sequentially.',
107
109
  'For table schema, a field that appears in any uniques group must not appear in indexes.',
108
110
  'A unique constraint already creates the indexed unique lookup for its fields.',
109
111
  'Use uniques for data integrity and indexes only for non-unique query-performance fields that are not already unique.',
@@ -1 +1 @@
1
- {"version":3,"file":"required-knowledge.js","sourceRoot":"","sources":["../../src/lib/required-knowledge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"required-knowledge.js","sourceRoot":"","sources":["../../src/lib/required-knowledge.ts"],"names":[],"mappings":"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"}
@@ -288,6 +288,36 @@ export function normalizeColumnsForLiveMetadata(columns, supportedTypes) {
288
288
  });
289
289
  return { columns: normalizedColumns, normalizations };
290
290
  }
291
+ function findMetadataTable(metadata, tableName) {
292
+ return normalizeTablesFromMetadata(metadata).find((table) => table?.name === tableName) || null;
293
+ }
294
+ function metadataColumnNames(metadata, tableName) {
295
+ return (findMetadataTable(metadata, tableName)?.columns || [])
296
+ .map((column) => column?.name)
297
+ .filter(Boolean);
298
+ }
299
+ function metadataColumnOptions(metadata, tableName, columnName) {
300
+ const column = (findMetadataTable(metadata, tableName)?.columns || [])
301
+ .find((item) => item?.name === columnName);
302
+ return parseColumnTypeOptions(column?.options);
303
+ }
304
+ function summarizeCreatedTableSchema(table, fallbackName) {
305
+ if (!table)
306
+ return null;
307
+ const columns = (table.columns || [])
308
+ .map((column) => column?.name)
309
+ .filter(Boolean);
310
+ const relations = (table.relations || [])
311
+ .map((relation) => relation?.propertyName)
312
+ .filter(Boolean);
313
+ return {
314
+ tableName: table.name || fallbackName,
315
+ primaryKey: (table.columns || []).find((column) => column?.isPrimary)?.name || null,
316
+ fields: [...columns, ...relations].sort(),
317
+ columns,
318
+ relations,
319
+ };
320
+ }
291
321
  function getPatchableColumns(columns = []) {
292
322
  return (columns || [])
293
323
  .filter((column) => getId(column) !== null)
@@ -602,6 +632,84 @@ export function registerTableTools(server, ENFYRA_API_URL) {
602
632
  detailHint: 'Use inspect_table with a table id/name for columns, relations, indexes, routes, permissions, and GraphQL state.',
603
633
  });
604
634
  });
635
+ server.tool('get_schema_design_context', [
636
+ 'Step-zero schema design guide for Enfyra table creation.',
637
+ 'Call this before creating a new app schema or multiple tables.',
638
+ 'It returns live column types, supported metadata attributes, relation types, constraint shape, and the exact creation sequence so the model does not guess SQL types or physical FK fields.',
639
+ ].join(' '), {}, async () => {
640
+ const metadata = await fetchAPI(ENFYRA_API_URL, '/metadata');
641
+ const liveColumnTypes = getSupportedColumnTypesFromMetadata(metadata);
642
+ const relationTypes = metadataColumnOptions(metadata, 'enfyra_relation', 'type');
643
+ const onDeleteOptions = metadataColumnOptions(metadata, 'enfyra_relation', 'onDelete');
644
+ const tableAttributes = metadataColumnNames(metadata, 'enfyra_table');
645
+ const columnAttributes = metadataColumnNames(metadata, 'enfyra_column');
646
+ const relationAttributes = metadataColumnNames(metadata, 'enfyra_relation');
647
+ const tables = normalizeTablesFromMetadata(metadata);
648
+ const primaryColumns = tables
649
+ .map((table) => (table?.columns || []).find((column) => column?.isPrimary || column?.name === 'id' || column?.name === '_id'))
650
+ .filter(Boolean);
651
+ const primaryColumnNames = [...new Set(primaryColumns.map((column) => column.name).filter(Boolean))];
652
+ const primaryColumnTypes = [...new Set(primaryColumns.map((column) => column.type).filter(Boolean))];
653
+ return jsonContent({
654
+ action: 'schema_design_context',
655
+ stepZero: 'Read this response before create_table/create_column/create_relation. Use these live attributes and types, not SQL dialect guesses.',
656
+ liveColumnTypes,
657
+ primaryKeyContext: {
658
+ observedPrimaryColumnNames: primaryColumnNames,
659
+ observedPrimaryColumnTypes: primaryColumnTypes,
660
+ createTableDefault: 'This MCP create_table currently auto-includes an int id primary key for the default SQL path. If live metadata uses _id/ObjectId, stop and verify backend support before bulk schema creation.',
661
+ },
662
+ createTableInput: {
663
+ directFields: ['name', 'description', 'isSingleRecord'],
664
+ cascadeFields: ['columns', 'relations'],
665
+ constraintFields: ['indexes', 'uniques'],
666
+ notAcceptedAtCreate: ['alias', 'graphqlEnabled'],
667
+ idColumn: 'create_table auto-includes an int id primary key; do not include your own id unless the user asks for custom primary-key behavior.',
668
+ },
669
+ columnDefinitionInput: {
670
+ allowedFields: ['name', 'type', 'isNullable', 'isUnique', 'isPublished', 'isUpdatable', 'isEncrypted', 'defaultValue', 'description', 'options'],
671
+ liveTypes: liveColumnTypes,
672
+ typeSelection: [
673
+ 'varchar: short text, labels, slugs, status strings.',
674
+ 'text/richtext: long prose.',
675
+ 'float: prices, amounts, ratings, percentages, decimal-like numbers unless liveTypes contains decimal.',
676
+ 'int/bigint: counts, ordering, integer quantities.',
677
+ 'boolean: true/false flags.',
678
+ 'date/datetime/timestamp: temporal fields.',
679
+ 'enum: constrained option strings when options are provided.',
680
+ 'simple-json: structured snapshots/arrays only when liveTypes contains simple-json.',
681
+ 'code: source-code fields.',
682
+ ],
683
+ forbiddenGuesses: ['json', 'jsonb', 'longtext', 'decimal'].filter((type) => !liveColumnTypes.includes(type)),
684
+ aliasNormalization: 'Schema tools normalize common aliases where possible and return schemaNormalization, but models should choose from liveTypes directly.',
685
+ },
686
+ relationDefinitionInput: {
687
+ allowedFields: ['targetTable', 'type', 'propertyName', 'inversePropertyName', 'mappedBy', 'isNullable', 'onDelete', 'description'],
688
+ relationTypes: relationTypes.length ? relationTypes : ['many-to-one', 'one-to-many', 'one-to-one', 'many-to-many'],
689
+ onDeleteOptions: onDeleteOptions.length ? onDeleteOptions : ['CASCADE', 'SET NULL', 'RESTRICT'],
690
+ forbiddenPhysicalFields: FORBIDDEN_RELATION_KEYS,
691
+ rule: 'Use relations for links between records. Do not create scalar FK columns such as userId, owner_id, categoryIds, or courseId unless the user explicitly wants denormalized snapshot data.',
692
+ },
693
+ constraints: {
694
+ indexes: 'JSON array of non-unique logical field groups, e.g. [["status","createdAt"]]. Relation propertyName values are allowed.',
695
+ uniques: 'JSON array of unique logical field groups, e.g. [["record","actor"]].',
696
+ uniqueIndexRule: 'Any field in uniques must not appear in indexes because unique constraints already create indexed lookups.',
697
+ },
698
+ recommendedSequence: [
699
+ '1. Name domain entities and decide which existing tables are reused, especially enfyra_user for users/owners/actors.',
700
+ '2. Create independent lookup/base tables first with scalar columns only.',
701
+ '3. Create dependent tables with scalar columns and relations whose target tables already exist.',
702
+ '4. Use create_relation after both tables exist when a relation could not be included during table creation.',
703
+ '5. Insert records using column names and relation propertyName values, never hidden FK columns.',
704
+ '6. Re-inspect each table with inspect_table before writing records or adding query examples.',
705
+ ],
706
+ liveMetadataAttributes: {
707
+ enfyra_table: tableAttributes,
708
+ enfyra_column: columnAttributes,
709
+ enfyra_relation: relationAttributes,
710
+ },
711
+ });
712
+ });
605
713
  // ─── CREATE TABLE ───
606
714
  server.tool('create_table', [
607
715
  'Create a new table definition with an auto-included `id` primary key column.',
@@ -653,6 +761,19 @@ export function registerTableTools(server, ENFYRA_API_URL) {
653
761
  });
654
762
  const createdTable = Array.isArray(result?.data) ? result.data[0] : result;
655
763
  const createdTableId = createdTable?.id ?? createdTable?._id;
764
+ const liveMetadataAfterCreate = await fetchAPI(ENFYRA_API_URL, `/metadata/${encodeURIComponent(name)}`)
765
+ .catch((error) => ({ error: error?.message || String(error) }));
766
+ const liveTableAfterCreate = liveMetadataAfterCreate?.error
767
+ ? null
768
+ : liveMetadataAfterCreate?.data?.table || liveMetadataAfterCreate?.data || liveMetadataAfterCreate?.table || liveMetadataAfterCreate;
769
+ const liveSchema = summarizeCreatedTableSchema(liveTableAfterCreate, name);
770
+ const intendedSchema = {
771
+ tableName: name,
772
+ primaryKey: idColumn.name,
773
+ fields: [idColumn.name, ...normalizedUserColumns.map((column) => column.name), ...userRelations.map((relation) => relation.propertyName)].filter(Boolean).sort(),
774
+ columns: [idColumn.name, ...normalizedUserColumns.map((column) => column.name)].filter(Boolean),
775
+ relations: userRelations.map((relation) => relation.propertyName).filter(Boolean),
776
+ };
656
777
  const base = ENFYRA_API_URL.replace(/\/$/, '');
657
778
  const routePath = `/${name}`;
658
779
  const restHint = [
@@ -680,6 +801,15 @@ export function registerTableTools(server, ENFYRA_API_URL) {
680
801
  uniqueGroupCount: uniques.length,
681
802
  },
682
803
  schemaNormalization: normalizations,
804
+ schema: {
805
+ intended: intendedSchema,
806
+ live: liveSchema,
807
+ liveMetadataAvailable: Boolean(liveSchema),
808
+ liveMetadataError: liveMetadataAfterCreate?.error || undefined,
809
+ guidance: liveSchema
810
+ ? 'Use schema.live.fields for record payload keys; relation property names are included with columns.'
811
+ : 'Use schema.intended.fields for planning, then call inspect_table before writing records if the server reload is not visible yet.',
812
+ },
683
813
  supportedColumnTypes: supportedTypes,
684
814
  rest: {
685
815
  base,