@memberjunction/cli 5.27.0 → 5.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/oclif.manifest.json +810 -810
  2. package/package.json +13 -13
@@ -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,21 @@
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 %>"
1863
1916
  ],
1864
- "flags": {
1865
- "version": {
1866
- "char": "v",
1867
- "description": "Compare runs by version",
1868
- "name": "version",
1869
- "hasDynamicHelp": false,
1870
- "multiple": true,
1871
- "type": "option"
1872
- },
1873
- "commit": {
1874
- "char": "c",
1875
- "description": "Compare runs by git commit",
1876
- "name": "commit",
1877
- "hasDynamicHelp": false,
1878
- "multiple": true,
1879
- "type": "option"
1880
- },
1881
- "diff-only": {
1882
- "description": "Show only differences",
1883
- "name": "diff-only",
1884
- "allowNo": false,
1885
- "type": "boolean"
1886
- },
1887
- "format": {
1888
- "char": "f",
1889
- "description": "Output format",
1890
- "name": "format",
1891
- "default": "console",
1892
- "hasDynamicHelp": false,
1893
- "multiple": false,
1894
- "options": [
1895
- "console",
1896
- "json",
1897
- "markdown"
1898
- ],
1899
- "type": "option"
1900
- },
1901
- "output": {
1902
- "char": "o",
1903
- "description": "Output file path",
1904
- "name": "output",
1905
- "hasDynamicHelp": false,
1906
- "multiple": false,
1907
- "type": "option"
1908
- },
1909
- "verbose": {
1910
- "description": "Show detailed information",
1911
- "name": "verbose",
1912
- "allowNo": false,
1913
- "type": "boolean"
1914
- }
1915
- },
1917
+ "flags": {},
1916
1918
  "hasDynamicHelp": false,
1917
1919
  "hiddenAliases": [],
1918
- "id": "test:compare",
1920
+ "id": "sync:init",
1919
1921
  "pluginAlias": "@memberjunction/cli",
1920
1922
  "pluginName": "@memberjunction/cli",
1921
1923
  "pluginType": "core",
@@ -1925,86 +1927,127 @@
1925
1927
  "relativePath": [
1926
1928
  "dist",
1927
1929
  "commands",
1928
- "test",
1929
- "compare.js"
1930
+ "sync",
1931
+ "init.js"
1930
1932
  ]
1931
1933
  },
1932
- "test:history": {
1934
+ "sync:pull": {
1933
1935
  "aliases": [],
1934
1936
  "args": {},
1935
- "description": "View test execution history",
1937
+ "description": "Pull metadata from database to local files",
1936
1938
  "examples": [
1937
- "<%= 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"
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"
1942
1945
  ],
1943
1946
  "flags": {
1944
- "test": {
1945
- "char": "t",
1946
- "description": "Filter by test ID",
1947
- "name": "test",
1947
+ "entity": {
1948
+ "description": "Entity name to pull",
1949
+ "name": "entity",
1950
+ "required": true,
1948
1951
  "hasDynamicHelp": false,
1949
1952
  "multiple": false,
1950
1953
  "type": "option"
1951
1954
  },
1952
- "recent": {
1953
- "char": "r",
1954
- "description": "Number of recent runs to show",
1955
- "name": "recent",
1955
+ "filter": {
1956
+ "description": "Additional filter for pulling specific records",
1957
+ "name": "filter",
1956
1958
  "hasDynamicHelp": false,
1957
1959
  "multiple": false,
1958
1960
  "type": "option"
1959
1961
  },
1960
- "from": {
1961
- "description": "Show history from date (YYYY-MM-DD)",
1962
- "name": "from",
1963
- "hasDynamicHelp": false,
1964
- "multiple": false,
1965
- "type": "option"
1962
+ "dry-run": {
1963
+ "description": "Show what would be pulled without actually pulling",
1964
+ "name": "dry-run",
1965
+ "allowNo": false,
1966
+ "type": "boolean"
1966
1967
  },
1967
- "status": {
1968
- "char": "s",
1969
- "description": "Filter by status",
1970
- "name": "status",
1968
+ "multi-file": {
1969
+ "description": "Create a single file with multiple records (provide filename)",
1970
+ "name": "multi-file",
1971
1971
  "hasDynamicHelp": false,
1972
1972
  "multiple": false,
1973
1973
  "type": "option"
1974
1974
  },
1975
- "format": {
1976
- "char": "f",
1977
- "description": "Output format",
1978
- "name": "format",
1979
- "default": "console",
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",
1980
2010
  "hasDynamicHelp": false,
1981
2011
  "multiple": false,
1982
2012
  "options": [
1983
- "console",
1984
- "json",
1985
- "markdown"
2013
+ "merge",
2014
+ "overwrite",
2015
+ "skip"
1986
2016
  ],
1987
2017
  "type": "option"
1988
2018
  },
1989
- "output": {
1990
- "char": "o",
1991
- "description": "Output file path",
1992
- "name": "output",
2019
+ "backup-directory": {
2020
+ "description": "Custom backup directory (default: .backups)",
2021
+ "name": "backup-directory",
1993
2022
  "hasDynamicHelp": false,
1994
2023
  "multiple": false,
1995
2024
  "type": "option"
1996
2025
  },
1997
- "verbose": {
1998
- "char": "v",
1999
- "description": "Show detailed information",
2000
- "name": "verbose",
2001
- "allowNo": false,
2002
- "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"
2003
2046
  }
2004
2047
  },
2005
2048
  "hasDynamicHelp": false,
2006
2049
  "hiddenAliases": [],
2007
- "id": "test:history",
2050
+ "id": "sync:pull",
2008
2051
  "pluginAlias": "@memberjunction/cli",
2009
2052
  "pluginName": "@memberjunction/cli",
2010
2053
  "pluginType": "core",
@@ -2014,26 +2057,85 @@
2014
2057
  "relativePath": [
2015
2058
  "dist",
2016
2059
  "commands",
2017
- "test",
2018
- "history.js"
2060
+ "sync",
2061
+ "pull.js"
2019
2062
  ]
2020
2063
  },
2021
- "test": {
2064
+ "sync:push": {
2022
2065
  "aliases": [],
2023
2066
  "args": {},
2024
- "description": "MemberJunction Testing Framework - Execute and manage tests",
2067
+ "description": "Push local file changes to the database",
2025
2068
  "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"
2069
+ "<%= config.bin %> <%= command.id %>",
2070
+ "<%= config.bin %> <%= command.id %> --dry-run",
2071
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2072
+ "<%= config.bin %> <%= command.id %> --ci"
2032
2073
  ],
2033
- "flags": {},
2074
+ "flags": {
2075
+ "dir": {
2076
+ "description": "Specific entity directory to push",
2077
+ "name": "dir",
2078
+ "hasDynamicHelp": false,
2079
+ "multiple": false,
2080
+ "type": "option"
2081
+ },
2082
+ "dry-run": {
2083
+ "description": "Show what would be pushed without actually pushing",
2084
+ "name": "dry-run",
2085
+ "allowNo": false,
2086
+ "type": "boolean"
2087
+ },
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,
2117
+ "hasDynamicHelp": false,
2118
+ "multiple": false,
2119
+ "type": "option"
2120
+ },
2121
+ "include": {
2122
+ "description": "Only process these directories (comma-separated, supports patterns)",
2123
+ "name": "include",
2124
+ "hasDynamicHelp": false,
2125
+ "multiple": false,
2126
+ "type": "option"
2127
+ },
2128
+ "exclude": {
2129
+ "description": "Skip these directories (comma-separated, supports patterns)",
2130
+ "name": "exclude",
2131
+ "hasDynamicHelp": false,
2132
+ "multiple": false,
2133
+ "type": "option"
2134
+ }
2135
+ },
2034
2136
  "hasDynamicHelp": false,
2035
2137
  "hiddenAliases": [],
2036
- "id": "test",
2138
+ "id": "sync:push",
2037
2139
  "pluginAlias": "@memberjunction/cli",
2038
2140
  "pluginName": "@memberjunction/cli",
2039
2141
  "pluginType": "core",
@@ -2043,91 +2145,52 @@
2043
2145
  "relativePath": [
2044
2146
  "dist",
2045
2147
  "commands",
2046
- "test",
2047
- "index.js"
2148
+ "sync",
2149
+ "push.js"
2048
2150
  ]
2049
2151
  },
2050
- "test:list": {
2152
+ "sync:status": {
2051
2153
  "aliases": [],
2052
2154
  "args": {},
2053
- "description": "List available tests, suites, and types",
2155
+ "description": "Show status of local files vs database",
2054
2156
  "examples": [
2055
2157
  "<%= 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"
2158
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2159
+ "<%= config.bin %> <%= command.id %> --verbose"
2061
2160
  ],
2062
2161
  "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",
2162
+ "dir": {
2163
+ "description": "Specific entity directory to check status",
2164
+ "name": "dir",
2086
2165
  "hasDynamicHelp": false,
2087
2166
  "multiple": false,
2088
2167
  "type": "option"
2089
2168
  },
2090
- "status": {
2091
- "char": "s",
2092
- "description": "Filter by status",
2093
- "name": "status",
2094
- "hasDynamicHelp": false,
2095
- "multiple": false,
2096
- "type": "option"
2169
+ "verbose": {
2170
+ "char": "v",
2171
+ "description": "Show detailed field-level differences",
2172
+ "name": "verbose",
2173
+ "allowNo": false,
2174
+ "type": "boolean"
2097
2175
  },
2098
- "format": {
2099
- "char": "f",
2100
- "description": "Output format",
2101
- "name": "format",
2102
- "default": "console",
2176
+ "include": {
2177
+ "description": "Only process these directories (comma-separated, supports patterns)",
2178
+ "name": "include",
2103
2179
  "hasDynamicHelp": false,
2104
2180
  "multiple": false,
2105
- "options": [
2106
- "console",
2107
- "json",
2108
- "markdown"
2109
- ],
2110
2181
  "type": "option"
2111
2182
  },
2112
- "output": {
2113
- "char": "o",
2114
- "description": "Output file path",
2115
- "name": "output",
2183
+ "exclude": {
2184
+ "description": "Skip these directories (comma-separated, supports patterns)",
2185
+ "name": "exclude",
2116
2186
  "hasDynamicHelp": false,
2117
2187
  "multiple": false,
2118
2188
  "type": "option"
2119
- },
2120
- "verbose": {
2121
- "char": "v",
2122
- "description": "Show detailed information",
2123
- "name": "verbose",
2124
- "allowNo": false,
2125
- "type": "boolean"
2126
2189
  }
2127
2190
  },
2128
2191
  "hasDynamicHelp": false,
2129
2192
  "hiddenAliases": [],
2130
- "id": "test:list",
2193
+ "id": "sync:status",
2131
2194
  "pluginAlias": "@memberjunction/cli",
2132
2195
  "pluginName": "@memberjunction/cli",
2133
2196
  "pluginType": "core",
@@ -2137,75 +2200,99 @@
2137
2200
  "relativePath": [
2138
2201
  "dist",
2139
2202
  "commands",
2140
- "test",
2141
- "list.js"
2203
+ "sync",
2204
+ "status.js"
2142
2205
  ]
2143
2206
  },
2144
- "test:run": {
2207
+ "sync:validate": {
2145
2208
  "aliases": [],
2146
- "args": {
2147
- "testId": {
2148
- "description": "Test ID to execute",
2149
- "name": "testId",
2150
- "required": false
2151
- }
2152
- },
2153
- "description": "Execute a single test by ID or name",
2209
+ "args": {},
2210
+ "description": "Validate metadata files",
2154
2211
  "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"
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"
2160
2216
  ],
2161
2217
  "flags": {
2162
- "name": {
2163
- "char": "n",
2164
- "description": "Test name to execute",
2165
- "name": "name",
2218
+ "dir": {
2219
+ "description": "Specific entity directory to validate",
2220
+ "name": "dir",
2166
2221
  "hasDynamicHelp": false,
2167
2222
  "multiple": false,
2168
2223
  "type": "option"
2169
2224
  },
2170
- "environment": {
2171
- "char": "e",
2172
- "description": "Environment context (dev, staging, prod)",
2173
- "name": "environment",
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",
2174
2241
  "hasDynamicHelp": false,
2175
2242
  "multiple": false,
2176
2243
  "type": "option"
2177
- },
2178
- "format": {
2179
- "char": "f",
2180
- "description": "Output format",
2181
- "name": "format",
2182
- "default": "console",
2244
+ }
2245
+ },
2246
+ "hasDynamicHelp": false,
2247
+ "hiddenAliases": [],
2248
+ "id": "sync:validate",
2249
+ "pluginAlias": "@memberjunction/cli",
2250
+ "pluginName": "@memberjunction/cli",
2251
+ "pluginType": "core",
2252
+ "strict": true,
2253
+ "enableJsonFlag": false,
2254
+ "isESM": true,
2255
+ "relativePath": [
2256
+ "dist",
2257
+ "commands",
2258
+ "sync",
2259
+ "validate.js"
2260
+ ]
2261
+ },
2262
+ "sync:watch": {
2263
+ "aliases": [],
2264
+ "args": {},
2265
+ "description": "Watch for file changes and sync automatically",
2266
+ "examples": [
2267
+ "<%= config.bin %> <%= command.id %>",
2268
+ "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2269
+ "<%= config.bin %> <%= command.id %> --debounce=1000",
2270
+ "<%= config.bin %> <%= command.id %> --no-validate"
2271
+ ],
2272
+ "flags": {
2273
+ "dir": {
2274
+ "description": "Specific entity directory to watch",
2275
+ "name": "dir",
2183
2276
  "hasDynamicHelp": false,
2184
2277
  "multiple": false,
2185
- "options": [
2186
- "console",
2187
- "json",
2188
- "markdown"
2189
- ],
2190
2278
  "type": "option"
2191
2279
  },
2192
- "output": {
2193
- "char": "o",
2194
- "description": "Output file path",
2195
- "name": "output",
2280
+ "debounce": {
2281
+ "description": "Debounce delay in milliseconds (default: 500)",
2282
+ "name": "debounce",
2196
2283
  "hasDynamicHelp": false,
2197
2284
  "multiple": false,
2198
2285
  "type": "option"
2199
2286
  },
2200
- "dry-run": {
2201
- "description": "Validate without executing",
2202
- "name": "dry-run",
2287
+ "no-validate": {
2288
+ "description": "Skip validation before sync",
2289
+ "name": "no-validate",
2203
2290
  "allowNo": false,
2204
2291
  "type": "boolean"
2205
2292
  },
2206
2293
  "verbose": {
2207
2294
  "char": "v",
2208
- "description": "Show detailed execution information",
2295
+ "description": "Show detailed output",
2209
2296
  "name": "verbose",
2210
2297
  "allowNo": false,
2211
2298
  "type": "boolean"
@@ -2213,7 +2300,7 @@
2213
2300
  },
2214
2301
  "hasDynamicHelp": false,
2215
2302
  "hiddenAliases": [],
2216
- "id": "test:run",
2303
+ "id": "sync:watch",
2217
2304
  "pluginAlias": "@memberjunction/cli",
2218
2305
  "pluginName": "@memberjunction/cli",
2219
2306
  "pluginType": "core",
@@ -2223,35 +2310,54 @@
2223
2310
  "relativePath": [
2224
2311
  "dist",
2225
2312
  "commands",
2226
- "test",
2227
- "run.js"
2313
+ "sync",
2314
+ "watch.js"
2228
2315
  ]
2229
2316
  },
2230
- "test:suite": {
2317
+ "test:compare": {
2231
2318
  "aliases": [],
2232
2319
  "args": {
2233
- "suiteId": {
2234
- "description": "Test suite ID to execute",
2235
- "name": "suiteId",
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",
2236
2328
  "required": false
2237
2329
  }
2238
2330
  },
2239
- "description": "Execute a test suite",
2331
+ "description": "Compare test runs for regression detection",
2240
2332
  "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"
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"
2245
2337
  ],
2246
2338
  "flags": {
2247
- "name": {
2248
- "char": "n",
2249
- "description": "Test suite name to execute",
2250
- "name": "name",
2339
+ "version": {
2340
+ "char": "v",
2341
+ "description": "Compare runs by version",
2342
+ "name": "version",
2251
2343
  "hasDynamicHelp": false,
2252
- "multiple": false,
2344
+ "multiple": true,
2345
+ "type": "option"
2346
+ },
2347
+ "commit": {
2348
+ "char": "c",
2349
+ "description": "Compare runs by git commit",
2350
+ "name": "commit",
2351
+ "hasDynamicHelp": false,
2352
+ "multiple": true,
2253
2353
  "type": "option"
2254
2354
  },
2355
+ "diff-only": {
2356
+ "description": "Show only differences",
2357
+ "name": "diff-only",
2358
+ "allowNo": false,
2359
+ "type": "boolean"
2360
+ },
2255
2361
  "format": {
2256
2362
  "char": "f",
2257
2363
  "description": "Output format",
@@ -2275,8 +2381,7 @@
2275
2381
  "type": "option"
2276
2382
  },
2277
2383
  "verbose": {
2278
- "char": "v",
2279
- "description": "Show detailed execution information",
2384
+ "description": "Show detailed information",
2280
2385
  "name": "verbose",
2281
2386
  "allowNo": false,
2282
2387
  "type": "boolean"
@@ -2284,7 +2389,7 @@
2284
2389
  },
2285
2390
  "hasDynamicHelp": false,
2286
2391
  "hiddenAliases": [],
2287
- "id": "test:suite",
2392
+ "id": "test:compare",
2288
2393
  "pluginAlias": "@memberjunction/cli",
2289
2394
  "pluginName": "@memberjunction/cli",
2290
2395
  "pluginType": "core",
@@ -2295,47 +2400,51 @@
2295
2400
  "dist",
2296
2401
  "commands",
2297
2402
  "test",
2298
- "suite.js"
2403
+ "compare.js"
2299
2404
  ]
2300
2405
  },
2301
- "test:validate": {
2406
+ "test:history": {
2302
2407
  "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",
2408
+ "args": {},
2409
+ "description": "View test execution history",
2311
2410
  "examples": [
2312
- "<%= config.bin %> <%= command.id %> <test-id>",
2313
- "<%= config.bin %> <%= command.id %> --all",
2314
- "<%= 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"
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"
2317
2416
  ],
2318
2417
  "flags": {
2319
- "all": {
2320
- "char": "a",
2321
- "description": "Validate all tests",
2322
- "name": "all",
2323
- "allowNo": false,
2324
- "type": "boolean"
2325
- },
2326
- "type": {
2418
+ "test": {
2327
2419
  "char": "t",
2328
- "description": "Validate tests by type",
2329
- "name": "type",
2420
+ "description": "Filter by test ID",
2421
+ "name": "test",
2330
2422
  "hasDynamicHelp": false,
2331
2423
  "multiple": false,
2332
2424
  "type": "option"
2333
2425
  },
2334
- "save-report": {
2335
- "description": "Save validation report to file",
2336
- "name": "save-report",
2337
- "allowNo": false,
2338
- "type": "boolean"
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",
2445
+ "hasDynamicHelp": false,
2446
+ "multiple": false,
2447
+ "type": "option"
2339
2448
  },
2340
2449
  "format": {
2341
2450
  "char": "f",
@@ -2369,7 +2478,7 @@
2369
2478
  },
2370
2479
  "hasDynamicHelp": false,
2371
2480
  "hiddenAliases": [],
2372
- "id": "test:validate",
2481
+ "id": "test:history",
2373
2482
  "pluginAlias": "@memberjunction/cli",
2374
2483
  "pluginName": "@memberjunction/cli",
2375
2484
  "pluginType": "core",
@@ -2380,95 +2489,119 @@
2380
2489
  "dist",
2381
2490
  "commands",
2382
2491
  "test",
2383
- "validate.js"
2492
+ "history.js"
2384
2493
  ]
2385
2494
  },
2386
- "translate-sql": {
2495
+ "test": {
2387
2496
  "aliases": [],
2388
2497
  "args": {},
2389
- "description": "Translate SQL fragments between database dialects (SQL Server ↔ PostgreSQL)",
2498
+ "description": "MemberJunction Testing Framework - Execute and manage tests",
2390
2499
  "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"
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",
2532
+ "<%= config.bin %> <%= command.id %> --type=agent-eval",
2533
+ "<%= config.bin %> <%= command.id %> --tag=smoke",
2534
+ "<%= config.bin %> <%= command.id %> --status=active --verbose"
2395
2535
  ],
2396
2536
  "flags": {
2397
- "from": {
2398
- "description": "Source SQL dialect",
2399
- "name": "from",
2400
- "required": true,
2401
- "hasDynamicHelp": false,
2402
- "multiple": false,
2403
- "options": [
2404
- "sqlserver",
2405
- "postgresql"
2406
- ],
2407
- "type": "option"
2537
+ "suites": {
2538
+ "description": "List test suites instead of tests",
2539
+ "name": "suites",
2540
+ "allowNo": false,
2541
+ "type": "boolean"
2408
2542
  },
2409
- "to": {
2410
- "description": "Target SQL dialect",
2411
- "name": "to",
2412
- "required": true,
2543
+ "types": {
2544
+ "description": "List test types",
2545
+ "name": "types",
2546
+ "allowNo": false,
2547
+ "type": "boolean"
2548
+ },
2549
+ "type": {
2550
+ "char": "t",
2551
+ "description": "Filter by test type",
2552
+ "name": "type",
2413
2553
  "hasDynamicHelp": false,
2414
2554
  "multiple": false,
2415
- "options": [
2416
- "sqlserver",
2417
- "postgresql"
2418
- ],
2419
2555
  "type": "option"
2420
2556
  },
2421
- "scope": {
2422
- "description": "What to scan for translation",
2423
- "name": "scope",
2424
- "default": "all",
2557
+ "tag": {
2558
+ "description": "Filter by tag",
2559
+ "name": "tag",
2425
2560
  "hasDynamicHelp": false,
2426
2561
  "multiple": false,
2427
- "options": [
2428
- "queries",
2429
- "views",
2430
- "filters",
2431
- "all"
2432
- ],
2433
2562
  "type": "option"
2434
2563
  },
2435
- "sql": {
2436
- "description": "Translate a single SQL fragment (inline mode)",
2437
- "name": "sql",
2564
+ "status": {
2565
+ "char": "s",
2566
+ "description": "Filter by status",
2567
+ "name": "status",
2438
2568
  "hasDynamicHelp": false,
2439
2569
  "multiple": false,
2440
2570
  "type": "option"
2441
2571
  },
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"
2572
+ "format": {
2573
+ "char": "f",
2574
+ "description": "Output format",
2575
+ "name": "format",
2576
+ "default": "console",
2577
+ "hasDynamicHelp": false,
2578
+ "multiple": false,
2579
+ "options": [
2580
+ "console",
2581
+ "json",
2582
+ "markdown"
2583
+ ],
2584
+ "type": "option"
2453
2585
  },
2454
2586
  "output": {
2455
2587
  "char": "o",
2456
- "description": "Output directory for the translation report",
2588
+ "description": "Output file path",
2457
2589
  "name": "output",
2458
2590
  "hasDynamicHelp": false,
2459
2591
  "multiple": false,
2460
2592
  "type": "option"
2461
2593
  },
2462
- "force": {
2463
- "description": "Re-translate even if platform variants already exist",
2464
- "name": "force",
2594
+ "verbose": {
2595
+ "char": "v",
2596
+ "description": "Show detailed information",
2597
+ "name": "verbose",
2465
2598
  "allowNo": false,
2466
2599
  "type": "boolean"
2467
2600
  }
2468
2601
  },
2469
2602
  "hasDynamicHelp": false,
2470
2603
  "hiddenAliases": [],
2471
- "id": "translate-sql",
2604
+ "id": "test:list",
2472
2605
  "pluginAlias": "@memberjunction/cli",
2473
2606
  "pluginName": "@memberjunction/cli",
2474
2607
  "pluginType": "core",
@@ -2478,56 +2611,75 @@
2478
2611
  "relativePath": [
2479
2612
  "dist",
2480
2613
  "commands",
2481
- "translate-sql",
2482
- "index.js"
2614
+ "test",
2615
+ "list.js"
2483
2616
  ]
2484
2617
  },
2485
- "sync:file-reset": {
2618
+ "test:run": {
2486
2619
  "aliases": [],
2487
- "args": {},
2488
- "description": "Reset file metadata sections",
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",
2489
2628
  "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"
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"
2494
2634
  ],
2495
2635
  "flags": {
2496
- "dir": {
2497
- "description": "Specific entity directory to reset",
2498
- "name": "dir",
2636
+ "name": {
2637
+ "char": "n",
2638
+ "description": "Test name to execute",
2639
+ "name": "name",
2499
2640
  "hasDynamicHelp": false,
2500
2641
  "multiple": false,
2501
2642
  "type": "option"
2502
2643
  },
2503
- "sections": {
2504
- "description": "Comma-separated list of sections to reset (dependencies,references,related,lookup)",
2505
- "name": "sections",
2644
+ "environment": {
2645
+ "char": "e",
2646
+ "description": "Environment context (dev, staging, prod)",
2647
+ "name": "environment",
2506
2648
  "hasDynamicHelp": false,
2507
2649
  "multiple": false,
2508
2650
  "type": "option"
2509
2651
  },
2510
- "all": {
2511
- "description": "Reset all metadata sections",
2512
- "name": "all",
2513
- "allowNo": false,
2514
- "type": "boolean"
2652
+ "format": {
2653
+ "char": "f",
2654
+ "description": "Output format",
2655
+ "name": "format",
2656
+ "default": "console",
2657
+ "hasDynamicHelp": false,
2658
+ "multiple": false,
2659
+ "options": [
2660
+ "console",
2661
+ "json",
2662
+ "markdown"
2663
+ ],
2664
+ "type": "option"
2665
+ },
2666
+ "output": {
2667
+ "char": "o",
2668
+ "description": "Output file path",
2669
+ "name": "output",
2670
+ "hasDynamicHelp": false,
2671
+ "multiple": false,
2672
+ "type": "option"
2515
2673
  },
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.28.0"
3568
3568
  }