@objectstack/platform-objects 4.0.5 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/apps/index.d.mts +16 -48
  2. package/dist/apps/index.d.ts +16 -48
  3. package/dist/apps/index.js +139 -217
  4. package/dist/apps/index.js.map +1 -1
  5. package/dist/apps/index.mjs +140 -212
  6. package/dist/apps/index.mjs.map +1 -1
  7. package/dist/audit/index.d.mts +38990 -51
  8. package/dist/audit/index.d.ts +38990 -51
  9. package/dist/audit/index.js +1428 -0
  10. package/dist/audit/index.js.map +1 -1
  11. package/dist/audit/index.mjs +1417 -1
  12. package/dist/audit/index.mjs.map +1 -1
  13. package/dist/identity/index.d.mts +14869 -2802
  14. package/dist/identity/index.d.ts +14869 -2802
  15. package/dist/identity/index.js +1090 -6
  16. package/dist/identity/index.js.map +1 -1
  17. package/dist/identity/index.mjs +1089 -7
  18. package/dist/identity/index.mjs.map +1 -1
  19. package/dist/index.d.mts +8 -7
  20. package/dist/index.d.ts +8 -7
  21. package/dist/index.js +3652 -1482
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +3633 -1465
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/integration/index.d.mts +2905 -0
  26. package/dist/integration/index.d.ts +2905 -0
  27. package/dist/integration/index.js +140 -0
  28. package/dist/integration/index.js.map +1 -0
  29. package/dist/integration/index.mjs +138 -0
  30. package/dist/integration/index.mjs.map +1 -0
  31. package/dist/metadata/index.d.mts +577 -21181
  32. package/dist/metadata/index.d.ts +577 -21181
  33. package/dist/metadata/index.js +29 -619
  34. package/dist/metadata/index.js.map +1 -1
  35. package/dist/metadata/index.mjs +30 -615
  36. package/dist/metadata/index.mjs.map +1 -1
  37. package/dist/security/index.d.mts +7278 -46
  38. package/dist/security/index.d.ts +7278 -46
  39. package/dist/security/index.js +540 -0
  40. package/dist/security/index.js.map +1 -1
  41. package/dist/security/index.mjs +539 -1
  42. package/dist/security/index.mjs.map +1 -1
  43. package/dist/system/index.d.mts +8409 -0
  44. package/dist/system/index.d.ts +8409 -0
  45. package/dist/system/index.js +395 -0
  46. package/dist/system/index.js.map +1 -0
  47. package/dist/system/index.mjs +391 -0
  48. package/dist/system/index.mjs.map +1 -0
  49. package/package.json +13 -8
  50. package/dist/tenant/index.d.mts +0 -18464
  51. package/dist/tenant/index.d.ts +0 -18464
  52. package/dist/tenant/index.js +0 -741
  53. package/dist/tenant/index.js.map +0 -1
  54. package/dist/tenant/index.mjs +0 -733
  55. package/dist/tenant/index.mjs.map +0 -1
  56. /package/dist/{state-machine.zod-BFg-VE0M.d-Ek3_yo9P.d.mts → state-machine.zod-BNanU03M.d-Ek3_yo9P.d.mts} +0 -0
  57. /package/dist/{state-machine.zod-BFg-VE0M.d-Ek3_yo9P.d.ts → state-machine.zod-BNanU03M.d-Ek3_yo9P.d.ts} +0 -0
@@ -9,6 +9,13 @@ var SysMetadataObject = data.ObjectSchema.create({
9
9
  pluralLabel: "System Metadata",
10
10
  icon: "settings",
11
11
  isSystem: true,
12
+ // managedBy: 'system' — the metadata table backs every other config
13
+ // object. Writing rows directly here bypasses the typed Zod APIs and
14
+ // would let an admin inject malformed payloads. The "All Metadata"
15
+ // menu is therefore a read-only debug surface (Export only); typed
16
+ // edits flow through the dedicated per-type pages (Approval Process,
17
+ // Sharing Rule, etc.).
18
+ managedBy: "system",
12
19
  description: "Stores platform and user-scope metadata records (objects, views, flows, etc.)",
13
20
  fields: {
14
21
  /** Primary Key (UUID) */
@@ -101,11 +108,16 @@ var SysMetadataObject = data.ObjectSchema.create({
101
108
  required: false,
102
109
  description: "Organization for multi-tenant isolation."
103
110
  }),
104
- /** Project ID — null = platform-global, set = project-scoped */
111
+ /**
112
+ * @deprecated ADR-0005 (revised 2026-05): per-env DBs replace per-project
113
+ * isolation. `project_id` is no longer written by saveMetaItem and not
114
+ * consulted by overlay reads. Kept for legacy rows; new writes leave it
115
+ * NULL. Will be dropped in a future schema migration.
116
+ */
105
117
  project_id: data.Field.lookup("sys_project", {
106
- label: "Project",
118
+ label: "Project (deprecated)",
107
119
  required: false,
108
- description: "Foreign key to sys_project (UUID). Null = platform-global."
120
+ description: "DEPRECATED. Use organization_id for tenant isolation."
109
121
  }),
110
122
  /** Version number for optimistic concurrency */
111
123
  version: data.Field.number({
@@ -151,10 +163,20 @@ var SysMetadataObject = data.ObjectSchema.create({
151
163
  })
152
164
  },
153
165
  indexes: [
154
- { fields: ["type", "name", "project_id"], unique: true },
166
+ // ADR-0005 (revised 2026-05): overlay uniqueness is scoped by
167
+ // (type, name, organization_id), restricted to active rows so resets
168
+ // / archived versions don't collide. project_id is deprecated and
169
+ // not part of the discriminator. The runtime layer (protocol.ts
170
+ // ensureOverlayIndex) issues a DROP-then-CREATE migration to
171
+ // replace any pre-existing legacy composite index in-place.
172
+ {
173
+ name: "idx_sys_metadata_overlay_active",
174
+ fields: ["type", "name", "organization_id"],
175
+ unique: true,
176
+ partial: "state = 'active'"
177
+ },
178
+ { name: "idx_sys_metadata_org_type", fields: ["organization_id", "type"] },
155
179
  { fields: ["type", "scope"] },
156
- { fields: ["organization_id"] },
157
- { fields: ["project_id"] },
158
180
  { fields: ["package_version_id"] },
159
181
  { fields: ["state"] },
160
182
  { fields: ["namespace"] }
@@ -173,6 +195,7 @@ var SysMetadataHistoryObject = data.ObjectSchema.create({
173
195
  pluralLabel: "Metadata History",
174
196
  icon: "history",
175
197
  isSystem: true,
198
+ managedBy: "system",
176
199
  description: "Version history and audit trail for metadata changes",
177
200
  fields: {
178
201
  /** Primary Key (UUID) */
@@ -290,622 +313,9 @@ var SysMetadataHistoryObject = data.ObjectSchema.create({
290
313
  trash: false
291
314
  }
292
315
  });
293
- var SysObject = data.ObjectSchema.create({
294
- name: "sys_object",
295
- label: "Object Definition",
296
- pluralLabel: "Object Definitions",
297
- description: "Metadata for business objects",
298
- icon: "database",
299
- isSystem: true,
300
- fields: {
301
- // Core Identity
302
- name: data.Field.text({
303
- label: "Object Name",
304
- required: true,
305
- maxLength: 255,
306
- description: "Machine name (snake_case)"
307
- }),
308
- project_id: data.Field.text({
309
- label: "Environment ID",
310
- maxLength: 255,
311
- description: "Project/environment scope \u2014 null = control-plane global"
312
- }),
313
- label: data.Field.text({
314
- label: "Display Label",
315
- required: true,
316
- maxLength: 255
317
- }),
318
- plural_label: data.Field.text({
319
- label: "Plural Label",
320
- maxLength: 255
321
- }),
322
- description: data.Field.textarea({
323
- label: "Description"
324
- }),
325
- icon: data.Field.text({
326
- label: "Icon",
327
- maxLength: 100
328
- }),
329
- // Classification
330
- namespace: data.Field.text({
331
- label: "Namespace",
332
- maxLength: 100,
333
- description: "Logical domain namespace"
334
- }),
335
- tags: data.Field.text({
336
- label: "Tags",
337
- description: "Comma-separated categorization tags"
338
- }),
339
- active: data.Field.boolean({
340
- label: "Active",
341
- defaultValue: true
342
- }),
343
- is_system: data.Field.boolean({
344
- label: "System Object",
345
- defaultValue: false,
346
- description: "Protected from deletion"
347
- }),
348
- abstract: data.Field.boolean({
349
- label: "Abstract",
350
- defaultValue: false,
351
- description: "Cannot be instantiated"
352
- }),
353
- // Storage
354
- datasource: data.Field.text({
355
- label: "Datasource",
356
- maxLength: 100,
357
- defaultValue: "default"
358
- }),
359
- table_name: data.Field.text({
360
- label: "Table Name",
361
- maxLength: 255,
362
- description: "Physical table/collection name"
363
- }),
364
- // Complex Data (stored as JSON)
365
- fields_json: data.Field.textarea({
366
- label: "Fields (JSON)",
367
- description: "Field definitions as JSON"
368
- }),
369
- indexes_json: data.Field.textarea({
370
- label: "Indexes (JSON)",
371
- description: "Index definitions as JSON"
372
- }),
373
- validations_json: data.Field.textarea({
374
- label: "Validations (JSON)",
375
- description: "Validation rules as JSON"
376
- }),
377
- state_machines_json: data.Field.textarea({
378
- label: "State Machines (JSON)",
379
- description: "State machine definitions as JSON"
380
- }),
381
- capabilities_json: data.Field.textarea({
382
- label: "Capabilities (JSON)",
383
- description: "Enabled system features as JSON"
384
- }),
385
- // Denormalized Fields
386
- field_count: data.Field.number({
387
- label: "Field Count",
388
- description: "Number of fields defined"
389
- }),
390
- // Display
391
- display_name_field: data.Field.text({
392
- label: "Display Name Field",
393
- maxLength: 100,
394
- description: "Field to use as record display name"
395
- }),
396
- title_format: data.Field.text({
397
- label: "Title Format",
398
- maxLength: 255,
399
- description: "Title expression template"
400
- }),
401
- compact_layout: data.Field.text({
402
- label: "Compact Layout",
403
- description: "Comma-separated field names for cards"
404
- }),
405
- // Capabilities
406
- track_history: data.Field.boolean({
407
- label: "Track History",
408
- defaultValue: false
409
- }),
410
- searchable: data.Field.boolean({
411
- label: "Searchable",
412
- defaultValue: true
413
- }),
414
- api_enabled: data.Field.boolean({
415
- label: "API Enabled",
416
- defaultValue: true
417
- }),
418
- files: data.Field.boolean({
419
- label: "Files",
420
- defaultValue: false
421
- }),
422
- feeds: data.Field.boolean({
423
- label: "Feeds",
424
- defaultValue: false
425
- }),
426
- activities: data.Field.boolean({
427
- label: "Activities",
428
- defaultValue: false
429
- }),
430
- trash: data.Field.boolean({
431
- label: "Trash",
432
- defaultValue: true
433
- }),
434
- mru: data.Field.boolean({
435
- label: "MRU",
436
- defaultValue: true
437
- }),
438
- clone: data.Field.boolean({
439
- label: "Clone",
440
- defaultValue: true
441
- }),
442
- // Package Management
443
- package_id: data.Field.lookup("sys_package", {
444
- label: "Package"
445
- }),
446
- managed_by: data.Field.select({
447
- label: "Managed By",
448
- options: [
449
- { value: "package", label: "Package" },
450
- { value: "platform", label: "Platform" },
451
- { value: "user", label: "User" }
452
- ]
453
- }),
454
- // Audit
455
- created_by: data.Field.lookup("sys_user", { label: "Created By" }),
456
- created_at: data.Field.datetime({ label: "Created At" }),
457
- updated_by: data.Field.lookup("sys_user", { label: "Updated By" }),
458
- updated_at: data.Field.datetime({ label: "Updated At" })
459
- },
460
- indexes: [
461
- { fields: ["name", "project_id"], unique: true },
462
- { fields: ["project_id"] },
463
- { fields: ["namespace"] },
464
- { fields: ["package_id"] },
465
- { fields: ["active"] },
466
- { fields: ["is_system"] }
467
- ],
468
- enable: {
469
- trackHistory: true,
470
- searchable: true,
471
- apiEnabled: true,
472
- trash: true,
473
- mru: true
474
- }
475
- });
476
- var SysView = data.ObjectSchema.create({
477
- name: "sys_view",
478
- label: "View Definition",
479
- pluralLabel: "View Definitions",
480
- description: "Metadata for UI views (grid, kanban, calendar, etc.)",
481
- icon: "layout-grid",
482
- isSystem: true,
483
- fields: {
484
- // Core Identity
485
- name: data.Field.text({
486
- label: "View Name",
487
- required: true,
488
- maxLength: 255
489
- }),
490
- project_id: data.Field.text({
491
- label: "Environment ID",
492
- maxLength: 255,
493
- description: "Project/environment scope \u2014 null = control-plane global"
494
- }),
495
- label: data.Field.text({
496
- label: "Display Label",
497
- required: true,
498
- maxLength: 255
499
- }),
500
- description: data.Field.textarea({
501
- label: "Description"
502
- }),
503
- // Reference to Object
504
- object_name: data.Field.text({
505
- label: "Object Name",
506
- required: true,
507
- maxLength: 255,
508
- description: "The object this view displays"
509
- }),
510
- // View Type
511
- view_type: data.Field.select({
512
- label: "View Type",
513
- required: true,
514
- options: [
515
- { value: "grid", label: "Grid" },
516
- { value: "kanban", label: "Kanban" },
517
- { value: "calendar", label: "Calendar" },
518
- { value: "gantt", label: "Gantt" },
519
- { value: "form", label: "Form" },
520
- { value: "timeline", label: "Timeline" }
521
- ]
522
- }),
523
- // Complex Configuration
524
- columns_json: data.Field.textarea({
525
- label: "Columns (JSON)",
526
- description: "Column definitions as JSON"
527
- }),
528
- filters_json: data.Field.textarea({
529
- label: "Filters (JSON)",
530
- description: "Filter definitions as JSON"
531
- }),
532
- sort_json: data.Field.textarea({
533
- label: "Sort (JSON)",
534
- description: "Sort configuration as JSON"
535
- }),
536
- config_json: data.Field.textarea({
537
- label: "Configuration (JSON)",
538
- description: "View-specific configuration as JSON"
539
- }),
540
- // Display Options
541
- page_size: data.Field.number({
542
- label: "Page Size",
543
- defaultValue: 25,
544
- min: 1,
545
- max: 200
546
- }),
547
- show_search: data.Field.boolean({
548
- label: "Show Search",
549
- defaultValue: true
550
- }),
551
- show_filters: data.Field.boolean({
552
- label: "Show Filters",
553
- defaultValue: true
554
- }),
555
- // Classification
556
- namespace: data.Field.text({
557
- label: "Namespace",
558
- maxLength: 100
559
- }),
560
- // Package Management
561
- package_id: data.Field.lookup("sys_package", {
562
- label: "Package"
563
- }),
564
- managed_by: data.Field.select({
565
- label: "Managed By",
566
- options: [
567
- { value: "package", label: "Package" },
568
- { value: "platform", label: "Platform" },
569
- { value: "user", label: "User" }
570
- ]
571
- }),
572
- // Audit
573
- created_by: data.Field.lookup("sys_user", { label: "Created By" }),
574
- created_at: data.Field.datetime({ label: "Created At" }),
575
- updated_by: data.Field.lookup("sys_user", { label: "Updated By" }),
576
- updated_at: data.Field.datetime({ label: "Updated At" })
577
- },
578
- indexes: [
579
- { fields: ["name", "project_id"], unique: true },
580
- { fields: ["project_id"] },
581
- { fields: ["object_name"] },
582
- { fields: ["view_type"] },
583
- { fields: ["namespace"] },
584
- { fields: ["package_id"] }
585
- ],
586
- enable: {
587
- trackHistory: true,
588
- searchable: true,
589
- apiEnabled: true,
590
- trash: true,
591
- mru: true
592
- }
593
- });
594
- var SysAgent = data.ObjectSchema.create({
595
- name: "sys_agent",
596
- label: "AI Agent",
597
- pluralLabel: "AI Agents",
598
- description: "AI agent definitions",
599
- icon: "bot",
600
- isSystem: true,
601
- fields: {
602
- // Core Identity
603
- name: data.Field.text({
604
- label: "Agent Name",
605
- required: true,
606
- maxLength: 255
607
- }),
608
- project_id: data.Field.text({
609
- label: "Environment ID",
610
- maxLength: 255,
611
- description: "Project/environment scope \u2014 null = control-plane global"
612
- }),
613
- label: data.Field.text({
614
- label: "Display Label",
615
- required: true,
616
- maxLength: 255
617
- }),
618
- description: data.Field.textarea({
619
- label: "Description"
620
- }),
621
- // Agent Type
622
- agent_type: data.Field.select({
623
- label: "Agent Type",
624
- options: [
625
- { value: "conversational", label: "Conversational" },
626
- { value: "task", label: "Task-Based" },
627
- { value: "analytical", label: "Analytical" },
628
- { value: "workflow", label: "Workflow" }
629
- ]
630
- }),
631
- // Model Configuration
632
- model: data.Field.text({
633
- label: "Model ID",
634
- maxLength: 255,
635
- description: "AI model identifier"
636
- }),
637
- temperature: data.Field.number({
638
- label: "Temperature",
639
- min: 0,
640
- max: 2,
641
- defaultValue: 0.7
642
- }),
643
- max_tokens: data.Field.number({
644
- label: "Max Tokens",
645
- min: 1,
646
- max: 1e5
647
- }),
648
- top_p: data.Field.number({
649
- label: "Top P",
650
- min: 0,
651
- max: 1
652
- }),
653
- // System Prompt
654
- system_prompt: data.Field.textarea({
655
- label: "System Prompt",
656
- description: "Instructions for the AI agent"
657
- }),
658
- // Tools Configuration
659
- tools_json: data.Field.textarea({
660
- label: "Tools (JSON)",
661
- description: "Available tools as JSON array"
662
- }),
663
- // Skills Configuration
664
- skills_json: data.Field.textarea({
665
- label: "Skills (JSON)",
666
- description: "Available skills as JSON array"
667
- }),
668
- // Memory Configuration
669
- memory_enabled: data.Field.boolean({
670
- label: "Memory Enabled",
671
- defaultValue: false
672
- }),
673
- memory_window: data.Field.number({
674
- label: "Memory Window",
675
- description: "Number of conversation turns to remember",
676
- defaultValue: 10
677
- }),
678
- // Classification
679
- namespace: data.Field.text({
680
- label: "Namespace",
681
- maxLength: 100
682
- }),
683
- // Package Management
684
- package_id: data.Field.lookup("sys_package", {
685
- label: "Package"
686
- }),
687
- managed_by: data.Field.select({
688
- label: "Managed By",
689
- options: [
690
- { value: "package", label: "Package" },
691
- { value: "platform", label: "Platform" },
692
- { value: "user", label: "User" }
693
- ]
694
- }),
695
- // Audit
696
- created_by: data.Field.lookup("sys_user", { label: "Created By" }),
697
- created_at: data.Field.datetime({ label: "Created At" }),
698
- updated_by: data.Field.lookup("sys_user", { label: "Updated By" }),
699
- updated_at: data.Field.datetime({ label: "Updated At" })
700
- },
701
- indexes: [
702
- { fields: ["name", "project_id"], unique: true },
703
- { fields: ["project_id"] },
704
- { fields: ["agent_type"] },
705
- { fields: ["namespace"] },
706
- { fields: ["package_id"] }
707
- ],
708
- enable: {
709
- trackHistory: true,
710
- searchable: true,
711
- apiEnabled: true,
712
- trash: true,
713
- mru: true
714
- }
715
- });
716
- var SysTool = data.ObjectSchema.create({
717
- name: "sys_tool",
718
- label: "AI Tool",
719
- pluralLabel: "AI Tools",
720
- description: "AI tool definitions",
721
- icon: "wrench",
722
- isSystem: true,
723
- fields: {
724
- // Core Identity
725
- name: data.Field.text({
726
- label: "Tool Name",
727
- required: true,
728
- maxLength: 255
729
- }),
730
- project_id: data.Field.text({
731
- label: "Environment ID",
732
- maxLength: 255,
733
- description: "Project/environment scope \u2014 null = control-plane global"
734
- }),
735
- label: data.Field.text({
736
- label: "Display Label",
737
- required: true,
738
- maxLength: 255
739
- }),
740
- description: data.Field.textarea({
741
- label: "Description",
742
- required: true
743
- }),
744
- // Parameters
745
- parameters_json: data.Field.textarea({
746
- label: "Parameters (JSON)",
747
- description: "Tool parameter schema as JSON"
748
- }),
749
- // Implementation
750
- handler_code: data.Field.textarea({
751
- label: "Handler Code",
752
- description: "Tool implementation code"
753
- }),
754
- // Classification
755
- namespace: data.Field.text({
756
- label: "Namespace",
757
- maxLength: 100
758
- }),
759
- // Package Management
760
- package_id: data.Field.lookup("sys_package", {
761
- label: "Package"
762
- }),
763
- managed_by: data.Field.select({
764
- label: "Managed By",
765
- options: [
766
- { value: "package", label: "Package" },
767
- { value: "platform", label: "Platform" },
768
- { value: "user", label: "User" }
769
- ]
770
- }),
771
- // Audit
772
- created_by: data.Field.lookup("sys_user", { label: "Created By" }),
773
- created_at: data.Field.datetime({ label: "Created At" }),
774
- updated_by: data.Field.lookup("sys_user", { label: "Updated By" }),
775
- updated_at: data.Field.datetime({ label: "Updated At" })
776
- },
777
- indexes: [
778
- { fields: ["name", "project_id"], unique: true },
779
- { fields: ["project_id"] },
780
- { fields: ["namespace"] },
781
- { fields: ["package_id"] }
782
- ],
783
- enable: {
784
- trackHistory: true,
785
- searchable: true,
786
- apiEnabled: true,
787
- trash: true,
788
- mru: true
789
- }
790
- });
791
- var SysFlow = data.ObjectSchema.create({
792
- name: "sys_flow",
793
- label: "Flow",
794
- pluralLabel: "Flows",
795
- description: "Visual logic flow definitions",
796
- icon: "workflow",
797
- isSystem: true,
798
- fields: {
799
- // Core Identity
800
- name: data.Field.text({
801
- label: "Flow Name",
802
- required: true,
803
- maxLength: 255
804
- }),
805
- project_id: data.Field.text({
806
- label: "Environment ID",
807
- maxLength: 255,
808
- description: "Project/environment scope \u2014 null = control-plane global"
809
- }),
810
- label: data.Field.text({
811
- label: "Display Label",
812
- required: true,
813
- maxLength: 255
814
- }),
815
- description: data.Field.textarea({
816
- label: "Description"
817
- }),
818
- // Flow Type
819
- flow_type: data.Field.select({
820
- label: "Flow Type",
821
- required: true,
822
- options: [
823
- { value: "autolaunched", label: "Autolaunched" },
824
- { value: "screen", label: "Screen Flow" },
825
- { value: "schedule", label: "Scheduled" },
826
- { value: "trigger", label: "Trigger-Based" }
827
- ]
828
- }),
829
- // Flow Definition
830
- nodes_json: data.Field.textarea({
831
- label: "Nodes (JSON)",
832
- description: "Flow nodes as JSON"
833
- }),
834
- edges_json: data.Field.textarea({
835
- label: "Edges (JSON)",
836
- description: "Flow edges as JSON"
837
- }),
838
- variables_json: data.Field.textarea({
839
- label: "Variables (JSON)",
840
- description: "Flow variables as JSON"
841
- }),
842
- // Trigger Configuration
843
- trigger_type: data.Field.select({
844
- label: "Trigger Type",
845
- options: [
846
- { value: "record_created", label: "Record Created" },
847
- { value: "record_updated", label: "Record Updated" },
848
- { value: "record_deleted", label: "Record Deleted" },
849
- { value: "schedule", label: "Schedule" },
850
- { value: "platform_event", label: "Platform Event" }
851
- ]
852
- }),
853
- trigger_object: data.Field.text({
854
- label: "Trigger Object",
855
- maxLength: 255
856
- }),
857
- // Status
858
- active: data.Field.boolean({
859
- label: "Active",
860
- defaultValue: false
861
- }),
862
- // Classification
863
- namespace: data.Field.text({
864
- label: "Namespace",
865
- maxLength: 100
866
- }),
867
- // Package Management
868
- package_id: data.Field.lookup("sys_package", {
869
- label: "Package"
870
- }),
871
- managed_by: data.Field.select({
872
- label: "Managed By",
873
- options: [
874
- { value: "package", label: "Package" },
875
- { value: "platform", label: "Platform" },
876
- { value: "user", label: "User" }
877
- ]
878
- }),
879
- // Audit
880
- created_by: data.Field.lookup("sys_user", { label: "Created By" }),
881
- created_at: data.Field.datetime({ label: "Created At" }),
882
- updated_by: data.Field.lookup("sys_user", { label: "Updated By" }),
883
- updated_at: data.Field.datetime({ label: "Updated At" })
884
- },
885
- indexes: [
886
- { fields: ["name", "project_id"], unique: true },
887
- { fields: ["project_id"] },
888
- { fields: ["flow_type"] },
889
- { fields: ["active"] },
890
- { fields: ["namespace"] },
891
- { fields: ["package_id"] }
892
- ],
893
- enable: {
894
- trackHistory: true,
895
- searchable: true,
896
- apiEnabled: true,
897
- trash: true,
898
- mru: true
899
- }
900
- });
901
316
 
902
- exports.SysAgent = SysAgent;
903
- exports.SysFlow = SysFlow;
904
317
  exports.SysMetadata = SysMetadataObject;
905
318
  exports.SysMetadataHistoryObject = SysMetadataHistoryObject;
906
319
  exports.SysMetadataObject = SysMetadataObject;
907
- exports.SysObject = SysObject;
908
- exports.SysTool = SysTool;
909
- exports.SysView = SysView;
910
320
  //# sourceMappingURL=index.js.map
911
321
  //# sourceMappingURL=index.js.map