@memberjunction/cli 5.30.1 → 5.31.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.
@@ -1454,6 +1454,151 @@
1454
1454
  "index.js"
1455
1455
  ]
1456
1456
  },
1457
+ "migrate:convert": {
1458
+ "aliases": [],
1459
+ "args": {},
1460
+ "description": "Convert T-SQL migrations to PostgreSQL using the BatchConverter pipeline",
1461
+ "examples": [
1462
+ "<%= config.bin %> migrate convert",
1463
+ "<%= config.bin %> migrate convert --dry-run",
1464
+ "<%= config.bin %> migrate convert --file V202604060452__v5.24.x__KnowledgeHub.sql",
1465
+ "<%= config.bin %> migrate convert --source-dir ./migrations/v5 --output-dir ./migrations-pg/v5",
1466
+ "<%= config.bin %> migrate convert --verbose"
1467
+ ],
1468
+ "flags": {
1469
+ "source-dir": {
1470
+ "description": "Source T-SQL migrations directory",
1471
+ "name": "source-dir",
1472
+ "default": "./migrations/v5",
1473
+ "hasDynamicHelp": false,
1474
+ "multiple": false,
1475
+ "type": "option"
1476
+ },
1477
+ "output-dir": {
1478
+ "description": "Output PG migrations directory",
1479
+ "name": "output-dir",
1480
+ "default": "./migrations-pg/v5",
1481
+ "hasDynamicHelp": false,
1482
+ "multiple": false,
1483
+ "type": "option"
1484
+ },
1485
+ "file": {
1486
+ "description": "Convert a specific file (filename only, looked up in source-dir)",
1487
+ "name": "file",
1488
+ "hasDynamicHelp": false,
1489
+ "multiple": false,
1490
+ "type": "option"
1491
+ },
1492
+ "schema": {
1493
+ "description": "Target schema name",
1494
+ "name": "schema",
1495
+ "default": "__mj",
1496
+ "hasDynamicHelp": false,
1497
+ "multiple": false,
1498
+ "type": "option"
1499
+ },
1500
+ "dry-run": {
1501
+ "description": "Show what would be converted without writing files",
1502
+ "name": "dry-run",
1503
+ "allowNo": false,
1504
+ "type": "boolean"
1505
+ },
1506
+ "no-header": {
1507
+ "description": "Skip PG header (extensions, schema, implicit cast)",
1508
+ "name": "no-header",
1509
+ "allowNo": false,
1510
+ "type": "boolean"
1511
+ },
1512
+ "verbose": {
1513
+ "char": "v",
1514
+ "description": "Show per-statement progress",
1515
+ "name": "verbose",
1516
+ "allowNo": false,
1517
+ "type": "boolean"
1518
+ }
1519
+ },
1520
+ "hasDynamicHelp": false,
1521
+ "hiddenAliases": [],
1522
+ "id": "migrate:convert",
1523
+ "pluginAlias": "@memberjunction/cli",
1524
+ "pluginName": "@memberjunction/cli",
1525
+ "pluginType": "core",
1526
+ "strict": true,
1527
+ "enableJsonFlag": false,
1528
+ "isESM": true,
1529
+ "relativePath": [
1530
+ "dist",
1531
+ "commands",
1532
+ "migrate",
1533
+ "convert.js"
1534
+ ]
1535
+ },
1536
+ "migrate:create": {
1537
+ "aliases": [],
1538
+ "args": {
1539
+ "description": {
1540
+ "description": "Short description (will be converted to PascalCase with underscores)",
1541
+ "name": "description",
1542
+ "required": true
1543
+ }
1544
+ },
1545
+ "description": "Scaffold a new migration file for the current database platform",
1546
+ "examples": [
1547
+ "<%= config.bin %> <%= command.id %> \"Add FooID to Bar\"",
1548
+ "<%= config.bin %> <%= command.id %> \"Add FooID to Bar\" --version 5.25 --platform postgresql",
1549
+ "<%= config.bin %> <%= command.id %> \"Add FooID to Bar\" --dir ./migrations/v5"
1550
+ ],
1551
+ "flags": {
1552
+ "version": {
1553
+ "char": "v",
1554
+ "description": "Migration version tag, e.g. \"5.25\" (default: parsed from repo baseline or \"0.0\")",
1555
+ "name": "version",
1556
+ "hasDynamicHelp": false,
1557
+ "multiple": false,
1558
+ "type": "option"
1559
+ },
1560
+ "platform": {
1561
+ "char": "p",
1562
+ "description": "Override platform: sqlserver | postgresql (default: config.dbPlatform)",
1563
+ "name": "platform",
1564
+ "hasDynamicHelp": false,
1565
+ "multiple": false,
1566
+ "options": [
1567
+ "sqlserver",
1568
+ "postgresql"
1569
+ ],
1570
+ "type": "option"
1571
+ },
1572
+ "dir": {
1573
+ "description": "Output directory (default: ./migrations/v5 or ./migrations-pg/v5)",
1574
+ "name": "dir",
1575
+ "hasDynamicHelp": false,
1576
+ "multiple": false,
1577
+ "type": "option"
1578
+ },
1579
+ "x-x": {
1580
+ "description": "Use {version}.x.x suffix instead of {version}.x (e.g. 5.25.x instead of 5.25.x)",
1581
+ "name": "x-x",
1582
+ "allowNo": false,
1583
+ "type": "boolean"
1584
+ }
1585
+ },
1586
+ "hasDynamicHelp": false,
1587
+ "hiddenAliases": [],
1588
+ "id": "migrate:create",
1589
+ "pluginAlias": "@memberjunction/cli",
1590
+ "pluginName": "@memberjunction/cli",
1591
+ "pluginType": "core",
1592
+ "strict": true,
1593
+ "enableJsonFlag": false,
1594
+ "isESM": true,
1595
+ "relativePath": [
1596
+ "dist",
1597
+ "commands",
1598
+ "migrate",
1599
+ "create.js"
1600
+ ]
1601
+ },
1457
1602
  "migrate": {
1458
1603
  "aliases": [],
1459
1604
  "args": {},
@@ -1793,6 +1938,91 @@
1793
1938
  "index.js"
1794
1939
  ]
1795
1940
  },
1941
+ "sql-convert": {
1942
+ "aliases": [],
1943
+ "args": {
1944
+ "source": {
1945
+ "description": "Source SQL file path",
1946
+ "name": "source",
1947
+ "required": true
1948
+ }
1949
+ },
1950
+ "description": "Convert SQL files between database dialects using rule-based BatchConverter engine",
1951
+ "examples": [
1952
+ "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres",
1953
+ "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres --output converted.sql",
1954
+ "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres --schema my_schema",
1955
+ "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres --no-header --verbose"
1956
+ ],
1957
+ "flags": {
1958
+ "from": {
1959
+ "description": "Source SQL dialect",
1960
+ "name": "from",
1961
+ "required": true,
1962
+ "hasDynamicHelp": false,
1963
+ "multiple": false,
1964
+ "type": "option"
1965
+ },
1966
+ "to": {
1967
+ "description": "Target SQL dialect",
1968
+ "name": "to",
1969
+ "required": true,
1970
+ "hasDynamicHelp": false,
1971
+ "multiple": false,
1972
+ "type": "option"
1973
+ },
1974
+ "output": {
1975
+ "char": "o",
1976
+ "description": "Output file path (default: <source>.converted.<ext>)",
1977
+ "name": "output",
1978
+ "hasDynamicHelp": false,
1979
+ "multiple": false,
1980
+ "type": "option"
1981
+ },
1982
+ "schema": {
1983
+ "description": "Target schema name",
1984
+ "name": "schema",
1985
+ "default": "__mj",
1986
+ "hasDynamicHelp": false,
1987
+ "multiple": false,
1988
+ "type": "option"
1989
+ },
1990
+ "no-header": {
1991
+ "description": "Skip PG header (extensions, schema, implicit cast)",
1992
+ "name": "no-header",
1993
+ "allowNo": false,
1994
+ "type": "boolean"
1995
+ },
1996
+ "no-post-process": {
1997
+ "description": "Skip post-processing pass",
1998
+ "name": "no-post-process",
1999
+ "allowNo": false,
2000
+ "type": "boolean"
2001
+ },
2002
+ "verbose": {
2003
+ "char": "v",
2004
+ "description": "Show per-statement progress and detailed report",
2005
+ "name": "verbose",
2006
+ "allowNo": false,
2007
+ "type": "boolean"
2008
+ }
2009
+ },
2010
+ "hasDynamicHelp": false,
2011
+ "hiddenAliases": [],
2012
+ "id": "sql-convert",
2013
+ "pluginAlias": "@memberjunction/cli",
2014
+ "pluginName": "@memberjunction/cli",
2015
+ "pluginType": "core",
2016
+ "strict": true,
2017
+ "enableJsonFlag": false,
2018
+ "isESM": true,
2019
+ "relativePath": [
2020
+ "dist",
2021
+ "commands",
2022
+ "sql-convert",
2023
+ "index.js"
2024
+ ]
2025
+ },
1796
2026
  "sync:file-reset": {
1797
2027
  "aliases": [],
1798
2028
  "args": {},
@@ -1996,6 +2226,19 @@
1996
2226
  "hasDynamicHelp": false,
1997
2227
  "multiple": false,
1998
2228
  "type": "option"
2229
+ },
2230
+ "incremental": {
2231
+ "description": "Only pull records updated since last successful pull",
2232
+ "name": "incremental",
2233
+ "allowNo": false,
2234
+ "type": "boolean"
2235
+ },
2236
+ "since": {
2237
+ "description": "Only pull records updated after this ISO 8601 timestamp (e.g., 2026-04-07T10:00:00Z)",
2238
+ "name": "since",
2239
+ "hasDynamicHelp": false,
2240
+ "multiple": false,
2241
+ "type": "option"
1999
2242
  }
2000
2243
  },
2001
2244
  "hasDynamicHelp": false,
@@ -2084,6 +2327,12 @@
2084
2327
  "hasDynamicHelp": false,
2085
2328
  "multiple": false,
2086
2329
  "type": "option"
2330
+ },
2331
+ "incremental": {
2332
+ "description": "Skip unchanged files using stored checksums from last push",
2333
+ "name": "incremental",
2334
+ "allowNo": false,
2335
+ "type": "boolean"
2087
2336
  }
2088
2337
  },
2089
2338
  "hasDynamicHelp": false,
@@ -2267,226 +2516,42 @@
2267
2516
  "watch.js"
2268
2517
  ]
2269
2518
  },
2270
- "sql-convert": {
2519
+ "test:compare": {
2271
2520
  "aliases": [],
2272
2521
  "args": {
2273
- "source": {
2274
- "description": "Source SQL file path",
2275
- "name": "source",
2276
- "required": true
2522
+ "runId1": {
2523
+ "description": "First test run ID to compare",
2524
+ "name": "runId1",
2525
+ "required": false
2526
+ },
2527
+ "runId2": {
2528
+ "description": "Second test run ID to compare",
2529
+ "name": "runId2",
2530
+ "required": false
2277
2531
  }
2278
2532
  },
2279
- "description": "Convert SQL files between database dialects using rule-based BatchConverter engine",
2533
+ "description": "Compare test runs for regression detection",
2280
2534
  "examples": [
2281
- "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres",
2282
- "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres --output converted.sql",
2283
- "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres --schema my_schema",
2284
- "<%= config.bin %> sql-convert ./migration.sql --from tsql --to postgres --no-header --verbose"
2535
+ "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2>",
2536
+ "<%= config.bin %> <%= command.id %> --baseline=<run-id> --current=<run-id>",
2537
+ "<%= config.bin %> <%= command.id %> --suite=<suite-id> --since=\"2024-01-01\"",
2538
+ "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2> --format=json"
2285
2539
  ],
2286
2540
  "flags": {
2287
- "from": {
2288
- "description": "Source SQL dialect",
2289
- "name": "from",
2290
- "required": true,
2541
+ "version": {
2542
+ "char": "v",
2543
+ "description": "Compare runs by version",
2544
+ "name": "version",
2291
2545
  "hasDynamicHelp": false,
2292
- "multiple": false,
2546
+ "multiple": true,
2293
2547
  "type": "option"
2294
2548
  },
2295
- "to": {
2296
- "description": "Target SQL dialect",
2297
- "name": "to",
2298
- "required": true,
2549
+ "commit": {
2550
+ "char": "c",
2551
+ "description": "Compare runs by git commit",
2552
+ "name": "commit",
2299
2553
  "hasDynamicHelp": false,
2300
- "multiple": false,
2301
- "type": "option"
2302
- },
2303
- "output": {
2304
- "char": "o",
2305
- "description": "Output file path (default: <source>.converted.<ext>)",
2306
- "name": "output",
2307
- "hasDynamicHelp": false,
2308
- "multiple": false,
2309
- "type": "option"
2310
- },
2311
- "schema": {
2312
- "description": "Target schema name",
2313
- "name": "schema",
2314
- "default": "__mj",
2315
- "hasDynamicHelp": false,
2316
- "multiple": false,
2317
- "type": "option"
2318
- },
2319
- "no-header": {
2320
- "description": "Skip PG header (extensions, schema, implicit cast)",
2321
- "name": "no-header",
2322
- "allowNo": false,
2323
- "type": "boolean"
2324
- },
2325
- "no-post-process": {
2326
- "description": "Skip post-processing pass",
2327
- "name": "no-post-process",
2328
- "allowNo": false,
2329
- "type": "boolean"
2330
- },
2331
- "verbose": {
2332
- "char": "v",
2333
- "description": "Show per-statement progress and detailed report",
2334
- "name": "verbose",
2335
- "allowNo": false,
2336
- "type": "boolean"
2337
- }
2338
- },
2339
- "hasDynamicHelp": false,
2340
- "hiddenAliases": [],
2341
- "id": "sql-convert",
2342
- "pluginAlias": "@memberjunction/cli",
2343
- "pluginName": "@memberjunction/cli",
2344
- "pluginType": "core",
2345
- "strict": true,
2346
- "enableJsonFlag": false,
2347
- "isESM": true,
2348
- "relativePath": [
2349
- "dist",
2350
- "commands",
2351
- "sql-convert",
2352
- "index.js"
2353
- ]
2354
- },
2355
- "translate-sql": {
2356
- "aliases": [],
2357
- "args": {},
2358
- "description": "Translate SQL fragments between database dialects (SQL Server ↔ PostgreSQL)",
2359
- "examples": [
2360
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --dry-run",
2361
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope queries",
2362
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --sql \"SELECT TOP 10 [Name] FROM [Users]\"",
2363
- "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope all --output ./reports"
2364
- ],
2365
- "flags": {
2366
- "from": {
2367
- "description": "Source SQL dialect",
2368
- "name": "from",
2369
- "required": true,
2370
- "hasDynamicHelp": false,
2371
- "multiple": false,
2372
- "options": [
2373
- "sqlserver",
2374
- "postgresql"
2375
- ],
2376
- "type": "option"
2377
- },
2378
- "to": {
2379
- "description": "Target SQL dialect",
2380
- "name": "to",
2381
- "required": true,
2382
- "hasDynamicHelp": false,
2383
- "multiple": false,
2384
- "options": [
2385
- "sqlserver",
2386
- "postgresql"
2387
- ],
2388
- "type": "option"
2389
- },
2390
- "scope": {
2391
- "description": "What to scan for translation",
2392
- "name": "scope",
2393
- "default": "all",
2394
- "hasDynamicHelp": false,
2395
- "multiple": false,
2396
- "options": [
2397
- "queries",
2398
- "views",
2399
- "filters",
2400
- "all"
2401
- ],
2402
- "type": "option"
2403
- },
2404
- "sql": {
2405
- "description": "Translate a single SQL fragment (inline mode)",
2406
- "name": "sql",
2407
- "hasDynamicHelp": false,
2408
- "multiple": false,
2409
- "type": "option"
2410
- },
2411
- "dry-run": {
2412
- "description": "Show what would be translated without making changes",
2413
- "name": "dry-run",
2414
- "allowNo": false,
2415
- "type": "boolean"
2416
- },
2417
- "review": {
2418
- "description": "Generate review report only (no writes to database)",
2419
- "name": "review",
2420
- "allowNo": false,
2421
- "type": "boolean"
2422
- },
2423
- "output": {
2424
- "char": "o",
2425
- "description": "Output directory for the translation report",
2426
- "name": "output",
2427
- "hasDynamicHelp": false,
2428
- "multiple": false,
2429
- "type": "option"
2430
- },
2431
- "force": {
2432
- "description": "Re-translate even if platform variants already exist",
2433
- "name": "force",
2434
- "allowNo": false,
2435
- "type": "boolean"
2436
- }
2437
- },
2438
- "hasDynamicHelp": false,
2439
- "hiddenAliases": [],
2440
- "id": "translate-sql",
2441
- "pluginAlias": "@memberjunction/cli",
2442
- "pluginName": "@memberjunction/cli",
2443
- "pluginType": "core",
2444
- "strict": true,
2445
- "enableJsonFlag": false,
2446
- "isESM": true,
2447
- "relativePath": [
2448
- "dist",
2449
- "commands",
2450
- "translate-sql",
2451
- "index.js"
2452
- ]
2453
- },
2454
- "test:compare": {
2455
- "aliases": [],
2456
- "args": {
2457
- "runId1": {
2458
- "description": "First test run ID to compare",
2459
- "name": "runId1",
2460
- "required": false
2461
- },
2462
- "runId2": {
2463
- "description": "Second test run ID to compare",
2464
- "name": "runId2",
2465
- "required": false
2466
- }
2467
- },
2468
- "description": "Compare test runs for regression detection",
2469
- "examples": [
2470
- "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2>",
2471
- "<%= config.bin %> <%= command.id %> --baseline=<run-id> --current=<run-id>",
2472
- "<%= config.bin %> <%= command.id %> --suite=<suite-id> --since=\"2024-01-01\"",
2473
- "<%= config.bin %> <%= command.id %> <run-id-1> <run-id-2> --format=json"
2474
- ],
2475
- "flags": {
2476
- "version": {
2477
- "char": "v",
2478
- "description": "Compare runs by version",
2479
- "name": "version",
2480
- "hasDynamicHelp": false,
2481
- "multiple": true,
2482
- "type": "option"
2483
- },
2484
- "commit": {
2485
- "char": "c",
2486
- "description": "Compare runs by git commit",
2487
- "name": "commit",
2488
- "hasDynamicHelp": false,
2489
- "multiple": true,
2554
+ "multiple": true,
2490
2555
  "type": "option"
2491
2556
  },
2492
2557
  "diff-only": {
@@ -2994,115 +3059,92 @@
2994
3059
  "validate.js"
2995
3060
  ]
2996
3061
  },
2997
- "ai:actions:list": {
3062
+ "translate-sql": {
2998
3063
  "aliases": [],
2999
3064
  "args": {},
3000
- "description": "List available AI actions",
3065
+ "description": "Translate SQL fragments between database dialects (SQL Server ↔ PostgreSQL)",
3001
3066
  "examples": [
3002
- "<%= config.bin %> <%= command.id %>",
3003
- "<%= config.bin %> <%= command.id %> --output=table",
3004
- "<%= config.bin %> <%= command.id %> --output=json"
3067
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --dry-run",
3068
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope queries",
3069
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --sql \"SELECT TOP 10 [Name] FROM [Users]\"",
3070
+ "<%= config.bin %> translate-sql --from sqlserver --to postgresql --scope all --output ./reports"
3005
3071
  ],
3006
3072
  "flags": {
3007
- "output": {
3008
- "char": "o",
3009
- "description": "Output format",
3010
- "name": "output",
3011
- "default": "compact",
3073
+ "from": {
3074
+ "description": "Source SQL dialect",
3075
+ "name": "from",
3076
+ "required": true,
3012
3077
  "hasDynamicHelp": false,
3013
3078
  "multiple": false,
3014
3079
  "options": [
3015
- "compact",
3016
- "json",
3017
- "table"
3080
+ "sqlserver",
3081
+ "postgresql"
3018
3082
  ],
3019
3083
  "type": "option"
3020
- }
3021
- },
3022
- "hasDynamicHelp": false,
3023
- "hiddenAliases": [],
3024
- "id": "ai:actions:list",
3025
- "pluginAlias": "@memberjunction/cli",
3026
- "pluginName": "@memberjunction/cli",
3027
- "pluginType": "core",
3028
- "strict": true,
3029
- "enableJsonFlag": false,
3030
- "isESM": true,
3031
- "relativePath": [
3032
- "dist",
3033
- "commands",
3034
- "ai",
3035
- "actions",
3036
- "list.js"
3037
- ]
3038
- },
3039
- "ai:actions:run": {
3040
- "aliases": [],
3041
- "args": {},
3042
- "description": "Execute an AI action with parameters",
3043
- "examples": [
3044
- "<%= config.bin %> <%= command.id %> -n \"Get Weather\" --param \"Location=Boston\"",
3045
- "<%= config.bin %> <%= command.id %> -n \"Get Stock Price\" --param \"Ticker=AAPL\"",
3046
- "<%= 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\"",
3047
- "<%= config.bin %> <%= command.id %> -n \"Calculate Expression\" --param \"Expression=2+2*3\" --dry-run"
3048
- ],
3049
- "flags": {
3050
- "name": {
3051
- "char": "n",
3052
- "description": "Action name",
3053
- "name": "name",
3084
+ },
3085
+ "to": {
3086
+ "description": "Target SQL dialect",
3087
+ "name": "to",
3054
3088
  "required": true,
3055
3089
  "hasDynamicHelp": false,
3056
3090
  "multiple": false,
3091
+ "options": [
3092
+ "sqlserver",
3093
+ "postgresql"
3094
+ ],
3057
3095
  "type": "option"
3058
3096
  },
3059
- "param": {
3060
- "char": "p",
3061
- "description": "Action parameters in key=value format",
3062
- "name": "param",
3097
+ "scope": {
3098
+ "description": "What to scan for translation",
3099
+ "name": "scope",
3100
+ "default": "all",
3063
3101
  "hasDynamicHelp": false,
3064
- "multiple": true,
3102
+ "multiple": false,
3103
+ "options": [
3104
+ "queries",
3105
+ "views",
3106
+ "filters",
3107
+ "all"
3108
+ ],
3109
+ "type": "option"
3110
+ },
3111
+ "sql": {
3112
+ "description": "Translate a single SQL fragment (inline mode)",
3113
+ "name": "sql",
3114
+ "hasDynamicHelp": false,
3115
+ "multiple": false,
3065
3116
  "type": "option"
3066
3117
  },
3067
3118
  "dry-run": {
3068
- "description": "Validate without executing",
3119
+ "description": "Show what would be translated without making changes",
3069
3120
  "name": "dry-run",
3070
3121
  "allowNo": false,
3071
3122
  "type": "boolean"
3072
3123
  },
3124
+ "review": {
3125
+ "description": "Generate review report only (no writes to database)",
3126
+ "name": "review",
3127
+ "allowNo": false,
3128
+ "type": "boolean"
3129
+ },
3073
3130
  "output": {
3074
3131
  "char": "o",
3075
- "description": "Output format",
3132
+ "description": "Output directory for the translation report",
3076
3133
  "name": "output",
3077
- "default": "compact",
3078
3134
  "hasDynamicHelp": false,
3079
3135
  "multiple": false,
3080
- "options": [
3081
- "compact",
3082
- "json",
3083
- "table"
3084
- ],
3085
3136
  "type": "option"
3086
3137
  },
3087
- "verbose": {
3088
- "char": "v",
3089
- "description": "Show detailed execution information",
3090
- "name": "verbose",
3138
+ "force": {
3139
+ "description": "Re-translate even if platform variants already exist",
3140
+ "name": "force",
3091
3141
  "allowNo": false,
3092
3142
  "type": "boolean"
3093
- },
3094
- "timeout": {
3095
- "description": "Execution timeout in milliseconds",
3096
- "name": "timeout",
3097
- "default": 300000,
3098
- "hasDynamicHelp": false,
3099
- "multiple": false,
3100
- "type": "option"
3101
3143
  }
3102
3144
  },
3103
3145
  "hasDynamicHelp": false,
3104
3146
  "hiddenAliases": [],
3105
- "id": "ai:actions:run",
3147
+ "id": "translate-sql",
3106
3148
  "pluginAlias": "@memberjunction/cli",
3107
3149
  "pluginName": "@memberjunction/cli",
3108
3150
  "pluginType": "core",
@@ -3112,15 +3154,14 @@
3112
3154
  "relativePath": [
3113
3155
  "dist",
3114
3156
  "commands",
3115
- "ai",
3116
- "actions",
3117
- "run.js"
3157
+ "translate-sql",
3158
+ "index.js"
3118
3159
  ]
3119
3160
  },
3120
- "ai:agents:list": {
3161
+ "ai:actions:list": {
3121
3162
  "aliases": [],
3122
3163
  "args": {},
3123
- "description": "List available AI agents",
3164
+ "description": "List available AI actions",
3124
3165
  "examples": [
3125
3166
  "<%= config.bin %> <%= command.id %>",
3126
3167
  "<%= config.bin %> <%= command.id %> --output=table",
@@ -3144,7 +3185,7 @@
3144
3185
  },
3145
3186
  "hasDynamicHelp": false,
3146
3187
  "hiddenAliases": [],
3147
- "id": "ai:agents:list",
3188
+ "id": "ai:actions:list",
3148
3189
  "pluginAlias": "@memberjunction/cli",
3149
3190
  "pluginName": "@memberjunction/cli",
3150
3191
  "pluginType": "core",
@@ -3155,47 +3196,41 @@
3155
3196
  "dist",
3156
3197
  "commands",
3157
3198
  "ai",
3158
- "agents",
3199
+ "actions",
3159
3200
  "list.js"
3160
3201
  ]
3161
3202
  },
3162
- "ai:agents:run": {
3203
+ "ai:actions:run": {
3163
3204
  "aliases": [],
3164
3205
  "args": {},
3165
- "description": "Execute an AI agent with a prompt or start interactive chat",
3206
+ "description": "Execute an AI action with parameters",
3166
3207
  "examples": [
3167
- "<%= config.bin %> <%= command.id %> -a \"Skip: Requirements Expert\" -p \"Create a dashboard for sales metrics\"",
3168
- "<%= config.bin %> <%= command.id %> -a \"Child Component Generator Sub-agent\" --chat",
3169
- "<%= config.bin %> <%= command.id %> -a \"Skip: Technical Design Expert\" -p \"Build a React component\" --verbose --timeout=600000"
3208
+ "<%= config.bin %> <%= command.id %> -n \"Get Weather\" --param \"Location=Boston\"",
3209
+ "<%= config.bin %> <%= command.id %> -n \"Get Stock Price\" --param \"Ticker=AAPL\"",
3210
+ "<%= 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\"",
3211
+ "<%= config.bin %> <%= command.id %> -n \"Calculate Expression\" --param \"Expression=2+2*3\" --dry-run"
3170
3212
  ],
3171
3213
  "flags": {
3172
- "agent": {
3173
- "char": "a",
3174
- "description": "Agent name",
3175
- "name": "agent",
3214
+ "name": {
3215
+ "char": "n",
3216
+ "description": "Action name",
3217
+ "name": "name",
3176
3218
  "required": true,
3177
3219
  "hasDynamicHelp": false,
3178
3220
  "multiple": false,
3179
3221
  "type": "option"
3180
3222
  },
3181
- "prompt": {
3223
+ "param": {
3182
3224
  "char": "p",
3183
- "description": "Prompt to execute",
3184
- "exclusive": [
3185
- "chat"
3186
- ],
3187
- "name": "prompt",
3225
+ "description": "Action parameters in key=value format",
3226
+ "name": "param",
3188
3227
  "hasDynamicHelp": false,
3189
- "multiple": false,
3228
+ "multiple": true,
3190
3229
  "type": "option"
3191
3230
  },
3192
- "chat": {
3193
- "char": "c",
3194
- "description": "Start interactive chat mode",
3195
- "exclusive": [
3196
- "prompt"
3197
- ],
3198
- "name": "chat",
3231
+ "dry-run": {
3232
+ "description": "Validate without executing",
3233
+ "name": "dry-run",
3199
3234
  "allowNo": false,
3200
3235
  "type": "boolean"
3201
3236
  },
@@ -3231,7 +3266,7 @@
3231
3266
  },
3232
3267
  "hasDynamicHelp": false,
3233
3268
  "hiddenAliases": [],
3234
- "id": "ai:agents:run",
3269
+ "id": "ai:actions:run",
3235
3270
  "pluginAlias": "@memberjunction/cli",
3236
3271
  "pluginName": "@memberjunction/cli",
3237
3272
  "pluginType": "core",
@@ -3242,7 +3277,7 @@
3242
3277
  "dist",
3243
3278
  "commands",
3244
3279
  "ai",
3245
- "agents",
3280
+ "actions",
3246
3281
  "run.js"
3247
3282
  ]
3248
3283
  },
@@ -3462,6 +3497,135 @@
3462
3497
  "index.js"
3463
3498
  ]
3464
3499
  },
3500
+ "ai:agents:list": {
3501
+ "aliases": [],
3502
+ "args": {},
3503
+ "description": "List available AI agents",
3504
+ "examples": [
3505
+ "<%= config.bin %> <%= command.id %>",
3506
+ "<%= config.bin %> <%= command.id %> --output=table",
3507
+ "<%= config.bin %> <%= command.id %> --output=json"
3508
+ ],
3509
+ "flags": {
3510
+ "output": {
3511
+ "char": "o",
3512
+ "description": "Output format",
3513
+ "name": "output",
3514
+ "default": "compact",
3515
+ "hasDynamicHelp": false,
3516
+ "multiple": false,
3517
+ "options": [
3518
+ "compact",
3519
+ "json",
3520
+ "table"
3521
+ ],
3522
+ "type": "option"
3523
+ }
3524
+ },
3525
+ "hasDynamicHelp": false,
3526
+ "hiddenAliases": [],
3527
+ "id": "ai:agents:list",
3528
+ "pluginAlias": "@memberjunction/cli",
3529
+ "pluginName": "@memberjunction/cli",
3530
+ "pluginType": "core",
3531
+ "strict": true,
3532
+ "enableJsonFlag": false,
3533
+ "isESM": true,
3534
+ "relativePath": [
3535
+ "dist",
3536
+ "commands",
3537
+ "ai",
3538
+ "agents",
3539
+ "list.js"
3540
+ ]
3541
+ },
3542
+ "ai:agents:run": {
3543
+ "aliases": [],
3544
+ "args": {},
3545
+ "description": "Execute an AI agent with a prompt or start interactive chat",
3546
+ "examples": [
3547
+ "<%= config.bin %> <%= command.id %> -a \"Skip: Requirements Expert\" -p \"Create a dashboard for sales metrics\"",
3548
+ "<%= config.bin %> <%= command.id %> -a \"Child Component Generator Sub-agent\" --chat",
3549
+ "<%= config.bin %> <%= command.id %> -a \"Skip: Technical Design Expert\" -p \"Build a React component\" --verbose --timeout=600000"
3550
+ ],
3551
+ "flags": {
3552
+ "agent": {
3553
+ "char": "a",
3554
+ "description": "Agent name",
3555
+ "name": "agent",
3556
+ "required": true,
3557
+ "hasDynamicHelp": false,
3558
+ "multiple": false,
3559
+ "type": "option"
3560
+ },
3561
+ "prompt": {
3562
+ "char": "p",
3563
+ "description": "Prompt to execute",
3564
+ "exclusive": [
3565
+ "chat"
3566
+ ],
3567
+ "name": "prompt",
3568
+ "hasDynamicHelp": false,
3569
+ "multiple": false,
3570
+ "type": "option"
3571
+ },
3572
+ "chat": {
3573
+ "char": "c",
3574
+ "description": "Start interactive chat mode",
3575
+ "exclusive": [
3576
+ "prompt"
3577
+ ],
3578
+ "name": "chat",
3579
+ "allowNo": false,
3580
+ "type": "boolean"
3581
+ },
3582
+ "output": {
3583
+ "char": "o",
3584
+ "description": "Output format",
3585
+ "name": "output",
3586
+ "default": "compact",
3587
+ "hasDynamicHelp": false,
3588
+ "multiple": false,
3589
+ "options": [
3590
+ "compact",
3591
+ "json",
3592
+ "table"
3593
+ ],
3594
+ "type": "option"
3595
+ },
3596
+ "verbose": {
3597
+ "char": "v",
3598
+ "description": "Show detailed execution information",
3599
+ "name": "verbose",
3600
+ "allowNo": false,
3601
+ "type": "boolean"
3602
+ },
3603
+ "timeout": {
3604
+ "description": "Execution timeout in milliseconds",
3605
+ "name": "timeout",
3606
+ "default": 300000,
3607
+ "hasDynamicHelp": false,
3608
+ "multiple": false,
3609
+ "type": "option"
3610
+ }
3611
+ },
3612
+ "hasDynamicHelp": false,
3613
+ "hiddenAliases": [],
3614
+ "id": "ai:agents:run",
3615
+ "pluginAlias": "@memberjunction/cli",
3616
+ "pluginName": "@memberjunction/cli",
3617
+ "pluginType": "core",
3618
+ "strict": true,
3619
+ "enableJsonFlag": false,
3620
+ "isESM": true,
3621
+ "relativePath": [
3622
+ "dist",
3623
+ "commands",
3624
+ "ai",
3625
+ "agents",
3626
+ "run.js"
3627
+ ]
3628
+ },
3465
3629
  "ai:prompts:list": {
3466
3630
  "aliases": [],
3467
3631
  "args": {},
@@ -3602,5 +3766,5 @@
3602
3766
  ]
3603
3767
  }
3604
3768
  },
3605
- "version": "5.30.1"
3769
+ "version": "5.31.0"
3606
3770
  }