@memberjunction/cli 6.1.2 → 6.2.0-edge.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.
- package/README.md +18 -7
- package/dist/commands/agent/init.d.ts +23 -0
- package/dist/commands/agent/init.d.ts.map +1 -0
- package/dist/commands/agent/init.js +222 -0
- package/dist/commands/agent/init.js.map +1 -0
- package/dist/commands/doctor/index.d.ts +6 -4
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +43 -18
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/test/scripts.d.ts +13 -0
- package/dist/commands/test/scripts.d.ts.map +1 -0
- package/dist/commands/test/scripts.js +50 -0
- package/dist/commands/test/scripts.js.map +1 -0
- package/dist/init-templates/citizen-builder/.agents/skills/new-agent/SKILL.md +66 -0
- package/dist/init-templates/citizen-builder/.agents/skills/package-agent/SKILL.md +69 -0
- package/dist/init-templates/citizen-builder/.agents/skills/test-agent/SKILL.md +61 -0
- package/dist/init-templates/citizen-builder/.claude/skills/new-agent/SKILL.md +66 -0
- package/dist/init-templates/citizen-builder/.claude/skills/package-agent/SKILL.md +69 -0
- package/dist/init-templates/citizen-builder/.claude/skills/test-agent/SKILL.md +61 -0
- package/dist/init-templates/citizen-builder/.env.example +30 -0
- package/dist/init-templates/citizen-builder/AGENTS.md +331 -0
- package/dist/init-templates/citizen-builder/README.md +259 -0
- package/dist/init-templates/citizen-builder/docker/Dockerfile +16 -0
- package/dist/init-templates/citizen-builder/docker-compose.yml +59 -0
- package/dist/init-templates/citizen-builder/docs/ENTERPRISE_ORG_SETUP.md +73 -0
- package/dist/init-templates/citizen-builder/docs/PROMOTION_GUIDE.md +70 -0
- package/dist/init-templates/citizen-builder/metadata/.mj-sync.json +7 -0
- package/dist/init-templates/citizen-builder/metadata/agents/.customer-insight-agent.json +55 -0
- package/dist/init-templates/citizen-builder/metadata/agents/.mj-sync.json +45 -0
- package/dist/init-templates/citizen-builder/metadata/prompts/.customer-insight-prompt.json +15 -0
- package/dist/init-templates/citizen-builder/metadata/prompts/.mj-sync.json +45 -0
- package/dist/init-templates/citizen-builder/metadata/prompts/templates/customer-insight.template.md +18 -0
- package/dist/init-templates/citizen-builder/scripts/bootstrap.sh +47 -0
- package/dist/init-templates/citizen-builder/scripts/docker-entrypoint.sh +184 -0
- package/dist/init-templates/citizen-builder/scripts/generate-capabilities.sh +74 -0
- package/dist/init-templates/citizen-builder/scripts/query-run-history.sh +34 -0
- package/dist/init-templates/citizen-builder/scripts/sync-metadata.sh +14 -0
- package/dist/init-templates/remote-mj/README.md +4 -4
- package/oclif.manifest.json +271 -98
- package/package.json +22 -22
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ==============================================================================
|
|
3
|
+
# Citizen Agent Builder - Execution Trace & Diagnostic Tool
|
|
4
|
+
# Inspects recent agent runs, step traces, and action execution errors via the
|
|
5
|
+
# native MemberJunction CLI (mj ai audit agent-run).
|
|
6
|
+
# ==============================================================================
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
10
|
+
cd "$DIR"
|
|
11
|
+
|
|
12
|
+
# Ensure MJ container is running
|
|
13
|
+
if ! docker compose ps --status running --format "{{.Service}}" 2>/dev/null | grep -q "mj"; then
|
|
14
|
+
echo "Error: MemberJunction container ('mj') is not running." >&2
|
|
15
|
+
echo "Start the workspace services with: docker compose up -d" >&2
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# If specific arguments or flags are passed:
|
|
20
|
+
# - If first arg starts with '-' (e.g. --list, --format json, --errors), pass through directly
|
|
21
|
+
# - If first arg matches a UUID format, treat as RunID and pass through directly
|
|
22
|
+
# - If first arg is non-empty string, treat as agent name filter: --list --agent "$1"
|
|
23
|
+
# - If no args, list recent runs
|
|
24
|
+
if [ $# -eq 0 ]; then
|
|
25
|
+
docker compose exec -T mj mj ai audit agent-run --list
|
|
26
|
+
elif [[ "$1" == -* ]]; then
|
|
27
|
+
docker compose exec -T mj mj ai audit agent-run "$@"
|
|
28
|
+
elif [[ "$1" =~ ^[0-9a-fA-F-]{36}$ ]]; then
|
|
29
|
+
docker compose exec -T mj mj ai audit agent-run "$@"
|
|
30
|
+
else
|
|
31
|
+
AGENT_NAME="$1"
|
|
32
|
+
shift
|
|
33
|
+
docker compose exec -T mj mj ai audit agent-run --list --agent "$AGENT_NAME" "$@"
|
|
34
|
+
fi
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ==============================================================================
|
|
3
|
+
# Citizen Agent Builder - Metadata Sync Script
|
|
4
|
+
# Pushes metadata from local ./metadata directory to the running container instance
|
|
5
|
+
# ==============================================================================
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
9
|
+
cd "$DIR"
|
|
10
|
+
|
|
11
|
+
echo "Pushing metadata changes to MemberJunction database..."
|
|
12
|
+
docker compose exec -T mj mj sync push --dir /work/metadata
|
|
13
|
+
|
|
14
|
+
echo "Metadata sync complete!"
|
|
@@ -27,8 +27,8 @@ remote-mj/
|
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
No tests/, no oracles/, no metadata/ — this example reuses the canonical MJ
|
|
30
|
-
suite that ships in `metadata/test-suites/.regression-suite.json`
|
|
31
|
-
test JSONs in `metadata/tests/regression/`.
|
|
30
|
+
suite that ships in `metadata-optional/regression-test/test-suites/.regression-suite.json`
|
|
31
|
+
and the 155 test JSONs in `metadata-optional/regression-test/tests/regression/`.
|
|
32
32
|
|
|
33
33
|
## Running it (inside the MJ monorepo)
|
|
34
34
|
|
|
@@ -61,8 +61,8 @@ Behind the scenes:
|
|
|
61
61
|
|
|
62
62
|
## ⚠️ Prerequisite — variable substitution
|
|
63
63
|
|
|
64
|
-
For Mode B to actually retarget the canonical MJ suite, the
|
|
65
|
-
`metadata/tests/regression/` need to use `{{baseUrl}}` / `{{authUsername}}` /
|
|
64
|
+
For Mode B to actually retarget the canonical MJ suite, the 155 test JSONs in
|
|
65
|
+
`metadata-optional/regression-test/tests/regression/` need to use `{{baseUrl}}` / `{{authUsername}}` /
|
|
66
66
|
`{{authPassword}}` / `{{allowedDomains}}` placeholders instead of hardcoded
|
|
67
67
|
`http://localhost:4200`. This was Phase 1A's deliverable; the substitution
|
|
68
68
|
**code** ships and is fully tested, but the **JSON conversion** is a follow-up
|
package/oclif.manifest.json
CHANGED
|
@@ -37,6 +37,70 @@
|
|
|
37
37
|
"usage.js"
|
|
38
38
|
]
|
|
39
39
|
},
|
|
40
|
+
"agent:init": {
|
|
41
|
+
"aliases": [
|
|
42
|
+
"ai:agents:init"
|
|
43
|
+
],
|
|
44
|
+
"args": {
|
|
45
|
+
"dir": {
|
|
46
|
+
"default": ".",
|
|
47
|
+
"description": "Target directory for the agent builder environment (default: current directory).",
|
|
48
|
+
"name": "dir",
|
|
49
|
+
"required": false
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"description": "Initialize a MemberJunction Citizen Agent Builder environment in the current or specified directory, including Docker setup.",
|
|
53
|
+
"examples": [
|
|
54
|
+
"<%= config.bin %> <%= command.id %>",
|
|
55
|
+
"<%= config.bin %> <%= command.id %> ./my-agent-workspace",
|
|
56
|
+
"<%= config.bin %> <%= command.id %> --no-start",
|
|
57
|
+
"<%= config.bin %> <%= command.id %> --app https://github.com/BlueCypress/bc-sampledata"
|
|
58
|
+
],
|
|
59
|
+
"flags": {
|
|
60
|
+
"force": {
|
|
61
|
+
"char": "f",
|
|
62
|
+
"description": "Overwrite existing files in target directory if they already exist.",
|
|
63
|
+
"name": "force",
|
|
64
|
+
"allowNo": false,
|
|
65
|
+
"type": "boolean"
|
|
66
|
+
},
|
|
67
|
+
"start": {
|
|
68
|
+
"char": "s",
|
|
69
|
+
"description": "Start Docker containers and run bootstrap immediately after initialization (pass --no-start to skip).",
|
|
70
|
+
"name": "start",
|
|
71
|
+
"allowNo": true,
|
|
72
|
+
"type": "boolean"
|
|
73
|
+
},
|
|
74
|
+
"app": {
|
|
75
|
+
"description": "Open App Git URL to install for business context (default: More Cheese).",
|
|
76
|
+
"name": "app",
|
|
77
|
+
"hasDynamicHelp": false,
|
|
78
|
+
"multiple": false,
|
|
79
|
+
"type": "option"
|
|
80
|
+
},
|
|
81
|
+
"skip-docker-check": {
|
|
82
|
+
"description": "Skip verifying whether Docker Desktop is currently running.",
|
|
83
|
+
"name": "skip-docker-check",
|
|
84
|
+
"allowNo": false,
|
|
85
|
+
"type": "boolean"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"hasDynamicHelp": false,
|
|
89
|
+
"hiddenAliases": [],
|
|
90
|
+
"id": "agent:init",
|
|
91
|
+
"pluginAlias": "@memberjunction/cli",
|
|
92
|
+
"pluginName": "@memberjunction/cli",
|
|
93
|
+
"pluginType": "core",
|
|
94
|
+
"strict": true,
|
|
95
|
+
"enableJsonFlag": false,
|
|
96
|
+
"isESM": true,
|
|
97
|
+
"relativePath": [
|
|
98
|
+
"dist",
|
|
99
|
+
"commands",
|
|
100
|
+
"agent",
|
|
101
|
+
"init.js"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
40
104
|
"ai": {
|
|
41
105
|
"aliases": [],
|
|
42
106
|
"args": {},
|
|
@@ -457,101 +521,6 @@
|
|
|
457
521
|
"usage.js"
|
|
458
522
|
]
|
|
459
523
|
},
|
|
460
|
-
"artifacts:reclassify": {
|
|
461
|
-
"aliases": [],
|
|
462
|
-
"args": {},
|
|
463
|
-
"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.",
|
|
464
|
-
"examples": [
|
|
465
|
-
"<%= config.bin %> <%= command.id %>",
|
|
466
|
-
"<%= config.bin %> <%= command.id %> --apply --limit 50"
|
|
467
|
-
],
|
|
468
|
-
"flags": {
|
|
469
|
-
"conversation-id": {
|
|
470
|
-
"description": "Scope to artifacts attached to the given conversation.",
|
|
471
|
-
"name": "conversation-id",
|
|
472
|
-
"hasDynamicHelp": false,
|
|
473
|
-
"multiple": false,
|
|
474
|
-
"type": "option"
|
|
475
|
-
},
|
|
476
|
-
"since": {
|
|
477
|
-
"description": "Scope to artifacts created on/after this ISO date.",
|
|
478
|
-
"name": "since",
|
|
479
|
-
"hasDynamicHelp": false,
|
|
480
|
-
"multiple": false,
|
|
481
|
-
"type": "option"
|
|
482
|
-
},
|
|
483
|
-
"limit": {
|
|
484
|
-
"description": "Maximum number of rows to inspect.",
|
|
485
|
-
"name": "limit",
|
|
486
|
-
"default": 100,
|
|
487
|
-
"hasDynamicHelp": false,
|
|
488
|
-
"multiple": false,
|
|
489
|
-
"type": "option"
|
|
490
|
-
},
|
|
491
|
-
"apply": {
|
|
492
|
-
"description": "Write changes. Without this flag, this command only reports what it would do.",
|
|
493
|
-
"name": "apply",
|
|
494
|
-
"allowNo": false,
|
|
495
|
-
"type": "boolean"
|
|
496
|
-
},
|
|
497
|
-
"verbose": {
|
|
498
|
-
"char": "v",
|
|
499
|
-
"description": "Print every candidate row, not just the summary.",
|
|
500
|
-
"name": "verbose",
|
|
501
|
-
"allowNo": false,
|
|
502
|
-
"type": "boolean"
|
|
503
|
-
}
|
|
504
|
-
},
|
|
505
|
-
"hasDynamicHelp": false,
|
|
506
|
-
"hiddenAliases": [],
|
|
507
|
-
"id": "artifacts:reclassify",
|
|
508
|
-
"pluginAlias": "@memberjunction/cli",
|
|
509
|
-
"pluginName": "@memberjunction/cli",
|
|
510
|
-
"pluginType": "core",
|
|
511
|
-
"strict": true,
|
|
512
|
-
"enableJsonFlag": false,
|
|
513
|
-
"isESM": true,
|
|
514
|
-
"relativePath": [
|
|
515
|
-
"dist",
|
|
516
|
-
"commands",
|
|
517
|
-
"artifacts",
|
|
518
|
-
"reclassify.js"
|
|
519
|
-
]
|
|
520
|
-
},
|
|
521
|
-
"artifacts:usage": {
|
|
522
|
-
"aliases": [],
|
|
523
|
-
"args": {},
|
|
524
|
-
"description": "Show usage, flags, examples, and runtime hints for every `mj artifacts` command.",
|
|
525
|
-
"flags": {
|
|
526
|
-
"format": {
|
|
527
|
-
"description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
|
|
528
|
-
"name": "format",
|
|
529
|
-
"hasDynamicHelp": false,
|
|
530
|
-
"multiple": false,
|
|
531
|
-
"options": [
|
|
532
|
-
"text",
|
|
533
|
-
"json",
|
|
534
|
-
"md"
|
|
535
|
-
],
|
|
536
|
-
"type": "option"
|
|
537
|
-
}
|
|
538
|
-
},
|
|
539
|
-
"hasDynamicHelp": false,
|
|
540
|
-
"hiddenAliases": [],
|
|
541
|
-
"id": "artifacts:usage",
|
|
542
|
-
"pluginAlias": "@memberjunction/cli",
|
|
543
|
-
"pluginName": "@memberjunction/cli",
|
|
544
|
-
"pluginType": "core",
|
|
545
|
-
"strict": true,
|
|
546
|
-
"enableJsonFlag": false,
|
|
547
|
-
"isESM": true,
|
|
548
|
-
"relativePath": [
|
|
549
|
-
"dist",
|
|
550
|
-
"commands",
|
|
551
|
-
"artifacts",
|
|
552
|
-
"usage.js"
|
|
553
|
-
]
|
|
554
|
-
},
|
|
555
524
|
"baseline:build": {
|
|
556
525
|
"aliases": [],
|
|
557
526
|
"args": {},
|
|
@@ -924,6 +893,101 @@
|
|
|
924
893
|
"usage.js"
|
|
925
894
|
]
|
|
926
895
|
},
|
|
896
|
+
"artifacts:reclassify": {
|
|
897
|
+
"aliases": [],
|
|
898
|
+
"args": {},
|
|
899
|
+
"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.",
|
|
900
|
+
"examples": [
|
|
901
|
+
"<%= config.bin %> <%= command.id %>",
|
|
902
|
+
"<%= config.bin %> <%= command.id %> --apply --limit 50"
|
|
903
|
+
],
|
|
904
|
+
"flags": {
|
|
905
|
+
"conversation-id": {
|
|
906
|
+
"description": "Scope to artifacts attached to the given conversation.",
|
|
907
|
+
"name": "conversation-id",
|
|
908
|
+
"hasDynamicHelp": false,
|
|
909
|
+
"multiple": false,
|
|
910
|
+
"type": "option"
|
|
911
|
+
},
|
|
912
|
+
"since": {
|
|
913
|
+
"description": "Scope to artifacts created on/after this ISO date.",
|
|
914
|
+
"name": "since",
|
|
915
|
+
"hasDynamicHelp": false,
|
|
916
|
+
"multiple": false,
|
|
917
|
+
"type": "option"
|
|
918
|
+
},
|
|
919
|
+
"limit": {
|
|
920
|
+
"description": "Maximum number of rows to inspect.",
|
|
921
|
+
"name": "limit",
|
|
922
|
+
"default": 100,
|
|
923
|
+
"hasDynamicHelp": false,
|
|
924
|
+
"multiple": false,
|
|
925
|
+
"type": "option"
|
|
926
|
+
},
|
|
927
|
+
"apply": {
|
|
928
|
+
"description": "Write changes. Without this flag, this command only reports what it would do.",
|
|
929
|
+
"name": "apply",
|
|
930
|
+
"allowNo": false,
|
|
931
|
+
"type": "boolean"
|
|
932
|
+
},
|
|
933
|
+
"verbose": {
|
|
934
|
+
"char": "v",
|
|
935
|
+
"description": "Print every candidate row, not just the summary.",
|
|
936
|
+
"name": "verbose",
|
|
937
|
+
"allowNo": false,
|
|
938
|
+
"type": "boolean"
|
|
939
|
+
}
|
|
940
|
+
},
|
|
941
|
+
"hasDynamicHelp": false,
|
|
942
|
+
"hiddenAliases": [],
|
|
943
|
+
"id": "artifacts:reclassify",
|
|
944
|
+
"pluginAlias": "@memberjunction/cli",
|
|
945
|
+
"pluginName": "@memberjunction/cli",
|
|
946
|
+
"pluginType": "core",
|
|
947
|
+
"strict": true,
|
|
948
|
+
"enableJsonFlag": false,
|
|
949
|
+
"isESM": true,
|
|
950
|
+
"relativePath": [
|
|
951
|
+
"dist",
|
|
952
|
+
"commands",
|
|
953
|
+
"artifacts",
|
|
954
|
+
"reclassify.js"
|
|
955
|
+
]
|
|
956
|
+
},
|
|
957
|
+
"artifacts:usage": {
|
|
958
|
+
"aliases": [],
|
|
959
|
+
"args": {},
|
|
960
|
+
"description": "Show usage, flags, examples, and runtime hints for every `mj artifacts` command.",
|
|
961
|
+
"flags": {
|
|
962
|
+
"format": {
|
|
963
|
+
"description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
|
|
964
|
+
"name": "format",
|
|
965
|
+
"hasDynamicHelp": false,
|
|
966
|
+
"multiple": false,
|
|
967
|
+
"options": [
|
|
968
|
+
"text",
|
|
969
|
+
"json",
|
|
970
|
+
"md"
|
|
971
|
+
],
|
|
972
|
+
"type": "option"
|
|
973
|
+
}
|
|
974
|
+
},
|
|
975
|
+
"hasDynamicHelp": false,
|
|
976
|
+
"hiddenAliases": [],
|
|
977
|
+
"id": "artifacts:usage",
|
|
978
|
+
"pluginAlias": "@memberjunction/cli",
|
|
979
|
+
"pluginName": "@memberjunction/cli",
|
|
980
|
+
"pluginType": "core",
|
|
981
|
+
"strict": true,
|
|
982
|
+
"enableJsonFlag": false,
|
|
983
|
+
"isESM": true,
|
|
984
|
+
"relativePath": [
|
|
985
|
+
"dist",
|
|
986
|
+
"commands",
|
|
987
|
+
"artifacts",
|
|
988
|
+
"usage.js"
|
|
989
|
+
]
|
|
990
|
+
},
|
|
927
991
|
"bump": {
|
|
928
992
|
"aliases": [],
|
|
929
993
|
"args": {},
|
|
@@ -2302,6 +2366,8 @@
|
|
|
2302
2366
|
"examples": [
|
|
2303
2367
|
"<%= config.bin %> <%= command.id %>",
|
|
2304
2368
|
"<%= config.bin %> <%= command.id %> --dir ./my-mj-project",
|
|
2369
|
+
"<%= config.bin %> <%= command.id %> --format json",
|
|
2370
|
+
"<%= config.bin %> <%= command.id %> --scope ai",
|
|
2305
2371
|
"<%= config.bin %> <%= command.id %> --verbose",
|
|
2306
2372
|
"<%= config.bin %> <%= command.id %> --report",
|
|
2307
2373
|
"<%= config.bin %> <%= command.id %> --report_extended"
|
|
@@ -2315,6 +2381,37 @@
|
|
|
2315
2381
|
"multiple": false,
|
|
2316
2382
|
"type": "option"
|
|
2317
2383
|
},
|
|
2384
|
+
"scope": {
|
|
2385
|
+
"description": "Diagnostic scope to filter by (install, runtime, ai, metadata, agent)",
|
|
2386
|
+
"name": "scope",
|
|
2387
|
+
"hasDynamicHelp": false,
|
|
2388
|
+
"multiple": false,
|
|
2389
|
+
"options": [
|
|
2390
|
+
"install",
|
|
2391
|
+
"runtime",
|
|
2392
|
+
"ai",
|
|
2393
|
+
"metadata",
|
|
2394
|
+
"agent"
|
|
2395
|
+
],
|
|
2396
|
+
"type": "option"
|
|
2397
|
+
},
|
|
2398
|
+
"format": {
|
|
2399
|
+
"description": "Output format: text (human), json (machine-readable), md (Markdown). Defaults to human output on a terminal and json when stdout is piped. Legacy spellings (console/markdown/compact/table) are accepted.",
|
|
2400
|
+
"name": "format",
|
|
2401
|
+
"hasDynamicHelp": false,
|
|
2402
|
+
"multiple": false,
|
|
2403
|
+
"options": [
|
|
2404
|
+
"text",
|
|
2405
|
+
"json",
|
|
2406
|
+
"md",
|
|
2407
|
+
"human",
|
|
2408
|
+
"console",
|
|
2409
|
+
"markdown",
|
|
2410
|
+
"compact",
|
|
2411
|
+
"table"
|
|
2412
|
+
],
|
|
2413
|
+
"type": "option"
|
|
2414
|
+
},
|
|
2318
2415
|
"verbose": {
|
|
2319
2416
|
"char": "v",
|
|
2320
2417
|
"description": "Show detailed output including suggested fixes inline",
|
|
@@ -4198,10 +4295,15 @@
|
|
|
4198
4295
|
"allowNo": false,
|
|
4199
4296
|
"type": "boolean"
|
|
4200
4297
|
},
|
|
4298
|
+
"isolated-transactions": {
|
|
4299
|
+
"description": "Give every JSON-root graph its own connection and transaction, so siblings are written in parallel and each create/update commits as it is saved (a failure does not roll those back). Off by default: the whole push runs in one transaction, one graph at a time. Overrides push.isolatedTransactions in every .mj-sync.json, in both directions — use --no-isolated-transactions to force one run back to a single transaction",
|
|
4300
|
+
"name": "isolated-transactions",
|
|
4301
|
+
"allowNo": true,
|
|
4302
|
+
"type": "boolean"
|
|
4303
|
+
},
|
|
4201
4304
|
"parallel-batch-size": {
|
|
4202
|
-
"description": "JSON-root graphs to process in parallel (default: 10
|
|
4305
|
+
"description": "JSON-root graphs to process in parallel in a directory using isolated transactions (default: 10)",
|
|
4203
4306
|
"name": "parallel-batch-size",
|
|
4204
|
-
"default": 10,
|
|
4205
4307
|
"hasDynamicHelp": false,
|
|
4206
4308
|
"multiple": false,
|
|
4207
4309
|
"type": "option"
|
|
@@ -4272,6 +4374,16 @@
|
|
|
4272
4374
|
"type": "boolean",
|
|
4273
4375
|
"description": "Skip unchanged files using stored checksums"
|
|
4274
4376
|
},
|
|
4377
|
+
{
|
|
4378
|
+
"name": "--isolated-transactions",
|
|
4379
|
+
"type": "boolean",
|
|
4380
|
+
"description": "Per-graph connections; creates/updates commit as they go and are not rolled back"
|
|
4381
|
+
},
|
|
4382
|
+
{
|
|
4383
|
+
"name": "--parallel-batch-size",
|
|
4384
|
+
"type": "number",
|
|
4385
|
+
"description": "Graphs at once in an isolated directory (default 10)"
|
|
4386
|
+
},
|
|
4275
4387
|
{
|
|
4276
4388
|
"name": "--format",
|
|
4277
4389
|
"type": "text|json|md",
|
|
@@ -4936,6 +5048,67 @@
|
|
|
4936
5048
|
"run.js"
|
|
4937
5049
|
]
|
|
4938
5050
|
},
|
|
5051
|
+
"test:scripts": {
|
|
5052
|
+
"aliases": [],
|
|
5053
|
+
"args": {},
|
|
5054
|
+
"description": "Review and promote recorded replay scripts. A run that re-derives a test which already had a script stores the new one as pending rather than replacing what replay uses, so a UI change never rewrites the suite unnoticed. This is where you see the drift and decide.",
|
|
5055
|
+
"examples": [
|
|
5056
|
+
"<%= config.bin %> <%= command.id %>",
|
|
5057
|
+
"<%= config.bin %> <%= command.id %> --test \"T042 - Filter Grid\"",
|
|
5058
|
+
"<%= config.bin %> <%= command.id %> --promote --test \"T042 - Filter Grid\"",
|
|
5059
|
+
"<%= config.bin %> <%= command.id %> --promote --yes",
|
|
5060
|
+
"<%= config.bin %> <%= command.id %> --discard --test \"T042 - Filter Grid\""
|
|
5061
|
+
],
|
|
5062
|
+
"flags": {
|
|
5063
|
+
"test": {
|
|
5064
|
+
"description": "Limit to one test, by name or ID",
|
|
5065
|
+
"name": "test",
|
|
5066
|
+
"hasDynamicHelp": false,
|
|
5067
|
+
"multiple": false,
|
|
5068
|
+
"type": "option"
|
|
5069
|
+
},
|
|
5070
|
+
"promote": {
|
|
5071
|
+
"description": "Promote the pending script(s) into the slot replay uses",
|
|
5072
|
+
"exclusive": [
|
|
5073
|
+
"discard"
|
|
5074
|
+
],
|
|
5075
|
+
"name": "promote",
|
|
5076
|
+
"allowNo": false,
|
|
5077
|
+
"type": "boolean"
|
|
5078
|
+
},
|
|
5079
|
+
"discard": {
|
|
5080
|
+
"description": "Drop the pending script(s), keeping the promoted one",
|
|
5081
|
+
"exclusive": [
|
|
5082
|
+
"promote"
|
|
5083
|
+
],
|
|
5084
|
+
"name": "discard",
|
|
5085
|
+
"allowNo": false,
|
|
5086
|
+
"type": "boolean"
|
|
5087
|
+
},
|
|
5088
|
+
"yes": {
|
|
5089
|
+
"char": "y",
|
|
5090
|
+
"description": "Confirm a bulk --promote/--discard that was not narrowed with --test",
|
|
5091
|
+
"name": "yes",
|
|
5092
|
+
"allowNo": false,
|
|
5093
|
+
"type": "boolean"
|
|
5094
|
+
}
|
|
5095
|
+
},
|
|
5096
|
+
"hasDynamicHelp": false,
|
|
5097
|
+
"hiddenAliases": [],
|
|
5098
|
+
"id": "test:scripts",
|
|
5099
|
+
"pluginAlias": "@memberjunction/cli",
|
|
5100
|
+
"pluginName": "@memberjunction/cli",
|
|
5101
|
+
"pluginType": "core",
|
|
5102
|
+
"strict": true,
|
|
5103
|
+
"enableJsonFlag": false,
|
|
5104
|
+
"isESM": true,
|
|
5105
|
+
"relativePath": [
|
|
5106
|
+
"dist",
|
|
5107
|
+
"commands",
|
|
5108
|
+
"test",
|
|
5109
|
+
"scripts.js"
|
|
5110
|
+
]
|
|
5111
|
+
},
|
|
4939
5112
|
"test:suite": {
|
|
4940
5113
|
"aliases": [],
|
|
4941
5114
|
"args": {
|
|
@@ -6847,5 +7020,5 @@
|
|
|
6847
7020
|
]
|
|
6848
7021
|
}
|
|
6849
7022
|
},
|
|
6850
|
-
"version": "6.
|
|
7023
|
+
"version": "6.2.0-edge.0"
|
|
6851
7024
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.2.0-edge.0",
|
|
5
5
|
"description": "MemberJunction command line tools",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"oclif"
|
|
@@ -48,27 +48,27 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@inquirer/prompts": "^8.2.0",
|
|
51
|
-
"@memberjunction/ai-cli": "6.
|
|
52
|
-
"@memberjunction/cli-core": "6.
|
|
53
|
-
"@memberjunction/codegen-lib": "6.
|
|
54
|
-
"@memberjunction/config": "6.
|
|
55
|
-
"@memberjunction/core": "6.
|
|
56
|
-
"@memberjunction/generic-database-provider": "6.
|
|
57
|
-
"@memberjunction/installer": "6.
|
|
58
|
-
"@memberjunction/dynamic-packages": "6.
|
|
59
|
-
"@memberjunction/db-auto-doc": "6.
|
|
60
|
-
"@memberjunction/metadata-sync": "6.
|
|
61
|
-
"@memberjunction/open-app-engine": "6.
|
|
62
|
-
"@memberjunction/query-gen": "6.
|
|
63
|
-
"@memberjunction/server-bootstrap-lite": "6.
|
|
51
|
+
"@memberjunction/ai-cli": "6.2.0-edge.0",
|
|
52
|
+
"@memberjunction/cli-core": "6.2.0-edge.0",
|
|
53
|
+
"@memberjunction/codegen-lib": "6.2.0-edge.0",
|
|
54
|
+
"@memberjunction/config": "6.2.0-edge.0",
|
|
55
|
+
"@memberjunction/core": "6.2.0-edge.0",
|
|
56
|
+
"@memberjunction/generic-database-provider": "6.2.0-edge.0",
|
|
57
|
+
"@memberjunction/installer": "6.2.0-edge.0",
|
|
58
|
+
"@memberjunction/dynamic-packages": "6.2.0-edge.0",
|
|
59
|
+
"@memberjunction/db-auto-doc": "6.2.0-edge.0",
|
|
60
|
+
"@memberjunction/metadata-sync": "6.2.0-edge.0",
|
|
61
|
+
"@memberjunction/open-app-engine": "6.2.0-edge.0",
|
|
62
|
+
"@memberjunction/query-gen": "6.2.0-edge.0",
|
|
63
|
+
"@memberjunction/server-bootstrap-lite": "6.2.0-edge.0",
|
|
64
64
|
"@memberjunction/skyway-core": "^0.6.2",
|
|
65
65
|
"@memberjunction/skyway-postgres": "^0.6.2",
|
|
66
66
|
"@memberjunction/skyway-sqlserver": "^0.6.2",
|
|
67
|
-
"@memberjunction/sql-converter": "6.
|
|
68
|
-
"@memberjunction/sqlglot-ts": "6.
|
|
69
|
-
"@memberjunction/sqlserver-dataprovider": "6.
|
|
70
|
-
"@memberjunction/standards": "6.
|
|
71
|
-
"@memberjunction/testing-cli": "6.
|
|
67
|
+
"@memberjunction/sql-converter": "6.2.0-edge.0",
|
|
68
|
+
"@memberjunction/sqlglot-ts": "6.2.0-edge.0",
|
|
69
|
+
"@memberjunction/sqlserver-dataprovider": "6.2.0-edge.0",
|
|
70
|
+
"@memberjunction/standards": "6.2.0-edge.0",
|
|
71
|
+
"@memberjunction/testing-cli": "6.2.0-edge.0",
|
|
72
72
|
"@oclif/core": "^3.27.0",
|
|
73
73
|
"@oclif/plugin-help": "^6.2.37",
|
|
74
74
|
"@oclif/plugin-version": "^2.2.36",
|
|
@@ -88,9 +88,9 @@
|
|
|
88
88
|
"recast": "^0.23.11",
|
|
89
89
|
"simple-git": "^3.30.0",
|
|
90
90
|
"zod": "^3.25.0",
|
|
91
|
-
"@memberjunction/core-entities": "6.
|
|
92
|
-
"@memberjunction/global": "6.
|
|
93
|
-
"@memberjunction/aiengine": "6.
|
|
91
|
+
"@memberjunction/core-entities": "6.2.0-edge.0",
|
|
92
|
+
"@memberjunction/global": "6.2.0-edge.0",
|
|
93
|
+
"@memberjunction/aiengine": "6.2.0-edge.0"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@oclif/prettier-config": "^0.2.1",
|