@memberjunction/cli 5.3.0 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/oclif.manifest.json +1048 -1048
  2. package/package.json +11 -11
@@ -774,25 +774,38 @@
774
774
  "manifest.js"
775
775
  ]
776
776
  },
777
- "install": {
777
+ "dbdoc:analyze": {
778
778
  "aliases": [],
779
779
  "args": {},
780
- "description": "Install MemberJunction",
780
+ "description": "Analyze database and generate documentation (delegates to db-auto-doc analyze)",
781
781
  "examples": [
782
- "<%= config.bin %> <%= command.id %>\n"
782
+ "<%= config.bin %> <%= command.id %>",
783
+ "<%= config.bin %> <%= command.id %> --resume ./output/run-6/state.json",
784
+ "<%= config.bin %> <%= command.id %> --config ./my-config.json"
783
785
  ],
784
786
  "flags": {
785
- "verbose": {
786
- "char": "v",
787
- "description": "Enable additional logging",
788
- "name": "verbose",
789
- "allowNo": false,
790
- "type": "boolean"
787
+ "resume": {
788
+ "char": "r",
789
+ "description": "Resume from an existing state file",
790
+ "name": "resume",
791
+ "required": false,
792
+ "hasDynamicHelp": false,
793
+ "multiple": false,
794
+ "type": "option"
795
+ },
796
+ "config": {
797
+ "char": "c",
798
+ "description": "Path to config file",
799
+ "name": "config",
800
+ "default": "./config.json",
801
+ "hasDynamicHelp": false,
802
+ "multiple": false,
803
+ "type": "option"
791
804
  }
792
805
  },
793
806
  "hasDynamicHelp": false,
794
807
  "hiddenAliases": [],
795
- "id": "install",
808
+ "id": "dbdoc:analyze",
796
809
  "pluginAlias": "@memberjunction/cli",
797
810
  "pluginName": "@memberjunction/cli",
798
811
  "pluginType": "core",
@@ -802,54 +815,105 @@
802
815
  "relativePath": [
803
816
  "dist",
804
817
  "commands",
805
- "install",
806
- "index.js"
818
+ "dbdoc",
819
+ "analyze.js"
807
820
  ]
808
821
  },
809
- "migrate": {
822
+ "dbdoc:export-sample-queries": {
810
823
  "aliases": [],
811
824
  "args": {},
812
- "description": "Migrate MemberJunction database to latest version",
825
+ "description": "Export sample queries to MemberJunction metadata format (delegates to db-auto-doc export-sample-queries)",
813
826
  "examples": [
814
- "<%= config.bin %> <%= command.id %>\n",
815
- "<%= config.bin %> <%= command.id %> --schema __BCSaaS --dir ./migrations/v1\n",
816
- "<%= config.bin %> <%= command.id %> --schema __BCSaaS --tag v1.0.0\n"
827
+ "<%= config.bin %> <%= command.id %> --input ./output/sample-queries.json --output ./metadata/queries/.queries.json",
828
+ "<%= config.bin %> <%= command.id %> --input ./sample-queries.json --output ./metadata/queries/.queries.json --separate-sql-files",
829
+ "<%= config.bin %> <%= command.id %> --input ./sample-queries.json --output ./queries/.queries.json --category \"Database Documentation\"",
830
+ "<%= config.bin %> <%= command.id %> --input ./sample-queries.json --output ./queries/.queries.json --status Pending --min-confidence 0.8"
817
831
  ],
818
832
  "flags": {
819
- "verbose": {
820
- "char": "v",
821
- "description": "Enable additional logging",
822
- "name": "verbose",
833
+ "input": {
834
+ "char": "i",
835
+ "description": "Path to sample-queries.json file generated by generate-queries command",
836
+ "name": "input",
837
+ "required": true,
838
+ "hasDynamicHelp": false,
839
+ "multiple": false,
840
+ "type": "option"
841
+ },
842
+ "output": {
843
+ "char": "o",
844
+ "description": "Output path for the .queries.json metadata file",
845
+ "name": "output",
846
+ "required": true,
847
+ "hasDynamicHelp": false,
848
+ "multiple": false,
849
+ "type": "option"
850
+ },
851
+ "separate-sql-files": {
852
+ "description": "Write SQL to separate files and use @file: references",
853
+ "name": "separate-sql-files",
823
854
  "allowNo": false,
824
855
  "type": "boolean"
825
856
  },
826
- "tag": {
827
- "char": "t",
828
- "description": "Version tag to use for running remote migrations",
829
- "name": "tag",
857
+ "sql-dir": {
858
+ "description": "Directory for SQL files when using --separate-sql-files (relative to output file)",
859
+ "name": "sql-dir",
860
+ "default": "SQL",
830
861
  "hasDynamicHelp": false,
831
862
  "multiple": false,
832
863
  "type": "option"
833
864
  },
834
- "schema": {
835
- "char": "s",
836
- "description": "Target schema (overrides coreSchema from config)",
837
- "name": "schema",
865
+ "category": {
866
+ "description": "Category name for @lookup reference (e.g., \"Database Documentation\")",
867
+ "name": "category",
868
+ "required": false,
838
869
  "hasDynamicHelp": false,
839
870
  "multiple": false,
840
871
  "type": "option"
841
872
  },
842
- "dir": {
843
- "description": "Migration source directory (overrides migrationsLocation from config)",
844
- "name": "dir",
873
+ "status": {
874
+ "description": "Status to assign to exported queries",
875
+ "name": "status",
876
+ "default": "Pending",
877
+ "hasDynamicHelp": false,
878
+ "multiple": false,
879
+ "options": [
880
+ "Approved",
881
+ "Pending",
882
+ "Rejected",
883
+ "Expired"
884
+ ],
885
+ "type": "option"
886
+ },
887
+ "min-confidence": {
888
+ "description": "Minimum confidence threshold to export (0-1)",
889
+ "name": "min-confidence",
890
+ "default": "0",
845
891
  "hasDynamicHelp": false,
846
892
  "multiple": false,
847
893
  "type": "option"
894
+ },
895
+ "validated-only": {
896
+ "description": "Only export queries that were successfully validated",
897
+ "name": "validated-only",
898
+ "allowNo": false,
899
+ "type": "boolean"
900
+ },
901
+ "append": {
902
+ "description": "Append to existing metadata file instead of overwriting",
903
+ "name": "append",
904
+ "allowNo": false,
905
+ "type": "boolean"
906
+ },
907
+ "include-primary-key": {
908
+ "description": "Include primaryKey and sync fields (for updating existing records)",
909
+ "name": "include-primary-key",
910
+ "allowNo": false,
911
+ "type": "boolean"
848
912
  }
849
913
  },
850
914
  "hasDynamicHelp": false,
851
915
  "hiddenAliases": [],
852
- "id": "migrate",
916
+ "id": "dbdoc:export-sample-queries",
853
917
  "pluginAlias": "@memberjunction/cli",
854
918
  "pluginName": "@memberjunction/cli",
855
919
  "pluginType": "core",
@@ -859,40 +923,100 @@
859
923
  "relativePath": [
860
924
  "dist",
861
925
  "commands",
862
- "migrate",
863
- "index.js"
926
+ "dbdoc",
927
+ "export-sample-queries.js"
864
928
  ]
865
929
  },
866
- "querygen:export": {
930
+ "dbdoc:export": {
867
931
  "aliases": [],
868
932
  "args": {},
869
- "description": "Export queries from database to metadata files",
933
+ "description": "Export documentation in multiple formats (delegates to db-auto-doc export)",
870
934
  "examples": [
871
- "<%= config.bin %> <%= command.id %>",
872
- "<%= config.bin %> <%= command.id %> --output ./metadata/queries",
873
- "<%= config.bin %> <%= command.id %> --verbose"
935
+ "<%= config.bin %> <%= command.id %> --state-file=./db-doc-state.json",
936
+ "<%= config.bin %> <%= command.id %> --sql",
937
+ "<%= config.bin %> <%= command.id %> --markdown",
938
+ "<%= config.bin %> <%= command.id %> --html",
939
+ "<%= config.bin %> <%= command.id %> --csv",
940
+ "<%= config.bin %> <%= command.id %> --mermaid",
941
+ "<%= config.bin %> <%= command.id %> --sql --markdown --html --csv --mermaid --apply"
874
942
  ],
875
943
  "flags": {
876
- "output": {
944
+ "state-file": {
945
+ "char": "s",
946
+ "description": "Path to state JSON file",
947
+ "name": "state-file",
948
+ "hasDynamicHelp": false,
949
+ "multiple": false,
950
+ "type": "option"
951
+ },
952
+ "output-dir": {
877
953
  "char": "o",
878
- "description": "Output directory",
879
- "name": "output",
880
- "default": "./metadata/queries",
954
+ "description": "Output directory for generated files",
955
+ "name": "output-dir",
881
956
  "hasDynamicHelp": false,
882
957
  "multiple": false,
883
958
  "type": "option"
884
959
  },
885
- "verbose": {
886
- "char": "v",
887
- "description": "Verbose output",
888
- "name": "verbose",
960
+ "sql": {
961
+ "description": "Generate SQL script",
962
+ "name": "sql",
963
+ "allowNo": false,
964
+ "type": "boolean"
965
+ },
966
+ "markdown": {
967
+ "description": "Generate Markdown documentation",
968
+ "name": "markdown",
969
+ "allowNo": false,
970
+ "type": "boolean"
971
+ },
972
+ "html": {
973
+ "description": "Generate interactive HTML documentation",
974
+ "name": "html",
975
+ "allowNo": false,
976
+ "type": "boolean"
977
+ },
978
+ "csv": {
979
+ "description": "Generate CSV exports (tables and columns)",
980
+ "name": "csv",
981
+ "allowNo": false,
982
+ "type": "boolean"
983
+ },
984
+ "mermaid": {
985
+ "description": "Generate Mermaid ERD diagram files",
986
+ "name": "mermaid",
987
+ "allowNo": false,
988
+ "type": "boolean"
989
+ },
990
+ "report": {
991
+ "description": "Generate analysis report",
992
+ "name": "report",
993
+ "allowNo": false,
994
+ "type": "boolean"
995
+ },
996
+ "apply": {
997
+ "description": "Apply SQL to database",
998
+ "name": "apply",
999
+ "allowNo": false,
1000
+ "type": "boolean"
1001
+ },
1002
+ "approved-only": {
1003
+ "description": "Only export approved items",
1004
+ "name": "approved-only",
889
1005
  "allowNo": false,
890
1006
  "type": "boolean"
1007
+ },
1008
+ "confidence-threshold": {
1009
+ "description": "Minimum confidence threshold",
1010
+ "name": "confidence-threshold",
1011
+ "default": "0",
1012
+ "hasDynamicHelp": false,
1013
+ "multiple": false,
1014
+ "type": "option"
891
1015
  }
892
1016
  },
893
1017
  "hasDynamicHelp": false,
894
1018
  "hiddenAliases": [],
895
- "id": "querygen:export",
1019
+ "id": "dbdoc:export",
896
1020
  "pluginAlias": "@memberjunction/cli",
897
1021
  "pluginName": "@memberjunction/cli",
898
1022
  "pluginType": "core",
@@ -902,126 +1026,65 @@
902
1026
  "relativePath": [
903
1027
  "dist",
904
1028
  "commands",
905
- "querygen",
1029
+ "dbdoc",
906
1030
  "export.js"
907
1031
  ]
908
1032
  },
909
- "querygen:generate": {
1033
+ "dbdoc:generate-queries": {
910
1034
  "aliases": [],
911
1035
  "args": {},
912
- "description": "Generate SQL query templates for entities using AI",
1036
+ "description": "Generate sample SQL queries from existing analysis state (delegates to db-auto-doc generate-queries)",
913
1037
  "examples": [
914
- "<%= config.bin %> <%= command.id %>",
915
- "<%= config.bin %> <%= command.id %> --entities \"Customers,Orders\"",
916
- "<%= config.bin %> <%= command.id %> --max-entities 5 --verbose",
917
- "<%= config.bin %> <%= command.id %> --mode database"
1038
+ "<%= config.bin %> <%= command.id %> --from-state ./output/run-1/state.json",
1039
+ "<%= config.bin %> <%= command.id %> --from-state ./output/run-1/state.json --output-dir ./queries",
1040
+ "<%= config.bin %> <%= command.id %> --from-state ./output/run-1/state.json --queries-per-table 10"
918
1041
  ],
919
1042
  "flags": {
920
- "entities": {
921
- "char": "e",
922
- "description": "Specific entities to generate queries for (comma-separated)",
923
- "name": "entities",
1043
+ "from-state": {
1044
+ "description": "Path to existing state.json file from previous analysis",
1045
+ "name": "from-state",
1046
+ "required": true,
924
1047
  "hasDynamicHelp": false,
925
1048
  "multiple": false,
926
1049
  "type": "option"
927
1050
  },
928
- "exclude-entities": {
929
- "char": "x",
930
- "description": "Entities to exclude (comma-separated)",
931
- "name": "exclude-entities",
1051
+ "output-dir": {
1052
+ "description": "Output directory for generated queries",
1053
+ "name": "output-dir",
1054
+ "required": false,
932
1055
  "hasDynamicHelp": false,
933
1056
  "multiple": false,
934
1057
  "type": "option"
935
1058
  },
936
- "exclude-schemas": {
937
- "char": "s",
938
- "description": "Schemas to exclude (comma-separated)",
939
- "name": "exclude-schemas",
940
- "hasDynamicHelp": false,
941
- "multiple": false,
942
- "type": "option"
943
- },
944
- "max-entities": {
945
- "char": "m",
946
- "description": "Max entities per group",
947
- "name": "max-entities",
948
- "default": 3,
949
- "hasDynamicHelp": false,
950
- "multiple": false,
951
- "type": "option"
952
- },
953
- "target-groups": {
954
- "char": "t",
955
- "description": "Target number of entity groups to generate",
956
- "name": "target-groups",
957
- "default": 75,
958
- "hasDynamicHelp": false,
959
- "multiple": false,
960
- "type": "option"
961
- },
962
- "max-refinements": {
963
- "char": "r",
964
- "description": "Max refinement iterations",
965
- "name": "max-refinements",
966
- "default": 3,
967
- "hasDynamicHelp": false,
968
- "multiple": false,
969
- "type": "option"
970
- },
971
- "max-fixes": {
972
- "char": "f",
973
- "description": "Max error-fixing attempts",
974
- "name": "max-fixes",
975
- "default": 5,
976
- "hasDynamicHelp": false,
977
- "multiple": false,
978
- "type": "option"
979
- },
980
- "model": {
981
- "description": "Preferred AI model",
982
- "name": "model",
983
- "hasDynamicHelp": false,
984
- "multiple": false,
985
- "type": "option"
986
- },
987
- "vendor": {
988
- "description": "Preferred AI vendor",
989
- "name": "vendor",
1059
+ "config": {
1060
+ "char": "c",
1061
+ "description": "Path to config file (for database connection and AI settings)",
1062
+ "name": "config",
1063
+ "default": "./config.json",
990
1064
  "hasDynamicHelp": false,
991
1065
  "multiple": false,
992
1066
  "type": "option"
993
1067
  },
994
- "output": {
995
- "char": "o",
996
- "description": "Output directory",
997
- "name": "output",
1068
+ "queries-per-table": {
1069
+ "description": "Number of queries to generate per table",
1070
+ "name": "queries-per-table",
1071
+ "required": false,
998
1072
  "hasDynamicHelp": false,
999
1073
  "multiple": false,
1000
1074
  "type": "option"
1001
1075
  },
1002
- "mode": {
1003
- "description": "Output mode: metadata|database|both",
1004
- "name": "mode",
1076
+ "max-execution-time": {
1077
+ "description": "Maximum execution time for query validation (ms)",
1078
+ "name": "max-execution-time",
1079
+ "required": false,
1005
1080
  "hasDynamicHelp": false,
1006
1081
  "multiple": false,
1007
- "options": [
1008
- "metadata",
1009
- "database",
1010
- "both"
1011
- ],
1012
1082
  "type": "option"
1013
- },
1014
- "verbose": {
1015
- "char": "v",
1016
- "description": "Verbose output",
1017
- "name": "verbose",
1018
- "allowNo": false,
1019
- "type": "boolean"
1020
1083
  }
1021
1084
  },
1022
1085
  "hasDynamicHelp": false,
1023
1086
  "hiddenAliases": [],
1024
- "id": "querygen:generate",
1087
+ "id": "dbdoc:generate-queries",
1025
1088
  "pluginAlias": "@memberjunction/cli",
1026
1089
  "pluginName": "@memberjunction/cli",
1027
1090
  "pluginType": "core",
@@ -1031,40 +1094,43 @@
1031
1094
  "relativePath": [
1032
1095
  "dist",
1033
1096
  "commands",
1034
- "querygen",
1035
- "generate.js"
1097
+ "dbdoc",
1098
+ "generate-queries.js"
1036
1099
  ]
1037
1100
  },
1038
- "querygen:validate": {
1101
+ "dbdoc": {
1039
1102
  "aliases": [],
1040
1103
  "args": {},
1041
- "description": "Validate existing query templates",
1104
+ "description": "AI-powered database documentation generator",
1105
+ "flags": {},
1106
+ "hasDynamicHelp": false,
1107
+ "hidden": false,
1108
+ "hiddenAliases": [],
1109
+ "id": "dbdoc",
1110
+ "pluginAlias": "@memberjunction/cli",
1111
+ "pluginName": "@memberjunction/cli",
1112
+ "pluginType": "core",
1113
+ "strict": true,
1114
+ "enableJsonFlag": false,
1115
+ "isESM": true,
1116
+ "relativePath": [
1117
+ "dist",
1118
+ "commands",
1119
+ "dbdoc",
1120
+ "index.js"
1121
+ ]
1122
+ },
1123
+ "dbdoc:init": {
1124
+ "aliases": [],
1125
+ "args": {},
1126
+ "description": "Initialize DBAutoDoc project (delegates to db-auto-doc init)",
1042
1127
  "examples": [
1043
- "<%= config.bin %> <%= command.id %>",
1044
- "<%= config.bin %> <%= command.id %> --path ./metadata/queries",
1045
- "<%= config.bin %> <%= command.id %> --verbose"
1128
+ "<%= config.bin %> <%= command.id %>"
1046
1129
  ],
1047
- "flags": {
1048
- "path": {
1049
- "char": "p",
1050
- "description": "Path to queries metadata file or directory",
1051
- "name": "path",
1052
- "default": "./metadata/queries",
1053
- "hasDynamicHelp": false,
1054
- "multiple": false,
1055
- "type": "option"
1056
- },
1057
- "verbose": {
1058
- "char": "v",
1059
- "description": "Verbose output",
1060
- "name": "verbose",
1061
- "allowNo": false,
1062
- "type": "boolean"
1063
- }
1064
- },
1130
+ "flags": {},
1065
1131
  "hasDynamicHelp": false,
1066
1132
  "hiddenAliases": [],
1067
- "id": "querygen:validate",
1133
+ "id": "dbdoc:init",
1068
1134
  "pluginAlias": "@memberjunction/cli",
1069
1135
  "pluginName": "@memberjunction/cli",
1070
1136
  "pluginType": "core",
@@ -1074,64 +1140,30 @@
1074
1140
  "relativePath": [
1075
1141
  "dist",
1076
1142
  "commands",
1077
- "querygen",
1078
- "validate.js"
1143
+ "dbdoc",
1144
+ "init.js"
1079
1145
  ]
1080
1146
  },
1081
- "sync:file-reset": {
1147
+ "dbdoc:reset": {
1082
1148
  "aliases": [],
1083
1149
  "args": {},
1084
- "description": "Reset file metadata sections",
1150
+ "description": "Reset analysis state (delegates to db-auto-doc reset)",
1085
1151
  "examples": [
1086
1152
  "<%= config.bin %> <%= command.id %>",
1087
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1088
- "<%= config.bin %> <%= command.id %> --sections=\"dependencies,references\"",
1089
- "<%= config.bin %> <%= command.id %> --all"
1153
+ "<%= config.bin %> <%= command.id %> --force"
1090
1154
  ],
1091
1155
  "flags": {
1092
- "dir": {
1093
- "description": "Specific entity directory to reset",
1094
- "name": "dir",
1095
- "hasDynamicHelp": false,
1096
- "multiple": false,
1097
- "type": "option"
1098
- },
1099
- "sections": {
1100
- "description": "Comma-separated list of sections to reset (dependencies,references,related,lookup)",
1101
- "name": "sections",
1102
- "hasDynamicHelp": false,
1103
- "multiple": false,
1104
- "type": "option"
1105
- },
1106
- "all": {
1107
- "description": "Reset all metadata sections",
1108
- "name": "all",
1109
- "allowNo": false,
1110
- "type": "boolean"
1111
- },
1112
- "dry-run": {
1113
- "description": "Show what would be reset without actually resetting",
1114
- "name": "dry-run",
1115
- "allowNo": false,
1116
- "type": "boolean"
1117
- },
1118
1156
  "force": {
1119
- "description": "Skip confirmation prompts",
1157
+ "char": "f",
1158
+ "description": "Force reset without confirmation",
1120
1159
  "name": "force",
1121
1160
  "allowNo": false,
1122
1161
  "type": "boolean"
1123
- },
1124
- "verbose": {
1125
- "char": "v",
1126
- "description": "Show detailed output",
1127
- "name": "verbose",
1128
- "allowNo": false,
1129
- "type": "boolean"
1130
1162
  }
1131
1163
  },
1132
1164
  "hasDynamicHelp": false,
1133
1165
  "hiddenAliases": [],
1134
- "id": "sync:file-reset",
1166
+ "id": "dbdoc:reset",
1135
1167
  "pluginAlias": "@memberjunction/cli",
1136
1168
  "pluginName": "@memberjunction/cli",
1137
1169
  "pluginType": "core",
@@ -1141,21 +1173,31 @@
1141
1173
  "relativePath": [
1142
1174
  "dist",
1143
1175
  "commands",
1144
- "sync",
1145
- "file-reset.js"
1176
+ "dbdoc",
1177
+ "reset.js"
1146
1178
  ]
1147
1179
  },
1148
- "sync:init": {
1180
+ "dbdoc:status": {
1149
1181
  "aliases": [],
1150
1182
  "args": {},
1151
- "description": "Initialize a directory for metadata synchronization",
1183
+ "description": "Show analysis status and progress (delegates to db-auto-doc status)",
1152
1184
  "examples": [
1153
- "<%= config.bin %> <%= command.id %>"
1185
+ "<%= config.bin %> <%= command.id %>",
1186
+ "<%= config.bin %> <%= command.id %> --state-file ./custom-state.json"
1154
1187
  ],
1155
- "flags": {},
1188
+ "flags": {
1189
+ "state-file": {
1190
+ "char": "s",
1191
+ "description": "Path to state JSON file",
1192
+ "name": "state-file",
1193
+ "hasDynamicHelp": false,
1194
+ "multiple": false,
1195
+ "type": "option"
1196
+ }
1197
+ },
1156
1198
  "hasDynamicHelp": false,
1157
1199
  "hiddenAliases": [],
1158
- "id": "sync:init",
1200
+ "id": "dbdoc:status",
1159
1201
  "pluginAlias": "@memberjunction/cli",
1160
1202
  "pluginName": "@memberjunction/cli",
1161
1203
  "pluginType": "core",
@@ -1165,119 +1207,46 @@
1165
1207
  "relativePath": [
1166
1208
  "dist",
1167
1209
  "commands",
1168
- "sync",
1169
- "init.js"
1210
+ "dbdoc",
1211
+ "status.js"
1170
1212
  ]
1171
1213
  },
1172
- "sync:pull": {
1214
+ "migrate": {
1173
1215
  "aliases": [],
1174
1216
  "args": {},
1175
- "description": "Pull metadata from database to local files",
1217
+ "description": "Migrate MemberJunction database to latest version",
1176
1218
  "examples": [
1177
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\"",
1178
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --filter=\"CategoryID='customer-service-id'\"",
1179
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Agents\" --merge-strategy=overwrite",
1180
- "<%= config.bin %> <%= command.id %> --entity=\"Actions\" --target-dir=./custom-actions --no-validate",
1181
- "<%= config.bin %> <%= command.id %> --entity=\"Templates\" --dry-run --verbose",
1182
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --exclude-fields=InternalNotes,DebugInfo"
1219
+ "<%= config.bin %> <%= command.id %>\n",
1220
+ "<%= config.bin %> <%= command.id %> --schema __BCSaaS --dir ./migrations/v1\n",
1221
+ "<%= config.bin %> <%= command.id %> --schema __BCSaaS --tag v1.0.0\n"
1183
1222
  ],
1184
1223
  "flags": {
1185
- "entity": {
1186
- "description": "Entity name to pull",
1187
- "name": "entity",
1188
- "required": true,
1224
+ "verbose": {
1225
+ "char": "v",
1226
+ "description": "Enable additional logging",
1227
+ "name": "verbose",
1228
+ "allowNo": false,
1229
+ "type": "boolean"
1230
+ },
1231
+ "tag": {
1232
+ "char": "t",
1233
+ "description": "Version tag to use for running remote migrations",
1234
+ "name": "tag",
1189
1235
  "hasDynamicHelp": false,
1190
1236
  "multiple": false,
1191
1237
  "type": "option"
1192
1238
  },
1193
- "filter": {
1194
- "description": "Additional filter for pulling specific records",
1195
- "name": "filter",
1239
+ "schema": {
1240
+ "char": "s",
1241
+ "description": "Target schema (overrides coreSchema from config)",
1242
+ "name": "schema",
1196
1243
  "hasDynamicHelp": false,
1197
1244
  "multiple": false,
1198
1245
  "type": "option"
1199
1246
  },
1200
- "dry-run": {
1201
- "description": "Show what would be pulled without actually pulling",
1202
- "name": "dry-run",
1203
- "allowNo": false,
1204
- "type": "boolean"
1205
- },
1206
- "multi-file": {
1207
- "description": "Create a single file with multiple records (provide filename)",
1208
- "name": "multi-file",
1209
- "hasDynamicHelp": false,
1210
- "multiple": false,
1211
- "type": "option"
1212
- },
1213
- "verbose": {
1214
- "char": "v",
1215
- "description": "Show detailed output",
1216
- "name": "verbose",
1217
- "allowNo": false,
1218
- "type": "boolean"
1219
- },
1220
- "no-validate": {
1221
- "description": "Skip validation before pull",
1222
- "name": "no-validate",
1223
- "allowNo": false,
1224
- "type": "boolean"
1225
- },
1226
- "update-existing": {
1227
- "description": "Update existing records during pull",
1228
- "name": "update-existing",
1229
- "allowNo": false,
1230
- "type": "boolean"
1231
- },
1232
- "create-new": {
1233
- "description": "Create new files for records not found locally",
1234
- "name": "create-new",
1235
- "allowNo": false,
1236
- "type": "boolean"
1237
- },
1238
- "backup-before-update": {
1239
- "description": "Create backups before updating files",
1240
- "name": "backup-before-update",
1241
- "allowNo": false,
1242
- "type": "boolean"
1243
- },
1244
- "merge-strategy": {
1245
- "description": "Merge strategy for updates",
1246
- "name": "merge-strategy",
1247
- "default": "merge",
1248
- "hasDynamicHelp": false,
1249
- "multiple": false,
1250
- "options": [
1251
- "merge",
1252
- "overwrite",
1253
- "skip"
1254
- ],
1255
- "type": "option"
1256
- },
1257
- "backup-directory": {
1258
- "description": "Custom backup directory (default: .backups)",
1259
- "name": "backup-directory",
1260
- "hasDynamicHelp": false,
1261
- "multiple": false,
1262
- "type": "option"
1263
- },
1264
- "preserve-fields": {
1265
- "description": "Comma-separated list of fields to preserve during updates",
1266
- "name": "preserve-fields",
1267
- "hasDynamicHelp": false,
1268
- "multiple": true,
1269
- "type": "option"
1270
- },
1271
- "exclude-fields": {
1272
- "description": "Comma-separated list of fields to exclude from pull",
1273
- "name": "exclude-fields",
1274
- "hasDynamicHelp": false,
1275
- "multiple": true,
1276
- "type": "option"
1277
- },
1278
- "target-dir": {
1279
- "description": "Specific target directory (overrides auto-discovery)",
1280
- "name": "target-dir",
1247
+ "dir": {
1248
+ "description": "Migration source directory (overrides migrationsLocation from config)",
1249
+ "name": "dir",
1281
1250
  "hasDynamicHelp": false,
1282
1251
  "multiple": false,
1283
1252
  "type": "option"
@@ -1285,7 +1254,7 @@
1285
1254
  },
1286
1255
  "hasDynamicHelp": false,
1287
1256
  "hiddenAliases": [],
1288
- "id": "sync:pull",
1257
+ "id": "migrate",
1289
1258
  "pluginAlias": "@memberjunction/cli",
1290
1259
  "pluginName": "@memberjunction/cli",
1291
1260
  "pluginType": "core",
@@ -1295,85 +1264,29 @@
1295
1264
  "relativePath": [
1296
1265
  "dist",
1297
1266
  "commands",
1298
- "sync",
1299
- "pull.js"
1267
+ "migrate",
1268
+ "index.js"
1300
1269
  ]
1301
1270
  },
1302
- "sync:push": {
1271
+ "install": {
1303
1272
  "aliases": [],
1304
1273
  "args": {},
1305
- "description": "Push local file changes to the database",
1274
+ "description": "Install MemberJunction",
1306
1275
  "examples": [
1307
- "<%= config.bin %> <%= command.id %>",
1308
- "<%= config.bin %> <%= command.id %> --dry-run",
1309
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1310
- "<%= config.bin %> <%= command.id %> --ci"
1276
+ "<%= config.bin %> <%= command.id %>\n"
1311
1277
  ],
1312
1278
  "flags": {
1313
- "dir": {
1314
- "description": "Specific entity directory to push",
1315
- "name": "dir",
1316
- "hasDynamicHelp": false,
1317
- "multiple": false,
1318
- "type": "option"
1319
- },
1320
- "dry-run": {
1321
- "description": "Show what would be pushed without actually pushing",
1322
- "name": "dry-run",
1323
- "allowNo": false,
1324
- "type": "boolean"
1325
- },
1326
- "ci": {
1327
- "description": "CI mode - no prompts, fail on issues",
1328
- "name": "ci",
1329
- "allowNo": false,
1330
- "type": "boolean"
1331
- },
1332
1279
  "verbose": {
1333
1280
  "char": "v",
1334
- "description": "Show detailed field-level output",
1281
+ "description": "Enable additional logging",
1335
1282
  "name": "verbose",
1336
1283
  "allowNo": false,
1337
1284
  "type": "boolean"
1338
- },
1339
- "no-validate": {
1340
- "description": "Skip validation before push",
1341
- "name": "no-validate",
1342
- "allowNo": false,
1343
- "type": "boolean"
1344
- },
1345
- "delete-db-only": {
1346
- "description": "Delete database-only records that reference records being deleted (prevents FK errors)",
1347
- "name": "delete-db-only",
1348
- "allowNo": false,
1349
- "type": "boolean"
1350
- },
1351
- "parallel-batch-size": {
1352
- "description": "Number of records to process in parallel (default: 10)",
1353
- "name": "parallel-batch-size",
1354
- "default": 10,
1355
- "hasDynamicHelp": false,
1356
- "multiple": false,
1357
- "type": "option"
1358
- },
1359
- "include": {
1360
- "description": "Only process these directories (comma-separated, supports patterns)",
1361
- "name": "include",
1362
- "hasDynamicHelp": false,
1363
- "multiple": false,
1364
- "type": "option"
1365
- },
1366
- "exclude": {
1367
- "description": "Skip these directories (comma-separated, supports patterns)",
1368
- "name": "exclude",
1369
- "hasDynamicHelp": false,
1370
- "multiple": false,
1371
- "type": "option"
1372
1285
  }
1373
1286
  },
1374
1287
  "hasDynamicHelp": false,
1375
1288
  "hiddenAliases": [],
1376
- "id": "sync:push",
1289
+ "id": "install",
1377
1290
  "pluginAlias": "@memberjunction/cli",
1378
1291
  "pluginName": "@memberjunction/cli",
1379
1292
  "pluginType": "core",
@@ -1383,52 +1296,40 @@
1383
1296
  "relativePath": [
1384
1297
  "dist",
1385
1298
  "commands",
1386
- "sync",
1387
- "push.js"
1299
+ "install",
1300
+ "index.js"
1388
1301
  ]
1389
1302
  },
1390
- "sync:status": {
1303
+ "querygen:export": {
1391
1304
  "aliases": [],
1392
1305
  "args": {},
1393
- "description": "Show status of local files vs database",
1306
+ "description": "Export queries from database to metadata files",
1394
1307
  "examples": [
1395
1308
  "<%= config.bin %> <%= command.id %>",
1396
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1309
+ "<%= config.bin %> <%= command.id %> --output ./metadata/queries",
1397
1310
  "<%= config.bin %> <%= command.id %> --verbose"
1398
1311
  ],
1399
1312
  "flags": {
1400
- "dir": {
1401
- "description": "Specific entity directory to check status",
1402
- "name": "dir",
1313
+ "output": {
1314
+ "char": "o",
1315
+ "description": "Output directory",
1316
+ "name": "output",
1317
+ "default": "./metadata/queries",
1403
1318
  "hasDynamicHelp": false,
1404
1319
  "multiple": false,
1405
1320
  "type": "option"
1406
1321
  },
1407
1322
  "verbose": {
1408
1323
  "char": "v",
1409
- "description": "Show detailed field-level differences",
1324
+ "description": "Verbose output",
1410
1325
  "name": "verbose",
1411
1326
  "allowNo": false,
1412
1327
  "type": "boolean"
1413
- },
1414
- "include": {
1415
- "description": "Only process these directories (comma-separated, supports patterns)",
1416
- "name": "include",
1417
- "hasDynamicHelp": false,
1418
- "multiple": false,
1419
- "type": "option"
1420
- },
1421
- "exclude": {
1422
- "description": "Skip these directories (comma-separated, supports patterns)",
1423
- "name": "exclude",
1424
- "hasDynamicHelp": false,
1425
- "multiple": false,
1426
- "type": "option"
1427
1328
  }
1428
1329
  },
1429
1330
  "hasDynamicHelp": false,
1430
1331
  "hiddenAliases": [],
1431
- "id": "sync:status",
1332
+ "id": "querygen:export",
1432
1333
  "pluginAlias": "@memberjunction/cli",
1433
1334
  "pluginName": "@memberjunction/cli",
1434
1335
  "pluginType": "core",
@@ -1438,99 +1339,118 @@
1438
1339
  "relativePath": [
1439
1340
  "dist",
1440
1341
  "commands",
1441
- "sync",
1442
- "status.js"
1342
+ "querygen",
1343
+ "export.js"
1443
1344
  ]
1444
1345
  },
1445
- "sync:validate": {
1346
+ "querygen:generate": {
1446
1347
  "aliases": [],
1447
1348
  "args": {},
1448
- "description": "Validate metadata files",
1349
+ "description": "Generate SQL query templates for entities using AI",
1449
1350
  "examples": [
1450
1351
  "<%= config.bin %> <%= command.id %>",
1451
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1452
- "<%= config.bin %> <%= command.id %> --save-report",
1453
- "<%= config.bin %> <%= command.id %> --verbose"
1352
+ "<%= config.bin %> <%= command.id %> --entities \"Customers,Orders\"",
1353
+ "<%= config.bin %> <%= command.id %> --max-entities 5 --verbose",
1354
+ "<%= config.bin %> <%= command.id %> --mode database"
1454
1355
  ],
1455
1356
  "flags": {
1456
- "dir": {
1457
- "description": "Specific entity directory to validate",
1458
- "name": "dir",
1357
+ "entities": {
1358
+ "char": "e",
1359
+ "description": "Specific entities to generate queries for (comma-separated)",
1360
+ "name": "entities",
1459
1361
  "hasDynamicHelp": false,
1460
1362
  "multiple": false,
1461
1363
  "type": "option"
1462
1364
  },
1463
- "verbose": {
1464
- "char": "v",
1465
- "description": "Show detailed validation output",
1466
- "name": "verbose",
1467
- "allowNo": false,
1468
- "type": "boolean"
1365
+ "exclude-entities": {
1366
+ "char": "x",
1367
+ "description": "Entities to exclude (comma-separated)",
1368
+ "name": "exclude-entities",
1369
+ "hasDynamicHelp": false,
1370
+ "multiple": false,
1371
+ "type": "option"
1469
1372
  },
1470
- "save-report": {
1471
- "description": "Save validation report as markdown file",
1472
- "name": "save-report",
1473
- "allowNo": false,
1474
- "type": "boolean"
1373
+ "exclude-schemas": {
1374
+ "char": "s",
1375
+ "description": "Schemas to exclude (comma-separated)",
1376
+ "name": "exclude-schemas",
1377
+ "hasDynamicHelp": false,
1378
+ "multiple": false,
1379
+ "type": "option"
1475
1380
  },
1476
- "output": {
1477
- "description": "Output file path for validation report (default: validation-report.md)",
1478
- "name": "output",
1381
+ "max-entities": {
1382
+ "char": "m",
1383
+ "description": "Max entities per group",
1384
+ "name": "max-entities",
1385
+ "default": 3,
1479
1386
  "hasDynamicHelp": false,
1480
1387
  "multiple": false,
1481
1388
  "type": "option"
1482
- }
1483
- },
1484
- "hasDynamicHelp": false,
1485
- "hiddenAliases": [],
1486
- "id": "sync:validate",
1487
- "pluginAlias": "@memberjunction/cli",
1488
- "pluginName": "@memberjunction/cli",
1489
- "pluginType": "core",
1490
- "strict": true,
1491
- "enableJsonFlag": false,
1492
- "isESM": true,
1493
- "relativePath": [
1494
- "dist",
1495
- "commands",
1496
- "sync",
1497
- "validate.js"
1498
- ]
1499
- },
1500
- "sync:watch": {
1501
- "aliases": [],
1502
- "args": {},
1503
- "description": "Watch for file changes and sync automatically",
1504
- "examples": [
1505
- "<%= config.bin %> <%= command.id %>",
1506
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1507
- "<%= config.bin %> <%= command.id %> --debounce=1000",
1508
- "<%= config.bin %> <%= command.id %> --no-validate"
1509
- ],
1510
- "flags": {
1511
- "dir": {
1512
- "description": "Specific entity directory to watch",
1513
- "name": "dir",
1389
+ },
1390
+ "target-groups": {
1391
+ "char": "t",
1392
+ "description": "Target number of entity groups to generate",
1393
+ "name": "target-groups",
1394
+ "default": 75,
1514
1395
  "hasDynamicHelp": false,
1515
1396
  "multiple": false,
1516
1397
  "type": "option"
1517
1398
  },
1518
- "debounce": {
1519
- "description": "Debounce delay in milliseconds (default: 500)",
1520
- "name": "debounce",
1399
+ "max-refinements": {
1400
+ "char": "r",
1401
+ "description": "Max refinement iterations",
1402
+ "name": "max-refinements",
1403
+ "default": 3,
1521
1404
  "hasDynamicHelp": false,
1522
1405
  "multiple": false,
1523
1406
  "type": "option"
1524
1407
  },
1525
- "no-validate": {
1526
- "description": "Skip validation before sync",
1527
- "name": "no-validate",
1528
- "allowNo": false,
1529
- "type": "boolean"
1408
+ "max-fixes": {
1409
+ "char": "f",
1410
+ "description": "Max error-fixing attempts",
1411
+ "name": "max-fixes",
1412
+ "default": 5,
1413
+ "hasDynamicHelp": false,
1414
+ "multiple": false,
1415
+ "type": "option"
1416
+ },
1417
+ "model": {
1418
+ "description": "Preferred AI model",
1419
+ "name": "model",
1420
+ "hasDynamicHelp": false,
1421
+ "multiple": false,
1422
+ "type": "option"
1423
+ },
1424
+ "vendor": {
1425
+ "description": "Preferred AI vendor",
1426
+ "name": "vendor",
1427
+ "hasDynamicHelp": false,
1428
+ "multiple": false,
1429
+ "type": "option"
1430
+ },
1431
+ "output": {
1432
+ "char": "o",
1433
+ "description": "Output directory",
1434
+ "name": "output",
1435
+ "hasDynamicHelp": false,
1436
+ "multiple": false,
1437
+ "type": "option"
1438
+ },
1439
+ "mode": {
1440
+ "description": "Output mode: metadata|database|both",
1441
+ "name": "mode",
1442
+ "hasDynamicHelp": false,
1443
+ "multiple": false,
1444
+ "options": [
1445
+ "metadata",
1446
+ "database",
1447
+ "both"
1448
+ ],
1449
+ "type": "option"
1530
1450
  },
1531
1451
  "verbose": {
1532
1452
  "char": "v",
1533
- "description": "Show detailed output",
1453
+ "description": "Verbose output",
1534
1454
  "name": "verbose",
1535
1455
  "allowNo": false,
1536
1456
  "type": "boolean"
@@ -1538,7 +1458,7 @@
1538
1458
  },
1539
1459
  "hasDynamicHelp": false,
1540
1460
  "hiddenAliases": [],
1541
- "id": "sync:watch",
1461
+ "id": "querygen:generate",
1542
1462
  "pluginAlias": "@memberjunction/cli",
1543
1463
  "pluginName": "@memberjunction/cli",
1544
1464
  "pluginType": "core",
@@ -1548,78 +1468,32 @@
1548
1468
  "relativePath": [
1549
1469
  "dist",
1550
1470
  "commands",
1551
- "sync",
1552
- "watch.js"
1471
+ "querygen",
1472
+ "generate.js"
1553
1473
  ]
1554
1474
  },
1555
- "test:compare": {
1475
+ "querygen:validate": {
1556
1476
  "aliases": [],
1557
- "args": {
1558
- "runId1": {
1559
- "description": "First test run ID to compare",
1560
- "name": "runId1",
1561
- "required": false
1562
- },
1563
- "runId2": {
1564
- "description": "Second test run ID to compare",
1565
- "name": "runId2",
1566
- "required": false
1567
- }
1568
- },
1569
- "description": "Compare test runs for regression detection",
1477
+ "args": {},
1478
+ "description": "Validate existing query templates",
1570
1479
  "examples": [
1571
- "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2>",
1572
- "<%= config.bin %> <%= command.id %> --baseline=<run-id> --current=<run-id>",
1573
- "<%= config.bin %> <%= command.id %> --suite=<suite-id> --since=\"2024-01-01\"",
1574
- "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2> --format=json"
1480
+ "<%= config.bin %> <%= command.id %>",
1481
+ "<%= config.bin %> <%= command.id %> --path ./metadata/queries",
1482
+ "<%= config.bin %> <%= command.id %> --verbose"
1575
1483
  ],
1576
1484
  "flags": {
1577
- "version": {
1578
- "char": "v",
1579
- "description": "Compare runs by version",
1580
- "name": "version",
1581
- "hasDynamicHelp": false,
1582
- "multiple": true,
1583
- "type": "option"
1584
- },
1585
- "commit": {
1586
- "char": "c",
1587
- "description": "Compare runs by git commit",
1588
- "name": "commit",
1589
- "hasDynamicHelp": false,
1590
- "multiple": true,
1591
- "type": "option"
1592
- },
1593
- "diff-only": {
1594
- "description": "Show only differences",
1595
- "name": "diff-only",
1596
- "allowNo": false,
1597
- "type": "boolean"
1598
- },
1599
- "format": {
1600
- "char": "f",
1601
- "description": "Output format",
1602
- "name": "format",
1603
- "default": "console",
1604
- "hasDynamicHelp": false,
1605
- "multiple": false,
1606
- "options": [
1607
- "console",
1608
- "json",
1609
- "markdown"
1610
- ],
1611
- "type": "option"
1612
- },
1613
- "output": {
1614
- "char": "o",
1615
- "description": "Output file path",
1616
- "name": "output",
1485
+ "path": {
1486
+ "char": "p",
1487
+ "description": "Path to queries metadata file or directory",
1488
+ "name": "path",
1489
+ "default": "./metadata/queries",
1617
1490
  "hasDynamicHelp": false,
1618
1491
  "multiple": false,
1619
1492
  "type": "option"
1620
1493
  },
1621
1494
  "verbose": {
1622
- "description": "Show detailed information",
1495
+ "char": "v",
1496
+ "description": "Verbose output",
1623
1497
  "name": "verbose",
1624
1498
  "allowNo": false,
1625
1499
  "type": "boolean"
@@ -1627,7 +1501,7 @@
1627
1501
  },
1628
1502
  "hasDynamicHelp": false,
1629
1503
  "hiddenAliases": [],
1630
- "id": "test:compare",
1504
+ "id": "querygen:validate",
1631
1505
  "pluginAlias": "@memberjunction/cli",
1632
1506
  "pluginName": "@memberjunction/cli",
1633
1507
  "pluginType": "core",
@@ -1637,78 +1511,56 @@
1637
1511
  "relativePath": [
1638
1512
  "dist",
1639
1513
  "commands",
1640
- "test",
1641
- "compare.js"
1514
+ "querygen",
1515
+ "validate.js"
1642
1516
  ]
1643
1517
  },
1644
- "test:history": {
1518
+ "sync:file-reset": {
1645
1519
  "aliases": [],
1646
1520
  "args": {},
1647
- "description": "View test execution history",
1521
+ "description": "Reset file metadata sections",
1648
1522
  "examples": [
1649
1523
  "<%= config.bin %> <%= command.id %>",
1650
- "<%= config.bin %> <%= command.id %> --test=<test-id>",
1651
- "<%= config.bin %> <%= command.id %> --suite=<suite-id>",
1652
- "<%= config.bin %> <%= command.id %> --since=\"2024-01-01\"",
1653
- "<%= config.bin %> <%= command.id %> --limit=50"
1524
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1525
+ "<%= config.bin %> <%= command.id %> --sections=\"dependencies,references\"",
1526
+ "<%= config.bin %> <%= command.id %> --all"
1654
1527
  ],
1655
1528
  "flags": {
1656
- "test": {
1657
- "char": "t",
1658
- "description": "Filter by test ID",
1659
- "name": "test",
1660
- "hasDynamicHelp": false,
1661
- "multiple": false,
1662
- "type": "option"
1663
- },
1664
- "recent": {
1665
- "char": "r",
1666
- "description": "Number of recent runs to show",
1667
- "name": "recent",
1529
+ "dir": {
1530
+ "description": "Specific entity directory to reset",
1531
+ "name": "dir",
1668
1532
  "hasDynamicHelp": false,
1669
1533
  "multiple": false,
1670
1534
  "type": "option"
1671
1535
  },
1672
- "from": {
1673
- "description": "Show history from date (YYYY-MM-DD)",
1674
- "name": "from",
1536
+ "sections": {
1537
+ "description": "Comma-separated list of sections to reset (dependencies,references,related,lookup)",
1538
+ "name": "sections",
1675
1539
  "hasDynamicHelp": false,
1676
1540
  "multiple": false,
1677
1541
  "type": "option"
1678
1542
  },
1679
- "status": {
1680
- "char": "s",
1681
- "description": "Filter by status",
1682
- "name": "status",
1683
- "hasDynamicHelp": false,
1684
- "multiple": false,
1685
- "type": "option"
1543
+ "all": {
1544
+ "description": "Reset all metadata sections",
1545
+ "name": "all",
1546
+ "allowNo": false,
1547
+ "type": "boolean"
1686
1548
  },
1687
- "format": {
1688
- "char": "f",
1689
- "description": "Output format",
1690
- "name": "format",
1691
- "default": "console",
1692
- "hasDynamicHelp": false,
1693
- "multiple": false,
1694
- "options": [
1695
- "console",
1696
- "json",
1697
- "markdown"
1698
- ],
1699
- "type": "option"
1549
+ "dry-run": {
1550
+ "description": "Show what would be reset without actually resetting",
1551
+ "name": "dry-run",
1552
+ "allowNo": false,
1553
+ "type": "boolean"
1700
1554
  },
1701
- "output": {
1702
- "char": "o",
1703
- "description": "Output file path",
1704
- "name": "output",
1705
- "hasDynamicHelp": false,
1706
- "multiple": false,
1707
- "type": "option"
1555
+ "force": {
1556
+ "description": "Skip confirmation prompts",
1557
+ "name": "force",
1558
+ "allowNo": false,
1559
+ "type": "boolean"
1708
1560
  },
1709
1561
  "verbose": {
1710
1562
  "char": "v",
1711
- "description": "Show detailed information",
1563
+ "description": "Show detailed output",
1712
1564
  "name": "verbose",
1713
1565
  "allowNo": false,
1714
1566
  "type": "boolean"
@@ -1716,7 +1568,7 @@
1716
1568
  },
1717
1569
  "hasDynamicHelp": false,
1718
1570
  "hiddenAliases": [],
1719
- "id": "test:history",
1571
+ "id": "sync:file-reset",
1720
1572
  "pluginAlias": "@memberjunction/cli",
1721
1573
  "pluginName": "@memberjunction/cli",
1722
1574
  "pluginType": "core",
@@ -1726,26 +1578,21 @@
1726
1578
  "relativePath": [
1727
1579
  "dist",
1728
1580
  "commands",
1729
- "test",
1730
- "history.js"
1581
+ "sync",
1582
+ "file-reset.js"
1731
1583
  ]
1732
1584
  },
1733
- "test": {
1585
+ "sync:init": {
1734
1586
  "aliases": [],
1735
1587
  "args": {},
1736
- "description": "MemberJunction Testing Framework - Execute and manage tests",
1588
+ "description": "Initialize a directory for metadata synchronization",
1737
1589
  "examples": [
1738
- "<%= config.bin %> <%= command.id %> run <test-id>",
1739
- "<%= config.bin %> <%= command.id %> run --name=\"Active Members Count\"",
1740
- "<%= config.bin %> <%= command.id %> suite <suite-id>",
1741
- "<%= config.bin %> <%= command.id %> list",
1742
- "<%= config.bin %> <%= command.id %> list --suites",
1743
- "<%= config.bin %> <%= command.id %> validate --all"
1590
+ "<%= config.bin %> <%= command.id %>"
1744
1591
  ],
1745
1592
  "flags": {},
1746
1593
  "hasDynamicHelp": false,
1747
1594
  "hiddenAliases": [],
1748
- "id": "test",
1595
+ "id": "sync:init",
1749
1596
  "pluginAlias": "@memberjunction/cli",
1750
1597
  "pluginName": "@memberjunction/cli",
1751
1598
  "pluginType": "core",
@@ -1755,91 +1602,127 @@
1755
1602
  "relativePath": [
1756
1603
  "dist",
1757
1604
  "commands",
1758
- "test",
1759
- "index.js"
1605
+ "sync",
1606
+ "init.js"
1760
1607
  ]
1761
1608
  },
1762
- "test:list": {
1609
+ "sync:pull": {
1763
1610
  "aliases": [],
1764
1611
  "args": {},
1765
- "description": "List available tests, suites, and types",
1612
+ "description": "Pull metadata from database to local files",
1766
1613
  "examples": [
1767
- "<%= config.bin %> <%= command.id %>",
1768
- "<%= config.bin %> <%= command.id %> --suites",
1769
- "<%= config.bin %> <%= command.id %> --types",
1770
- "<%= config.bin %> <%= command.id %> --type=agent-eval",
1771
- "<%= config.bin %> <%= command.id %> --tag=smoke",
1772
- "<%= config.bin %> <%= command.id %> --status=active --verbose"
1614
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\"",
1615
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --filter=\"CategoryID='customer-service-id'\"",
1616
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Agents\" --merge-strategy=overwrite",
1617
+ "<%= config.bin %> <%= command.id %> --entity=\"Actions\" --target-dir=./custom-actions --no-validate",
1618
+ "<%= config.bin %> <%= command.id %> --entity=\"Templates\" --dry-run --verbose",
1619
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --exclude-fields=InternalNotes,DebugInfo"
1773
1620
  ],
1774
1621
  "flags": {
1775
- "suites": {
1776
- "description": "List test suites instead of tests",
1777
- "name": "suites",
1622
+ "entity": {
1623
+ "description": "Entity name to pull",
1624
+ "name": "entity",
1625
+ "required": true,
1626
+ "hasDynamicHelp": false,
1627
+ "multiple": false,
1628
+ "type": "option"
1629
+ },
1630
+ "filter": {
1631
+ "description": "Additional filter for pulling specific records",
1632
+ "name": "filter",
1633
+ "hasDynamicHelp": false,
1634
+ "multiple": false,
1635
+ "type": "option"
1636
+ },
1637
+ "dry-run": {
1638
+ "description": "Show what would be pulled without actually pulling",
1639
+ "name": "dry-run",
1778
1640
  "allowNo": false,
1779
1641
  "type": "boolean"
1780
1642
  },
1781
- "types": {
1782
- "description": "List test types",
1783
- "name": "types",
1643
+ "multi-file": {
1644
+ "description": "Create a single file with multiple records (provide filename)",
1645
+ "name": "multi-file",
1646
+ "hasDynamicHelp": false,
1647
+ "multiple": false,
1648
+ "type": "option"
1649
+ },
1650
+ "verbose": {
1651
+ "char": "v",
1652
+ "description": "Show detailed output",
1653
+ "name": "verbose",
1784
1654
  "allowNo": false,
1785
1655
  "type": "boolean"
1786
1656
  },
1787
- "type": {
1788
- "char": "t",
1789
- "description": "Filter by test type",
1790
- "name": "type",
1657
+ "no-validate": {
1658
+ "description": "Skip validation before pull",
1659
+ "name": "no-validate",
1660
+ "allowNo": false,
1661
+ "type": "boolean"
1662
+ },
1663
+ "update-existing": {
1664
+ "description": "Update existing records during pull",
1665
+ "name": "update-existing",
1666
+ "allowNo": false,
1667
+ "type": "boolean"
1668
+ },
1669
+ "create-new": {
1670
+ "description": "Create new files for records not found locally",
1671
+ "name": "create-new",
1672
+ "allowNo": false,
1673
+ "type": "boolean"
1674
+ },
1675
+ "backup-before-update": {
1676
+ "description": "Create backups before updating files",
1677
+ "name": "backup-before-update",
1678
+ "allowNo": false,
1679
+ "type": "boolean"
1680
+ },
1681
+ "merge-strategy": {
1682
+ "description": "Merge strategy for updates",
1683
+ "name": "merge-strategy",
1684
+ "default": "merge",
1791
1685
  "hasDynamicHelp": false,
1792
1686
  "multiple": false,
1687
+ "options": [
1688
+ "merge",
1689
+ "overwrite",
1690
+ "skip"
1691
+ ],
1793
1692
  "type": "option"
1794
1693
  },
1795
- "tag": {
1796
- "description": "Filter by tag",
1797
- "name": "tag",
1694
+ "backup-directory": {
1695
+ "description": "Custom backup directory (default: .backups)",
1696
+ "name": "backup-directory",
1798
1697
  "hasDynamicHelp": false,
1799
1698
  "multiple": false,
1800
1699
  "type": "option"
1801
1700
  },
1802
- "status": {
1803
- "char": "s",
1804
- "description": "Filter by status",
1805
- "name": "status",
1701
+ "preserve-fields": {
1702
+ "description": "Comma-separated list of fields to preserve during updates",
1703
+ "name": "preserve-fields",
1806
1704
  "hasDynamicHelp": false,
1807
- "multiple": false,
1705
+ "multiple": true,
1808
1706
  "type": "option"
1809
1707
  },
1810
- "format": {
1811
- "char": "f",
1812
- "description": "Output format",
1813
- "name": "format",
1814
- "default": "console",
1708
+ "exclude-fields": {
1709
+ "description": "Comma-separated list of fields to exclude from pull",
1710
+ "name": "exclude-fields",
1815
1711
  "hasDynamicHelp": false,
1816
- "multiple": false,
1817
- "options": [
1818
- "console",
1819
- "json",
1820
- "markdown"
1821
- ],
1712
+ "multiple": true,
1822
1713
  "type": "option"
1823
1714
  },
1824
- "output": {
1825
- "char": "o",
1826
- "description": "Output file path",
1827
- "name": "output",
1715
+ "target-dir": {
1716
+ "description": "Specific target directory (overrides auto-discovery)",
1717
+ "name": "target-dir",
1828
1718
  "hasDynamicHelp": false,
1829
1719
  "multiple": false,
1830
1720
  "type": "option"
1831
- },
1832
- "verbose": {
1833
- "char": "v",
1834
- "description": "Show detailed information",
1835
- "name": "verbose",
1836
- "allowNo": false,
1837
- "type": "boolean"
1838
1721
  }
1839
1722
  },
1840
1723
  "hasDynamicHelp": false,
1841
1724
  "hiddenAliases": [],
1842
- "id": "test:list",
1725
+ "id": "sync:pull",
1843
1726
  "pluginAlias": "@memberjunction/cli",
1844
1727
  "pluginName": "@memberjunction/cli",
1845
1728
  "pluginType": "core",
@@ -1849,83 +1732,85 @@
1849
1732
  "relativePath": [
1850
1733
  "dist",
1851
1734
  "commands",
1852
- "test",
1853
- "list.js"
1735
+ "sync",
1736
+ "pull.js"
1854
1737
  ]
1855
1738
  },
1856
- "test:run": {
1739
+ "sync:push": {
1857
1740
  "aliases": [],
1858
- "args": {
1859
- "testId": {
1860
- "description": "Test ID to execute",
1861
- "name": "testId",
1862
- "required": false
1863
- }
1864
- },
1865
- "description": "Execute a single test by ID or name",
1741
+ "args": {},
1742
+ "description": "Push local file changes to the database",
1866
1743
  "examples": [
1867
- "<%= config.bin %> <%= command.id %> <test-id>",
1868
- "<%= config.bin %> <%= command.id %> --name=\"Active Members Count\"",
1869
- "<%= config.bin %> <%= command.id %> <test-id> --environment=staging",
1870
- "<%= config.bin %> <%= command.id %> <test-id> --format=json --output=results.json",
1871
- "<%= config.bin %> <%= command.id %> <test-id> --dry-run"
1744
+ "<%= config.bin %> <%= command.id %>",
1745
+ "<%= config.bin %> <%= command.id %> --dry-run",
1746
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1747
+ "<%= config.bin %> <%= command.id %> --ci"
1872
1748
  ],
1873
1749
  "flags": {
1874
- "name": {
1875
- "char": "n",
1876
- "description": "Test name to execute",
1877
- "name": "name",
1750
+ "dir": {
1751
+ "description": "Specific entity directory to push",
1752
+ "name": "dir",
1878
1753
  "hasDynamicHelp": false,
1879
1754
  "multiple": false,
1880
1755
  "type": "option"
1881
1756
  },
1882
- "environment": {
1883
- "char": "e",
1884
- "description": "Environment context (dev, staging, prod)",
1885
- "name": "environment",
1757
+ "dry-run": {
1758
+ "description": "Show what would be pushed without actually pushing",
1759
+ "name": "dry-run",
1760
+ "allowNo": false,
1761
+ "type": "boolean"
1762
+ },
1763
+ "ci": {
1764
+ "description": "CI mode - no prompts, fail on issues",
1765
+ "name": "ci",
1766
+ "allowNo": false,
1767
+ "type": "boolean"
1768
+ },
1769
+ "verbose": {
1770
+ "char": "v",
1771
+ "description": "Show detailed field-level output",
1772
+ "name": "verbose",
1773
+ "allowNo": false,
1774
+ "type": "boolean"
1775
+ },
1776
+ "no-validate": {
1777
+ "description": "Skip validation before push",
1778
+ "name": "no-validate",
1779
+ "allowNo": false,
1780
+ "type": "boolean"
1781
+ },
1782
+ "delete-db-only": {
1783
+ "description": "Delete database-only records that reference records being deleted (prevents FK errors)",
1784
+ "name": "delete-db-only",
1785
+ "allowNo": false,
1786
+ "type": "boolean"
1787
+ },
1788
+ "parallel-batch-size": {
1789
+ "description": "Number of records to process in parallel (default: 10)",
1790
+ "name": "parallel-batch-size",
1791
+ "default": 10,
1886
1792
  "hasDynamicHelp": false,
1887
1793
  "multiple": false,
1888
1794
  "type": "option"
1889
1795
  },
1890
- "format": {
1891
- "char": "f",
1892
- "description": "Output format",
1893
- "name": "format",
1894
- "default": "console",
1796
+ "include": {
1797
+ "description": "Only process these directories (comma-separated, supports patterns)",
1798
+ "name": "include",
1895
1799
  "hasDynamicHelp": false,
1896
1800
  "multiple": false,
1897
- "options": [
1898
- "console",
1899
- "json",
1900
- "markdown"
1901
- ],
1902
1801
  "type": "option"
1903
1802
  },
1904
- "output": {
1905
- "char": "o",
1906
- "description": "Output file path",
1907
- "name": "output",
1803
+ "exclude": {
1804
+ "description": "Skip these directories (comma-separated, supports patterns)",
1805
+ "name": "exclude",
1908
1806
  "hasDynamicHelp": false,
1909
1807
  "multiple": false,
1910
1808
  "type": "option"
1911
- },
1912
- "dry-run": {
1913
- "description": "Validate without executing",
1914
- "name": "dry-run",
1915
- "allowNo": false,
1916
- "type": "boolean"
1917
- },
1918
- "verbose": {
1919
- "char": "v",
1920
- "description": "Show detailed execution information",
1921
- "name": "verbose",
1922
- "allowNo": false,
1923
- "type": "boolean"
1924
1809
  }
1925
1810
  },
1926
1811
  "hasDynamicHelp": false,
1927
1812
  "hiddenAliases": [],
1928
- "id": "test:run",
1813
+ "id": "sync:push",
1929
1814
  "pluginAlias": "@memberjunction/cli",
1930
1815
  "pluginName": "@memberjunction/cli",
1931
1816
  "pluginType": "core",
@@ -1935,68 +1820,52 @@
1935
1820
  "relativePath": [
1936
1821
  "dist",
1937
1822
  "commands",
1938
- "test",
1939
- "run.js"
1823
+ "sync",
1824
+ "push.js"
1940
1825
  ]
1941
1826
  },
1942
- "test:suite": {
1827
+ "sync:status": {
1943
1828
  "aliases": [],
1944
- "args": {
1945
- "suiteId": {
1946
- "description": "Test suite ID to execute",
1947
- "name": "suiteId",
1948
- "required": false
1949
- }
1950
- },
1951
- "description": "Execute a test suite",
1829
+ "args": {},
1830
+ "description": "Show status of local files vs database",
1952
1831
  "examples": [
1953
- "<%= config.bin %> <%= command.id %> <suite-id>",
1954
- "<%= config.bin %> <%= command.id %> --name=\"Agent Quality Suite\"",
1955
- "<%= config.bin %> <%= command.id %> <suite-id> --format=json",
1956
- "<%= config.bin %> <%= command.id %> <suite-id> --output=suite-results.json"
1832
+ "<%= config.bin %> <%= command.id %>",
1833
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1834
+ "<%= config.bin %> <%= command.id %> --verbose"
1957
1835
  ],
1958
1836
  "flags": {
1959
- "name": {
1960
- "char": "n",
1961
- "description": "Test suite name to execute",
1962
- "name": "name",
1837
+ "dir": {
1838
+ "description": "Specific entity directory to check status",
1839
+ "name": "dir",
1963
1840
  "hasDynamicHelp": false,
1964
1841
  "multiple": false,
1965
1842
  "type": "option"
1966
1843
  },
1967
- "format": {
1968
- "char": "f",
1969
- "description": "Output format",
1970
- "name": "format",
1971
- "default": "console",
1844
+ "verbose": {
1845
+ "char": "v",
1846
+ "description": "Show detailed field-level differences",
1847
+ "name": "verbose",
1848
+ "allowNo": false,
1849
+ "type": "boolean"
1850
+ },
1851
+ "include": {
1852
+ "description": "Only process these directories (comma-separated, supports patterns)",
1853
+ "name": "include",
1972
1854
  "hasDynamicHelp": false,
1973
1855
  "multiple": false,
1974
- "options": [
1975
- "console",
1976
- "json",
1977
- "markdown"
1978
- ],
1979
1856
  "type": "option"
1980
1857
  },
1981
- "output": {
1982
- "char": "o",
1983
- "description": "Output file path",
1984
- "name": "output",
1858
+ "exclude": {
1859
+ "description": "Skip these directories (comma-separated, supports patterns)",
1860
+ "name": "exclude",
1985
1861
  "hasDynamicHelp": false,
1986
1862
  "multiple": false,
1987
1863
  "type": "option"
1988
- },
1989
- "verbose": {
1990
- "char": "v",
1991
- "description": "Show detailed execution information",
1992
- "name": "verbose",
1993
- "allowNo": false,
1994
- "type": "boolean"
1995
1864
  }
1996
1865
  },
1997
1866
  "hasDynamicHelp": false,
1998
1867
  "hiddenAliases": [],
1999
- "id": "test:suite",
1868
+ "id": "sync:status",
2000
1869
  "pluginAlias": "@memberjunction/cli",
2001
1870
  "pluginName": "@memberjunction/cli",
2002
1871
  "pluginType": "core",
@@ -2006,82 +1875,52 @@
2006
1875
  "relativePath": [
2007
1876
  "dist",
2008
1877
  "commands",
2009
- "test",
2010
- "suite.js"
1878
+ "sync",
1879
+ "status.js"
2011
1880
  ]
2012
1881
  },
2013
- "test:validate": {
1882
+ "sync:validate": {
2014
1883
  "aliases": [],
2015
- "args": {
2016
- "testId": {
2017
- "description": "Test ID to validate",
2018
- "name": "testId",
2019
- "required": false
2020
- }
2021
- },
2022
- "description": "Validate test definitions without executing",
1884
+ "args": {},
1885
+ "description": "Validate metadata files",
2023
1886
  "examples": [
2024
- "<%= config.bin %> <%= command.id %> <test-id>",
2025
- "<%= config.bin %> <%= command.id %> --all",
2026
- "<%= config.bin %> <%= command.id %> --type=agent-eval",
2027
- "<%= config.bin %> <%= command.id %> --all --save-report",
2028
- "<%= config.bin %> <%= command.id %> --all --output=validation-report.md"
1887
+ "<%= config.bin %> <%= command.id %>",
1888
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1889
+ "<%= config.bin %> <%= command.id %> --save-report",
1890
+ "<%= config.bin %> <%= command.id %> --verbose"
2029
1891
  ],
2030
1892
  "flags": {
2031
- "all": {
2032
- "char": "a",
2033
- "description": "Validate all tests",
2034
- "name": "all",
2035
- "allowNo": false,
2036
- "type": "boolean"
2037
- },
2038
- "type": {
2039
- "char": "t",
2040
- "description": "Validate tests by type",
2041
- "name": "type",
1893
+ "dir": {
1894
+ "description": "Specific entity directory to validate",
1895
+ "name": "dir",
2042
1896
  "hasDynamicHelp": false,
2043
1897
  "multiple": false,
2044
1898
  "type": "option"
2045
1899
  },
1900
+ "verbose": {
1901
+ "char": "v",
1902
+ "description": "Show detailed validation output",
1903
+ "name": "verbose",
1904
+ "allowNo": false,
1905
+ "type": "boolean"
1906
+ },
2046
1907
  "save-report": {
2047
- "description": "Save validation report to file",
1908
+ "description": "Save validation report as markdown file",
2048
1909
  "name": "save-report",
2049
1910
  "allowNo": false,
2050
1911
  "type": "boolean"
2051
1912
  },
2052
- "format": {
2053
- "char": "f",
2054
- "description": "Output format",
2055
- "name": "format",
2056
- "default": "console",
2057
- "hasDynamicHelp": false,
2058
- "multiple": false,
2059
- "options": [
2060
- "console",
2061
- "json",
2062
- "markdown"
2063
- ],
2064
- "type": "option"
2065
- },
2066
1913
  "output": {
2067
- "char": "o",
2068
- "description": "Output file path",
1914
+ "description": "Output file path for validation report (default: validation-report.md)",
2069
1915
  "name": "output",
2070
1916
  "hasDynamicHelp": false,
2071
1917
  "multiple": false,
2072
1918
  "type": "option"
2073
- },
2074
- "verbose": {
2075
- "char": "v",
2076
- "description": "Show detailed information",
2077
- "name": "verbose",
2078
- "allowNo": false,
2079
- "type": "boolean"
2080
1919
  }
2081
1920
  },
2082
1921
  "hasDynamicHelp": false,
2083
1922
  "hiddenAliases": [],
2084
- "id": "test:validate",
1923
+ "id": "sync:validate",
2085
1924
  "pluginAlias": "@memberjunction/cli",
2086
1925
  "pluginName": "@memberjunction/cli",
2087
1926
  "pluginType": "core",
@@ -2091,42 +1930,52 @@
2091
1930
  "relativePath": [
2092
1931
  "dist",
2093
1932
  "commands",
2094
- "test",
1933
+ "sync",
2095
1934
  "validate.js"
2096
1935
  ]
2097
1936
  },
2098
- "dbdoc:analyze": {
1937
+ "sync:watch": {
2099
1938
  "aliases": [],
2100
1939
  "args": {},
2101
- "description": "Analyze database and generate documentation (delegates to db-auto-doc analyze)",
1940
+ "description": "Watch for file changes and sync automatically",
2102
1941
  "examples": [
2103
1942
  "<%= config.bin %> <%= command.id %>",
2104
- "<%= config.bin %> <%= command.id %> --resume ./output/run-6/state.json",
2105
- "<%= config.bin %> <%= command.id %> --config ./my-config.json"
1943
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1944
+ "<%= config.bin %> <%= command.id %> --debounce=1000",
1945
+ "<%= config.bin %> <%= command.id %> --no-validate"
2106
1946
  ],
2107
1947
  "flags": {
2108
- "resume": {
2109
- "char": "r",
2110
- "description": "Resume from an existing state file",
2111
- "name": "resume",
2112
- "required": false,
1948
+ "dir": {
1949
+ "description": "Specific entity directory to watch",
1950
+ "name": "dir",
2113
1951
  "hasDynamicHelp": false,
2114
1952
  "multiple": false,
2115
1953
  "type": "option"
2116
1954
  },
2117
- "config": {
2118
- "char": "c",
2119
- "description": "Path to config file",
2120
- "name": "config",
2121
- "default": "./config.json",
1955
+ "debounce": {
1956
+ "description": "Debounce delay in milliseconds (default: 500)",
1957
+ "name": "debounce",
2122
1958
  "hasDynamicHelp": false,
2123
1959
  "multiple": false,
2124
1960
  "type": "option"
1961
+ },
1962
+ "no-validate": {
1963
+ "description": "Skip validation before sync",
1964
+ "name": "no-validate",
1965
+ "allowNo": false,
1966
+ "type": "boolean"
1967
+ },
1968
+ "verbose": {
1969
+ "char": "v",
1970
+ "description": "Show detailed output",
1971
+ "name": "verbose",
1972
+ "allowNo": false,
1973
+ "type": "boolean"
2125
1974
  }
2126
1975
  },
2127
1976
  "hasDynamicHelp": false,
2128
1977
  "hiddenAliases": [],
2129
- "id": "dbdoc:analyze",
1978
+ "id": "sync:watch",
2130
1979
  "pluginAlias": "@memberjunction/cli",
2131
1980
  "pluginName": "@memberjunction/cli",
2132
1981
  "pluginType": "core",
@@ -2136,105 +1985,86 @@
2136
1985
  "relativePath": [
2137
1986
  "dist",
2138
1987
  "commands",
2139
- "dbdoc",
2140
- "analyze.js"
1988
+ "sync",
1989
+ "watch.js"
2141
1990
  ]
2142
1991
  },
2143
- "dbdoc:export-sample-queries": {
1992
+ "test:compare": {
2144
1993
  "aliases": [],
2145
- "args": {},
2146
- "description": "Export sample queries to MemberJunction metadata format (delegates to db-auto-doc export-sample-queries)",
1994
+ "args": {
1995
+ "runId1": {
1996
+ "description": "First test run ID to compare",
1997
+ "name": "runId1",
1998
+ "required": false
1999
+ },
2000
+ "runId2": {
2001
+ "description": "Second test run ID to compare",
2002
+ "name": "runId2",
2003
+ "required": false
2004
+ }
2005
+ },
2006
+ "description": "Compare test runs for regression detection",
2147
2007
  "examples": [
2148
- "<%= config.bin %> <%= command.id %> --input ./output/sample-queries.json --output ./metadata/queries/.queries.json",
2149
- "<%= config.bin %> <%= command.id %> --input ./sample-queries.json --output ./metadata/queries/.queries.json --separate-sql-files",
2150
- "<%= config.bin %> <%= command.id %> --input ./sample-queries.json --output ./queries/.queries.json --category \"Database Documentation\"",
2151
- "<%= config.bin %> <%= command.id %> --input ./sample-queries.json --output ./queries/.queries.json --status Pending --min-confidence 0.8"
2008
+ "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2>",
2009
+ "<%= config.bin %> <%= command.id %> --baseline=<run-id> --current=<run-id>",
2010
+ "<%= config.bin %> <%= command.id %> --suite=<suite-id> --since=\"2024-01-01\"",
2011
+ "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2> --format=json"
2152
2012
  ],
2153
2013
  "flags": {
2154
- "input": {
2155
- "char": "i",
2156
- "description": "Path to sample-queries.json file generated by generate-queries command",
2157
- "name": "input",
2158
- "required": true,
2014
+ "version": {
2015
+ "char": "v",
2016
+ "description": "Compare runs by version",
2017
+ "name": "version",
2159
2018
  "hasDynamicHelp": false,
2160
- "multiple": false,
2019
+ "multiple": true,
2161
2020
  "type": "option"
2162
2021
  },
2163
- "output": {
2164
- "char": "o",
2165
- "description": "Output path for the .queries.json metadata file",
2166
- "name": "output",
2167
- "required": true,
2022
+ "commit": {
2023
+ "char": "c",
2024
+ "description": "Compare runs by git commit",
2025
+ "name": "commit",
2168
2026
  "hasDynamicHelp": false,
2169
- "multiple": false,
2027
+ "multiple": true,
2170
2028
  "type": "option"
2171
2029
  },
2172
- "separate-sql-files": {
2173
- "description": "Write SQL to separate files and use @file: references",
2174
- "name": "separate-sql-files",
2030
+ "diff-only": {
2031
+ "description": "Show only differences",
2032
+ "name": "diff-only",
2175
2033
  "allowNo": false,
2176
2034
  "type": "boolean"
2177
2035
  },
2178
- "sql-dir": {
2179
- "description": "Directory for SQL files when using --separate-sql-files (relative to output file)",
2180
- "name": "sql-dir",
2181
- "default": "SQL",
2036
+ "format": {
2037
+ "char": "f",
2038
+ "description": "Output format",
2039
+ "name": "format",
2040
+ "default": "console",
2182
2041
  "hasDynamicHelp": false,
2183
2042
  "multiple": false,
2043
+ "options": [
2044
+ "console",
2045
+ "json",
2046
+ "markdown"
2047
+ ],
2184
2048
  "type": "option"
2185
2049
  },
2186
- "category": {
2187
- "description": "Category name for @lookup reference (e.g., \"Database Documentation\")",
2188
- "name": "category",
2189
- "required": false,
2050
+ "output": {
2051
+ "char": "o",
2052
+ "description": "Output file path",
2053
+ "name": "output",
2190
2054
  "hasDynamicHelp": false,
2191
2055
  "multiple": false,
2192
2056
  "type": "option"
2193
2057
  },
2194
- "status": {
2195
- "description": "Status to assign to exported queries",
2196
- "name": "status",
2197
- "default": "Pending",
2198
- "hasDynamicHelp": false,
2199
- "multiple": false,
2200
- "options": [
2201
- "Approved",
2202
- "Pending",
2203
- "Rejected",
2204
- "Expired"
2205
- ],
2206
- "type": "option"
2207
- },
2208
- "min-confidence": {
2209
- "description": "Minimum confidence threshold to export (0-1)",
2210
- "name": "min-confidence",
2211
- "default": "0",
2212
- "hasDynamicHelp": false,
2213
- "multiple": false,
2214
- "type": "option"
2215
- },
2216
- "validated-only": {
2217
- "description": "Only export queries that were successfully validated",
2218
- "name": "validated-only",
2219
- "allowNo": false,
2220
- "type": "boolean"
2221
- },
2222
- "append": {
2223
- "description": "Append to existing metadata file instead of overwriting",
2224
- "name": "append",
2225
- "allowNo": false,
2226
- "type": "boolean"
2227
- },
2228
- "include-primary-key": {
2229
- "description": "Include primaryKey and sync fields (for updating existing records)",
2230
- "name": "include-primary-key",
2058
+ "verbose": {
2059
+ "description": "Show detailed information",
2060
+ "name": "verbose",
2231
2061
  "allowNo": false,
2232
2062
  "type": "boolean"
2233
2063
  }
2234
2064
  },
2235
2065
  "hasDynamicHelp": false,
2236
2066
  "hiddenAliases": [],
2237
- "id": "dbdoc:export-sample-queries",
2067
+ "id": "test:compare",
2238
2068
  "pluginAlias": "@memberjunction/cli",
2239
2069
  "pluginName": "@memberjunction/cli",
2240
2070
  "pluginType": "core",
@@ -2244,168 +2074,86 @@
2244
2074
  "relativePath": [
2245
2075
  "dist",
2246
2076
  "commands",
2247
- "dbdoc",
2248
- "export-sample-queries.js"
2077
+ "test",
2078
+ "compare.js"
2249
2079
  ]
2250
2080
  },
2251
- "dbdoc:export": {
2081
+ "test:history": {
2252
2082
  "aliases": [],
2253
2083
  "args": {},
2254
- "description": "Export documentation in multiple formats (delegates to db-auto-doc export)",
2084
+ "description": "View test execution history",
2255
2085
  "examples": [
2256
- "<%= config.bin %> <%= command.id %> --state-file=./db-doc-state.json",
2257
- "<%= config.bin %> <%= command.id %> --sql",
2258
- "<%= config.bin %> <%= command.id %> --markdown",
2259
- "<%= config.bin %> <%= command.id %> --html",
2260
- "<%= config.bin %> <%= command.id %> --csv",
2261
- "<%= config.bin %> <%= command.id %> --mermaid",
2262
- "<%= config.bin %> <%= command.id %> --sql --markdown --html --csv --mermaid --apply"
2086
+ "<%= config.bin %> <%= command.id %>",
2087
+ "<%= config.bin %> <%= command.id %> --test=<test-id>",
2088
+ "<%= config.bin %> <%= command.id %> --suite=<suite-id>",
2089
+ "<%= config.bin %> <%= command.id %> --since=\"2024-01-01\"",
2090
+ "<%= config.bin %> <%= command.id %> --limit=50"
2263
2091
  ],
2264
2092
  "flags": {
2265
- "state-file": {
2266
- "char": "s",
2267
- "description": "Path to state JSON file",
2268
- "name": "state-file",
2093
+ "test": {
2094
+ "char": "t",
2095
+ "description": "Filter by test ID",
2096
+ "name": "test",
2269
2097
  "hasDynamicHelp": false,
2270
2098
  "multiple": false,
2271
2099
  "type": "option"
2272
2100
  },
2273
- "output-dir": {
2274
- "char": "o",
2275
- "description": "Output directory for generated files",
2276
- "name": "output-dir",
2101
+ "recent": {
2102
+ "char": "r",
2103
+ "description": "Number of recent runs to show",
2104
+ "name": "recent",
2277
2105
  "hasDynamicHelp": false,
2278
2106
  "multiple": false,
2279
2107
  "type": "option"
2280
2108
  },
2281
- "sql": {
2282
- "description": "Generate SQL script",
2283
- "name": "sql",
2284
- "allowNo": false,
2285
- "type": "boolean"
2286
- },
2287
- "markdown": {
2288
- "description": "Generate Markdown documentation",
2289
- "name": "markdown",
2290
- "allowNo": false,
2291
- "type": "boolean"
2292
- },
2293
- "html": {
2294
- "description": "Generate interactive HTML documentation",
2295
- "name": "html",
2296
- "allowNo": false,
2297
- "type": "boolean"
2298
- },
2299
- "csv": {
2300
- "description": "Generate CSV exports (tables and columns)",
2301
- "name": "csv",
2302
- "allowNo": false,
2303
- "type": "boolean"
2304
- },
2305
- "mermaid": {
2306
- "description": "Generate Mermaid ERD diagram files",
2307
- "name": "mermaid",
2308
- "allowNo": false,
2309
- "type": "boolean"
2310
- },
2311
- "report": {
2312
- "description": "Generate analysis report",
2313
- "name": "report",
2314
- "allowNo": false,
2315
- "type": "boolean"
2316
- },
2317
- "apply": {
2318
- "description": "Apply SQL to database",
2319
- "name": "apply",
2320
- "allowNo": false,
2321
- "type": "boolean"
2322
- },
2323
- "approved-only": {
2324
- "description": "Only export approved items",
2325
- "name": "approved-only",
2326
- "allowNo": false,
2327
- "type": "boolean"
2328
- },
2329
- "confidence-threshold": {
2330
- "description": "Minimum confidence threshold",
2331
- "name": "confidence-threshold",
2332
- "default": "0",
2333
- "hasDynamicHelp": false,
2334
- "multiple": false,
2335
- "type": "option"
2336
- }
2337
- },
2338
- "hasDynamicHelp": false,
2339
- "hiddenAliases": [],
2340
- "id": "dbdoc:export",
2341
- "pluginAlias": "@memberjunction/cli",
2342
- "pluginName": "@memberjunction/cli",
2343
- "pluginType": "core",
2344
- "strict": true,
2345
- "enableJsonFlag": false,
2346
- "isESM": true,
2347
- "relativePath": [
2348
- "dist",
2349
- "commands",
2350
- "dbdoc",
2351
- "export.js"
2352
- ]
2353
- },
2354
- "dbdoc:generate-queries": {
2355
- "aliases": [],
2356
- "args": {},
2357
- "description": "Generate sample SQL queries from existing analysis state (delegates to db-auto-doc generate-queries)",
2358
- "examples": [
2359
- "<%= config.bin %> <%= command.id %> --from-state ./output/run-1/state.json",
2360
- "<%= config.bin %> <%= command.id %> --from-state ./output/run-1/state.json --output-dir ./queries",
2361
- "<%= config.bin %> <%= command.id %> --from-state ./output/run-1/state.json --queries-per-table 10"
2362
- ],
2363
- "flags": {
2364
- "from-state": {
2365
- "description": "Path to existing state.json file from previous analysis",
2366
- "name": "from-state",
2367
- "required": true,
2109
+ "from": {
2110
+ "description": "Show history from date (YYYY-MM-DD)",
2111
+ "name": "from",
2368
2112
  "hasDynamicHelp": false,
2369
2113
  "multiple": false,
2370
2114
  "type": "option"
2371
2115
  },
2372
- "output-dir": {
2373
- "description": "Output directory for generated queries",
2374
- "name": "output-dir",
2375
- "required": false,
2116
+ "status": {
2117
+ "char": "s",
2118
+ "description": "Filter by status",
2119
+ "name": "status",
2376
2120
  "hasDynamicHelp": false,
2377
2121
  "multiple": false,
2378
2122
  "type": "option"
2379
2123
  },
2380
- "config": {
2381
- "char": "c",
2382
- "description": "Path to config file (for database connection and AI settings)",
2383
- "name": "config",
2384
- "default": "./config.json",
2124
+ "format": {
2125
+ "char": "f",
2126
+ "description": "Output format",
2127
+ "name": "format",
2128
+ "default": "console",
2385
2129
  "hasDynamicHelp": false,
2386
2130
  "multiple": false,
2131
+ "options": [
2132
+ "console",
2133
+ "json",
2134
+ "markdown"
2135
+ ],
2387
2136
  "type": "option"
2388
2137
  },
2389
- "queries-per-table": {
2390
- "description": "Number of queries to generate per table",
2391
- "name": "queries-per-table",
2392
- "required": false,
2138
+ "output": {
2139
+ "char": "o",
2140
+ "description": "Output file path",
2141
+ "name": "output",
2393
2142
  "hasDynamicHelp": false,
2394
2143
  "multiple": false,
2395
2144
  "type": "option"
2396
2145
  },
2397
- "max-execution-time": {
2398
- "description": "Maximum execution time for query validation (ms)",
2399
- "name": "max-execution-time",
2400
- "required": false,
2401
- "hasDynamicHelp": false,
2402
- "multiple": false,
2403
- "type": "option"
2146
+ "verbose": {
2147
+ "char": "v",
2148
+ "description": "Show detailed information",
2149
+ "name": "verbose",
2150
+ "allowNo": false,
2151
+ "type": "boolean"
2404
2152
  }
2405
2153
  },
2406
2154
  "hasDynamicHelp": false,
2407
2155
  "hiddenAliases": [],
2408
- "id": "dbdoc:generate-queries",
2156
+ "id": "test:history",
2409
2157
  "pluginAlias": "@memberjunction/cli",
2410
2158
  "pluginName": "@memberjunction/cli",
2411
2159
  "pluginType": "core",
@@ -2415,19 +2163,26 @@
2415
2163
  "relativePath": [
2416
2164
  "dist",
2417
2165
  "commands",
2418
- "dbdoc",
2419
- "generate-queries.js"
2166
+ "test",
2167
+ "history.js"
2420
2168
  ]
2421
2169
  },
2422
- "dbdoc": {
2170
+ "test": {
2423
2171
  "aliases": [],
2424
2172
  "args": {},
2425
- "description": "AI-powered database documentation generator",
2173
+ "description": "MemberJunction Testing Framework - Execute and manage tests",
2174
+ "examples": [
2175
+ "<%= config.bin %> <%= command.id %> run <test-id>",
2176
+ "<%= config.bin %> <%= command.id %> run --name=\"Active Members Count\"",
2177
+ "<%= config.bin %> <%= command.id %> suite <suite-id>",
2178
+ "<%= config.bin %> <%= command.id %> list",
2179
+ "<%= config.bin %> <%= command.id %> list --suites",
2180
+ "<%= config.bin %> <%= command.id %> validate --all"
2181
+ ],
2426
2182
  "flags": {},
2427
2183
  "hasDynamicHelp": false,
2428
- "hidden": false,
2429
2184
  "hiddenAliases": [],
2430
- "id": "dbdoc",
2185
+ "id": "test",
2431
2186
  "pluginAlias": "@memberjunction/cli",
2432
2187
  "pluginName": "@memberjunction/cli",
2433
2188
  "pluginType": "core",
@@ -2437,54 +2192,177 @@
2437
2192
  "relativePath": [
2438
2193
  "dist",
2439
2194
  "commands",
2440
- "dbdoc",
2195
+ "test",
2441
2196
  "index.js"
2442
2197
  ]
2443
2198
  },
2444
- "dbdoc:init": {
2199
+ "test:list": {
2445
2200
  "aliases": [],
2446
2201
  "args": {},
2447
- "description": "Initialize DBAutoDoc project (delegates to db-auto-doc init)",
2202
+ "description": "List available tests, suites, and types",
2448
2203
  "examples": [
2449
- "<%= config.bin %> <%= command.id %>"
2204
+ "<%= config.bin %> <%= command.id %>",
2205
+ "<%= config.bin %> <%= command.id %> --suites",
2206
+ "<%= config.bin %> <%= command.id %> --types",
2207
+ "<%= config.bin %> <%= command.id %> --type=agent-eval",
2208
+ "<%= config.bin %> <%= command.id %> --tag=smoke",
2209
+ "<%= config.bin %> <%= command.id %> --status=active --verbose"
2450
2210
  ],
2451
- "flags": {},
2452
- "hasDynamicHelp": false,
2453
- "hiddenAliases": [],
2454
- "id": "dbdoc:init",
2455
- "pluginAlias": "@memberjunction/cli",
2456
- "pluginName": "@memberjunction/cli",
2457
- "pluginType": "core",
2458
- "strict": true,
2459
- "enableJsonFlag": false,
2460
- "isESM": true,
2461
- "relativePath": [
2462
- "dist",
2463
- "commands",
2464
- "dbdoc",
2465
- "init.js"
2211
+ "flags": {
2212
+ "suites": {
2213
+ "description": "List test suites instead of tests",
2214
+ "name": "suites",
2215
+ "allowNo": false,
2216
+ "type": "boolean"
2217
+ },
2218
+ "types": {
2219
+ "description": "List test types",
2220
+ "name": "types",
2221
+ "allowNo": false,
2222
+ "type": "boolean"
2223
+ },
2224
+ "type": {
2225
+ "char": "t",
2226
+ "description": "Filter by test type",
2227
+ "name": "type",
2228
+ "hasDynamicHelp": false,
2229
+ "multiple": false,
2230
+ "type": "option"
2231
+ },
2232
+ "tag": {
2233
+ "description": "Filter by tag",
2234
+ "name": "tag",
2235
+ "hasDynamicHelp": false,
2236
+ "multiple": false,
2237
+ "type": "option"
2238
+ },
2239
+ "status": {
2240
+ "char": "s",
2241
+ "description": "Filter by status",
2242
+ "name": "status",
2243
+ "hasDynamicHelp": false,
2244
+ "multiple": false,
2245
+ "type": "option"
2246
+ },
2247
+ "format": {
2248
+ "char": "f",
2249
+ "description": "Output format",
2250
+ "name": "format",
2251
+ "default": "console",
2252
+ "hasDynamicHelp": false,
2253
+ "multiple": false,
2254
+ "options": [
2255
+ "console",
2256
+ "json",
2257
+ "markdown"
2258
+ ],
2259
+ "type": "option"
2260
+ },
2261
+ "output": {
2262
+ "char": "o",
2263
+ "description": "Output file path",
2264
+ "name": "output",
2265
+ "hasDynamicHelp": false,
2266
+ "multiple": false,
2267
+ "type": "option"
2268
+ },
2269
+ "verbose": {
2270
+ "char": "v",
2271
+ "description": "Show detailed information",
2272
+ "name": "verbose",
2273
+ "allowNo": false,
2274
+ "type": "boolean"
2275
+ }
2276
+ },
2277
+ "hasDynamicHelp": false,
2278
+ "hiddenAliases": [],
2279
+ "id": "test:list",
2280
+ "pluginAlias": "@memberjunction/cli",
2281
+ "pluginName": "@memberjunction/cli",
2282
+ "pluginType": "core",
2283
+ "strict": true,
2284
+ "enableJsonFlag": false,
2285
+ "isESM": true,
2286
+ "relativePath": [
2287
+ "dist",
2288
+ "commands",
2289
+ "test",
2290
+ "list.js"
2466
2291
  ]
2467
2292
  },
2468
- "dbdoc:reset": {
2293
+ "test:run": {
2469
2294
  "aliases": [],
2470
- "args": {},
2471
- "description": "Reset analysis state (delegates to db-auto-doc reset)",
2295
+ "args": {
2296
+ "testId": {
2297
+ "description": "Test ID to execute",
2298
+ "name": "testId",
2299
+ "required": false
2300
+ }
2301
+ },
2302
+ "description": "Execute a single test by ID or name",
2472
2303
  "examples": [
2473
- "<%= config.bin %> <%= command.id %>",
2474
- "<%= config.bin %> <%= command.id %> --force"
2304
+ "<%= config.bin %> <%= command.id %> <test-id>",
2305
+ "<%= config.bin %> <%= command.id %> --name=\"Active Members Count\"",
2306
+ "<%= config.bin %> <%= command.id %> <test-id> --environment=staging",
2307
+ "<%= config.bin %> <%= command.id %> <test-id> --format=json --output=results.json",
2308
+ "<%= config.bin %> <%= command.id %> <test-id> --dry-run"
2475
2309
  ],
2476
2310
  "flags": {
2477
- "force": {
2311
+ "name": {
2312
+ "char": "n",
2313
+ "description": "Test name to execute",
2314
+ "name": "name",
2315
+ "hasDynamicHelp": false,
2316
+ "multiple": false,
2317
+ "type": "option"
2318
+ },
2319
+ "environment": {
2320
+ "char": "e",
2321
+ "description": "Environment context (dev, staging, prod)",
2322
+ "name": "environment",
2323
+ "hasDynamicHelp": false,
2324
+ "multiple": false,
2325
+ "type": "option"
2326
+ },
2327
+ "format": {
2478
2328
  "char": "f",
2479
- "description": "Force reset without confirmation",
2480
- "name": "force",
2329
+ "description": "Output format",
2330
+ "name": "format",
2331
+ "default": "console",
2332
+ "hasDynamicHelp": false,
2333
+ "multiple": false,
2334
+ "options": [
2335
+ "console",
2336
+ "json",
2337
+ "markdown"
2338
+ ],
2339
+ "type": "option"
2340
+ },
2341
+ "output": {
2342
+ "char": "o",
2343
+ "description": "Output file path",
2344
+ "name": "output",
2345
+ "hasDynamicHelp": false,
2346
+ "multiple": false,
2347
+ "type": "option"
2348
+ },
2349
+ "dry-run": {
2350
+ "description": "Validate without executing",
2351
+ "name": "dry-run",
2352
+ "allowNo": false,
2353
+ "type": "boolean"
2354
+ },
2355
+ "verbose": {
2356
+ "char": "v",
2357
+ "description": "Show detailed execution information",
2358
+ "name": "verbose",
2481
2359
  "allowNo": false,
2482
2360
  "type": "boolean"
2483
2361
  }
2484
2362
  },
2485
2363
  "hasDynamicHelp": false,
2486
2364
  "hiddenAliases": [],
2487
- "id": "dbdoc:reset",
2365
+ "id": "test:run",
2488
2366
  "pluginAlias": "@memberjunction/cli",
2489
2367
  "pluginName": "@memberjunction/cli",
2490
2368
  "pluginType": "core",
@@ -2494,31 +2372,68 @@
2494
2372
  "relativePath": [
2495
2373
  "dist",
2496
2374
  "commands",
2497
- "dbdoc",
2498
- "reset.js"
2375
+ "test",
2376
+ "run.js"
2499
2377
  ]
2500
2378
  },
2501
- "dbdoc:status": {
2379
+ "test:suite": {
2502
2380
  "aliases": [],
2503
- "args": {},
2504
- "description": "Show analysis status and progress (delegates to db-auto-doc status)",
2381
+ "args": {
2382
+ "suiteId": {
2383
+ "description": "Test suite ID to execute",
2384
+ "name": "suiteId",
2385
+ "required": false
2386
+ }
2387
+ },
2388
+ "description": "Execute a test suite",
2505
2389
  "examples": [
2506
- "<%= config.bin %> <%= command.id %>",
2507
- "<%= config.bin %> <%= command.id %> --state-file ./custom-state.json"
2390
+ "<%= config.bin %> <%= command.id %> <suite-id>",
2391
+ "<%= config.bin %> <%= command.id %> --name=\"Agent Quality Suite\"",
2392
+ "<%= config.bin %> <%= command.id %> <suite-id> --format=json",
2393
+ "<%= config.bin %> <%= command.id %> <suite-id> --output=suite-results.json"
2508
2394
  ],
2509
2395
  "flags": {
2510
- "state-file": {
2511
- "char": "s",
2512
- "description": "Path to state JSON file",
2513
- "name": "state-file",
2396
+ "name": {
2397
+ "char": "n",
2398
+ "description": "Test suite name to execute",
2399
+ "name": "name",
2400
+ "hasDynamicHelp": false,
2401
+ "multiple": false,
2402
+ "type": "option"
2403
+ },
2404
+ "format": {
2405
+ "char": "f",
2406
+ "description": "Output format",
2407
+ "name": "format",
2408
+ "default": "console",
2514
2409
  "hasDynamicHelp": false,
2515
2410
  "multiple": false,
2411
+ "options": [
2412
+ "console",
2413
+ "json",
2414
+ "markdown"
2415
+ ],
2516
2416
  "type": "option"
2417
+ },
2418
+ "output": {
2419
+ "char": "o",
2420
+ "description": "Output file path",
2421
+ "name": "output",
2422
+ "hasDynamicHelp": false,
2423
+ "multiple": false,
2424
+ "type": "option"
2425
+ },
2426
+ "verbose": {
2427
+ "char": "v",
2428
+ "description": "Show detailed execution information",
2429
+ "name": "verbose",
2430
+ "allowNo": false,
2431
+ "type": "boolean"
2517
2432
  }
2518
2433
  },
2519
2434
  "hasDynamicHelp": false,
2520
2435
  "hiddenAliases": [],
2521
- "id": "dbdoc:status",
2436
+ "id": "test:suite",
2522
2437
  "pluginAlias": "@memberjunction/cli",
2523
2438
  "pluginName": "@memberjunction/cli",
2524
2439
  "pluginType": "core",
@@ -2528,8 +2443,93 @@
2528
2443
  "relativePath": [
2529
2444
  "dist",
2530
2445
  "commands",
2531
- "dbdoc",
2532
- "status.js"
2446
+ "test",
2447
+ "suite.js"
2448
+ ]
2449
+ },
2450
+ "test:validate": {
2451
+ "aliases": [],
2452
+ "args": {
2453
+ "testId": {
2454
+ "description": "Test ID to validate",
2455
+ "name": "testId",
2456
+ "required": false
2457
+ }
2458
+ },
2459
+ "description": "Validate test definitions without executing",
2460
+ "examples": [
2461
+ "<%= config.bin %> <%= command.id %> <test-id>",
2462
+ "<%= config.bin %> <%= command.id %> --all",
2463
+ "<%= config.bin %> <%= command.id %> --type=agent-eval",
2464
+ "<%= config.bin %> <%= command.id %> --all --save-report",
2465
+ "<%= config.bin %> <%= command.id %> --all --output=validation-report.md"
2466
+ ],
2467
+ "flags": {
2468
+ "all": {
2469
+ "char": "a",
2470
+ "description": "Validate all tests",
2471
+ "name": "all",
2472
+ "allowNo": false,
2473
+ "type": "boolean"
2474
+ },
2475
+ "type": {
2476
+ "char": "t",
2477
+ "description": "Validate tests by type",
2478
+ "name": "type",
2479
+ "hasDynamicHelp": false,
2480
+ "multiple": false,
2481
+ "type": "option"
2482
+ },
2483
+ "save-report": {
2484
+ "description": "Save validation report to file",
2485
+ "name": "save-report",
2486
+ "allowNo": false,
2487
+ "type": "boolean"
2488
+ },
2489
+ "format": {
2490
+ "char": "f",
2491
+ "description": "Output format",
2492
+ "name": "format",
2493
+ "default": "console",
2494
+ "hasDynamicHelp": false,
2495
+ "multiple": false,
2496
+ "options": [
2497
+ "console",
2498
+ "json",
2499
+ "markdown"
2500
+ ],
2501
+ "type": "option"
2502
+ },
2503
+ "output": {
2504
+ "char": "o",
2505
+ "description": "Output file path",
2506
+ "name": "output",
2507
+ "hasDynamicHelp": false,
2508
+ "multiple": false,
2509
+ "type": "option"
2510
+ },
2511
+ "verbose": {
2512
+ "char": "v",
2513
+ "description": "Show detailed information",
2514
+ "name": "verbose",
2515
+ "allowNo": false,
2516
+ "type": "boolean"
2517
+ }
2518
+ },
2519
+ "hasDynamicHelp": false,
2520
+ "hiddenAliases": [],
2521
+ "id": "test:validate",
2522
+ "pluginAlias": "@memberjunction/cli",
2523
+ "pluginName": "@memberjunction/cli",
2524
+ "pluginType": "core",
2525
+ "strict": true,
2526
+ "enableJsonFlag": false,
2527
+ "isESM": true,
2528
+ "relativePath": [
2529
+ "dist",
2530
+ "commands",
2531
+ "test",
2532
+ "validate.js"
2533
2533
  ]
2534
2534
  },
2535
2535
  "ai:actions:list": {
@@ -3140,5 +3140,5 @@
3140
3140
  ]
3141
3141
  }
3142
3142
  },
3143
- "version": "5.3.0"
3143
+ "version": "5.3.1"
3144
3144
  }