@memberjunction/cli 5.27.0 → 5.27.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 +828 -828
  2. package/package.json +13 -13
@@ -320,38 +320,6 @@
320
320
  "upgrade.js"
321
321
  ]
322
322
  },
323
- "clean": {
324
- "aliases": [],
325
- "args": {},
326
- "description": "Resets the MemberJunction database to a pre-installation state",
327
- "examples": [
328
- "<%= config.bin %> <%= command.id %>\n"
329
- ],
330
- "flags": {
331
- "verbose": {
332
- "char": "v",
333
- "description": "Enable additional logging",
334
- "name": "verbose",
335
- "allowNo": false,
336
- "type": "boolean"
337
- }
338
- },
339
- "hasDynamicHelp": false,
340
- "hiddenAliases": [],
341
- "id": "clean",
342
- "pluginAlias": "@memberjunction/cli",
343
- "pluginName": "@memberjunction/cli",
344
- "pluginType": "core",
345
- "strict": true,
346
- "enableJsonFlag": false,
347
- "isESM": true,
348
- "relativePath": [
349
- "dist",
350
- "commands",
351
- "clean",
352
- "index.js"
353
- ]
354
- },
355
323
  "bump": {
356
324
  "aliases": [],
357
325
  "args": {},
@@ -424,6 +392,38 @@
424
392
  "index.js"
425
393
  ]
426
394
  },
395
+ "clean": {
396
+ "aliases": [],
397
+ "args": {},
398
+ "description": "Resets the MemberJunction database to a pre-installation state",
399
+ "examples": [
400
+ "<%= config.bin %> <%= command.id %>\n"
401
+ ],
402
+ "flags": {
403
+ "verbose": {
404
+ "char": "v",
405
+ "description": "Enable additional logging",
406
+ "name": "verbose",
407
+ "allowNo": false,
408
+ "type": "boolean"
409
+ }
410
+ },
411
+ "hasDynamicHelp": false,
412
+ "hiddenAliases": [],
413
+ "id": "clean",
414
+ "pluginAlias": "@memberjunction/cli",
415
+ "pluginName": "@memberjunction/cli",
416
+ "pluginType": "core",
417
+ "strict": true,
418
+ "enableJsonFlag": false,
419
+ "isESM": true,
420
+ "relativePath": [
421
+ "dist",
422
+ "commands",
423
+ "clean",
424
+ "index.js"
425
+ ]
426
+ },
427
427
  "codegen:5-0-fix-entity-names": {
428
428
  "aliases": [],
429
429
  "args": {},
@@ -1688,6 +1688,73 @@
1688
1688
  "validate.js"
1689
1689
  ]
1690
1690
  },
1691
+ "sql-audit": {
1692
+ "aliases": [],
1693
+ "args": {},
1694
+ "description": "Compare source and target databases for migration verification",
1695
+ "examples": [
1696
+ "<%= config.bin %> sql-audit --source \"mssql://sa:pass@host/db\" --target \"postgres://user:pass@host:5432/db\"",
1697
+ "<%= config.bin %> sql-audit --source \"mssql://sa:pass@host/db\" --target \"postgres://user:pass@host:5432/db\" --output report.txt",
1698
+ "<%= config.bin %> sql-audit --source \"mssql://sa:pass@host/db\" --target \"postgres://user:pass@host:5432/db\" --source-schema __mj --target-schema __mj"
1699
+ ],
1700
+ "flags": {
1701
+ "source": {
1702
+ "description": "Source database connection string (mssql://... or postgres://...)",
1703
+ "name": "source",
1704
+ "required": true,
1705
+ "hasDynamicHelp": false,
1706
+ "multiple": false,
1707
+ "type": "option"
1708
+ },
1709
+ "target": {
1710
+ "description": "Target database connection string (mssql://... or postgres://...)",
1711
+ "name": "target",
1712
+ "required": true,
1713
+ "hasDynamicHelp": false,
1714
+ "multiple": false,
1715
+ "type": "option"
1716
+ },
1717
+ "source-schema": {
1718
+ "description": "Source schema name",
1719
+ "name": "source-schema",
1720
+ "default": "__mj",
1721
+ "hasDynamicHelp": false,
1722
+ "multiple": false,
1723
+ "type": "option"
1724
+ },
1725
+ "target-schema": {
1726
+ "description": "Target schema name",
1727
+ "name": "target-schema",
1728
+ "default": "__mj",
1729
+ "hasDynamicHelp": false,
1730
+ "multiple": false,
1731
+ "type": "option"
1732
+ },
1733
+ "output": {
1734
+ "char": "o",
1735
+ "description": "Save report to file",
1736
+ "name": "output",
1737
+ "hasDynamicHelp": false,
1738
+ "multiple": false,
1739
+ "type": "option"
1740
+ }
1741
+ },
1742
+ "hasDynamicHelp": false,
1743
+ "hiddenAliases": [],
1744
+ "id": "sql-audit",
1745
+ "pluginAlias": "@memberjunction/cli",
1746
+ "pluginName": "@memberjunction/cli",
1747
+ "pluginType": "core",
1748
+ "strict": true,
1749
+ "enableJsonFlag": false,
1750
+ "isESM": true,
1751
+ "relativePath": [
1752
+ "dist",
1753
+ "commands",
1754
+ "sql-audit",
1755
+ "index.js"
1756
+ ]
1757
+ },
1691
1758
  "sql-convert": {
1692
1759
  "aliases": [],
1693
1760
  "args": {
@@ -1773,60 +1840,60 @@
1773
1840
  "index.js"
1774
1841
  ]
1775
1842
  },
1776
- "sql-audit": {
1843
+ "sync:file-reset": {
1777
1844
  "aliases": [],
1778
1845
  "args": {},
1779
- "description": "Compare source and target databases for migration verification",
1846
+ "description": "Reset file metadata sections",
1780
1847
  "examples": [
1781
- "<%= config.bin %> sql-audit --source \"mssql://sa:pass@host/db\" --target \"postgres://user:pass@host:5432/db\"",
1782
- "<%= config.bin %> sql-audit --source \"mssql://sa:pass@host/db\" --target \"postgres://user:pass@host:5432/db\" --output report.txt",
1783
- "<%= config.bin %> sql-audit --source \"mssql://sa:pass@host/db\" --target \"postgres://user:pass@host:5432/db\" --source-schema __mj --target-schema __mj"
1848
+ "<%= config.bin %> <%= command.id %>",
1849
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
1850
+ "<%= config.bin %> <%= command.id %> --sections=\"dependencies,references\"",
1851
+ "<%= config.bin %> <%= command.id %> --all"
1784
1852
  ],
1785
1853
  "flags": {
1786
- "source": {
1787
- "description": "Source database connection string (mssql://... or postgres://...)",
1788
- "name": "source",
1789
- "required": true,
1854
+ "dir": {
1855
+ "description": "Specific entity directory to reset",
1856
+ "name": "dir",
1790
1857
  "hasDynamicHelp": false,
1791
1858
  "multiple": false,
1792
1859
  "type": "option"
1793
1860
  },
1794
- "target": {
1795
- "description": "Target database connection string (mssql://... or postgres://...)",
1796
- "name": "target",
1797
- "required": true,
1861
+ "sections": {
1862
+ "description": "Comma-separated list of sections to reset (dependencies,references,related,lookup)",
1863
+ "name": "sections",
1798
1864
  "hasDynamicHelp": false,
1799
1865
  "multiple": false,
1800
1866
  "type": "option"
1801
1867
  },
1802
- "source-schema": {
1803
- "description": "Source schema name",
1804
- "name": "source-schema",
1805
- "default": "__mj",
1806
- "hasDynamicHelp": false,
1807
- "multiple": false,
1808
- "type": "option"
1868
+ "all": {
1869
+ "description": "Reset all metadata sections",
1870
+ "name": "all",
1871
+ "allowNo": false,
1872
+ "type": "boolean"
1809
1873
  },
1810
- "target-schema": {
1811
- "description": "Target schema name",
1812
- "name": "target-schema",
1813
- "default": "__mj",
1814
- "hasDynamicHelp": false,
1815
- "multiple": false,
1816
- "type": "option"
1874
+ "dry-run": {
1875
+ "description": "Show what would be reset without actually resetting",
1876
+ "name": "dry-run",
1877
+ "allowNo": false,
1878
+ "type": "boolean"
1817
1879
  },
1818
- "output": {
1819
- "char": "o",
1820
- "description": "Save report to file",
1821
- "name": "output",
1822
- "hasDynamicHelp": false,
1823
- "multiple": false,
1824
- "type": "option"
1880
+ "force": {
1881
+ "description": "Skip confirmation prompts",
1882
+ "name": "force",
1883
+ "allowNo": false,
1884
+ "type": "boolean"
1885
+ },
1886
+ "verbose": {
1887
+ "char": "v",
1888
+ "description": "Show detailed output",
1889
+ "name": "verbose",
1890
+ "allowNo": false,
1891
+ "type": "boolean"
1825
1892
  }
1826
1893
  },
1827
1894
  "hasDynamicHelp": false,
1828
1895
  "hiddenAliases": [],
1829
- "id": "sql-audit",
1896
+ "id": "sync:file-reset",
1830
1897
  "pluginAlias": "@memberjunction/cli",
1831
1898
  "pluginName": "@memberjunction/cli",
1832
1899
  "pluginType": "core",
@@ -1836,86 +1903,151 @@
1836
1903
  "relativePath": [
1837
1904
  "dist",
1838
1905
  "commands",
1839
- "sql-audit",
1840
- "index.js"
1906
+ "sync",
1907
+ "file-reset.js"
1841
1908
  ]
1842
1909
  },
1843
- "test:compare": {
1910
+ "sync:init": {
1844
1911
  "aliases": [],
1845
- "args": {
1846
- "runId1": {
1847
- "description": "First test run ID to compare",
1848
- "name": "runId1",
1849
- "required": false
1850
- },
1851
- "runId2": {
1852
- "description": "Second test run ID to compare",
1853
- "name": "runId2",
1854
- "required": false
1855
- }
1856
- },
1857
- "description": "Compare test runs for regression detection",
1912
+ "args": {},
1913
+ "description": "Initialize a directory for metadata synchronization",
1858
1914
  "examples": [
1859
- "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2>",
1860
- "<%= config.bin %> <%= command.id %> --baseline=<run-id> --current=<run-id>",
1861
- "<%= config.bin %> <%= command.id %> --suite=<suite-id> --since=\"2024-01-01\"",
1862
- "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2> --format=json"
1915
+ "<%= config.bin %> <%= command.id %>"
1916
+ ],
1917
+ "flags": {},
1918
+ "hasDynamicHelp": false,
1919
+ "hiddenAliases": [],
1920
+ "id": "sync:init",
1921
+ "pluginAlias": "@memberjunction/cli",
1922
+ "pluginName": "@memberjunction/cli",
1923
+ "pluginType": "core",
1924
+ "strict": true,
1925
+ "enableJsonFlag": false,
1926
+ "isESM": true,
1927
+ "relativePath": [
1928
+ "dist",
1929
+ "commands",
1930
+ "sync",
1931
+ "init.js"
1932
+ ]
1933
+ },
1934
+ "sync:pull": {
1935
+ "aliases": [],
1936
+ "args": {},
1937
+ "description": "Pull metadata from database to local files",
1938
+ "examples": [
1939
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\"",
1940
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --filter=\"CategoryID='customer-service-id'\"",
1941
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Agents\" --merge-strategy=overwrite",
1942
+ "<%= config.bin %> <%= command.id %> --entity=\"Actions\" --target-dir=./custom-actions --no-validate",
1943
+ "<%= config.bin %> <%= command.id %> --entity=\"Templates\" --dry-run --verbose",
1944
+ "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --exclude-fields=InternalNotes,DebugInfo"
1863
1945
  ],
1864
1946
  "flags": {
1865
- "version": {
1866
- "char": "v",
1867
- "description": "Compare runs by version",
1868
- "name": "version",
1947
+ "entity": {
1948
+ "description": "Entity name to pull",
1949
+ "name": "entity",
1950
+ "required": true,
1869
1951
  "hasDynamicHelp": false,
1870
- "multiple": true,
1952
+ "multiple": false,
1871
1953
  "type": "option"
1872
1954
  },
1873
- "commit": {
1874
- "char": "c",
1875
- "description": "Compare runs by git commit",
1876
- "name": "commit",
1955
+ "filter": {
1956
+ "description": "Additional filter for pulling specific records",
1957
+ "name": "filter",
1877
1958
  "hasDynamicHelp": false,
1878
- "multiple": true,
1959
+ "multiple": false,
1879
1960
  "type": "option"
1880
1961
  },
1881
- "diff-only": {
1882
- "description": "Show only differences",
1883
- "name": "diff-only",
1962
+ "dry-run": {
1963
+ "description": "Show what would be pulled without actually pulling",
1964
+ "name": "dry-run",
1884
1965
  "allowNo": false,
1885
1966
  "type": "boolean"
1886
1967
  },
1887
- "format": {
1888
- "char": "f",
1889
- "description": "Output format",
1890
- "name": "format",
1891
- "default": "console",
1968
+ "multi-file": {
1969
+ "description": "Create a single file with multiple records (provide filename)",
1970
+ "name": "multi-file",
1971
+ "hasDynamicHelp": false,
1972
+ "multiple": false,
1973
+ "type": "option"
1974
+ },
1975
+ "verbose": {
1976
+ "char": "v",
1977
+ "description": "Show detailed output",
1978
+ "name": "verbose",
1979
+ "allowNo": false,
1980
+ "type": "boolean"
1981
+ },
1982
+ "no-validate": {
1983
+ "description": "Skip validation before pull",
1984
+ "name": "no-validate",
1985
+ "allowNo": false,
1986
+ "type": "boolean"
1987
+ },
1988
+ "update-existing": {
1989
+ "description": "Update existing records during pull",
1990
+ "name": "update-existing",
1991
+ "allowNo": false,
1992
+ "type": "boolean"
1993
+ },
1994
+ "create-new": {
1995
+ "description": "Create new files for records not found locally",
1996
+ "name": "create-new",
1997
+ "allowNo": false,
1998
+ "type": "boolean"
1999
+ },
2000
+ "backup-before-update": {
2001
+ "description": "Create backups before updating files",
2002
+ "name": "backup-before-update",
2003
+ "allowNo": false,
2004
+ "type": "boolean"
2005
+ },
2006
+ "merge-strategy": {
2007
+ "description": "Merge strategy for updates",
2008
+ "name": "merge-strategy",
2009
+ "default": "merge",
1892
2010
  "hasDynamicHelp": false,
1893
2011
  "multiple": false,
1894
2012
  "options": [
1895
- "console",
1896
- "json",
1897
- "markdown"
2013
+ "merge",
2014
+ "overwrite",
2015
+ "skip"
1898
2016
  ],
1899
2017
  "type": "option"
1900
2018
  },
1901
- "output": {
1902
- "char": "o",
1903
- "description": "Output file path",
1904
- "name": "output",
2019
+ "backup-directory": {
2020
+ "description": "Custom backup directory (default: .backups)",
2021
+ "name": "backup-directory",
1905
2022
  "hasDynamicHelp": false,
1906
2023
  "multiple": false,
1907
2024
  "type": "option"
1908
2025
  },
1909
- "verbose": {
1910
- "description": "Show detailed information",
1911
- "name": "verbose",
1912
- "allowNo": false,
1913
- "type": "boolean"
2026
+ "preserve-fields": {
2027
+ "description": "Comma-separated list of fields to preserve during updates",
2028
+ "name": "preserve-fields",
2029
+ "hasDynamicHelp": false,
2030
+ "multiple": true,
2031
+ "type": "option"
2032
+ },
2033
+ "exclude-fields": {
2034
+ "description": "Comma-separated list of fields to exclude from pull",
2035
+ "name": "exclude-fields",
2036
+ "hasDynamicHelp": false,
2037
+ "multiple": true,
2038
+ "type": "option"
2039
+ },
2040
+ "target-dir": {
2041
+ "description": "Specific target directory (overrides auto-discovery)",
2042
+ "name": "target-dir",
2043
+ "hasDynamicHelp": false,
2044
+ "multiple": false,
2045
+ "type": "option"
1914
2046
  }
1915
2047
  },
1916
2048
  "hasDynamicHelp": false,
1917
2049
  "hiddenAliases": [],
1918
- "id": "test:compare",
2050
+ "id": "sync:pull",
1919
2051
  "pluginAlias": "@memberjunction/cli",
1920
2052
  "pluginName": "@memberjunction/cli",
1921
2053
  "pluginType": "core",
@@ -1925,86 +2057,140 @@
1925
2057
  "relativePath": [
1926
2058
  "dist",
1927
2059
  "commands",
1928
- "test",
1929
- "compare.js"
2060
+ "sync",
2061
+ "pull.js"
1930
2062
  ]
1931
2063
  },
1932
- "test:history": {
2064
+ "sync:push": {
1933
2065
  "aliases": [],
1934
2066
  "args": {},
1935
- "description": "View test execution history",
2067
+ "description": "Push local file changes to the database",
1936
2068
  "examples": [
1937
2069
  "<%= config.bin %> <%= command.id %>",
1938
- "<%= config.bin %> <%= command.id %> --test=<test-id>",
1939
- "<%= config.bin %> <%= command.id %> --suite=<suite-id>",
1940
- "<%= config.bin %> <%= command.id %> --since=\"2024-01-01\"",
1941
- "<%= config.bin %> <%= command.id %> --limit=50"
2070
+ "<%= config.bin %> <%= command.id %> --dry-run",
2071
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2072
+ "<%= config.bin %> <%= command.id %> --ci"
1942
2073
  ],
1943
2074
  "flags": {
1944
- "test": {
1945
- "char": "t",
1946
- "description": "Filter by test ID",
1947
- "name": "test",
2075
+ "dir": {
2076
+ "description": "Specific entity directory to push",
2077
+ "name": "dir",
1948
2078
  "hasDynamicHelp": false,
1949
2079
  "multiple": false,
1950
2080
  "type": "option"
1951
2081
  },
1952
- "recent": {
1953
- "char": "r",
1954
- "description": "Number of recent runs to show",
1955
- "name": "recent",
1956
- "hasDynamicHelp": false,
1957
- "multiple": false,
1958
- "type": "option"
2082
+ "dry-run": {
2083
+ "description": "Show what would be pushed without actually pushing",
2084
+ "name": "dry-run",
2085
+ "allowNo": false,
2086
+ "type": "boolean"
1959
2087
  },
1960
- "from": {
1961
- "description": "Show history from date (YYYY-MM-DD)",
1962
- "name": "from",
2088
+ "ci": {
2089
+ "description": "CI mode - no prompts, fail on issues",
2090
+ "name": "ci",
2091
+ "allowNo": false,
2092
+ "type": "boolean"
2093
+ },
2094
+ "verbose": {
2095
+ "char": "v",
2096
+ "description": "Show detailed field-level output",
2097
+ "name": "verbose",
2098
+ "allowNo": false,
2099
+ "type": "boolean"
2100
+ },
2101
+ "no-validate": {
2102
+ "description": "Skip validation before push",
2103
+ "name": "no-validate",
2104
+ "allowNo": false,
2105
+ "type": "boolean"
2106
+ },
2107
+ "delete-db-only": {
2108
+ "description": "Delete database-only records that reference records being deleted (prevents FK errors)",
2109
+ "name": "delete-db-only",
2110
+ "allowNo": false,
2111
+ "type": "boolean"
2112
+ },
2113
+ "parallel-batch-size": {
2114
+ "description": "Number of records to process in parallel (default: 10)",
2115
+ "name": "parallel-batch-size",
2116
+ "default": 10,
1963
2117
  "hasDynamicHelp": false,
1964
2118
  "multiple": false,
1965
2119
  "type": "option"
1966
2120
  },
1967
- "status": {
1968
- "char": "s",
1969
- "description": "Filter by status",
1970
- "name": "status",
2121
+ "include": {
2122
+ "description": "Only process these directories (comma-separated, supports patterns)",
2123
+ "name": "include",
1971
2124
  "hasDynamicHelp": false,
1972
2125
  "multiple": false,
1973
2126
  "type": "option"
1974
2127
  },
1975
- "format": {
1976
- "char": "f",
1977
- "description": "Output format",
1978
- "name": "format",
1979
- "default": "console",
2128
+ "exclude": {
2129
+ "description": "Skip these directories (comma-separated, supports patterns)",
2130
+ "name": "exclude",
1980
2131
  "hasDynamicHelp": false,
1981
2132
  "multiple": false,
1982
- "options": [
1983
- "console",
1984
- "json",
1985
- "markdown"
1986
- ],
1987
2133
  "type": "option"
1988
- },
1989
- "output": {
1990
- "char": "o",
1991
- "description": "Output file path",
1992
- "name": "output",
2134
+ }
2135
+ },
2136
+ "hasDynamicHelp": false,
2137
+ "hiddenAliases": [],
2138
+ "id": "sync:push",
2139
+ "pluginAlias": "@memberjunction/cli",
2140
+ "pluginName": "@memberjunction/cli",
2141
+ "pluginType": "core",
2142
+ "strict": true,
2143
+ "enableJsonFlag": false,
2144
+ "isESM": true,
2145
+ "relativePath": [
2146
+ "dist",
2147
+ "commands",
2148
+ "sync",
2149
+ "push.js"
2150
+ ]
2151
+ },
2152
+ "sync:status": {
2153
+ "aliases": [],
2154
+ "args": {},
2155
+ "description": "Show status of local files vs database",
2156
+ "examples": [
2157
+ "<%= config.bin %> <%= command.id %>",
2158
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2159
+ "<%= config.bin %> <%= command.id %> --verbose"
2160
+ ],
2161
+ "flags": {
2162
+ "dir": {
2163
+ "description": "Specific entity directory to check status",
2164
+ "name": "dir",
1993
2165
  "hasDynamicHelp": false,
1994
2166
  "multiple": false,
1995
2167
  "type": "option"
1996
2168
  },
1997
2169
  "verbose": {
1998
2170
  "char": "v",
1999
- "description": "Show detailed information",
2171
+ "description": "Show detailed field-level differences",
2000
2172
  "name": "verbose",
2001
2173
  "allowNo": false,
2002
2174
  "type": "boolean"
2175
+ },
2176
+ "include": {
2177
+ "description": "Only process these directories (comma-separated, supports patterns)",
2178
+ "name": "include",
2179
+ "hasDynamicHelp": false,
2180
+ "multiple": false,
2181
+ "type": "option"
2182
+ },
2183
+ "exclude": {
2184
+ "description": "Skip these directories (comma-separated, supports patterns)",
2185
+ "name": "exclude",
2186
+ "hasDynamicHelp": false,
2187
+ "multiple": false,
2188
+ "type": "option"
2003
2189
  }
2004
2190
  },
2005
2191
  "hasDynamicHelp": false,
2006
2192
  "hiddenAliases": [],
2007
- "id": "test:history",
2193
+ "id": "sync:status",
2008
2194
  "pluginAlias": "@memberjunction/cli",
2009
2195
  "pluginName": "@memberjunction/cli",
2010
2196
  "pluginType": "core",
@@ -2014,26 +2200,52 @@
2014
2200
  "relativePath": [
2015
2201
  "dist",
2016
2202
  "commands",
2017
- "test",
2018
- "history.js"
2203
+ "sync",
2204
+ "status.js"
2019
2205
  ]
2020
2206
  },
2021
- "test": {
2207
+ "sync:validate": {
2022
2208
  "aliases": [],
2023
2209
  "args": {},
2024
- "description": "MemberJunction Testing Framework - Execute and manage tests",
2210
+ "description": "Validate metadata files",
2025
2211
  "examples": [
2026
- "<%= config.bin %> <%= command.id %> run <test-id>",
2027
- "<%= config.bin %> <%= command.id %> run --name=\"Active Members Count\"",
2028
- "<%= config.bin %> <%= command.id %> suite <suite-id>",
2029
- "<%= config.bin %> <%= command.id %> list",
2030
- "<%= config.bin %> <%= command.id %> list --suites",
2031
- "<%= config.bin %> <%= command.id %> validate --all"
2212
+ "<%= config.bin %> <%= command.id %>",
2213
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2214
+ "<%= config.bin %> <%= command.id %> --save-report",
2215
+ "<%= config.bin %> <%= command.id %> --verbose"
2032
2216
  ],
2033
- "flags": {},
2217
+ "flags": {
2218
+ "dir": {
2219
+ "description": "Specific entity directory to validate",
2220
+ "name": "dir",
2221
+ "hasDynamicHelp": false,
2222
+ "multiple": false,
2223
+ "type": "option"
2224
+ },
2225
+ "verbose": {
2226
+ "char": "v",
2227
+ "description": "Show detailed validation output",
2228
+ "name": "verbose",
2229
+ "allowNo": false,
2230
+ "type": "boolean"
2231
+ },
2232
+ "save-report": {
2233
+ "description": "Save validation report as markdown file",
2234
+ "name": "save-report",
2235
+ "allowNo": false,
2236
+ "type": "boolean"
2237
+ },
2238
+ "output": {
2239
+ "description": "Output file path for validation report (default: validation-report.md)",
2240
+ "name": "output",
2241
+ "hasDynamicHelp": false,
2242
+ "multiple": false,
2243
+ "type": "option"
2244
+ }
2245
+ },
2034
2246
  "hasDynamicHelp": false,
2035
2247
  "hiddenAliases": [],
2036
- "id": "test",
2248
+ "id": "sync:validate",
2037
2249
  "pluginAlias": "@memberjunction/cli",
2038
2250
  "pluginName": "@memberjunction/cli",
2039
2251
  "pluginType": "core",
@@ -2043,83 +2255,44 @@
2043
2255
  "relativePath": [
2044
2256
  "dist",
2045
2257
  "commands",
2046
- "test",
2047
- "index.js"
2258
+ "sync",
2259
+ "validate.js"
2048
2260
  ]
2049
2261
  },
2050
- "test:list": {
2262
+ "sync:watch": {
2051
2263
  "aliases": [],
2052
2264
  "args": {},
2053
- "description": "List available tests, suites, and types",
2265
+ "description": "Watch for file changes and sync automatically",
2054
2266
  "examples": [
2055
2267
  "<%= config.bin %> <%= command.id %>",
2056
- "<%= config.bin %> <%= command.id %> --suites",
2057
- "<%= config.bin %> <%= command.id %> --types",
2058
- "<%= config.bin %> <%= command.id %> --type=agent-eval",
2059
- "<%= config.bin %> <%= command.id %> --tag=smoke",
2060
- "<%= config.bin %> <%= command.id %> --status=active --verbose"
2268
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2269
+ "<%= config.bin %> <%= command.id %> --debounce=1000",
2270
+ "<%= config.bin %> <%= command.id %> --no-validate"
2061
2271
  ],
2062
2272
  "flags": {
2063
- "suites": {
2064
- "description": "List test suites instead of tests",
2065
- "name": "suites",
2066
- "allowNo": false,
2067
- "type": "boolean"
2068
- },
2069
- "types": {
2070
- "description": "List test types",
2071
- "name": "types",
2072
- "allowNo": false,
2073
- "type": "boolean"
2074
- },
2075
- "type": {
2076
- "char": "t",
2077
- "description": "Filter by test type",
2078
- "name": "type",
2079
- "hasDynamicHelp": false,
2080
- "multiple": false,
2081
- "type": "option"
2082
- },
2083
- "tag": {
2084
- "description": "Filter by tag",
2085
- "name": "tag",
2086
- "hasDynamicHelp": false,
2087
- "multiple": false,
2088
- "type": "option"
2089
- },
2090
- "status": {
2091
- "char": "s",
2092
- "description": "Filter by status",
2093
- "name": "status",
2273
+ "dir": {
2274
+ "description": "Specific entity directory to watch",
2275
+ "name": "dir",
2094
2276
  "hasDynamicHelp": false,
2095
2277
  "multiple": false,
2096
2278
  "type": "option"
2097
2279
  },
2098
- "format": {
2099
- "char": "f",
2100
- "description": "Output format",
2101
- "name": "format",
2102
- "default": "console",
2280
+ "debounce": {
2281
+ "description": "Debounce delay in milliseconds (default: 500)",
2282
+ "name": "debounce",
2103
2283
  "hasDynamicHelp": false,
2104
2284
  "multiple": false,
2105
- "options": [
2106
- "console",
2107
- "json",
2108
- "markdown"
2109
- ],
2110
2285
  "type": "option"
2111
2286
  },
2112
- "output": {
2113
- "char": "o",
2114
- "description": "Output file path",
2115
- "name": "output",
2116
- "hasDynamicHelp": false,
2117
- "multiple": false,
2118
- "type": "option"
2287
+ "no-validate": {
2288
+ "description": "Skip validation before sync",
2289
+ "name": "no-validate",
2290
+ "allowNo": false,
2291
+ "type": "boolean"
2119
2292
  },
2120
2293
  "verbose": {
2121
2294
  "char": "v",
2122
- "description": "Show detailed information",
2295
+ "description": "Show detailed output",
2123
2296
  "name": "verbose",
2124
2297
  "allowNo": false,
2125
2298
  "type": "boolean"
@@ -2127,7 +2300,7 @@
2127
2300
  },
2128
2301
  "hasDynamicHelp": false,
2129
2302
  "hiddenAliases": [],
2130
- "id": "test:list",
2303
+ "id": "sync:watch",
2131
2304
  "pluginAlias": "@memberjunction/cli",
2132
2305
  "pluginName": "@memberjunction/cli",
2133
2306
  "pluginType": "core",
@@ -2137,44 +2310,54 @@
2137
2310
  "relativePath": [
2138
2311
  "dist",
2139
2312
  "commands",
2140
- "test",
2141
- "list.js"
2313
+ "sync",
2314
+ "watch.js"
2142
2315
  ]
2143
2316
  },
2144
- "test:run": {
2317
+ "test:compare": {
2145
2318
  "aliases": [],
2146
2319
  "args": {
2147
- "testId": {
2148
- "description": "Test ID to execute",
2149
- "name": "testId",
2320
+ "runId1": {
2321
+ "description": "First test run ID to compare",
2322
+ "name": "runId1",
2323
+ "required": false
2324
+ },
2325
+ "runId2": {
2326
+ "description": "Second test run ID to compare",
2327
+ "name": "runId2",
2150
2328
  "required": false
2151
2329
  }
2152
2330
  },
2153
- "description": "Execute a single test by ID or name",
2331
+ "description": "Compare test runs for regression detection",
2154
2332
  "examples": [
2155
- "<%= config.bin %> <%= command.id %> <test-id>",
2156
- "<%= config.bin %> <%= command.id %> --name=\"Active Members Count\"",
2157
- "<%= config.bin %> <%= command.id %> <test-id> --environment=staging",
2158
- "<%= config.bin %> <%= command.id %> <test-id> --format=json --output=results.json",
2159
- "<%= config.bin %> <%= command.id %> <test-id> --dry-run"
2333
+ "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2>",
2334
+ "<%= config.bin %> <%= command.id %> --baseline=<run-id> --current=<run-id>",
2335
+ "<%= config.bin %> <%= command.id %> --suite=<suite-id> --since=\"2024-01-01\"",
2336
+ "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2> --format=json"
2160
2337
  ],
2161
2338
  "flags": {
2162
- "name": {
2163
- "char": "n",
2164
- "description": "Test name to execute",
2165
- "name": "name",
2339
+ "version": {
2340
+ "char": "v",
2341
+ "description": "Compare runs by version",
2342
+ "name": "version",
2166
2343
  "hasDynamicHelp": false,
2167
- "multiple": false,
2344
+ "multiple": true,
2168
2345
  "type": "option"
2169
2346
  },
2170
- "environment": {
2171
- "char": "e",
2172
- "description": "Environment context (dev, staging, prod)",
2173
- "name": "environment",
2347
+ "commit": {
2348
+ "char": "c",
2349
+ "description": "Compare runs by git commit",
2350
+ "name": "commit",
2174
2351
  "hasDynamicHelp": false,
2175
- "multiple": false,
2352
+ "multiple": true,
2176
2353
  "type": "option"
2177
2354
  },
2355
+ "diff-only": {
2356
+ "description": "Show only differences",
2357
+ "name": "diff-only",
2358
+ "allowNo": false,
2359
+ "type": "boolean"
2360
+ },
2178
2361
  "format": {
2179
2362
  "char": "f",
2180
2363
  "description": "Output format",
@@ -2197,15 +2380,8 @@
2197
2380
  "multiple": false,
2198
2381
  "type": "option"
2199
2382
  },
2200
- "dry-run": {
2201
- "description": "Validate without executing",
2202
- "name": "dry-run",
2203
- "allowNo": false,
2204
- "type": "boolean"
2205
- },
2206
2383
  "verbose": {
2207
- "char": "v",
2208
- "description": "Show detailed execution information",
2384
+ "description": "Show detailed information",
2209
2385
  "name": "verbose",
2210
2386
  "allowNo": false,
2211
2387
  "type": "boolean"
@@ -2213,7 +2389,7 @@
2213
2389
  },
2214
2390
  "hasDynamicHelp": false,
2215
2391
  "hiddenAliases": [],
2216
- "id": "test:run",
2392
+ "id": "test:compare",
2217
2393
  "pluginAlias": "@memberjunction/cli",
2218
2394
  "pluginName": "@memberjunction/cli",
2219
2395
  "pluginType": "core",
@@ -2224,30 +2400,48 @@
2224
2400
  "dist",
2225
2401
  "commands",
2226
2402
  "test",
2227
- "run.js"
2403
+ "compare.js"
2228
2404
  ]
2229
2405
  },
2230
- "test:suite": {
2406
+ "test:history": {
2231
2407
  "aliases": [],
2232
- "args": {
2233
- "suiteId": {
2234
- "description": "Test suite ID to execute",
2235
- "name": "suiteId",
2236
- "required": false
2237
- }
2238
- },
2239
- "description": "Execute a test suite",
2408
+ "args": {},
2409
+ "description": "View test execution history",
2240
2410
  "examples": [
2241
- "<%= config.bin %> <%= command.id %> <suite-id>",
2242
- "<%= config.bin %> <%= command.id %> --name=\"Agent Quality Suite\"",
2243
- "<%= config.bin %> <%= command.id %> <suite-id> --format=json",
2244
- "<%= config.bin %> <%= command.id %> <suite-id> --output=suite-results.json"
2411
+ "<%= config.bin %> <%= command.id %>",
2412
+ "<%= config.bin %> <%= command.id %> --test=<test-id>",
2413
+ "<%= config.bin %> <%= command.id %> --suite=<suite-id>",
2414
+ "<%= config.bin %> <%= command.id %> --since=\"2024-01-01\"",
2415
+ "<%= config.bin %> <%= command.id %> --limit=50"
2245
2416
  ],
2246
2417
  "flags": {
2247
- "name": {
2248
- "char": "n",
2249
- "description": "Test suite name to execute",
2250
- "name": "name",
2418
+ "test": {
2419
+ "char": "t",
2420
+ "description": "Filter by test ID",
2421
+ "name": "test",
2422
+ "hasDynamicHelp": false,
2423
+ "multiple": false,
2424
+ "type": "option"
2425
+ },
2426
+ "recent": {
2427
+ "char": "r",
2428
+ "description": "Number of recent runs to show",
2429
+ "name": "recent",
2430
+ "hasDynamicHelp": false,
2431
+ "multiple": false,
2432
+ "type": "option"
2433
+ },
2434
+ "from": {
2435
+ "description": "Show history from date (YYYY-MM-DD)",
2436
+ "name": "from",
2437
+ "hasDynamicHelp": false,
2438
+ "multiple": false,
2439
+ "type": "option"
2440
+ },
2441
+ "status": {
2442
+ "char": "s",
2443
+ "description": "Filter by status",
2444
+ "name": "status",
2251
2445
  "hasDynamicHelp": false,
2252
2446
  "multiple": false,
2253
2447
  "type": "option"
@@ -2276,7 +2470,7 @@
2276
2470
  },
2277
2471
  "verbose": {
2278
2472
  "char": "v",
2279
- "description": "Show detailed execution information",
2473
+ "description": "Show detailed information",
2280
2474
  "name": "verbose",
2281
2475
  "allowNo": false,
2282
2476
  "type": "boolean"
@@ -2284,7 +2478,7 @@
2284
2478
  },
2285
2479
  "hasDynamicHelp": false,
2286
2480
  "hiddenAliases": [],
2287
- "id": "test:suite",
2481
+ "id": "test:history",
2288
2482
  "pluginAlias": "@memberjunction/cli",
2289
2483
  "pluginName": "@memberjunction/cli",
2290
2484
  "pluginType": "core",
@@ -2295,47 +2489,85 @@
2295
2489
  "dist",
2296
2490
  "commands",
2297
2491
  "test",
2298
- "suite.js"
2492
+ "history.js"
2299
2493
  ]
2300
2494
  },
2301
- "test:validate": {
2495
+ "test": {
2302
2496
  "aliases": [],
2303
- "args": {
2304
- "testId": {
2305
- "description": "Test ID to validate",
2306
- "name": "testId",
2307
- "required": false
2308
- }
2309
- },
2310
- "description": "Validate test definitions without executing",
2497
+ "args": {},
2498
+ "description": "MemberJunction Testing Framework - Execute and manage tests",
2311
2499
  "examples": [
2312
- "<%= config.bin %> <%= command.id %> <test-id>",
2313
- "<%= config.bin %> <%= command.id %> --all",
2500
+ "<%= config.bin %> <%= command.id %> run <test-id>",
2501
+ "<%= config.bin %> <%= command.id %> run --name=\"Active Members Count\"",
2502
+ "<%= config.bin %> <%= command.id %> suite <suite-id>",
2503
+ "<%= config.bin %> <%= command.id %> list",
2504
+ "<%= config.bin %> <%= command.id %> list --suites",
2505
+ "<%= config.bin %> <%= command.id %> validate --all"
2506
+ ],
2507
+ "flags": {},
2508
+ "hasDynamicHelp": false,
2509
+ "hiddenAliases": [],
2510
+ "id": "test",
2511
+ "pluginAlias": "@memberjunction/cli",
2512
+ "pluginName": "@memberjunction/cli",
2513
+ "pluginType": "core",
2514
+ "strict": true,
2515
+ "enableJsonFlag": false,
2516
+ "isESM": true,
2517
+ "relativePath": [
2518
+ "dist",
2519
+ "commands",
2520
+ "test",
2521
+ "index.js"
2522
+ ]
2523
+ },
2524
+ "test:list": {
2525
+ "aliases": [],
2526
+ "args": {},
2527
+ "description": "List available tests, suites, and types",
2528
+ "examples": [
2529
+ "<%= config.bin %> <%= command.id %>",
2530
+ "<%= config.bin %> <%= command.id %> --suites",
2531
+ "<%= config.bin %> <%= command.id %> --types",
2314
2532
  "<%= config.bin %> <%= command.id %> --type=agent-eval",
2315
- "<%= config.bin %> <%= command.id %> --all --save-report",
2316
- "<%= config.bin %> <%= command.id %> --all --output=validation-report.md"
2533
+ "<%= config.bin %> <%= command.id %> --tag=smoke",
2534
+ "<%= config.bin %> <%= command.id %> --status=active --verbose"
2317
2535
  ],
2318
2536
  "flags": {
2319
- "all": {
2320
- "char": "a",
2321
- "description": "Validate all tests",
2322
- "name": "all",
2537
+ "suites": {
2538
+ "description": "List test suites instead of tests",
2539
+ "name": "suites",
2540
+ "allowNo": false,
2541
+ "type": "boolean"
2542
+ },
2543
+ "types": {
2544
+ "description": "List test types",
2545
+ "name": "types",
2323
2546
  "allowNo": false,
2324
2547
  "type": "boolean"
2325
2548
  },
2326
2549
  "type": {
2327
2550
  "char": "t",
2328
- "description": "Validate tests by type",
2551
+ "description": "Filter by test type",
2329
2552
  "name": "type",
2330
2553
  "hasDynamicHelp": false,
2331
2554
  "multiple": false,
2332
2555
  "type": "option"
2333
2556
  },
2334
- "save-report": {
2335
- "description": "Save validation report to file",
2336
- "name": "save-report",
2337
- "allowNo": false,
2338
- "type": "boolean"
2557
+ "tag": {
2558
+ "description": "Filter by tag",
2559
+ "name": "tag",
2560
+ "hasDynamicHelp": false,
2561
+ "multiple": false,
2562
+ "type": "option"
2563
+ },
2564
+ "status": {
2565
+ "char": "s",
2566
+ "description": "Filter by status",
2567
+ "name": "status",
2568
+ "hasDynamicHelp": false,
2569
+ "multiple": false,
2570
+ "type": "option"
2339
2571
  },
2340
2572
  "format": {
2341
2573
  "char": "f",
@@ -2369,7 +2601,7 @@
2369
2601
  },
2370
2602
  "hasDynamicHelp": false,
2371
2603
  "hiddenAliases": [],
2372
- "id": "test:validate",
2604
+ "id": "test:list",
2373
2605
  "pluginAlias": "@memberjunction/cli",
2374
2606
  "pluginName": "@memberjunction/cli",
2375
2607
  "pluginType": "core",
@@ -2380,154 +2612,74 @@
2380
2612
  "dist",
2381
2613
  "commands",
2382
2614
  "test",
2383
- "validate.js"
2615
+ "list.js"
2384
2616
  ]
2385
2617
  },
2386
- "translate-sql": {
2618
+ "test:run": {
2387
2619
  "aliases": [],
2388
- "args": {},
2389
- "description": "Translate SQL fragments between database dialects (SQL Server ↔ PostgreSQL)",
2620
+ "args": {
2621
+ "testId": {
2622
+ "description": "Test ID to execute",
2623
+ "name": "testId",
2624
+ "required": false
2625
+ }
2626
+ },
2627
+ "description": "Execute a single test by ID or name",
2390
2628
  "examples": [
2391
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --dry-run",
2392
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope queries",
2393
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --sql \"SELECT TOP 10 [Name] FROM [Users]\"",
2394
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope all --output ./reports"
2629
+ "<%= config.bin %> <%= command.id %> <test-id>",
2630
+ "<%= config.bin %> <%= command.id %> --name=\"Active Members Count\"",
2631
+ "<%= config.bin %> <%= command.id %> <test-id> --environment=staging",
2632
+ "<%= config.bin %> <%= command.id %> <test-id> --format=json --output=results.json",
2633
+ "<%= config.bin %> <%= command.id %> <test-id> --dry-run"
2395
2634
  ],
2396
2635
  "flags": {
2397
- "from": {
2398
- "description": "Source SQL dialect",
2399
- "name": "from",
2400
- "required": true,
2636
+ "name": {
2637
+ "char": "n",
2638
+ "description": "Test name to execute",
2639
+ "name": "name",
2401
2640
  "hasDynamicHelp": false,
2402
2641
  "multiple": false,
2403
- "options": [
2404
- "sqlserver",
2405
- "postgresql"
2406
- ],
2407
2642
  "type": "option"
2408
2643
  },
2409
- "to": {
2410
- "description": "Target SQL dialect",
2411
- "name": "to",
2412
- "required": true,
2644
+ "environment": {
2645
+ "char": "e",
2646
+ "description": "Environment context (dev, staging, prod)",
2647
+ "name": "environment",
2413
2648
  "hasDynamicHelp": false,
2414
2649
  "multiple": false,
2415
- "options": [
2416
- "sqlserver",
2417
- "postgresql"
2418
- ],
2419
2650
  "type": "option"
2420
2651
  },
2421
- "scope": {
2422
- "description": "What to scan for translation",
2423
- "name": "scope",
2424
- "default": "all",
2652
+ "format": {
2653
+ "char": "f",
2654
+ "description": "Output format",
2655
+ "name": "format",
2656
+ "default": "console",
2425
2657
  "hasDynamicHelp": false,
2426
2658
  "multiple": false,
2427
2659
  "options": [
2428
- "queries",
2429
- "views",
2430
- "filters",
2431
- "all"
2660
+ "console",
2661
+ "json",
2662
+ "markdown"
2432
2663
  ],
2433
2664
  "type": "option"
2434
2665
  },
2435
- "sql": {
2436
- "description": "Translate a single SQL fragment (inline mode)",
2437
- "name": "sql",
2438
- "hasDynamicHelp": false,
2439
- "multiple": false,
2440
- "type": "option"
2441
- },
2442
- "dry-run": {
2443
- "description": "Show what would be translated without making changes",
2444
- "name": "dry-run",
2445
- "allowNo": false,
2446
- "type": "boolean"
2447
- },
2448
- "review": {
2449
- "description": "Generate review report only (no writes to database)",
2450
- "name": "review",
2451
- "allowNo": false,
2452
- "type": "boolean"
2453
- },
2454
2666
  "output": {
2455
2667
  "char": "o",
2456
- "description": "Output directory for the translation report",
2668
+ "description": "Output file path",
2457
2669
  "name": "output",
2458
2670
  "hasDynamicHelp": false,
2459
2671
  "multiple": false,
2460
2672
  "type": "option"
2461
2673
  },
2462
- "force": {
2463
- "description": "Re-translate even if platform variants already exist",
2464
- "name": "force",
2465
- "allowNo": false,
2466
- "type": "boolean"
2467
- }
2468
- },
2469
- "hasDynamicHelp": false,
2470
- "hiddenAliases": [],
2471
- "id": "translate-sql",
2472
- "pluginAlias": "@memberjunction/cli",
2473
- "pluginName": "@memberjunction/cli",
2474
- "pluginType": "core",
2475
- "strict": true,
2476
- "enableJsonFlag": false,
2477
- "isESM": true,
2478
- "relativePath": [
2479
- "dist",
2480
- "commands",
2481
- "translate-sql",
2482
- "index.js"
2483
- ]
2484
- },
2485
- "sync:file-reset": {
2486
- "aliases": [],
2487
- "args": {},
2488
- "description": "Reset file metadata sections",
2489
- "examples": [
2490
- "<%= config.bin %> <%= command.id %>",
2491
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2492
- "<%= config.bin %> <%= command.id %> --sections=\"dependencies,references\"",
2493
- "<%= config.bin %> <%= command.id %> --all"
2494
- ],
2495
- "flags": {
2496
- "dir": {
2497
- "description": "Specific entity directory to reset",
2498
- "name": "dir",
2499
- "hasDynamicHelp": false,
2500
- "multiple": false,
2501
- "type": "option"
2502
- },
2503
- "sections": {
2504
- "description": "Comma-separated list of sections to reset (dependencies,references,related,lookup)",
2505
- "name": "sections",
2506
- "hasDynamicHelp": false,
2507
- "multiple": false,
2508
- "type": "option"
2509
- },
2510
- "all": {
2511
- "description": "Reset all metadata sections",
2512
- "name": "all",
2513
- "allowNo": false,
2514
- "type": "boolean"
2515
- },
2516
2674
  "dry-run": {
2517
- "description": "Show what would be reset without actually resetting",
2675
+ "description": "Validate without executing",
2518
2676
  "name": "dry-run",
2519
2677
  "allowNo": false,
2520
2678
  "type": "boolean"
2521
2679
  },
2522
- "force": {
2523
- "description": "Skip confirmation prompts",
2524
- "name": "force",
2525
- "allowNo": false,
2526
- "type": "boolean"
2527
- },
2528
2680
  "verbose": {
2529
2681
  "char": "v",
2530
- "description": "Show detailed output",
2682
+ "description": "Show detailed execution information",
2531
2683
  "name": "verbose",
2532
2684
  "allowNo": false,
2533
2685
  "type": "boolean"
@@ -2535,31 +2687,7 @@
2535
2687
  },
2536
2688
  "hasDynamicHelp": false,
2537
2689
  "hiddenAliases": [],
2538
- "id": "sync:file-reset",
2539
- "pluginAlias": "@memberjunction/cli",
2540
- "pluginName": "@memberjunction/cli",
2541
- "pluginType": "core",
2542
- "strict": true,
2543
- "enableJsonFlag": false,
2544
- "isESM": true,
2545
- "relativePath": [
2546
- "dist",
2547
- "commands",
2548
- "sync",
2549
- "file-reset.js"
2550
- ]
2551
- },
2552
- "sync:init": {
2553
- "aliases": [],
2554
- "args": {},
2555
- "description": "Initialize a directory for metadata synchronization",
2556
- "examples": [
2557
- "<%= config.bin %> <%= command.id %>"
2558
- ],
2559
- "flags": {},
2560
- "hasDynamicHelp": false,
2561
- "hiddenAliases": [],
2562
- "id": "sync:init",
2690
+ "id": "test:run",
2563
2691
  "pluginAlias": "@memberjunction/cli",
2564
2692
  "pluginName": "@memberjunction/cli",
2565
2693
  "pluginType": "core",
@@ -2569,127 +2697,68 @@
2569
2697
  "relativePath": [
2570
2698
  "dist",
2571
2699
  "commands",
2572
- "sync",
2573
- "init.js"
2700
+ "test",
2701
+ "run.js"
2574
2702
  ]
2575
2703
  },
2576
- "sync:pull": {
2704
+ "test:suite": {
2577
2705
  "aliases": [],
2578
- "args": {},
2579
- "description": "Pull metadata from database to local files",
2706
+ "args": {
2707
+ "suiteId": {
2708
+ "description": "Test suite ID to execute",
2709
+ "name": "suiteId",
2710
+ "required": false
2711
+ }
2712
+ },
2713
+ "description": "Execute a test suite",
2580
2714
  "examples": [
2581
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\"",
2582
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --filter=\"CategoryID='customer-service-id'\"",
2583
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Agents\" --merge-strategy=overwrite",
2584
- "<%= config.bin %> <%= command.id %> --entity=\"Actions\" --target-dir=./custom-actions --no-validate",
2585
- "<%= config.bin %> <%= command.id %> --entity=\"Templates\" --dry-run --verbose",
2586
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --exclude-fields=InternalNotes,DebugInfo"
2715
+ "<%= config.bin %> <%= command.id %> <suite-id>",
2716
+ "<%= config.bin %> <%= command.id %> --name=\"Agent Quality Suite\"",
2717
+ "<%= config.bin %> <%= command.id %> <suite-id> --format=json",
2718
+ "<%= config.bin %> <%= command.id %> <suite-id> --output=suite-results.json"
2587
2719
  ],
2588
2720
  "flags": {
2589
- "entity": {
2590
- "description": "Entity name to pull",
2591
- "name": "entity",
2592
- "required": true,
2593
- "hasDynamicHelp": false,
2594
- "multiple": false,
2595
- "type": "option"
2596
- },
2597
- "filter": {
2598
- "description": "Additional filter for pulling specific records",
2599
- "name": "filter",
2600
- "hasDynamicHelp": false,
2601
- "multiple": false,
2602
- "type": "option"
2603
- },
2604
- "dry-run": {
2605
- "description": "Show what would be pulled without actually pulling",
2606
- "name": "dry-run",
2607
- "allowNo": false,
2608
- "type": "boolean"
2609
- },
2610
- "multi-file": {
2611
- "description": "Create a single file with multiple records (provide filename)",
2612
- "name": "multi-file",
2613
- "hasDynamicHelp": false,
2614
- "multiple": false,
2615
- "type": "option"
2616
- },
2617
- "verbose": {
2618
- "char": "v",
2619
- "description": "Show detailed output",
2620
- "name": "verbose",
2621
- "allowNo": false,
2622
- "type": "boolean"
2623
- },
2624
- "no-validate": {
2625
- "description": "Skip validation before pull",
2626
- "name": "no-validate",
2627
- "allowNo": false,
2628
- "type": "boolean"
2629
- },
2630
- "update-existing": {
2631
- "description": "Update existing records during pull",
2632
- "name": "update-existing",
2633
- "allowNo": false,
2634
- "type": "boolean"
2635
- },
2636
- "create-new": {
2637
- "description": "Create new files for records not found locally",
2638
- "name": "create-new",
2639
- "allowNo": false,
2640
- "type": "boolean"
2641
- },
2642
- "backup-before-update": {
2643
- "description": "Create backups before updating files",
2644
- "name": "backup-before-update",
2645
- "allowNo": false,
2646
- "type": "boolean"
2647
- },
2648
- "merge-strategy": {
2649
- "description": "Merge strategy for updates",
2650
- "name": "merge-strategy",
2651
- "default": "merge",
2721
+ "name": {
2722
+ "char": "n",
2723
+ "description": "Test suite name to execute",
2724
+ "name": "name",
2652
2725
  "hasDynamicHelp": false,
2653
2726
  "multiple": false,
2654
- "options": [
2655
- "merge",
2656
- "overwrite",
2657
- "skip"
2658
- ],
2659
2727
  "type": "option"
2660
2728
  },
2661
- "backup-directory": {
2662
- "description": "Custom backup directory (default: .backups)",
2663
- "name": "backup-directory",
2729
+ "format": {
2730
+ "char": "f",
2731
+ "description": "Output format",
2732
+ "name": "format",
2733
+ "default": "console",
2664
2734
  "hasDynamicHelp": false,
2665
2735
  "multiple": false,
2736
+ "options": [
2737
+ "console",
2738
+ "json",
2739
+ "markdown"
2740
+ ],
2666
2741
  "type": "option"
2667
2742
  },
2668
- "preserve-fields": {
2669
- "description": "Comma-separated list of fields to preserve during updates",
2670
- "name": "preserve-fields",
2671
- "hasDynamicHelp": false,
2672
- "multiple": true,
2673
- "type": "option"
2674
- },
2675
- "exclude-fields": {
2676
- "description": "Comma-separated list of fields to exclude from pull",
2677
- "name": "exclude-fields",
2678
- "hasDynamicHelp": false,
2679
- "multiple": true,
2680
- "type": "option"
2681
- },
2682
- "target-dir": {
2683
- "description": "Specific target directory (overrides auto-discovery)",
2684
- "name": "target-dir",
2743
+ "output": {
2744
+ "char": "o",
2745
+ "description": "Output file path",
2746
+ "name": "output",
2685
2747
  "hasDynamicHelp": false,
2686
2748
  "multiple": false,
2687
2749
  "type": "option"
2750
+ },
2751
+ "verbose": {
2752
+ "char": "v",
2753
+ "description": "Show detailed execution information",
2754
+ "name": "verbose",
2755
+ "allowNo": false,
2756
+ "type": "boolean"
2688
2757
  }
2689
2758
  },
2690
2759
  "hasDynamicHelp": false,
2691
2760
  "hiddenAliases": [],
2692
- "id": "sync:pull",
2761
+ "id": "test:suite",
2693
2762
  "pluginAlias": "@memberjunction/cli",
2694
2763
  "pluginName": "@memberjunction/cli",
2695
2764
  "pluginType": "core",
@@ -2699,85 +2768,82 @@
2699
2768
  "relativePath": [
2700
2769
  "dist",
2701
2770
  "commands",
2702
- "sync",
2703
- "pull.js"
2771
+ "test",
2772
+ "suite.js"
2704
2773
  ]
2705
2774
  },
2706
- "sync:push": {
2775
+ "test:validate": {
2707
2776
  "aliases": [],
2708
- "args": {},
2709
- "description": "Push local file changes to the database",
2777
+ "args": {
2778
+ "testId": {
2779
+ "description": "Test ID to validate",
2780
+ "name": "testId",
2781
+ "required": false
2782
+ }
2783
+ },
2784
+ "description": "Validate test definitions without executing",
2710
2785
  "examples": [
2711
- "<%= config.bin %> <%= command.id %>",
2712
- "<%= config.bin %> <%= command.id %> --dry-run",
2713
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2714
- "<%= config.bin %> <%= command.id %> --ci"
2786
+ "<%= config.bin %> <%= command.id %> <test-id>",
2787
+ "<%= config.bin %> <%= command.id %> --all",
2788
+ "<%= config.bin %> <%= command.id %> --type=agent-eval",
2789
+ "<%= config.bin %> <%= command.id %> --all --save-report",
2790
+ "<%= config.bin %> <%= command.id %> --all --output=validation-report.md"
2715
2791
  ],
2716
2792
  "flags": {
2717
- "dir": {
2718
- "description": "Specific entity directory to push",
2719
- "name": "dir",
2720
- "hasDynamicHelp": false,
2721
- "multiple": false,
2722
- "type": "option"
2723
- },
2724
- "dry-run": {
2725
- "description": "Show what would be pushed without actually pushing",
2726
- "name": "dry-run",
2727
- "allowNo": false,
2728
- "type": "boolean"
2729
- },
2730
- "ci": {
2731
- "description": "CI mode - no prompts, fail on issues",
2732
- "name": "ci",
2733
- "allowNo": false,
2734
- "type": "boolean"
2735
- },
2736
- "verbose": {
2737
- "char": "v",
2738
- "description": "Show detailed field-level output",
2739
- "name": "verbose",
2793
+ "all": {
2794
+ "char": "a",
2795
+ "description": "Validate all tests",
2796
+ "name": "all",
2740
2797
  "allowNo": false,
2741
2798
  "type": "boolean"
2742
2799
  },
2743
- "no-validate": {
2744
- "description": "Skip validation before push",
2745
- "name": "no-validate",
2746
- "allowNo": false,
2747
- "type": "boolean"
2800
+ "type": {
2801
+ "char": "t",
2802
+ "description": "Validate tests by type",
2803
+ "name": "type",
2804
+ "hasDynamicHelp": false,
2805
+ "multiple": false,
2806
+ "type": "option"
2748
2807
  },
2749
- "delete-db-only": {
2750
- "description": "Delete database-only records that reference records being deleted (prevents FK errors)",
2751
- "name": "delete-db-only",
2808
+ "save-report": {
2809
+ "description": "Save validation report to file",
2810
+ "name": "save-report",
2752
2811
  "allowNo": false,
2753
2812
  "type": "boolean"
2754
2813
  },
2755
- "parallel-batch-size": {
2756
- "description": "Number of records to process in parallel (default: 10)",
2757
- "name": "parallel-batch-size",
2758
- "default": 10,
2814
+ "format": {
2815
+ "char": "f",
2816
+ "description": "Output format",
2817
+ "name": "format",
2818
+ "default": "console",
2759
2819
  "hasDynamicHelp": false,
2760
2820
  "multiple": false,
2821
+ "options": [
2822
+ "console",
2823
+ "json",
2824
+ "markdown"
2825
+ ],
2761
2826
  "type": "option"
2762
2827
  },
2763
- "include": {
2764
- "description": "Only process these directories (comma-separated, supports patterns)",
2765
- "name": "include",
2828
+ "output": {
2829
+ "char": "o",
2830
+ "description": "Output file path",
2831
+ "name": "output",
2766
2832
  "hasDynamicHelp": false,
2767
2833
  "multiple": false,
2768
2834
  "type": "option"
2769
2835
  },
2770
- "exclude": {
2771
- "description": "Skip these directories (comma-separated, supports patterns)",
2772
- "name": "exclude",
2773
- "hasDynamicHelp": false,
2774
- "multiple": false,
2775
- "type": "option"
2836
+ "verbose": {
2837
+ "char": "v",
2838
+ "description": "Show detailed information",
2839
+ "name": "verbose",
2840
+ "allowNo": false,
2841
+ "type": "boolean"
2776
2842
  }
2777
2843
  },
2778
2844
  "hasDynamicHelp": false,
2779
2845
  "hiddenAliases": [],
2780
- "id": "sync:push",
2846
+ "id": "test:validate",
2781
2847
  "pluginAlias": "@memberjunction/cli",
2782
2848
  "pluginName": "@memberjunction/cli",
2783
2849
  "pluginType": "core",
@@ -2787,52 +2853,96 @@
2787
2853
  "relativePath": [
2788
2854
  "dist",
2789
2855
  "commands",
2790
- "sync",
2791
- "push.js"
2856
+ "test",
2857
+ "validate.js"
2792
2858
  ]
2793
2859
  },
2794
- "sync:status": {
2860
+ "translate-sql": {
2795
2861
  "aliases": [],
2796
2862
  "args": {},
2797
- "description": "Show status of local files vs database",
2863
+ "description": "Translate SQL fragments between database dialects (SQL Server ↔ PostgreSQL)",
2798
2864
  "examples": [
2799
- "<%= config.bin %> <%= command.id %>",
2800
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2801
- "<%= config.bin %> <%= command.id %> --verbose"
2865
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --dry-run",
2866
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope queries",
2867
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --sql \"SELECT TOP 10 [Name] FROM [Users]\"",
2868
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope all --output ./reports"
2802
2869
  ],
2803
2870
  "flags": {
2804
- "dir": {
2805
- "description": "Specific entity directory to check status",
2806
- "name": "dir",
2871
+ "from": {
2872
+ "description": "Source SQL dialect",
2873
+ "name": "from",
2874
+ "required": true,
2807
2875
  "hasDynamicHelp": false,
2808
2876
  "multiple": false,
2877
+ "options": [
2878
+ "sqlserver",
2879
+ "postgresql"
2880
+ ],
2809
2881
  "type": "option"
2810
2882
  },
2811
- "verbose": {
2812
- "char": "v",
2813
- "description": "Show detailed field-level differences",
2814
- "name": "verbose",
2815
- "allowNo": false,
2816
- "type": "boolean"
2883
+ "to": {
2884
+ "description": "Target SQL dialect",
2885
+ "name": "to",
2886
+ "required": true,
2887
+ "hasDynamicHelp": false,
2888
+ "multiple": false,
2889
+ "options": [
2890
+ "sqlserver",
2891
+ "postgresql"
2892
+ ],
2893
+ "type": "option"
2817
2894
  },
2818
- "include": {
2819
- "description": "Only process these directories (comma-separated, supports patterns)",
2820
- "name": "include",
2895
+ "scope": {
2896
+ "description": "What to scan for translation",
2897
+ "name": "scope",
2898
+ "default": "all",
2821
2899
  "hasDynamicHelp": false,
2822
2900
  "multiple": false,
2901
+ "options": [
2902
+ "queries",
2903
+ "views",
2904
+ "filters",
2905
+ "all"
2906
+ ],
2823
2907
  "type": "option"
2824
2908
  },
2825
- "exclude": {
2826
- "description": "Skip these directories (comma-separated, supports patterns)",
2827
- "name": "exclude",
2909
+ "sql": {
2910
+ "description": "Translate a single SQL fragment (inline mode)",
2911
+ "name": "sql",
2912
+ "hasDynamicHelp": false,
2913
+ "multiple": false,
2914
+ "type": "option"
2915
+ },
2916
+ "dry-run": {
2917
+ "description": "Show what would be translated without making changes",
2918
+ "name": "dry-run",
2919
+ "allowNo": false,
2920
+ "type": "boolean"
2921
+ },
2922
+ "review": {
2923
+ "description": "Generate review report only (no writes to database)",
2924
+ "name": "review",
2925
+ "allowNo": false,
2926
+ "type": "boolean"
2927
+ },
2928
+ "output": {
2929
+ "char": "o",
2930
+ "description": "Output directory for the translation report",
2931
+ "name": "output",
2828
2932
  "hasDynamicHelp": false,
2829
2933
  "multiple": false,
2830
2934
  "type": "option"
2935
+ },
2936
+ "force": {
2937
+ "description": "Re-translate even if platform variants already exist",
2938
+ "name": "force",
2939
+ "allowNo": false,
2940
+ "type": "boolean"
2831
2941
  }
2832
2942
  },
2833
2943
  "hasDynamicHelp": false,
2834
2944
  "hiddenAliases": [],
2835
- "id": "sync:status",
2945
+ "id": "translate-sql",
2836
2946
  "pluginAlias": "@memberjunction/cli",
2837
2947
  "pluginName": "@memberjunction/cli",
2838
2948
  "pluginType": "core",
@@ -2842,52 +2952,38 @@
2842
2952
  "relativePath": [
2843
2953
  "dist",
2844
2954
  "commands",
2845
- "sync",
2846
- "status.js"
2955
+ "translate-sql",
2956
+ "index.js"
2847
2957
  ]
2848
2958
  },
2849
- "sync:validate": {
2959
+ "ai:actions:list": {
2850
2960
  "aliases": [],
2851
2961
  "args": {},
2852
- "description": "Validate metadata files",
2962
+ "description": "List available AI actions",
2853
2963
  "examples": [
2854
2964
  "<%= config.bin %> <%= command.id %>",
2855
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2856
- "<%= config.bin %> <%= command.id %> --save-report",
2857
- "<%= config.bin %> <%= command.id %> --verbose"
2965
+ "<%= config.bin %> <%= command.id %> --output=table",
2966
+ "<%= config.bin %> <%= command.id %> --output=json"
2858
2967
  ],
2859
2968
  "flags": {
2860
- "dir": {
2861
- "description": "Specific entity directory to validate",
2862
- "name": "dir",
2863
- "hasDynamicHelp": false,
2864
- "multiple": false,
2865
- "type": "option"
2866
- },
2867
- "verbose": {
2868
- "char": "v",
2869
- "description": "Show detailed validation output",
2870
- "name": "verbose",
2871
- "allowNo": false,
2872
- "type": "boolean"
2873
- },
2874
- "save-report": {
2875
- "description": "Save validation report as markdown file",
2876
- "name": "save-report",
2877
- "allowNo": false,
2878
- "type": "boolean"
2879
- },
2880
2969
  "output": {
2881
- "description": "Output file path for validation report (default: validation-report.md)",
2970
+ "char": "o",
2971
+ "description": "Output format",
2882
2972
  "name": "output",
2973
+ "default": "compact",
2883
2974
  "hasDynamicHelp": false,
2884
2975
  "multiple": false,
2976
+ "options": [
2977
+ "compact",
2978
+ "json",
2979
+ "table"
2980
+ ],
2885
2981
  "type": "option"
2886
2982
  }
2887
2983
  },
2888
2984
  "hasDynamicHelp": false,
2889
2985
  "hiddenAliases": [],
2890
- "id": "sync:validate",
2986
+ "id": "ai:actions:list",
2891
2987
  "pluginAlias": "@memberjunction/cli",
2892
2988
  "pluginName": "@memberjunction/cli",
2893
2989
  "pluginType": "core",
@@ -2897,52 +2993,78 @@
2897
2993
  "relativePath": [
2898
2994
  "dist",
2899
2995
  "commands",
2900
- "sync",
2901
- "validate.js"
2996
+ "ai",
2997
+ "actions",
2998
+ "list.js"
2902
2999
  ]
2903
3000
  },
2904
- "sync:watch": {
3001
+ "ai:actions:run": {
2905
3002
  "aliases": [],
2906
3003
  "args": {},
2907
- "description": "Watch for file changes and sync automatically",
3004
+ "description": "Execute an AI action with parameters",
2908
3005
  "examples": [
2909
- "<%= config.bin %> <%= command.id %>",
2910
- "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2911
- "<%= config.bin %> <%= command.id %> --debounce=1000",
2912
- "<%= config.bin %> <%= command.id %> --no-validate"
3006
+ "<%= config.bin %> <%= command.id %> -n \"Get Weather\" --param \"Location=Boston\"",
3007
+ "<%= config.bin %> <%= command.id %> -n \"Get Stock Price\" --param \"Ticker=AAPL\"",
3008
+ "<%= config.bin %> <%= command.id %> -n \"Send Single Message\" --param \"To=user@example.com\" --param \"Subject=Test\" --param \"Body=Hello\" --param \"MessageType=Email\" --param \"Provider=SendGrid\"",
3009
+ "<%= config.bin %> <%= command.id %> -n \"Calculate Expression\" --param \"Expression=2+2*3\" --dry-run"
2913
3010
  ],
2914
3011
  "flags": {
2915
- "dir": {
2916
- "description": "Specific entity directory to watch",
2917
- "name": "dir",
3012
+ "name": {
3013
+ "char": "n",
3014
+ "description": "Action name",
3015
+ "name": "name",
3016
+ "required": true,
2918
3017
  "hasDynamicHelp": false,
2919
3018
  "multiple": false,
2920
3019
  "type": "option"
2921
3020
  },
2922
- "debounce": {
2923
- "description": "Debounce delay in milliseconds (default: 500)",
2924
- "name": "debounce",
3021
+ "param": {
3022
+ "char": "p",
3023
+ "description": "Action parameters in key=value format",
3024
+ "name": "param",
2925
3025
  "hasDynamicHelp": false,
2926
- "multiple": false,
3026
+ "multiple": true,
2927
3027
  "type": "option"
2928
3028
  },
2929
- "no-validate": {
2930
- "description": "Skip validation before sync",
2931
- "name": "no-validate",
3029
+ "dry-run": {
3030
+ "description": "Validate without executing",
3031
+ "name": "dry-run",
2932
3032
  "allowNo": false,
2933
3033
  "type": "boolean"
2934
3034
  },
3035
+ "output": {
3036
+ "char": "o",
3037
+ "description": "Output format",
3038
+ "name": "output",
3039
+ "default": "compact",
3040
+ "hasDynamicHelp": false,
3041
+ "multiple": false,
3042
+ "options": [
3043
+ "compact",
3044
+ "json",
3045
+ "table"
3046
+ ],
3047
+ "type": "option"
3048
+ },
2935
3049
  "verbose": {
2936
3050
  "char": "v",
2937
- "description": "Show detailed output",
3051
+ "description": "Show detailed execution information",
2938
3052
  "name": "verbose",
2939
3053
  "allowNo": false,
2940
3054
  "type": "boolean"
3055
+ },
3056
+ "timeout": {
3057
+ "description": "Execution timeout in milliseconds",
3058
+ "name": "timeout",
3059
+ "default": 300000,
3060
+ "hasDynamicHelp": false,
3061
+ "multiple": false,
3062
+ "type": "option"
2941
3063
  }
2942
3064
  },
2943
3065
  "hasDynamicHelp": false,
2944
3066
  "hiddenAliases": [],
2945
- "id": "sync:watch",
3067
+ "id": "ai:actions:run",
2946
3068
  "pluginAlias": "@memberjunction/cli",
2947
3069
  "pluginName": "@memberjunction/cli",
2948
3070
  "pluginType": "core",
@@ -2952,14 +3074,15 @@
2952
3074
  "relativePath": [
2953
3075
  "dist",
2954
3076
  "commands",
2955
- "sync",
2956
- "watch.js"
3077
+ "ai",
3078
+ "actions",
3079
+ "run.js"
2957
3080
  ]
2958
3081
  },
2959
- "ai:actions:list": {
3082
+ "ai:agents:list": {
2960
3083
  "aliases": [],
2961
3084
  "args": {},
2962
- "description": "List available AI actions",
3085
+ "description": "List available AI agents",
2963
3086
  "examples": [
2964
3087
  "<%= config.bin %> <%= command.id %>",
2965
3088
  "<%= config.bin %> <%= command.id %> --output=table",
@@ -2983,7 +3106,7 @@
2983
3106
  },
2984
3107
  "hasDynamicHelp": false,
2985
3108
  "hiddenAliases": [],
2986
- "id": "ai:actions:list",
3109
+ "id": "ai:agents:list",
2987
3110
  "pluginAlias": "@memberjunction/cli",
2988
3111
  "pluginName": "@memberjunction/cli",
2989
3112
  "pluginType": "core",
@@ -2994,41 +3117,47 @@
2994
3117
  "dist",
2995
3118
  "commands",
2996
3119
  "ai",
2997
- "actions",
3120
+ "agents",
2998
3121
  "list.js"
2999
3122
  ]
3000
3123
  },
3001
- "ai:actions:run": {
3124
+ "ai:agents:run": {
3002
3125
  "aliases": [],
3003
3126
  "args": {},
3004
- "description": "Execute an AI action with parameters",
3127
+ "description": "Execute an AI agent with a prompt or start interactive chat",
3005
3128
  "examples": [
3006
- "<%= config.bin %> <%= command.id %> -n \"Get Weather\" --param \"Location=Boston\"",
3007
- "<%= config.bin %> <%= command.id %> -n \"Get Stock Price\" --param \"Ticker=AAPL\"",
3008
- "<%= config.bin %> <%= command.id %> -n \"Send Single Message\" --param \"To=user@example.com\" --param \"Subject=Test\" --param \"Body=Hello\" --param \"MessageType=Email\" --param \"Provider=SendGrid\"",
3009
- "<%= config.bin %> <%= command.id %> -n \"Calculate Expression\" --param \"Expression=2+2*3\" --dry-run"
3129
+ "<%= config.bin %> <%= command.id %> -a \"Skip: Requirements Expert\" -p \"Create a dashboard for sales metrics\"",
3130
+ "<%= config.bin %> <%= command.id %> -a \"Child Component Generator Sub-agent\" --chat",
3131
+ "<%= config.bin %> <%= command.id %> -a \"Skip: Technical Design Expert\" -p \"Build a React component\" --verbose --timeout=600000"
3010
3132
  ],
3011
3133
  "flags": {
3012
- "name": {
3013
- "char": "n",
3014
- "description": "Action name",
3015
- "name": "name",
3134
+ "agent": {
3135
+ "char": "a",
3136
+ "description": "Agent name",
3137
+ "name": "agent",
3016
3138
  "required": true,
3017
3139
  "hasDynamicHelp": false,
3018
3140
  "multiple": false,
3019
3141
  "type": "option"
3020
3142
  },
3021
- "param": {
3143
+ "prompt": {
3022
3144
  "char": "p",
3023
- "description": "Action parameters in key=value format",
3024
- "name": "param",
3145
+ "description": "Prompt to execute",
3146
+ "exclusive": [
3147
+ "chat"
3148
+ ],
3149
+ "name": "prompt",
3025
3150
  "hasDynamicHelp": false,
3026
- "multiple": true,
3151
+ "multiple": false,
3027
3152
  "type": "option"
3028
3153
  },
3029
- "dry-run": {
3030
- "description": "Validate without executing",
3031
- "name": "dry-run",
3154
+ "chat": {
3155
+ "char": "c",
3156
+ "description": "Start interactive chat mode",
3157
+ "exclusive": [
3158
+ "prompt"
3159
+ ],
3160
+ "name": "chat",
3032
3161
  "allowNo": false,
3033
3162
  "type": "boolean"
3034
3163
  },
@@ -3064,7 +3193,7 @@
3064
3193
  },
3065
3194
  "hasDynamicHelp": false,
3066
3195
  "hiddenAliases": [],
3067
- "id": "ai:actions:run",
3196
+ "id": "ai:agents:run",
3068
3197
  "pluginAlias": "@memberjunction/cli",
3069
3198
  "pluginName": "@memberjunction/cli",
3070
3199
  "pluginType": "core",
@@ -3075,7 +3204,7 @@
3075
3204
  "dist",
3076
3205
  "commands",
3077
3206
  "ai",
3078
- "actions",
3207
+ "agents",
3079
3208
  "run.js"
3080
3209
  ]
3081
3210
  },
@@ -3295,135 +3424,6 @@
3295
3424
  "index.js"
3296
3425
  ]
3297
3426
  },
3298
- "ai:agents:list": {
3299
- "aliases": [],
3300
- "args": {},
3301
- "description": "List available AI agents",
3302
- "examples": [
3303
- "<%= config.bin %> <%= command.id %>",
3304
- "<%= config.bin %> <%= command.id %> --output=table",
3305
- "<%= config.bin %> <%= command.id %> --output=json"
3306
- ],
3307
- "flags": {
3308
- "output": {
3309
- "char": "o",
3310
- "description": "Output format",
3311
- "name": "output",
3312
- "default": "compact",
3313
- "hasDynamicHelp": false,
3314
- "multiple": false,
3315
- "options": [
3316
- "compact",
3317
- "json",
3318
- "table"
3319
- ],
3320
- "type": "option"
3321
- }
3322
- },
3323
- "hasDynamicHelp": false,
3324
- "hiddenAliases": [],
3325
- "id": "ai:agents:list",
3326
- "pluginAlias": "@memberjunction/cli",
3327
- "pluginName": "@memberjunction/cli",
3328
- "pluginType": "core",
3329
- "strict": true,
3330
- "enableJsonFlag": false,
3331
- "isESM": true,
3332
- "relativePath": [
3333
- "dist",
3334
- "commands",
3335
- "ai",
3336
- "agents",
3337
- "list.js"
3338
- ]
3339
- },
3340
- "ai:agents:run": {
3341
- "aliases": [],
3342
- "args": {},
3343
- "description": "Execute an AI agent with a prompt or start interactive chat",
3344
- "examples": [
3345
- "<%= config.bin %> <%= command.id %> -a \"Skip: Requirements Expert\" -p \"Create a dashboard for sales metrics\"",
3346
- "<%= config.bin %> <%= command.id %> -a \"Child Component Generator Sub-agent\" --chat",
3347
- "<%= config.bin %> <%= command.id %> -a \"Skip: Technical Design Expert\" -p \"Build a React component\" --verbose --timeout=600000"
3348
- ],
3349
- "flags": {
3350
- "agent": {
3351
- "char": "a",
3352
- "description": "Agent name",
3353
- "name": "agent",
3354
- "required": true,
3355
- "hasDynamicHelp": false,
3356
- "multiple": false,
3357
- "type": "option"
3358
- },
3359
- "prompt": {
3360
- "char": "p",
3361
- "description": "Prompt to execute",
3362
- "exclusive": [
3363
- "chat"
3364
- ],
3365
- "name": "prompt",
3366
- "hasDynamicHelp": false,
3367
- "multiple": false,
3368
- "type": "option"
3369
- },
3370
- "chat": {
3371
- "char": "c",
3372
- "description": "Start interactive chat mode",
3373
- "exclusive": [
3374
- "prompt"
3375
- ],
3376
- "name": "chat",
3377
- "allowNo": false,
3378
- "type": "boolean"
3379
- },
3380
- "output": {
3381
- "char": "o",
3382
- "description": "Output format",
3383
- "name": "output",
3384
- "default": "compact",
3385
- "hasDynamicHelp": false,
3386
- "multiple": false,
3387
- "options": [
3388
- "compact",
3389
- "json",
3390
- "table"
3391
- ],
3392
- "type": "option"
3393
- },
3394
- "verbose": {
3395
- "char": "v",
3396
- "description": "Show detailed execution information",
3397
- "name": "verbose",
3398
- "allowNo": false,
3399
- "type": "boolean"
3400
- },
3401
- "timeout": {
3402
- "description": "Execution timeout in milliseconds",
3403
- "name": "timeout",
3404
- "default": 300000,
3405
- "hasDynamicHelp": false,
3406
- "multiple": false,
3407
- "type": "option"
3408
- }
3409
- },
3410
- "hasDynamicHelp": false,
3411
- "hiddenAliases": [],
3412
- "id": "ai:agents:run",
3413
- "pluginAlias": "@memberjunction/cli",
3414
- "pluginName": "@memberjunction/cli",
3415
- "pluginType": "core",
3416
- "strict": true,
3417
- "enableJsonFlag": false,
3418
- "isESM": true,
3419
- "relativePath": [
3420
- "dist",
3421
- "commands",
3422
- "ai",
3423
- "agents",
3424
- "run.js"
3425
- ]
3426
- },
3427
3427
  "ai:prompts:list": {
3428
3428
  "aliases": [],
3429
3429
  "args": {},
@@ -3564,5 +3564,5 @@
3564
3564
  ]
3565
3565
  }
3566
3566
  },
3567
- "version": "5.27.0"
3567
+ "version": "5.27.1"
3568
3568
  }