@memberjunction/cli 5.41.0 → 5.42.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 (104) hide show
  1. package/dist/commands/bundle/index.d.ts +1 -0
  2. package/dist/commands/bundle/index.d.ts.map +1 -1
  3. package/dist/commands/bundle/index.js +7 -1
  4. package/dist/commands/bundle/index.js.map +1 -1
  5. package/dist/commands/codegen/index.d.ts +6 -16
  6. package/dist/commands/codegen/index.d.ts.map +1 -1
  7. package/dist/commands/codegen/index.js +6 -90
  8. package/dist/commands/codegen/index.js.map +1 -1
  9. package/dist/commands/codegen/usage.d.ts +7 -0
  10. package/dist/commands/codegen/usage.d.ts.map +1 -0
  11. package/dist/commands/codegen/usage.js +10 -0
  12. package/dist/commands/codegen/usage.js.map +1 -0
  13. package/dist/commands/install/claude.d.ts +35 -0
  14. package/dist/commands/install/claude.d.ts.map +1 -0
  15. package/dist/commands/install/claude.js +108 -0
  16. package/dist/commands/install/claude.js.map +1 -0
  17. package/dist/commands/install/index.d.ts +1 -0
  18. package/dist/commands/install/index.d.ts.map +1 -1
  19. package/dist/commands/install/index.js +4 -0
  20. package/dist/commands/install/index.js.map +1 -1
  21. package/dist/commands/migrate/convert.d.ts +59 -12
  22. package/dist/commands/migrate/convert.d.ts.map +1 -1
  23. package/dist/commands/migrate/convert.js +294 -21
  24. package/dist/commands/migrate/convert.js.map +1 -1
  25. package/dist/commands/migrate/rebake.d.ts +41 -0
  26. package/dist/commands/migrate/rebake.d.ts.map +1 -0
  27. package/dist/commands/migrate/rebake.js +193 -0
  28. package/dist/commands/migrate/rebake.js.map +1 -0
  29. package/dist/commands/plugin/add.d.ts +18 -0
  30. package/dist/commands/plugin/add.d.ts.map +1 -0
  31. package/dist/commands/plugin/add.js +53 -0
  32. package/dist/commands/plugin/add.js.map +1 -0
  33. package/dist/commands/sync/pull.d.ts +6 -26
  34. package/dist/commands/sync/pull.d.ts.map +1 -1
  35. package/dist/commands/sync/pull.js +6 -281
  36. package/dist/commands/sync/pull.js.map +1 -1
  37. package/dist/commands/sync/push.d.ts +8 -19
  38. package/dist/commands/sync/push.d.ts.map +1 -1
  39. package/dist/commands/sync/push.js +8 -328
  40. package/dist/commands/sync/push.js.map +1 -1
  41. package/dist/commands/sync/usage.d.ts +7 -0
  42. package/dist/commands/sync/usage.d.ts.map +1 -0
  43. package/dist/commands/sync/usage.js +10 -0
  44. package/dist/commands/sync/usage.js.map +1 -0
  45. package/dist/commands/update/claude.d.ts +37 -0
  46. package/dist/commands/update/claude.d.ts.map +1 -0
  47. package/dist/commands/update/claude.js +90 -0
  48. package/dist/commands/update/claude.js.map +1 -0
  49. package/dist/commands/usage.d.ts +17 -0
  50. package/dist/commands/usage.d.ts.map +1 -0
  51. package/dist/commands/usage.js +29 -0
  52. package/dist/commands/usage.js.map +1 -0
  53. package/dist/hooks/prerun.d.ts.map +1 -1
  54. package/dist/hooks/prerun.js +49 -8
  55. package/dist/hooks/prerun.js.map +1 -1
  56. package/dist/lib/claude-pack/ManagedBlockEditor.d.ts +40 -0
  57. package/dist/lib/claude-pack/ManagedBlockEditor.d.ts.map +1 -0
  58. package/dist/lib/claude-pack/ManagedBlockEditor.js +127 -0
  59. package/dist/lib/claude-pack/ManagedBlockEditor.js.map +1 -0
  60. package/dist/lib/claude-pack/PackFetcher.d.ts +86 -0
  61. package/dist/lib/claude-pack/PackFetcher.d.ts.map +1 -0
  62. package/dist/lib/claude-pack/PackFetcher.js +163 -0
  63. package/dist/lib/claude-pack/PackFetcher.js.map +1 -0
  64. package/dist/lib/claude-pack/PackInstaller.d.ts +62 -0
  65. package/dist/lib/claude-pack/PackInstaller.d.ts.map +1 -0
  66. package/dist/lib/claude-pack/PackInstaller.js +197 -0
  67. package/dist/lib/claude-pack/PackInstaller.js.map +1 -0
  68. package/dist/lib/claude-pack/PackMerger.d.ts +61 -0
  69. package/dist/lib/claude-pack/PackMerger.d.ts.map +1 -0
  70. package/dist/lib/claude-pack/PackMerger.js +315 -0
  71. package/dist/lib/claude-pack/PackMerger.js.map +1 -0
  72. package/dist/lib/claude-pack/PackOutputFormatter.d.ts +29 -0
  73. package/dist/lib/claude-pack/PackOutputFormatter.d.ts.map +1 -0
  74. package/dist/lib/claude-pack/PackOutputFormatter.js +82 -0
  75. package/dist/lib/claude-pack/PackOutputFormatter.js.map +1 -0
  76. package/dist/lib/claude-pack/PackPaths.d.ts +80 -0
  77. package/dist/lib/claude-pack/PackPaths.d.ts.map +1 -0
  78. package/dist/lib/claude-pack/PackPaths.js +182 -0
  79. package/dist/lib/claude-pack/PackPaths.js.map +1 -0
  80. package/dist/lib/claude-pack/PackTypes.d.ts +124 -0
  81. package/dist/lib/claude-pack/PackTypes.d.ts.map +1 -0
  82. package/dist/lib/claude-pack/PackTypes.js +32 -0
  83. package/dist/lib/claude-pack/PackTypes.js.map +1 -0
  84. package/dist/lib/claude-pack/SettingsMerger.d.ts +47 -0
  85. package/dist/lib/claude-pack/SettingsMerger.d.ts.map +1 -0
  86. package/dist/lib/claude-pack/SettingsMerger.js +163 -0
  87. package/dist/lib/claude-pack/SettingsMerger.js.map +1 -0
  88. package/dist/lib/cli-plugins.d.ts +16 -0
  89. package/dist/lib/cli-plugins.d.ts.map +1 -0
  90. package/dist/lib/cli-plugins.js +26 -0
  91. package/dist/lib/cli-plugins.js.map +1 -0
  92. package/dist/lib/domain-usage-command.d.ts +16 -0
  93. package/dist/lib/domain-usage-command.d.ts.map +1 -0
  94. package/dist/lib/domain-usage-command.js +23 -0
  95. package/dist/lib/domain-usage-command.js.map +1 -0
  96. package/dist/lib/usage-render.d.ts +14 -0
  97. package/dist/lib/usage-render.d.ts.map +1 -0
  98. package/dist/lib/usage-render.js +64 -0
  99. package/dist/lib/usage-render.js.map +1 -0
  100. package/dist/light-commands.d.ts.map +1 -1
  101. package/dist/light-commands.js +11 -0
  102. package/dist/light-commands.js.map +1 -1
  103. package/oclif.manifest.json +815 -135
  104. package/package.json +17 -15
@@ -1,5 +1,43 @@
1
1
  {
2
2
  "commands": {
3
+ "usage": {
4
+ "aliases": [],
5
+ "args": {},
6
+ "description": "List mj command domains (AI-agent-friendly, tier-1 progressive disclosure). Then run `mj <domain> usage`.",
7
+ "examples": [
8
+ "<%= config.bin %> <%= command.id %>",
9
+ "<%= config.bin %> <%= command.id %> --format=json"
10
+ ],
11
+ "flags": {
12
+ "format": {
13
+ "description": "Output format",
14
+ "name": "format",
15
+ "default": "text",
16
+ "hasDynamicHelp": false,
17
+ "multiple": false,
18
+ "options": [
19
+ "text",
20
+ "json",
21
+ "md"
22
+ ],
23
+ "type": "option"
24
+ }
25
+ },
26
+ "hasDynamicHelp": false,
27
+ "hiddenAliases": [],
28
+ "id": "usage",
29
+ "pluginAlias": "@memberjunction/cli",
30
+ "pluginName": "@memberjunction/cli",
31
+ "pluginType": "core",
32
+ "strict": true,
33
+ "enableJsonFlag": false,
34
+ "isESM": true,
35
+ "relativePath": [
36
+ "dist",
37
+ "commands",
38
+ "usage.js"
39
+ ]
40
+ },
3
41
  "ai": {
4
42
  "aliases": [],
5
43
  "args": {},
@@ -338,6 +376,67 @@
338
376
  "upgrade.js"
339
377
  ]
340
378
  },
379
+ "artifacts:reclassify": {
380
+ "aliases": [],
381
+ "args": {},
382
+ "description": "Upgrade-recovery utility for v5.35 artifact unification. Re-evaluates rows whose TypeID is the deleted JSON fallback but whose actual content does not parse as JSON. Normally a no-op: the v5.35 backfill migration handles this automatically. This command is only relevant when the migration ran BEFORE the artifact-type metadata (Generic Text / Generic Binary) was pushed via `mj sync push`, in which case the migration prints a notice telling you to run this. Reports \"no candidates\" once everything is reconciled. Dry-run by default; --apply writes through Record Changes.",
383
+ "examples": [
384
+ "<%= config.bin %> <%= command.id %>",
385
+ "<%= config.bin %> <%= command.id %> --apply --limit 50"
386
+ ],
387
+ "flags": {
388
+ "conversation-id": {
389
+ "description": "Scope to artifacts attached to the given conversation.",
390
+ "name": "conversation-id",
391
+ "hasDynamicHelp": false,
392
+ "multiple": false,
393
+ "type": "option"
394
+ },
395
+ "since": {
396
+ "description": "Scope to artifacts created on/after this ISO date.",
397
+ "name": "since",
398
+ "hasDynamicHelp": false,
399
+ "multiple": false,
400
+ "type": "option"
401
+ },
402
+ "limit": {
403
+ "description": "Maximum number of rows to inspect.",
404
+ "name": "limit",
405
+ "default": 100,
406
+ "hasDynamicHelp": false,
407
+ "multiple": false,
408
+ "type": "option"
409
+ },
410
+ "apply": {
411
+ "description": "Write changes. Without this flag, this command only reports what it would do.",
412
+ "name": "apply",
413
+ "allowNo": false,
414
+ "type": "boolean"
415
+ },
416
+ "verbose": {
417
+ "char": "v",
418
+ "description": "Print every candidate row, not just the summary.",
419
+ "name": "verbose",
420
+ "allowNo": false,
421
+ "type": "boolean"
422
+ }
423
+ },
424
+ "hasDynamicHelp": false,
425
+ "hiddenAliases": [],
426
+ "id": "artifacts:reclassify",
427
+ "pluginAlias": "@memberjunction/cli",
428
+ "pluginName": "@memberjunction/cli",
429
+ "pluginType": "core",
430
+ "strict": true,
431
+ "enableJsonFlag": false,
432
+ "isESM": true,
433
+ "relativePath": [
434
+ "dist",
435
+ "commands",
436
+ "artifacts",
437
+ "reclassify.js"
438
+ ]
439
+ },
341
440
  "baseline:build": {
342
441
  "aliases": [],
343
442
  "args": {},
@@ -676,67 +775,6 @@
676
775
  "roundtrip.js"
677
776
  ]
678
777
  },
679
- "artifacts:reclassify": {
680
- "aliases": [],
681
- "args": {},
682
- "description": "Upgrade-recovery utility for v5.35 artifact unification. Re-evaluates rows whose TypeID is the deleted JSON fallback but whose actual content does not parse as JSON. Normally a no-op: the v5.35 backfill migration handles this automatically. This command is only relevant when the migration ran BEFORE the artifact-type metadata (Generic Text / Generic Binary) was pushed via `mj sync push`, in which case the migration prints a notice telling you to run this. Reports \"no candidates\" once everything is reconciled. Dry-run by default; --apply writes through Record Changes.",
683
- "examples": [
684
- "<%= config.bin %> <%= command.id %>",
685
- "<%= config.bin %> <%= command.id %> --apply --limit 50"
686
- ],
687
- "flags": {
688
- "conversation-id": {
689
- "description": "Scope to artifacts attached to the given conversation.",
690
- "name": "conversation-id",
691
- "hasDynamicHelp": false,
692
- "multiple": false,
693
- "type": "option"
694
- },
695
- "since": {
696
- "description": "Scope to artifacts created on/after this ISO date.",
697
- "name": "since",
698
- "hasDynamicHelp": false,
699
- "multiple": false,
700
- "type": "option"
701
- },
702
- "limit": {
703
- "description": "Maximum number of rows to inspect.",
704
- "name": "limit",
705
- "default": 100,
706
- "hasDynamicHelp": false,
707
- "multiple": false,
708
- "type": "option"
709
- },
710
- "apply": {
711
- "description": "Write changes. Without this flag, this command only reports what it would do.",
712
- "name": "apply",
713
- "allowNo": false,
714
- "type": "boolean"
715
- },
716
- "verbose": {
717
- "char": "v",
718
- "description": "Print every candidate row, not just the summary.",
719
- "name": "verbose",
720
- "allowNo": false,
721
- "type": "boolean"
722
- }
723
- },
724
- "hasDynamicHelp": false,
725
- "hiddenAliases": [],
726
- "id": "artifacts:reclassify",
727
- "pluginAlias": "@memberjunction/cli",
728
- "pluginName": "@memberjunction/cli",
729
- "pluginType": "core",
730
- "strict": true,
731
- "enableJsonFlag": false,
732
- "isESM": true,
733
- "relativePath": [
734
- "dist",
735
- "commands",
736
- "artifacts",
737
- "reclassify.js"
738
- ]
739
- },
740
778
  "bump": {
741
779
  "aliases": [],
742
780
  "args": {},
@@ -865,6 +903,12 @@
865
903
  ],
866
904
  "type": "option"
867
905
  },
906
+ "no-claude-pack": {
907
+ "description": "Exclude the Claude Code pack (CLAUDE.md + .claude/) from the bundle. By default the pack is included so air-gapped installs get the same out-of-the-box Claude experience as online installs.",
908
+ "name": "no-claude-pack",
909
+ "allowNo": false,
910
+ "type": "boolean"
911
+ },
868
912
  "verbose": {
869
913
  "char": "v",
870
914
  "description": "Show detailed output",
@@ -1149,7 +1193,7 @@
1149
1193
  "codegen": {
1150
1194
  "aliases": [],
1151
1195
  "args": {},
1152
- "description": "Run the full MemberJunction code generation pipeline.\n\nAnalyzes your SQL Server database schema, updates MemberJunction metadata, and\ngenerates synchronized code across the entire stack:\n\n - SQL views, stored procedures, indexes, and permissions\n - TypeScript entity classes with Zod validation schemas\n - Angular form components with AI-driven layouts\n - GraphQL resolvers and type definitions\n - Action subclasses and DB schema JSON\n\nConfiguration is loaded from mj.config.cjs in the current directory (or parent\ndirectories). Database connection can also be set via environment variables:\nDB_HOST, DB_DATABASE, CODEGEN_DB_USERNAME, CODEGEN_DB_PASSWORD.\n\nUse --skipdb to skip all database operations (metadata sync, SQL object\ngeneration) and only regenerate TypeScript, Angular, and GraphQL output from\nexisting metadata.\n\nUse --skipfiles to skip all file-generation operations (TypeScript entities,\nAngular components, GraphQL resolvers, action subclasses, DB schema JSON) and\nonly run database-side operations (metadata sync, SQL object generation,\npermissions, custom SQL scripts).\n\n--skipdb and --skipfiles are independent and can be combined in any mix.\n\nUse --force-advanced-gen to bypass Pass 2 entity scoping and re-run the LLM-driven\nadvanced generation (smart fields, form layout) for ALL entities. Useful when AI\nprompts have changed and you want unchanged entities re-evaluated.",
1196
+ "description": "Run the full MemberJunction code generation pipeline.\n\nAnalyzes your database schema, updates MemberJunction metadata, and generates\nsynchronized code across the stack: SQL objects, TypeScript entities, Angular\nforms, GraphQL resolvers, Action subclasses, and DB schema JSON.\n\nUse --skipdb to regenerate code from existing metadata only; --skipfiles to run\ndatabase-side operations only. --force-advanced-gen re-runs the LLM-driven\nadvanced generation for ALL entities (bypasses changed-entity scoping).",
1153
1197
  "examples": [
1154
1198
  {
1155
1199
  "command": "<%= config.bin %> <%= command.id %>",
@@ -1160,29 +1204,51 @@
1160
1204
  "description": "Regenerate code files without touching the database"
1161
1205
  },
1162
1206
  {
1163
- "command": "<%= config.bin %> <%= command.id %> --skipfiles",
1164
- "description": "Run database-side operations only, without regenerating any code files"
1165
- },
1166
- {
1167
- "command": "<%= config.bin %> <%= command.id %> --force-advanced-gen",
1168
- "description": "Re-run advanced generation for all entities (bypasses changed-entity scoping)"
1207
+ "command": "<%= config.bin %> <%= command.id %> --format=json",
1208
+ "description": "Emit a machine-readable result for an agent"
1169
1209
  }
1170
1210
  ],
1171
1211
  "flags": {
1212
+ "format": {
1213
+ "description": "Output format: text (human), json (machine-readable), md (Markdown-fenced)",
1214
+ "name": "format",
1215
+ "default": "text",
1216
+ "hasDynamicHelp": false,
1217
+ "multiple": false,
1218
+ "options": [
1219
+ "text",
1220
+ "json",
1221
+ "md"
1222
+ ],
1223
+ "type": "option"
1224
+ },
1225
+ "verbose": {
1226
+ "char": "v",
1227
+ "description": "Show detailed output",
1228
+ "name": "verbose",
1229
+ "allowNo": false,
1230
+ "type": "boolean"
1231
+ },
1232
+ "no-banner": {
1233
+ "description": "Suppress the startup banner and runtime advisory",
1234
+ "name": "no-banner",
1235
+ "allowNo": false,
1236
+ "type": "boolean"
1237
+ },
1172
1238
  "skipdb": {
1173
- "description": "Skip database operations (metadata sync, SQL generation). Only regenerate TypeScript entities, Angular components, and GraphQL resolvers from existing metadata.",
1239
+ "description": "Skip database operations. Only regenerate TypeScript entities, Angular components, and GraphQL resolvers from existing metadata.",
1174
1240
  "name": "skipdb",
1175
1241
  "allowNo": false,
1176
1242
  "type": "boolean"
1177
1243
  },
1178
1244
  "skipfiles": {
1179
- "description": "Skip file-generation operations (TypeScript entities, Angular components, GraphQL resolvers, action subclasses, DB schema JSON). Only run database-side operations.",
1245
+ "description": "Skip file-generation operations. Only run database-side operations (metadata sync, SQL object generation).",
1180
1246
  "name": "skipfiles",
1181
1247
  "allowNo": false,
1182
1248
  "type": "boolean"
1183
1249
  },
1184
1250
  "force-advanced-gen": {
1185
- "description": "Bypass entity scoping in Pass 2 and force advanced generation to re-run for all entities. Used when AI prompts have changed and unchanged entities should be re-evaluated.",
1251
+ "description": "Bypass entity scoping in Pass 2 and force advanced generation to re-run for all entities.",
1186
1252
  "name": "force-advanced-gen",
1187
1253
  "allowNo": false,
1188
1254
  "type": "boolean"
@@ -1196,6 +1262,44 @@
1196
1262
  "pluginType": "core",
1197
1263
  "strict": true,
1198
1264
  "enableJsonFlag": false,
1265
+ "Usage": {
1266
+ "domain": "codegen",
1267
+ "command": "codegen",
1268
+ "summary": "Regenerate entities, SQL, and Angular forms from the database schema.",
1269
+ "description": "Runs the full CodeGen pipeline. Scales with entity count — a full run is far slower than a single-entity change. Use --skipdb/--skipfiles to run only one half.",
1270
+ "flags": [
1271
+ {
1272
+ "name": "--skipdb",
1273
+ "type": "boolean",
1274
+ "description": "Regenerate code from existing metadata only (no DB operations)"
1275
+ },
1276
+ {
1277
+ "name": "--skipfiles",
1278
+ "type": "boolean",
1279
+ "description": "Run DB-side operations only (no code files)"
1280
+ },
1281
+ {
1282
+ "name": "--force-advanced-gen",
1283
+ "type": "boolean",
1284
+ "description": "Re-run advanced generation for all entities"
1285
+ },
1286
+ {
1287
+ "name": "--format",
1288
+ "type": "text|json|md",
1289
+ "description": "Output format (json for machine-readable result)"
1290
+ }
1291
+ ],
1292
+ "examples": [
1293
+ "mj codegen",
1294
+ "mj codegen --skipdb",
1295
+ "mj codegen --format=json"
1296
+ ],
1297
+ "runtime": {
1298
+ "class": "slow",
1299
+ "typicalSeconds": 45,
1300
+ "note": "scales with entity count; full run far slower than a single-entity change"
1301
+ }
1302
+ },
1199
1303
  "isESM": true,
1200
1304
  "relativePath": [
1201
1305
  "dist",
@@ -1324,6 +1428,41 @@
1324
1428
  "manifest.js"
1325
1429
  ]
1326
1430
  },
1431
+ "codegen:usage": {
1432
+ "aliases": [],
1433
+ "args": {},
1434
+ "description": "Show usage, flags, examples, and runtime hints for `mj codegen`.",
1435
+ "flags": {
1436
+ "format": {
1437
+ "description": "Output format",
1438
+ "name": "format",
1439
+ "default": "text",
1440
+ "hasDynamicHelp": false,
1441
+ "multiple": false,
1442
+ "options": [
1443
+ "text",
1444
+ "json",
1445
+ "md"
1446
+ ],
1447
+ "type": "option"
1448
+ }
1449
+ },
1450
+ "hasDynamicHelp": false,
1451
+ "hiddenAliases": [],
1452
+ "id": "codegen:usage",
1453
+ "pluginAlias": "@memberjunction/cli",
1454
+ "pluginName": "@memberjunction/cli",
1455
+ "pluginType": "core",
1456
+ "strict": true,
1457
+ "enableJsonFlag": false,
1458
+ "isESM": true,
1459
+ "relativePath": [
1460
+ "dist",
1461
+ "commands",
1462
+ "codegen",
1463
+ "usage.js"
1464
+ ]
1465
+ },
1327
1466
  "dbdoc:analyze": {
1328
1467
  "aliases": [],
1329
1468
  "args": {},
@@ -1818,88 +1957,201 @@
1818
1957
  "index.js"
1819
1958
  ]
1820
1959
  },
1821
- "install": {
1960
+ "install:claude": {
1822
1961
  "aliases": [],
1823
1962
  "args": {},
1824
- "description": "Install MemberJunction from a GitHub release",
1963
+ "description": "Install or refresh the Claude Code pack in the current directory.",
1825
1964
  "examples": [
1826
- "<%= config.bin %> <%= command.id %>",
1827
- "<%= config.bin %> <%= command.id %> -t v4.3.0",
1828
- "<%= config.bin %> <%= command.id %> --dry-run",
1829
- "<%= config.bin %> <%= command.id %> --yes"
1965
+ "<%= config.bin %> install:claude",
1966
+ "<%= config.bin %> install:claude --dry-run",
1967
+ "<%= config.bin %> install:claude --from ./local-pack",
1968
+ "<%= config.bin %> install:claude --json"
1830
1969
  ],
1831
1970
  "flags": {
1832
- "tag": {
1833
- "char": "t",
1834
- "description": "Release tag to install (e.g. v4.3.0). If omitted, shows a version picker.",
1835
- "name": "tag",
1971
+ "dir": {
1972
+ "description": "Target directory for the install",
1973
+ "name": "dir",
1974
+ "default": ".",
1836
1975
  "hasDynamicHelp": false,
1837
1976
  "multiple": false,
1838
1977
  "type": "option"
1839
1978
  },
1840
- "dir": {
1841
- "description": "Target directory for the installation",
1842
- "name": "dir",
1843
- "default": ".",
1979
+ "major": {
1980
+ "description": "Force a specific MJ major (default: detected from package.json)",
1981
+ "name": "major",
1844
1982
  "hasDynamicHelp": false,
1845
1983
  "multiple": false,
1846
1984
  "type": "option"
1847
1985
  },
1848
- "config": {
1849
- "char": "c",
1850
- "description": "Path to JSON config file with install settings (database, auth, ports, etc.)",
1851
- "name": "config",
1986
+ "ref": {
1987
+ "description": "Git ref to fetch from (branch or tag). Default: main.",
1988
+ "name": "ref",
1852
1989
  "hasDynamicHelp": false,
1853
1990
  "multiple": false,
1854
1991
  "type": "option"
1855
1992
  },
1856
- "legacy": {
1857
- "description": "Use the legacy interactive installer (ZIP-only distribution)",
1858
- "hidden": true,
1859
- "name": "legacy",
1993
+ "from": {
1994
+ "description": "Use a local pack source instead of fetching from GitHub",
1995
+ "name": "from",
1996
+ "hasDynamicHelp": false,
1997
+ "multiple": false,
1998
+ "type": "option"
1999
+ },
2000
+ "offline": {
2001
+ "description": "Forbid network; requires --from <path>",
2002
+ "name": "offline",
1860
2003
  "allowNo": false,
1861
2004
  "type": "boolean"
1862
2005
  },
1863
2006
  "dry-run": {
1864
- "description": "Show the install plan without executing it",
2007
+ "description": "Print what would be written; change nothing",
1865
2008
  "name": "dry-run",
1866
2009
  "allowNo": false,
1867
2010
  "type": "boolean"
1868
2011
  },
1869
2012
  "yes": {
1870
2013
  "char": "y",
1871
- "description": "Non-interactive mode: auto-select latest version and accept defaults",
2014
+ "description": "Don't prompt (reserved for future interactive paths; currently no-op)",
1872
2015
  "name": "yes",
1873
2016
  "allowNo": false,
1874
2017
  "type": "boolean"
1875
2018
  },
1876
- "verbose": {
1877
- "char": "v",
1878
- "description": "Show detailed output",
1879
- "name": "verbose",
2019
+ "force": {
2020
+ "description": "Overwrite user-customized commands/skills (saves .bak files)",
2021
+ "name": "force",
1880
2022
  "allowNo": false,
1881
2023
  "type": "boolean"
1882
2024
  },
1883
- "skip-db": {
1884
- "description": "Skip database provisioning phases",
1885
- "name": "skip-db",
2025
+ "skip-commands": {
2026
+ "description": "Skip seeding .claude/commands/",
2027
+ "name": "skip-commands",
1886
2028
  "allowNo": false,
1887
2029
  "type": "boolean"
1888
2030
  },
1889
- "skip-start": {
1890
- "description": "Skip service startup and smoke tests",
1891
- "name": "skip-start",
2031
+ "skip-skills": {
2032
+ "description": "Skip seeding .claude/skills/",
2033
+ "name": "skip-skills",
1892
2034
  "allowNo": false,
1893
2035
  "type": "boolean"
1894
2036
  },
1895
- "no-resume": {
1896
- "description": "Ignore any existing checkpoint and start fresh",
1897
- "name": "no-resume",
2037
+ "skip-settings": {
2038
+ "description": "Skip merging .claude/settings.json",
2039
+ "name": "skip-settings",
1898
2040
  "allowNo": false,
1899
2041
  "type": "boolean"
1900
2042
  },
1901
- "fast": {
1902
- "description": "Fast mode: skip smoke test and optimize post-codegen steps. Re-run without --fast if you encounter issues.",
2043
+ "json": {
2044
+ "description": "Output as JSON (matches plan §7.5 schema)",
2045
+ "name": "json",
2046
+ "allowNo": false,
2047
+ "type": "boolean"
2048
+ },
2049
+ "verbose": {
2050
+ "char": "v",
2051
+ "description": "Show progress messages from the fetcher and merger",
2052
+ "name": "verbose",
2053
+ "allowNo": false,
2054
+ "type": "boolean"
2055
+ }
2056
+ },
2057
+ "hasDynamicHelp": false,
2058
+ "hiddenAliases": [],
2059
+ "id": "install:claude",
2060
+ "pluginAlias": "@memberjunction/cli",
2061
+ "pluginName": "@memberjunction/cli",
2062
+ "pluginType": "core",
2063
+ "strict": true,
2064
+ "enableJsonFlag": false,
2065
+ "isESM": true,
2066
+ "relativePath": [
2067
+ "dist",
2068
+ "commands",
2069
+ "install",
2070
+ "claude.js"
2071
+ ]
2072
+ },
2073
+ "install": {
2074
+ "aliases": [],
2075
+ "args": {},
2076
+ "description": "Install MemberJunction from a GitHub release",
2077
+ "examples": [
2078
+ "<%= config.bin %> <%= command.id %>",
2079
+ "<%= config.bin %> <%= command.id %> -t v4.3.0",
2080
+ "<%= config.bin %> <%= command.id %> --dry-run",
2081
+ "<%= config.bin %> <%= command.id %> --yes"
2082
+ ],
2083
+ "flags": {
2084
+ "tag": {
2085
+ "char": "t",
2086
+ "description": "Release tag to install (e.g. v4.3.0). If omitted, shows a version picker.",
2087
+ "name": "tag",
2088
+ "hasDynamicHelp": false,
2089
+ "multiple": false,
2090
+ "type": "option"
2091
+ },
2092
+ "dir": {
2093
+ "description": "Target directory for the installation",
2094
+ "name": "dir",
2095
+ "default": ".",
2096
+ "hasDynamicHelp": false,
2097
+ "multiple": false,
2098
+ "type": "option"
2099
+ },
2100
+ "config": {
2101
+ "char": "c",
2102
+ "description": "Path to JSON config file with install settings (database, auth, ports, etc.)",
2103
+ "name": "config",
2104
+ "hasDynamicHelp": false,
2105
+ "multiple": false,
2106
+ "type": "option"
2107
+ },
2108
+ "legacy": {
2109
+ "description": "Use the legacy interactive installer (ZIP-only distribution)",
2110
+ "hidden": true,
2111
+ "name": "legacy",
2112
+ "allowNo": false,
2113
+ "type": "boolean"
2114
+ },
2115
+ "dry-run": {
2116
+ "description": "Show the install plan without executing it",
2117
+ "name": "dry-run",
2118
+ "allowNo": false,
2119
+ "type": "boolean"
2120
+ },
2121
+ "yes": {
2122
+ "char": "y",
2123
+ "description": "Non-interactive mode: auto-select latest version and accept defaults",
2124
+ "name": "yes",
2125
+ "allowNo": false,
2126
+ "type": "boolean"
2127
+ },
2128
+ "verbose": {
2129
+ "char": "v",
2130
+ "description": "Show detailed output",
2131
+ "name": "verbose",
2132
+ "allowNo": false,
2133
+ "type": "boolean"
2134
+ },
2135
+ "skip-db": {
2136
+ "description": "Skip database provisioning phases",
2137
+ "name": "skip-db",
2138
+ "allowNo": false,
2139
+ "type": "boolean"
2140
+ },
2141
+ "skip-start": {
2142
+ "description": "Skip service startup and smoke tests",
2143
+ "name": "skip-start",
2144
+ "allowNo": false,
2145
+ "type": "boolean"
2146
+ },
2147
+ "no-resume": {
2148
+ "description": "Ignore any existing checkpoint and start fresh",
2149
+ "name": "no-resume",
2150
+ "allowNo": false,
2151
+ "type": "boolean"
2152
+ },
2153
+ "fast": {
2154
+ "description": "Fast mode: skip smoke test and optimize post-codegen steps. Re-run without --fast if you encounter issues.",
1903
2155
  "name": "fast",
1904
2156
  "allowNo": false,
1905
2157
  "type": "boolean"
@@ -1915,6 +2167,12 @@
1915
2167
  "name": "monorepo",
1916
2168
  "allowNo": false,
1917
2169
  "type": "boolean"
2170
+ },
2171
+ "no-claude-pack": {
2172
+ "description": "Exclude the Claude Code pack (CLAUDE.md + .claude/ tree) from the scaffold. By default the pack ships with the install so opening Claude Code in your new MJ project gives you the curated MJ-aware experience immediately.",
2173
+ "name": "no-claude-pack",
2174
+ "allowNo": false,
2175
+ "type": "boolean"
1918
2176
  }
1919
2177
  },
1920
2178
  "hasDynamicHelp": false,
@@ -1936,11 +2194,11 @@
1936
2194
  "migrate:convert": {
1937
2195
  "aliases": [],
1938
2196
  "args": {},
1939
- "description": "Convert T-SQL migrations to PostgreSQL using the BatchConverter pipeline",
2197
+ "description": "Convert T-SQL migrations to PostgreSQL",
1940
2198
  "examples": [
1941
- "<%= config.bin %> migrate convert",
1942
- "<%= config.bin %> migrate convert --dry-run",
1943
- "<%= config.bin %> migrate convert --file V202604060452__v5.24.x__KnowledgeHub.sql",
2199
+ "<%= config.bin %> migrate convert --split",
2200
+ "<%= config.bin %> migrate convert --split --dry-run",
2201
+ "<%= config.bin %> migrate convert --split --file V202604060452__v5.24.x__KnowledgeHub.sql",
1944
2202
  "<%= config.bin %> migrate convert --source-dir ./migrations/v5 --output-dir ./migrations-pg/v5",
1945
2203
  "<%= config.bin %> migrate convert --verbose"
1946
2204
  ],
@@ -1994,6 +2252,24 @@
1994
2252
  "name": "verbose",
1995
2253
  "allowNo": false,
1996
2254
  "type": "boolean"
2255
+ },
2256
+ "split": {
2257
+ "description": "Split-and-regenerate (the standard path): transpile only hand-written DDL via the AST dialect; CodeGen objects are regenerated by `mj codegen` and mj-sync metadata re-seeded by `mj sync push`; every conversion gap is surfaced and fails the run unless --allow-gaps.",
2258
+ "name": "split",
2259
+ "allowNo": false,
2260
+ "type": "boolean"
2261
+ },
2262
+ "allow-gaps": {
2263
+ "description": "With --split: exit 0 even when migrations have conversion gaps (hand-authoring needed or unhandled statements). Gaps are still embedded as comments and listed in the summary.",
2264
+ "name": "allow-gaps",
2265
+ "allowNo": false,
2266
+ "type": "boolean"
2267
+ },
2268
+ "bake-codegen": {
2269
+ "description": "With --split: bake native PG CodeGen objects inline per migration (Path C), so the set deploys with `mj migrate` alone — no `mj codegen` step. Requires a LIVE working PG database (DB_PLATFORM=postgresql + PG_* env, same as `mj codegen`) seeded to the state just BEFORE the migrations being converted (typically the latest baseline); the converter brings it forward in committed order as it bakes. Not compatible with --dry-run.",
2270
+ "name": "bake-codegen",
2271
+ "allowNo": false,
2272
+ "type": "boolean"
1997
2273
  }
1998
2274
  },
1999
2275
  "hasDynamicHelp": false,
@@ -2141,6 +2417,113 @@
2141
2417
  "index.js"
2142
2418
  ]
2143
2419
  },
2420
+ "migrate:rebake": {
2421
+ "aliases": [],
2422
+ "args": {},
2423
+ "description": "Re-bake the post-baseline PG migration set with inline native CodeGen",
2424
+ "examples": [
2425
+ "<%= config.bin %> migrate rebake",
2426
+ "<%= config.bin %> migrate rebake --baseline-floor V202605291452 --dry-run"
2427
+ ],
2428
+ "flags": {
2429
+ "source-dir": {
2430
+ "description": "Source T-SQL migrations directory",
2431
+ "name": "source-dir",
2432
+ "default": "./migrations/v5",
2433
+ "hasDynamicHelp": false,
2434
+ "multiple": false,
2435
+ "type": "option"
2436
+ },
2437
+ "output-dir": {
2438
+ "description": "PG migrations directory (committed files read here + baked output written here)",
2439
+ "name": "output-dir",
2440
+ "default": "./migrations-pg/v5",
2441
+ "hasDynamicHelp": false,
2442
+ "multiple": false,
2443
+ "type": "option"
2444
+ },
2445
+ "schema": {
2446
+ "description": "Target schema name",
2447
+ "name": "schema",
2448
+ "default": "__mj",
2449
+ "hasDynamicHelp": false,
2450
+ "multiple": false,
2451
+ "type": "option"
2452
+ },
2453
+ "baseline-floor": {
2454
+ "description": "Re-bake migrations strictly AFTER this version key (default: the latest B* in output-dir)",
2455
+ "name": "baseline-floor",
2456
+ "hasDynamicHelp": false,
2457
+ "multiple": false,
2458
+ "type": "option"
2459
+ },
2460
+ "dry-run": {
2461
+ "description": "Report what would be re-baked without writing files",
2462
+ "name": "dry-run",
2463
+ "allowNo": false,
2464
+ "type": "boolean"
2465
+ }
2466
+ },
2467
+ "hasDynamicHelp": false,
2468
+ "hiddenAliases": [],
2469
+ "id": "migrate:rebake",
2470
+ "pluginAlias": "@memberjunction/cli",
2471
+ "pluginName": "@memberjunction/cli",
2472
+ "pluginType": "core",
2473
+ "strict": true,
2474
+ "enableJsonFlag": false,
2475
+ "isESM": true,
2476
+ "relativePath": [
2477
+ "dist",
2478
+ "commands",
2479
+ "migrate",
2480
+ "rebake.js"
2481
+ ]
2482
+ },
2483
+ "plugin:add": {
2484
+ "aliases": [],
2485
+ "args": {
2486
+ "package": {
2487
+ "description": "Plugin entry-point specifier (package name, subpath, or relative path)",
2488
+ "name": "package",
2489
+ "required": true
2490
+ }
2491
+ },
2492
+ "description": "Register a CLI plugin package in mj-cli-plugins.json so `mj` loads it at startup.",
2493
+ "examples": [
2494
+ "<%= config.bin %> <%= command.id %> @my-org/mj-plugin/plugins",
2495
+ "<%= config.bin %> <%= command.id %> ./local-plugins/my-tool"
2496
+ ],
2497
+ "flags": {
2498
+ "format": {
2499
+ "description": "Output format",
2500
+ "name": "format",
2501
+ "default": "text",
2502
+ "hasDynamicHelp": false,
2503
+ "multiple": false,
2504
+ "options": [
2505
+ "text",
2506
+ "json"
2507
+ ],
2508
+ "type": "option"
2509
+ }
2510
+ },
2511
+ "hasDynamicHelp": false,
2512
+ "hiddenAliases": [],
2513
+ "id": "plugin:add",
2514
+ "pluginAlias": "@memberjunction/cli",
2515
+ "pluginName": "@memberjunction/cli",
2516
+ "pluginType": "core",
2517
+ "strict": true,
2518
+ "enableJsonFlag": false,
2519
+ "isESM": true,
2520
+ "relativePath": [
2521
+ "dist",
2522
+ "commands",
2523
+ "plugin",
2524
+ "add.js"
2525
+ ]
2526
+ },
2144
2527
  "querygen:export": {
2145
2528
  "aliases": [],
2146
2529
  "args": {},
@@ -2605,13 +2988,36 @@
2605
2988
  "description": "Pull metadata from database to local files",
2606
2989
  "examples": [
2607
2990
  "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\"",
2608
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --filter=\"CategoryID='customer-service-id'\"",
2609
2991
  "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Agents\" --merge-strategy=overwrite",
2610
- "<%= config.bin %> <%= command.id %> --entity=\"Actions\" --target-dir=./custom-actions --no-validate",
2611
- "<%= config.bin %> <%= command.id %> --entity=\"Templates\" --dry-run --verbose",
2612
- "<%= config.bin %> <%= command.id %> --entity=\"MJ: AI Prompts\" --exclude-fields=InternalNotes,DebugInfo"
2992
+ "<%= config.bin %> <%= command.id %> --entity=\"Templates\" --dry-run --verbose"
2613
2993
  ],
2614
2994
  "flags": {
2995
+ "format": {
2996
+ "description": "Output format: text (human), json (machine-readable), md (Markdown-fenced)",
2997
+ "name": "format",
2998
+ "default": "text",
2999
+ "hasDynamicHelp": false,
3000
+ "multiple": false,
3001
+ "options": [
3002
+ "text",
3003
+ "json",
3004
+ "md"
3005
+ ],
3006
+ "type": "option"
3007
+ },
3008
+ "verbose": {
3009
+ "char": "v",
3010
+ "description": "Show detailed output",
3011
+ "name": "verbose",
3012
+ "allowNo": false,
3013
+ "type": "boolean"
3014
+ },
3015
+ "no-banner": {
3016
+ "description": "Suppress the startup banner and runtime advisory",
3017
+ "name": "no-banner",
3018
+ "allowNo": false,
3019
+ "type": "boolean"
3020
+ },
2615
3021
  "entity": {
2616
3022
  "description": "Entity name to pull",
2617
3023
  "name": "entity",
@@ -2640,13 +3046,6 @@
2640
3046
  "multiple": false,
2641
3047
  "type": "option"
2642
3048
  },
2643
- "verbose": {
2644
- "char": "v",
2645
- "description": "Show detailed output",
2646
- "name": "verbose",
2647
- "allowNo": false,
2648
- "type": "boolean"
2649
- },
2650
3049
  "no-validate": {
2651
3050
  "description": "Skip validation before pull",
2652
3051
  "name": "no-validate",
@@ -2719,7 +3118,7 @@
2719
3118
  "type": "boolean"
2720
3119
  },
2721
3120
  "since": {
2722
- "description": "Only pull records updated after this ISO 8601 timestamp (e.g., 2026-04-07T10:00:00Z)",
3121
+ "description": "Only pull records updated after this ISO 8601 timestamp",
2723
3122
  "name": "since",
2724
3123
  "hasDynamicHelp": false,
2725
3124
  "multiple": false,
@@ -2734,6 +3133,48 @@
2734
3133
  "pluginType": "core",
2735
3134
  "strict": true,
2736
3135
  "enableJsonFlag": false,
3136
+ "Usage": {
3137
+ "domain": "sync",
3138
+ "command": "sync:pull",
3139
+ "summary": "Pull database records into local metadata files.",
3140
+ "description": "Writes records of --entity into the matching entity directory, creating or updating files per the merge strategy.",
3141
+ "flags": [
3142
+ {
3143
+ "name": "--entity",
3144
+ "type": "string",
3145
+ "description": "Entity name to pull (required)"
3146
+ },
3147
+ {
3148
+ "name": "--filter",
3149
+ "type": "string",
3150
+ "description": "Extra SQL filter for which records to pull"
3151
+ },
3152
+ {
3153
+ "name": "--merge-strategy",
3154
+ "type": "merge|overwrite|skip",
3155
+ "description": "How to reconcile existing files"
3156
+ },
3157
+ {
3158
+ "name": "--dry-run",
3159
+ "type": "boolean",
3160
+ "description": "Report what would be pulled without writing"
3161
+ },
3162
+ {
3163
+ "name": "--format",
3164
+ "type": "text|json|md",
3165
+ "description": "Output format (json for machine-readable result)"
3166
+ }
3167
+ ],
3168
+ "examples": [
3169
+ "mj sync pull --entity=\"MJ: AI Prompts\"",
3170
+ "mj sync pull --entity=\"Actions\" --format=json"
3171
+ ],
3172
+ "runtime": {
3173
+ "class": "variable",
3174
+ "typicalSeconds": 15,
3175
+ "note": "scales with number of records matched for --entity"
3176
+ }
3177
+ },
2737
3178
  "isESM": true,
2738
3179
  "relativePath": [
2739
3180
  "dist",
@@ -2750,9 +3191,35 @@
2750
3191
  "<%= config.bin %> <%= command.id %>",
2751
3192
  "<%= config.bin %> <%= command.id %> --dry-run",
2752
3193
  "<%= config.bin %> <%= command.id %> --dir=\"ai-prompts\"",
2753
- "<%= config.bin %> <%= command.id %> --ci"
3194
+ "<%= config.bin %> <%= command.id %> --ci --format=json"
2754
3195
  ],
2755
3196
  "flags": {
3197
+ "format": {
3198
+ "description": "Output format: text (human), json (machine-readable), md (Markdown-fenced)",
3199
+ "name": "format",
3200
+ "default": "text",
3201
+ "hasDynamicHelp": false,
3202
+ "multiple": false,
3203
+ "options": [
3204
+ "text",
3205
+ "json",
3206
+ "md"
3207
+ ],
3208
+ "type": "option"
3209
+ },
3210
+ "verbose": {
3211
+ "char": "v",
3212
+ "description": "Show detailed output",
3213
+ "name": "verbose",
3214
+ "allowNo": false,
3215
+ "type": "boolean"
3216
+ },
3217
+ "no-banner": {
3218
+ "description": "Suppress the startup banner and runtime advisory",
3219
+ "name": "no-banner",
3220
+ "allowNo": false,
3221
+ "type": "boolean"
3222
+ },
2756
3223
  "dir": {
2757
3224
  "description": "Specific entity directory to push",
2758
3225
  "name": "dir",
@@ -2772,13 +3239,6 @@
2772
3239
  "allowNo": false,
2773
3240
  "type": "boolean"
2774
3241
  },
2775
- "verbose": {
2776
- "char": "v",
2777
- "description": "Show detailed field-level output",
2778
- "name": "verbose",
2779
- "allowNo": false,
2780
- "type": "boolean"
2781
- },
2782
3242
  "no-validate": {
2783
3243
  "description": "Skip validation before push",
2784
3244
  "name": "no-validate",
@@ -2834,6 +3294,53 @@
2834
3294
  "pluginType": "core",
2835
3295
  "strict": true,
2836
3296
  "enableJsonFlag": false,
3297
+ "Usage": {
3298
+ "domain": "sync",
3299
+ "command": "sync:push",
3300
+ "summary": "Push local metadata files to the database (upsert).",
3301
+ "description": "Reads entity directories under --dir and creates/updates matching records. Runs validation first unless --no-validate.",
3302
+ "flags": [
3303
+ {
3304
+ "name": "--dir",
3305
+ "type": "string",
3306
+ "description": "Entity directory to push"
3307
+ },
3308
+ {
3309
+ "name": "--dry-run",
3310
+ "type": "boolean",
3311
+ "description": "Report what would change without writing"
3312
+ },
3313
+ {
3314
+ "name": "--ci",
3315
+ "type": "boolean",
3316
+ "description": "No prompts; non-zero exit on error"
3317
+ },
3318
+ {
3319
+ "name": "--no-validate",
3320
+ "type": "boolean",
3321
+ "description": "Skip pre-push validation"
3322
+ },
3323
+ {
3324
+ "name": "--incremental",
3325
+ "type": "boolean",
3326
+ "description": "Skip unchanged files using stored checksums"
3327
+ },
3328
+ {
3329
+ "name": "--format",
3330
+ "type": "text|json|md",
3331
+ "description": "Output format (json for machine-readable result)"
3332
+ }
3333
+ ],
3334
+ "examples": [
3335
+ "mj sync push --dir=ai-agents",
3336
+ "mj sync push --ci --format=json"
3337
+ ],
3338
+ "runtime": {
3339
+ "class": "variable",
3340
+ "typicalSeconds": 20,
3341
+ "note": "scales with number of records in --dir"
3342
+ }
3343
+ },
2837
3344
  "isESM": true,
2838
3345
  "relativePath": [
2839
3346
  "dist",
@@ -2897,6 +3404,41 @@
2897
3404
  "status.js"
2898
3405
  ]
2899
3406
  },
3407
+ "sync:usage": {
3408
+ "aliases": [],
3409
+ "args": {},
3410
+ "description": "Show usage, flags, examples, and runtime hints for every `mj sync` command.",
3411
+ "flags": {
3412
+ "format": {
3413
+ "description": "Output format",
3414
+ "name": "format",
3415
+ "default": "text",
3416
+ "hasDynamicHelp": false,
3417
+ "multiple": false,
3418
+ "options": [
3419
+ "text",
3420
+ "json",
3421
+ "md"
3422
+ ],
3423
+ "type": "option"
3424
+ }
3425
+ },
3426
+ "hasDynamicHelp": false,
3427
+ "hiddenAliases": [],
3428
+ "id": "sync:usage",
3429
+ "pluginAlias": "@memberjunction/cli",
3430
+ "pluginName": "@memberjunction/cli",
3431
+ "pluginType": "core",
3432
+ "strict": true,
3433
+ "enableJsonFlag": false,
3434
+ "isESM": true,
3435
+ "relativePath": [
3436
+ "dist",
3437
+ "commands",
3438
+ "sync",
3439
+ "usage.js"
3440
+ ]
3441
+ },
2900
3442
  "sync:validate": {
2901
3443
  "aliases": [],
2902
3444
  "args": {},
@@ -3718,6 +4260,144 @@
3718
4260
  "index.js"
3719
4261
  ]
3720
4262
  },
4263
+ "update:claude": {
4264
+ "aliases": [],
4265
+ "args": {},
4266
+ "description": "Update the Claude Code pack in the current directory.",
4267
+ "examples": [
4268
+ "<%= config.bin %> update:claude",
4269
+ "<%= config.bin %> update:claude --check",
4270
+ "<%= config.bin %> update:claude --refresh-commands",
4271
+ "<%= config.bin %> update:claude --allow-major",
4272
+ "<%= config.bin %> update:claude --json"
4273
+ ],
4274
+ "flags": {
4275
+ "dir": {
4276
+ "description": "Target directory",
4277
+ "name": "dir",
4278
+ "default": ".",
4279
+ "hasDynamicHelp": false,
4280
+ "multiple": false,
4281
+ "type": "option"
4282
+ },
4283
+ "major": {
4284
+ "description": "Force a specific MJ major (default: detected from package.json)",
4285
+ "name": "major",
4286
+ "hasDynamicHelp": false,
4287
+ "multiple": false,
4288
+ "type": "option"
4289
+ },
4290
+ "ref": {
4291
+ "description": "Git ref to fetch from (branch or tag). Default: main.",
4292
+ "name": "ref",
4293
+ "hasDynamicHelp": false,
4294
+ "multiple": false,
4295
+ "type": "option"
4296
+ },
4297
+ "from": {
4298
+ "description": "Use a local pack source instead of fetching from GitHub",
4299
+ "name": "from",
4300
+ "hasDynamicHelp": false,
4301
+ "multiple": false,
4302
+ "type": "option"
4303
+ },
4304
+ "offline": {
4305
+ "description": "Forbid network; requires --from <path>",
4306
+ "name": "offline",
4307
+ "allowNo": false,
4308
+ "type": "boolean"
4309
+ },
4310
+ "dry-run": {
4311
+ "description": "Print what would be written; change nothing",
4312
+ "name": "dry-run",
4313
+ "allowNo": false,
4314
+ "type": "boolean"
4315
+ },
4316
+ "yes": {
4317
+ "char": "y",
4318
+ "description": "Don't prompt (reserved for future interactive paths; currently no-op)",
4319
+ "name": "yes",
4320
+ "allowNo": false,
4321
+ "type": "boolean"
4322
+ },
4323
+ "force": {
4324
+ "description": "Overwrite user-customized commands/skills (saves .bak files)",
4325
+ "name": "force",
4326
+ "allowNo": false,
4327
+ "type": "boolean"
4328
+ },
4329
+ "skip-commands": {
4330
+ "description": "Skip seeding .claude/commands/",
4331
+ "name": "skip-commands",
4332
+ "allowNo": false,
4333
+ "type": "boolean"
4334
+ },
4335
+ "skip-skills": {
4336
+ "description": "Skip seeding .claude/skills/",
4337
+ "name": "skip-skills",
4338
+ "allowNo": false,
4339
+ "type": "boolean"
4340
+ },
4341
+ "skip-settings": {
4342
+ "description": "Skip merging .claude/settings.json",
4343
+ "name": "skip-settings",
4344
+ "allowNo": false,
4345
+ "type": "boolean"
4346
+ },
4347
+ "check": {
4348
+ "description": "Compare local pack version to remote without writing anything",
4349
+ "name": "check",
4350
+ "allowNo": false,
4351
+ "type": "boolean"
4352
+ },
4353
+ "refresh-commands": {
4354
+ "description": "Force-resync .claude/commands/* from the pack (saves .bak files)",
4355
+ "name": "refresh-commands",
4356
+ "allowNo": false,
4357
+ "type": "boolean"
4358
+ },
4359
+ "refresh-skills": {
4360
+ "description": "Force-resync .claude/skills/** from the pack (saves .bak files)",
4361
+ "name": "refresh-skills",
4362
+ "allowNo": false,
4363
+ "type": "boolean"
4364
+ },
4365
+ "allow-major": {
4366
+ "description": "Allow the remote pack's major to differ from local MJ's major",
4367
+ "name": "allow-major",
4368
+ "allowNo": false,
4369
+ "type": "boolean"
4370
+ },
4371
+ "json": {
4372
+ "description": "Output as JSON (matches plan §7.5 schema)",
4373
+ "name": "json",
4374
+ "allowNo": false,
4375
+ "type": "boolean"
4376
+ },
4377
+ "verbose": {
4378
+ "char": "v",
4379
+ "description": "Show progress messages",
4380
+ "name": "verbose",
4381
+ "allowNo": false,
4382
+ "type": "boolean"
4383
+ }
4384
+ },
4385
+ "hasDynamicHelp": false,
4386
+ "hiddenAliases": [],
4387
+ "id": "update:claude",
4388
+ "pluginAlias": "@memberjunction/cli",
4389
+ "pluginName": "@memberjunction/cli",
4390
+ "pluginType": "core",
4391
+ "strict": true,
4392
+ "enableJsonFlag": false,
4393
+ "isESM": true,
4394
+ "relativePath": [
4395
+ "dist",
4396
+ "commands",
4397
+ "update",
4398
+ "claude.js"
4399
+ ]
4400
+ },
3721
4401
  "ai:actions:list": {
3722
4402
  "aliases": [],
3723
4403
  "args": {},
@@ -4766,5 +5446,5 @@
4766
5446
  ]
4767
5447
  }
4768
5448
  },
4769
- "version": "5.41.0"
5449
+ "version": "5.42.0"
4770
5450
  }