@autobe/agent 0.10.0 → 0.10.2

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 (52) hide show
  1. package/lib/constants/AutoBeSystemPromptConstant.d.ts +1 -0
  2. package/lib/constants/AutoBeSystemPromptConstant.js.map +1 -1
  3. package/lib/factory/createAutoBeApplication.js +0 -10
  4. package/lib/factory/createAutoBeApplication.js.map +1 -1
  5. package/lib/index.mjs +572 -860
  6. package/lib/index.mjs.map +1 -1
  7. package/lib/orchestrate/analyze/AutoBeAnalyzeAgent.js +0 -4
  8. package/lib/orchestrate/analyze/AutoBeAnalyzeAgent.js.map +1 -1
  9. package/lib/orchestrate/analyze/orchestrateAnalyze.js +0 -2
  10. package/lib/orchestrate/analyze/orchestrateAnalyze.js.map +1 -1
  11. package/lib/orchestrate/interface/orchestrateInterfaceComplement.js +0 -2
  12. package/lib/orchestrate/interface/orchestrateInterfaceComplement.js.map +1 -1
  13. package/lib/orchestrate/interface/orchestrateInterfaceComponents.js +0 -8
  14. package/lib/orchestrate/interface/orchestrateInterfaceComponents.js.map +1 -1
  15. package/lib/orchestrate/interface/orchestrateInterfaceEndpoints.js +0 -6
  16. package/lib/orchestrate/interface/orchestrateInterfaceEndpoints.js.map +1 -1
  17. package/lib/orchestrate/interface/orchestrateInterfaceOperations.js +0 -68
  18. package/lib/orchestrate/interface/orchestrateInterfaceOperations.js.map +1 -1
  19. package/lib/orchestrate/prisma/orchestratePrismaComponent.js +0 -6
  20. package/lib/orchestrate/prisma/orchestratePrismaComponent.js.map +1 -1
  21. package/lib/orchestrate/prisma/orchestratePrismaCorrect.js +47 -90
  22. package/lib/orchestrate/prisma/orchestratePrismaCorrect.js.map +1 -1
  23. package/lib/orchestrate/prisma/orchestratePrismaSchema.js +47 -98
  24. package/lib/orchestrate/prisma/orchestratePrismaSchema.js.map +1 -1
  25. package/lib/orchestrate/realize/orchestrateRealize.d.ts +1 -1
  26. package/lib/orchestrate/realize/orchestrateRealize.js +25 -56
  27. package/lib/orchestrate/realize/orchestrateRealize.js.map +1 -1
  28. package/lib/orchestrate/realize/orchestrateRealizeCoder.d.ts +1 -1
  29. package/lib/orchestrate/realize/orchestrateRealizeCoder.js +4 -15
  30. package/lib/orchestrate/realize/orchestrateRealizeCoder.js.map +1 -1
  31. package/lib/orchestrate/realize/structures/IAutoBeRealizeCoderApplication.d.ts +6 -0
  32. package/lib/orchestrate/test/orchestrateTestCorrect.js +0 -8
  33. package/lib/orchestrate/test/orchestrateTestCorrect.js.map +1 -1
  34. package/lib/orchestrate/test/orchestrateTestScenario.js +0 -16
  35. package/lib/orchestrate/test/orchestrateTestScenario.js.map +1 -1
  36. package/lib/orchestrate/test/orchestrateTestWrite.js +0 -15
  37. package/lib/orchestrate/test/orchestrateTestWrite.js.map +1 -1
  38. package/lib/orchestrate/test/transformTestWriteHistories.js +0 -7
  39. package/lib/orchestrate/test/transformTestWriteHistories.js.map +1 -1
  40. package/package.json +8 -12
  41. package/src/constants/AutoBeSystemPromptConstant.ts +1 -0
  42. package/src/orchestrate/realize/orchestrateRealize.ts +48 -88
  43. package/src/orchestrate/realize/orchestrateRealizeCoder.ts +5 -13
  44. package/src/orchestrate/realize/structures/IAutoBeRealizeCoderApplication.ts +10 -0
  45. package/lib/orchestrate/realize/orchestrateRealizeIntegrator.d.ts +0 -52
  46. package/lib/orchestrate/realize/orchestrateRealizeIntegrator.js +0 -57
  47. package/lib/orchestrate/realize/orchestrateRealizeIntegrator.js.map +0 -1
  48. package/lib/orchestrate/realize/orchestrateRealizeValidator.d.ts +0 -46
  49. package/lib/orchestrate/realize/orchestrateRealizeValidator.js +0 -37
  50. package/lib/orchestrate/realize/orchestrateRealizeValidator.js.map +0 -1
  51. package/src/orchestrate/realize/orchestrateRealizeIntegrator.ts +0 -75
  52. package/src/orchestrate/realize/orchestrateRealizeValidator.ts +0 -64
@@ -189,7 +189,6 @@ const claude = {
189
189
  type: "object",
190
190
  properties: {
191
191
  name: {
192
- title: "Name of the Prisma model (database table name)",
193
192
  description: "Name of the Prisma model (database table name).\n\nShould follow snake_case convention with domain prefix. Examples:\n\"shopping_customers\", \"shopping_sale_snapshots\", \"bbs_articles\"\nMaterialized views use \"mv_\" prefix: \"mv_shopping_sale_last_snapshots\"",
194
193
  type: "string",
195
194
  pattern: "^[a-z][a-z0-9_]*$"
@@ -203,12 +202,10 @@ const claude = {
203
202
  type: "boolean"
204
203
  },
205
204
  primaryField: {
206
- title: "The primary key field of the model",
207
205
  description: "The primary key field of the model.\n\nIn all uploaded schemas, primary keys are always UUID type with \"@\\id\"\ndirective. Usually named \"id\" and marked with \"@\\db.Uuid\" for PostgreSQL\nmapping.",
208
206
  $ref: "#/$defs/AutoBePrisma.IPrimaryField"
209
207
  },
210
208
  foreignFields: {
211
- title: "Array of foreign key fields that reference other models",
212
209
  description: "Array of foreign key fields that reference other models.\n\nThese establish relationships between models and include Prisma relation\ndirectives. Can be nullable (optional relationships) or required\n(mandatory relationships). May have unique constraints for 1:1\nrelationships.",
213
210
  type: "array",
214
211
  items: {
@@ -216,7 +213,6 @@ const claude = {
216
213
  }
217
214
  },
218
215
  plainFields: {
219
- title: "Array of regular data fields that don't reference other models",
220
216
  description: "Array of regular data fields that don't reference other models.\n\nInclude business data like names, descriptions, timestamps, flags,\namounts, etc. Common patterns: created_at, updated_at, deleted_at for\nsoft deletion and auditing.",
221
217
  type: "array",
222
218
  items: {
@@ -224,7 +220,6 @@ const claude = {
224
220
  }
225
221
  },
226
222
  uniqueIndexes: {
227
- title: "Array of unique indexes for enforcing data integrity constraints",
228
223
  description: "Array of unique indexes for enforcing data integrity constraints.\n\nEnsure uniqueness across single or multiple columns. Examples: unique\nemail addresses, unique codes within a channel, unique combinations like\n(channel_id, nickname).",
229
224
  type: "array",
230
225
  items: {
@@ -232,7 +227,6 @@ const claude = {
232
227
  }
233
228
  },
234
229
  plainIndexes: {
235
- title: "Array of regular indexes for query performance optimization",
236
230
  description: "Array of regular indexes for query performance optimization.\n\nSpeed up common query patterns like filtering by foreign keys, date\nranges, or frequently searched fields. Examples: indexes on created_at,\nforeign key fields, search fields.",
237
231
  type: "array",
238
232
  items: {
@@ -240,7 +234,6 @@ const claude = {
240
234
  }
241
235
  },
242
236
  ginIndexes: {
243
- title: "Array of GIN (Generalized Inverted Index) indexes for full-text search",
244
237
  description: "Array of GIN (Generalized Inverted Index) indexes for full-text search.\n\nUsed specifically for PostgreSQL text search capabilities using trigram\noperations. Applied to text fields that need fuzzy matching or partial\ntext search. Examples: searching names, nicknames, titles, content\nbodies.",
245
238
  type: "array",
246
239
  items: {
@@ -265,18 +258,15 @@ const claude = {
265
258
  type: "object",
266
259
  properties: {
267
260
  name: {
268
- title: "Name of the primary key field",
269
261
  description: "Name of the primary key field.\n\nConsistently named \"id\" across all models in the uploaded schemas.\nRepresents the unique identifier for each record in the table.",
270
262
  type: "string",
271
263
  pattern: "^[a-z][a-z0-9_]*$"
272
264
  },
273
265
  type: {
274
- title: "Data type of the primary key field",
275
266
  description: "Data type of the primary key field.\n\nAlways \"uuid\" in the uploaded schemas for better distributed system\nsupport and to avoid exposing sequential IDs that could reveal business\ninformation.",
276
267
  "const": "uuid"
277
268
  },
278
269
  description: {
279
- title: "Description of the primary key field's purpose",
280
270
  description: "Description of the primary key field's purpose.\n\nStandard description is \"Primary Key.\" across all models. Serves as the\nunique identifier for the model instance.",
281
271
  type: "string"
282
272
  }
@@ -292,13 +282,11 @@ const claude = {
292
282
  type: "object",
293
283
  properties: {
294
284
  name: {
295
- title: "Name of the foreign key field",
296
285
  description: "Name of the foreign key field.\n\nFollows convention: \"{target_model_name_without_prefix}_id\" Examples:\n\"shopping_customer_id\", \"bbs_article_id\", \"attachment_file_id\" For\nself-references: \"parent_id\" (e.g., in hierarchical structures)",
297
286
  type: "string",
298
287
  pattern: "^[a-z][a-z0-9_]*$"
299
288
  },
300
289
  type: {
301
- title: "Data type of the foreign key field",
302
290
  description: "Data type of the foreign key field.\n\nAlways \"uuid\" to match the primary key type of referenced models. Ensures\nreferential integrity and consistency across the schema.",
303
291
  "const": "uuid"
304
292
  },
@@ -307,34 +295,14 @@ const claude = {
307
295
  type: "string"
308
296
  },
309
297
  relation: {
310
- title: "Prisma relation configuration defining the association details",
311
- description: "Prisma relation configuration defining the association details.\n\nSpecifies how this foreign key connects to the target model, including\nrelation name, target model, and target field.",
312
- type: "object",
313
- properties: {
314
- name: {
315
- title: "Name of the relation property in the Prisma model",
316
- description: "Name of the relation property in the Prisma model.\n\nUsed to access the related model instance. Usually a descriptive name\nof the relationship. Examples: \"customer\", \"channel\", \"parent\",\n\"snapshot\"",
317
- type: "string",
318
- pattern: "^[a-zA-Z_][a-zA-Z0-9_]*$"
319
- },
320
- targetModel: {
321
- title: "Name of the target model being referenced",
322
- description: "Name of the target model being referenced.\n\nMust match exactly with an existing model name in the schema. Examples:\n\"shopping_customers\", \"shopping_channels\", \"bbs_articles\"",
323
- type: "string"
324
- }
325
- },
326
- required: [
327
- "name",
328
- "targetModel"
329
- ]
298
+ description: "Prisma relation configuration defining the association details.\n\nSpecifies how this foreign key connects to the target model, including\nrelation name, target model, and target field. This configuration is used\nto generate the appropriate Prisma relation directive in the schema.",
299
+ $ref: "#/$defs/AutoBePrisma.IRelation"
330
300
  },
331
301
  unique: {
332
- title: "Whether this foreign key has a unique constraint",
333
302
  description: "Whether this foreign key has a unique constraint.\n\nTrue: Creates a 1:1 relationship (e.g., user profile, order publish\ndetails) false: Allows 1:N relationship (e.g., customer to multiple\norders) Used for enforcing business rules about relationship\ncardinality.",
334
303
  type: "boolean"
335
304
  },
336
305
  nullable: {
337
- title: "Whether this foreign key can be null (optional relationship)",
338
306
  description: "Whether this foreign key can be null (optional relationship).\n\nTrue: Relationship is optional, foreign key can be null false:\nRelationship is required, foreign key cannot be null Reflects business\nrules about mandatory vs optional associations.",
339
307
  type: "boolean"
340
308
  }
@@ -348,19 +316,36 @@ const claude = {
348
316
  "nullable"
349
317
  ]
350
318
  },
319
+ "AutoBePrisma.IRelation": {
320
+ description: "Interface representing a Prisma relation configuration between models.\n\nThis interface defines how foreign key fields establish relationships with\ntheir target models. It provides the necessary information for Prisma to\ngenerate appropriate relation directives (@relation) in the schema,\nenabling proper relational data modeling and ORM functionality.\n\nThe relation configuration is essential for:\n\n- Generating correct Prisma relation syntax\n- Establishing bidirectional relationships between models\n- Enabling proper type-safe querying through Prisma client\n- Supporting complex relationship patterns (1:1, 1:N, M:N)",
321
+ type: "object",
322
+ properties: {
323
+ name: {
324
+ description: "Name of the relation property in the Prisma model.\n\nThis becomes the property name used to access the related model instance\nthrough the Prisma client. Should be descriptive and reflect the business\nrelationship being modeled.\n\nExamples:\n\n- \"customer\" for shopping_customer_id field\n- \"channel\" for shopping_channel_id field\n- \"parent\" for parent_id field in hierarchical structures\n- \"snapshot\" for versioning relationships\n- \"article\" for bbs_article_id field\n\nNaming convention: camelCase, descriptive of the relationship's business\nmeaning",
325
+ type: "string",
326
+ pattern: "^[a-zA-Z_][a-zA-Z0-9_]*$"
327
+ },
328
+ targetModel: {
329
+ description: "Name of the target model being referenced by this relation.\n\nMust exactly match an existing model name in the schema. This is used by\nPrisma to establish the foreign key constraint and generate the\nappropriate relation mapping.\n\nExamples:\n\n- \"shopping_customers\" for customer relationships\n- \"shopping_channels\" for channel relationships\n- \"bbs_articles\" for article relationships\n- \"attachment_files\" for file attachments\n\nThe target model should exist in the same schema or be accessible through\nthe Prisma schema configuration.",
330
+ type: "string"
331
+ }
332
+ },
333
+ required: [
334
+ "name",
335
+ "targetModel"
336
+ ]
337
+ },
351
338
  "AutoBePrisma.IPlainField": {
352
339
  description: "Interface representing a regular data field that stores business\ninformation.\n\nThese fields contain the actual business data like names, amounts,\ntimestamps, flags, descriptions, and other domain-specific information.",
353
340
  type: "object",
354
341
  properties: {
355
342
  name: {
356
- title: "Name of the field in the database table",
357
343
  description: "Name of the field in the database table.\n\nShould use snake_case convention. Common patterns from uploaded schemas:\n\n- Timestamps: created_at, updated_at, deleted_at, opened_at, closed_at\n- Identifiers: code, name, nickname, title\n- Business data: value, quantity, price, volume, balance\n- Flags: primary, required, exclusive, secret, multiplicative",
358
344
  type: "string",
359
345
  pattern: "^[a-z][a-z0-9_]*$"
360
346
  },
361
347
  type: {
362
- title: "Data type of the field for Prisma schema generation",
363
- description: "Data type of the field for Prisma schema generation.\n\nMaps to appropriate Prisma/PostgreSQL types:\n\n- Boolean: Boolean flags and yes/no values\n- Int: Integer numbers, quantities, sequences\n- Double: Decimal numbers, prices, monetary values, percentages\n- String: Text data, names, descriptions, codes\n- Uri: URL/URI fields for links and references\n- Uuid: UUID fields (for non-foreign-key UUIDs)\n- Date: Date-only values (rare, mostly for business dates)\n- Datetime: Timestamp fields with date and time",
348
+ description: "Data type of the field for Prisma schema generation.\n\nMaps to appropriate Prisma/PostgreSQL types:\n\n- Boolean: Boolean flags and yes/no values\n- Int: Integer numbers, quantities, sequences\n- Double: Decimal numbers, prices, monetary values, percentages\n- String: Text data, names, descriptions, codes\n- Uri: URL/URI fields for links and references\n- Uuid: UUID fields (for non-foreign-key UUIDs)\n- Datetime: Timestamp fields with date and time",
364
349
  oneOf: [
365
350
  {
366
351
  "const": "string"
@@ -386,12 +371,10 @@ const claude = {
386
371
  ]
387
372
  },
388
373
  description: {
389
- title: "Description explaining the business purpose and usage of this field",
390
374
  description: "Description explaining the business purpose and usage of this field.\n\nShould clearly explain:\n\n- What business concept this field represents\n- Valid values or constraints if applicable\n- How it relates to business processes\n- Any special behavioral notes Example: \"Amount of cash payment.\" or\n \"Whether the unit is required or not.\"",
391
375
  type: "string"
392
376
  },
393
377
  nullable: {
394
- title: "Whether this field can contain null values",
395
378
  description: "Whether this field can contain null values.\n\nTrue: Field is optional and can be null (e.g., middle name, description)\nfalse: Field is required and cannot be null (e.g., creation timestamp,\nname) Reflects business rules about mandatory vs optional data.",
396
379
  type: "boolean"
397
380
  }
@@ -408,7 +391,6 @@ const claude = {
408
391
  type: "object",
409
392
  properties: {
410
393
  fieldNames: {
411
- title: "Array of field names that together form the unique constraint",
412
394
  description: "Array of field names that together form the unique constraint.\n\nCan be single field (e.g., [\"email\"]) or composite (e.g., [\"channel_id\",\n\"code\"]). All field names must exist in the model. Order matters for\ncomposite indexes. Examples: [\"code\"], [\"shopping_channel_id\",\n\"nickname\"], [\"email\"]",
413
395
  type: "array",
414
396
  items: {
@@ -418,7 +400,6 @@ const claude = {
418
400
  uniqueItems: true
419
401
  },
420
402
  unique: {
421
- title: "Explicit marker indicating this is a unique index",
422
403
  description: "Explicit marker indicating this is a unique index.\n\nAlways true to distinguish from regular indexes. Used by code generator\nto emit \"@@unique\" directive in Prisma schema instead of \"@@index\".",
423
404
  "const": true
424
405
  }
@@ -433,7 +414,6 @@ const claude = {
433
414
  type: "object",
434
415
  properties: {
435
416
  fieldNames: {
436
- title: "Array of field names to include in the performance index",
437
417
  description: "Array of field names to include in the performance index.\n\nCan be single field (e.g., [\"created_at\"]) or composite (e.g.,\n[\"customer_id\", \"created_at\"]). All field names must exist in the model.\nOrder matters for composite indexes and should match common query\npatterns. Examples: [\"created_at\"], [\"shopping_customer_id\",\n\"created_at\"], [\"ip\"]",
438
418
  type: "array",
439
419
  items: {
@@ -452,7 +432,6 @@ const claude = {
452
432
  type: "object",
453
433
  properties: {
454
434
  fieldName: {
455
- title: "Name of the text field to index for full-text search capabilities",
456
435
  description: "Name of the text field to index for full-text search capabilities.\n\nMust be a string field in the model that contains searchable text.\nExamples from uploaded schemas: \"nickname\", \"title\", \"body\", \"name\" Used\nwith PostgreSQL gin_trgm_ops for trigram-based fuzzy text search.",
457
436
  type: "string"
458
437
  }
@@ -622,11 +601,11 @@ const claude = {
622
601
  value: input.description
623
602
  }), ("object" === typeof input.relation && null !== input.relation || _report(_exceptionable, {
624
603
  path: _path + ".relation",
625
- expected: "__type",
604
+ expected: "AutoBePrisma.IRelation",
626
605
  value: input.relation
627
606
  })) && _vo4(input.relation, _path + ".relation", true && _exceptionable) || _report(_exceptionable, {
628
607
  path: _path + ".relation",
629
- expected: "__type",
608
+ expected: "AutoBePrisma.IRelation",
630
609
  value: input.relation
631
610
  }), "boolean" === typeof input.unique || _report(_exceptionable, {
632
611
  path: _path + ".unique",
@@ -785,7 +764,6 @@ const collection = {
785
764
  type: "object",
786
765
  properties: {
787
766
  name: {
788
- title: "Name of the Prisma model (database table name)",
789
767
  description: "Name of the Prisma model (database table name).\n\nShould follow snake_case convention with domain prefix. Examples:\n\"shopping_customers\", \"shopping_sale_snapshots\", \"bbs_articles\"\nMaterialized views use \"mv_\" prefix: \"mv_shopping_sale_last_snapshots\"\n\n\n@pattern ^[a-z][a-z0-9_]*$",
790
768
  type: "string"
791
769
  },
@@ -798,11 +776,9 @@ const collection = {
798
776
  type: "boolean"
799
777
  },
800
778
  primaryField: {
801
- title: "The primary key field of the model",
802
779
  $ref: "#/$defs/AutoBePrisma.IPrimaryField"
803
780
  },
804
781
  foreignFields: {
805
- title: "Array of foreign key fields that reference other models",
806
782
  description: "Array of foreign key fields that reference other models.\n\nThese establish relationships between models and include Prisma relation\ndirectives. Can be nullable (optional relationships) or required\n(mandatory relationships). May have unique constraints for 1:1\nrelationships.",
807
783
  type: "array",
808
784
  items: {
@@ -810,7 +786,6 @@ const collection = {
810
786
  }
811
787
  },
812
788
  plainFields: {
813
- title: "Array of regular data fields that don't reference other models",
814
789
  description: "Array of regular data fields that don't reference other models.\n\nInclude business data like names, descriptions, timestamps, flags,\namounts, etc. Common patterns: created_at, updated_at, deleted_at for\nsoft deletion and auditing.",
815
790
  type: "array",
816
791
  items: {
@@ -818,7 +793,6 @@ const collection = {
818
793
  }
819
794
  },
820
795
  uniqueIndexes: {
821
- title: "Array of unique indexes for enforcing data integrity constraints",
822
796
  description: "Array of unique indexes for enforcing data integrity constraints.\n\nEnsure uniqueness across single or multiple columns. Examples: unique\nemail addresses, unique codes within a channel, unique combinations like\n(channel_id, nickname).",
823
797
  type: "array",
824
798
  items: {
@@ -826,7 +800,6 @@ const collection = {
826
800
  }
827
801
  },
828
802
  plainIndexes: {
829
- title: "Array of regular indexes for query performance optimization",
830
803
  description: "Array of regular indexes for query performance optimization.\n\nSpeed up common query patterns like filtering by foreign keys, date\nranges, or frequently searched fields. Examples: indexes on created_at,\nforeign key fields, search fields.",
831
804
  type: "array",
832
805
  items: {
@@ -834,7 +807,6 @@ const collection = {
834
807
  }
835
808
  },
836
809
  ginIndexes: {
837
- title: "Array of GIN (Generalized Inverted Index) indexes for full-text search",
838
810
  description: "Array of GIN (Generalized Inverted Index) indexes for full-text search.\n\nUsed specifically for PostgreSQL text search capabilities using trigram\noperations. Applied to text fields that need fuzzy matching or partial\ntext search. Examples: searching names, nicknames, titles, content\nbodies.",
839
811
  type: "array",
840
812
  items: {
@@ -859,12 +831,10 @@ const collection = {
859
831
  type: "object",
860
832
  properties: {
861
833
  name: {
862
- title: "Name of the primary key field",
863
834
  description: "Name of the primary key field.\n\nConsistently named \"id\" across all models in the uploaded schemas.\nRepresents the unique identifier for each record in the table.\n\n\n@pattern ^[a-z][a-z0-9_]*$",
864
835
  type: "string"
865
836
  },
866
837
  type: {
867
- title: "Data type of the primary key field",
868
838
  description: "Data type of the primary key field.\n\nAlways \"uuid\" in the uploaded schemas for better distributed system\nsupport and to avoid exposing sequential IDs that could reveal business\ninformation.",
869
839
  type: "string",
870
840
  "enum": [
@@ -872,7 +842,6 @@ const collection = {
872
842
  ]
873
843
  },
874
844
  description: {
875
- title: "Description of the primary key field's purpose",
876
845
  description: "Description of the primary key field's purpose.\n\nStandard description is \"Primary Key.\" across all models. Serves as the\nunique identifier for the model instance.",
877
846
  type: "string"
878
847
  }
@@ -884,16 +853,14 @@ const collection = {
884
853
  ]
885
854
  },
886
855
  "AutoBePrisma.IForeignField": {
887
- description: "Interface representing a foreign key field that establishes relationships\nbetween models.\n\nForeign keys create associations between models, enabling relational data\nmodeling. They can represent 1:1, 1:N, or participate in M:N relationships\nthrough junction tables.",
856
+ description: "Interface representing a foreign key field that establishes relationships\nbetween models.\n\nForeign keys create associations between models, enabling relational data\nmodeling. They can represent 1:1, 1:N, or participate in M:N relationships\nthrough junction tables.\n\n### Description of {@link relation} property:\n\n> Prisma relation configuration defining the association details.\n> \n> Specifies how this foreign key connects to the target model, including\n> relation name, target model, and target field. This configuration is used\n> to generate the appropriate Prisma relation directive in the schema.",
888
857
  type: "object",
889
858
  properties: {
890
859
  name: {
891
- title: "Name of the foreign key field",
892
860
  description: "Name of the foreign key field.\n\nFollows convention: \"{target_model_name_without_prefix}_id\" Examples:\n\"shopping_customer_id\", \"bbs_article_id\", \"attachment_file_id\" For\nself-references: \"parent_id\" (e.g., in hierarchical structures)\n\n\n@pattern ^[a-z][a-z0-9_]*$",
893
861
  type: "string"
894
862
  },
895
863
  type: {
896
- title: "Data type of the foreign key field",
897
864
  description: "Data type of the foreign key field.\n\nAlways \"uuid\" to match the primary key type of referenced models. Ensures\nreferential integrity and consistency across the schema.",
898
865
  type: "string",
899
866
  "enum": [
@@ -905,33 +872,13 @@ const collection = {
905
872
  type: "string"
906
873
  },
907
874
  relation: {
908
- title: "Prisma relation configuration defining the association details",
909
- description: "Prisma relation configuration defining the association details.\n\nSpecifies how this foreign key connects to the target model, including\nrelation name, target model, and target field.",
910
- type: "object",
911
- properties: {
912
- name: {
913
- title: "Name of the relation property in the Prisma model",
914
- description: "Name of the relation property in the Prisma model.\n\nUsed to access the related model instance. Usually a descriptive name\nof the relationship. Examples: \"customer\", \"channel\", \"parent\",\n\"snapshot\"\n\n\n@pattern ^[a-zA-Z_][a-zA-Z0-9_]*$",
915
- type: "string"
916
- },
917
- targetModel: {
918
- title: "Name of the target model being referenced",
919
- description: "Name of the target model being referenced.\n\nMust match exactly with an existing model name in the schema. Examples:\n\"shopping_customers\", \"shopping_channels\", \"bbs_articles\"",
920
- type: "string"
921
- }
922
- },
923
- required: [
924
- "name",
925
- "targetModel"
926
- ]
875
+ $ref: "#/$defs/AutoBePrisma.IRelation"
927
876
  },
928
877
  unique: {
929
- title: "Whether this foreign key has a unique constraint",
930
878
  description: "Whether this foreign key has a unique constraint.\n\nTrue: Creates a 1:1 relationship (e.g., user profile, order publish\ndetails) false: Allows 1:N relationship (e.g., customer to multiple\norders) Used for enforcing business rules about relationship\ncardinality.",
931
879
  type: "boolean"
932
880
  },
933
881
  nullable: {
934
- title: "Whether this foreign key can be null (optional relationship)",
935
882
  description: "Whether this foreign key can be null (optional relationship).\n\nTrue: Relationship is optional, foreign key can be null false:\nRelationship is required, foreign key cannot be null Reflects business\nrules about mandatory vs optional associations.",
936
883
  type: "boolean"
937
884
  }
@@ -945,18 +892,34 @@ const collection = {
945
892
  "nullable"
946
893
  ]
947
894
  },
895
+ "AutoBePrisma.IRelation": {
896
+ description: "Interface representing a Prisma relation configuration between models.\n\nThis interface defines how foreign key fields establish relationships with\ntheir target models. It provides the necessary information for Prisma to\ngenerate appropriate relation directives (@relation) in the schema,\nenabling proper relational data modeling and ORM functionality.\n\nThe relation configuration is essential for:\n\n- Generating correct Prisma relation syntax\n- Establishing bidirectional relationships between models\n- Enabling proper type-safe querying through Prisma client\n- Supporting complex relationship patterns (1:1, 1:N, M:N)",
897
+ type: "object",
898
+ properties: {
899
+ name: {
900
+ description: "Name of the relation property in the Prisma model.\n\nThis becomes the property name used to access the related model instance\nthrough the Prisma client. Should be descriptive and reflect the business\nrelationship being modeled.\n\nExamples:\n\n- \"customer\" for shopping_customer_id field\n- \"channel\" for shopping_channel_id field\n- \"parent\" for parent_id field in hierarchical structures\n- \"snapshot\" for versioning relationships\n- \"article\" for bbs_article_id field\n\nNaming convention: camelCase, descriptive of the relationship's business\nmeaning\n\n\n@pattern ^[a-zA-Z_][a-zA-Z0-9_]*$",
901
+ type: "string"
902
+ },
903
+ targetModel: {
904
+ description: "Name of the target model being referenced by this relation.\n\nMust exactly match an existing model name in the schema. This is used by\nPrisma to establish the foreign key constraint and generate the\nappropriate relation mapping.\n\nExamples:\n\n- \"shopping_customers\" for customer relationships\n- \"shopping_channels\" for channel relationships\n- \"bbs_articles\" for article relationships\n- \"attachment_files\" for file attachments\n\nThe target model should exist in the same schema or be accessible through\nthe Prisma schema configuration.",
905
+ type: "string"
906
+ }
907
+ },
908
+ required: [
909
+ "name",
910
+ "targetModel"
911
+ ]
912
+ },
948
913
  "AutoBePrisma.IPlainField": {
949
914
  description: "Interface representing a regular data field that stores business\ninformation.\n\nThese fields contain the actual business data like names, amounts,\ntimestamps, flags, descriptions, and other domain-specific information.",
950
915
  type: "object",
951
916
  properties: {
952
917
  name: {
953
- title: "Name of the field in the database table",
954
918
  description: "Name of the field in the database table.\n\nShould use snake_case convention. Common patterns from uploaded schemas:\n\n- Timestamps: created_at, updated_at, deleted_at, opened_at, closed_at\n- Identifiers: code, name, nickname, title\n- Business data: value, quantity, price, volume, balance\n- Flags: primary, required, exclusive, secret, multiplicative\n\n\n@pattern ^[a-z][a-z0-9_]*$",
955
919
  type: "string"
956
920
  },
957
921
  type: {
958
- title: "Data type of the field for Prisma schema generation",
959
- description: "Data type of the field for Prisma schema generation.\n\nMaps to appropriate Prisma/PostgreSQL types:\n\n- Boolean: Boolean flags and yes/no values\n- Int: Integer numbers, quantities, sequences\n- Double: Decimal numbers, prices, monetary values, percentages\n- String: Text data, names, descriptions, codes\n- Uri: URL/URI fields for links and references\n- Uuid: UUID fields (for non-foreign-key UUIDs)\n- Date: Date-only values (rare, mostly for business dates)\n- Datetime: Timestamp fields with date and time",
922
+ description: "Data type of the field for Prisma schema generation.\n\nMaps to appropriate Prisma/PostgreSQL types:\n\n- Boolean: Boolean flags and yes/no values\n- Int: Integer numbers, quantities, sequences\n- Double: Decimal numbers, prices, monetary values, percentages\n- String: Text data, names, descriptions, codes\n- Uri: URL/URI fields for links and references\n- Uuid: UUID fields (for non-foreign-key UUIDs)\n- Datetime: Timestamp fields with date and time",
960
923
  type: "string",
961
924
  "enum": [
962
925
  "string",
@@ -969,12 +932,10 @@ const collection = {
969
932
  ]
970
933
  },
971
934
  description: {
972
- title: "Description explaining the business purpose and usage of this field",
973
935
  description: "Description explaining the business purpose and usage of this field.\n\nShould clearly explain:\n\n- What business concept this field represents\n- Valid values or constraints if applicable\n- How it relates to business processes\n- Any special behavioral notes Example: \"Amount of cash payment.\" or\n \"Whether the unit is required or not.\"",
974
936
  type: "string"
975
937
  },
976
938
  nullable: {
977
- title: "Whether this field can contain null values",
978
939
  description: "Whether this field can contain null values.\n\nTrue: Field is optional and can be null (e.g., middle name, description)\nfalse: Field is required and cannot be null (e.g., creation timestamp,\nname) Reflects business rules about mandatory vs optional data.",
979
940
  type: "boolean"
980
941
  }
@@ -991,7 +952,6 @@ const collection = {
991
952
  type: "object",
992
953
  properties: {
993
954
  fieldNames: {
994
- title: "Array of field names that together form the unique constraint",
995
955
  description: "Array of field names that together form the unique constraint.\n\nCan be single field (e.g., [\"email\"]) or composite (e.g., [\"channel_id\",\n\"code\"]). All field names must exist in the model. Order matters for\ncomposite indexes. Examples: [\"code\"], [\"shopping_channel_id\",\n\"nickname\"], [\"email\"]\n\n\n@minItems 1\n@uniqueItems",
996
956
  type: "array",
997
957
  items: {
@@ -999,7 +959,6 @@ const collection = {
999
959
  }
1000
960
  },
1001
961
  unique: {
1002
- title: "Explicit marker indicating this is a unique index",
1003
962
  description: "Explicit marker indicating this is a unique index.\n\nAlways true to distinguish from regular indexes. Used by code generator\nto emit \"@@unique\" directive in Prisma schema instead of \"@@index\".",
1004
963
  type: "boolean",
1005
964
  "enum": [
@@ -1017,7 +976,6 @@ const collection = {
1017
976
  type: "object",
1018
977
  properties: {
1019
978
  fieldNames: {
1020
- title: "Array of field names to include in the performance index",
1021
979
  description: "Array of field names to include in the performance index.\n\nCan be single field (e.g., [\"created_at\"]) or composite (e.g.,\n[\"customer_id\", \"created_at\"]). All field names must exist in the model.\nOrder matters for composite indexes and should match common query\npatterns. Examples: [\"created_at\"], [\"shopping_customer_id\",\n\"created_at\"], [\"ip\"]\n\n\n@minItems 1\n@uniqueItems",
1022
980
  type: "array",
1023
981
  items: {
@@ -1034,7 +992,6 @@ const collection = {
1034
992
  type: "object",
1035
993
  properties: {
1036
994
  fieldName: {
1037
- title: "Name of the text field to index for full-text search capabilities",
1038
995
  description: "Name of the text field to index for full-text search capabilities.\n\nMust be a string field in the model that contains searchable text.\nExamples from uploaded schemas: \"nickname\", \"title\", \"body\", \"name\" Used\nwith PostgreSQL gin_trgm_ops for trigram-based fuzzy text search.",
1039
996
  type: "string"
1040
997
  }
@@ -1204,11 +1161,11 @@ const collection = {
1204
1161
  value: input.description
1205
1162
  }), ("object" === typeof input.relation && null !== input.relation || _report(_exceptionable, {
1206
1163
  path: _path + ".relation",
1207
- expected: "__type",
1164
+ expected: "AutoBePrisma.IRelation",
1208
1165
  value: input.relation
1209
1166
  })) && _vo4(input.relation, _path + ".relation", true && _exceptionable) || _report(_exceptionable, {
1210
1167
  path: _path + ".relation",
1211
- expected: "__type",
1168
+ expected: "AutoBePrisma.IRelation",
1212
1169
  value: input.relation
1213
1170
  }), "boolean" === typeof input.unique || _report(_exceptionable, {
1214
1171
  path: _path + ".unique",
@@ -1 +1 @@
1
- {"version":3,"file":"orchestratePrismaCorrect.js","sourceRoot":"","sources":["../../../src/orchestrate/prisma/orchestratePrismaCorrect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,4DAcC;;;AAzBD,yCAAoE;AAIpE,kDAA0B;AAG1B,uEAAoE;AACpE,iEAA8D;AAC9D,uFAAoF;AAEpF,SAAgB,wBAAwB,CACtC,GAAyB,EACzB,WAAsC,EACtC,OAAe,CAAC;IAEhB,MAAM,MAAM,GAAgB,IAAI,GAAG,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACzC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAe,IAAI,CACjB,GAAyB,EACzB,WAAsC,EACtC,IAAY;;;QAEZ,MAAM,MAAM,GACV,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,OAAO;YAChB,OAAO,MAAM,CAAC,CAAC,UAAU;aACtB,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,UAAU;QAE7C,oBAAoB;QACpB,MAAM,OAAO,GAA2B,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CACrE,WAAW,EACX,UAAU,CACX,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,MAAM;YACN,OAAO;YACP,QAAQ,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC1C,KAAK,EAAE,OAAO;aACf,CAAC;YACF,IAAI,EAAE,MAAA,MAAA,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,0CAAE,IAAI,mCAAI,CAAC;YACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAmD;YAC9D,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,MAAM,QAAQ,GAAyB,IAAI,oBAAa,CAAC;YACvD,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,kCACD,CAAC,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC,KACrB,QAAQ,EAAE;oBACR,QAAQ,EAAE,IAAI;iBACf,GACF;YACD,SAAS,EAAE,IAAA,iEAA+B,EAAC,MAAM,CAAC;YAClD,WAAW,EAAE;gBACX,iBAAiB,CAAC;oBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;wBACd,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;oBACvB,CAAC;iBACF,CAAC;aACH;SACF,CAAC,CAAC;QACH,IAAA,iCAAe,EAAC,QAAQ,CAAC,CAAC;QAE1B,qBAAqB;QACrB,MAAM,QAAQ;aACX,UAAU,CACT,qEAAqE,CACtE;aACA,OAAO,CAAC,GAAG,EAAE;YACZ,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACL,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,8DAA8D,CAC/D,CAAC;YACF,OAAO,MAAM,CAAC,CAAC,cAAc;QAC/B,CAAC;QAED,MAAM,UAAU,GAA8B;YAC5C,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBAChC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;oBACxE,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,KAAK,CAAC;gBACzB,CAAC,CAAC;aACH,CAAC,CAAC;SACJ,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,MAAM;YACf,UAAU;YACV,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;YAChC,IAAI,EAAE,MAAA,MAAA,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,0CAAE,IAAI,mCAAI,CAAC;YACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QACH,OAAO,IAAI,CACT,GAAG,EACH;YACE,KAAK,EAAE,UAAU,CAAC,KAAK;SACxB,EACD,IAAI,GAAG,CAAC,CACT,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAiC,KAG1D;IACC,IAAA,qCAAiB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,GAA2B,UAAU,CACpD,KAAK,CAAC,KAAK,CACyB,CAAC;IACvC,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,iBAAiB;QACvB,WAAW;QACX,OAAO,EAAE;YACP,wBAAwB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;SACqB;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIT,CAAC;AACJ,MAAM,UAAU,GAAG;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAIJ;IACH,MAAM;IACN,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;CACd,CAAC"}
1
+ {"version":3,"file":"orchestratePrismaCorrect.js","sourceRoot":"","sources":["../../../src/orchestrate/prisma/orchestratePrismaCorrect.ts"],"names":[],"mappings":"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"}